pax_global_header00006660000000000000000000000064120105501430014501gustar00rootroot0000000000000052 comment=a8847c298beb6431b69ac203d677d603cd5aefa2 gringotts-1.2.10/000077500000000000000000000000001201055014300136025ustar00rootroot00000000000000gringotts-1.2.10/AUTHORS000066400000000000000000000010731201055014300146530ustar00rootroot00000000000000Concept, main programming, italian translation: Germano Rizzo Additional programming: Nicolas Pouillon Shlomi Fish Nice patches, bugfix: James Antill Bastian Kleineidam Corrections to the FAQ: Dan Frezza German translation: Hermann J. Beckers Nicolas Pouillon Bastian Kleineidam Łukasz Studziński Unatine gringotts-1.2.10/BUGS000066400000000000000000000022121201055014300142620ustar00rootroot00000000000000If you remove a floppy disk during reading, the program will exit with a SIGBUS error. Not so kind of it, uhu? It all occupies just too much memory. Moreover, it's mlock()ed, so the program lives always on the edge... :( If you open the pref windows and press OK without change anything, the file becomes saveable even if you didn't actually make any modification. I'm sorry, but the severity of the problem isn't worth the complexity of the fix, IMHO. When opening files with non-latin1 filenames, the title of the window in some cases (i.e. in RH 8.0+) won't display properly. This seems to be more GTK+ than Gringotts-related. If you open a file, and switching to a different sheet, without making modifications and saving it again, and then re-open it - then gringotts will load the original sheet. This is because the current sheet identifier is stored in the file, and the file is not saved. For now, a temporary workaround is to make a small and meaningless modification in the new sheet, and then save the file. With some 2.6.9 and 2.6.10 kernels, Gringotts segfaults. Please remove the setuid bit from the executable when running on such systems. gringotts-1.2.10/COPYING000066400000000000000000000431271201055014300146440ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy 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. gringotts-1.2.10/ChangeLog000066400000000000000000000120521201055014300153540ustar00rootroot00000000000000 -------------------------------- --- Changes from release 1.2.8 --- -------------------------------- 2005-05-14 Mano * applied shlomif-3 patches, which enable compilation on newer systems and add a few nice features * added russian and polish translations * improved german translation * the spec file isn't maintained anymore directly by me 2006-03-28 Shlomi Fish * Fix a data corruption bug with the search function. * Fix the "Find again" functionality. * Eliminate many compilation warnings caused due to a confusion between signed and unsigned char strings. * Integrated a patch by wwp that: * Fixes proto for find() in src/grg_entries_vis.h (not really used anyway) * Fixes compilation on FC3 (missing #includes to stdio.h) * Adds sensitivity to HTAB environment variable to change the horizontal tab value in the main edition widget (default: 8) 2006-04-04 Shlomi Fish * Fix a data corruption bug caused by the previous data corruption bug fix, in which before the search the entry's widget's text was not synced into memory. 2007-01-01 Shlomi Fish * Made sure that the "Preferences" dialog does not crash gringotts, due to saying "g_free (fdesc)" instead of "pango_font_description_free (fdesc)". * Released as gringotts-shlomif-0.4.4 2007-10-04 Shlomi Fish * Added the autogen.sh file to generate the autotools helpers. * Ported the source code to gtk+-2.12. * Applied 02_pixmap_32x32.dpatch from the Debian package. It adds a gringotts-32.xpm pixmap. * Applied 06_check_regcomp_ret.dpatch from the Debian package. It makes the regular expression check for the environment variables in grg_safe.c more robust, and fixes a bug with the display environment. * Applied a modified version of 07_check_ulimit.dpatch from the Debian package. This makes sure that there is a good enough RLIMIT_MEMLOCK in the ulimit for the mlockall operation. * Applied a modified version of 09_check_key.dpatch from the Debian package. The description reads: {{{{{{ ## DP: Fix invalid gfree() from load_file. And make sure the ## DP: to-be-freed verkey is not NULL. }}}}}} * Replaced C++-style comments ("//") with C-style comments ("/* ... */"). * Eliminated some warnings (by inspiration and code from 13_compiler_warnings.dpatch from the Debian package). * Fixed the load_file() function - abs_filename could have been NULL if the path was already absolute. This was a regression caused by applying a Debian patch. "Save" (not "Save as") now works. 2007-10-08 Shlomi Fish * Tagged and released gringotts-1.2.9pre2 2007-12-07 Shlomi Fish * Integrated the README.Debian into the README with a note of my own. * Added a note about the SUID-root problem to the error message of the mlock-memory. 2007-12-15 Shlomi Fish * Tagged and released gringotts-1.2.9pre3 2008-01-04 Shlomi Fish * Applied a patch from wwp to remember the main window size between invocations. * Fixed "configure.ac" (and by implication - "configure") to require gtk+ version 2.12.0 and above, to avoid compilation problems with older and incompatible gtk+'s. * Tagged and released gringotts-1.2.9pre4 2008-01-25 Shlomi Fish * Tagged and released gringotts-1.2.9. (With no significant changes since gringotts-1.2.9pre4). ---------------------------------- --- Changes from release 1.2.9 --- ---------------------------------- * Few fixes in the ask password and define password dialogs: * change button order to be HIG compliant (GNOME, XFce and others) * fix behaviour of dialogs when pressing Esc by watching the right gtk_dialog response type * fix few logics issues when asking for password and not checking if the dialog has been cancelled * fix possible mis-initialization of exit flag in loop * fix a warning (res defined but not used) * In some other dialogs that use gtk_dialog: - make button order HIG compliant - fix scope of few variables * Thanks to wwp for the patch. * Fix for the prefs, so that file-save dirty flag is set only when appropriate (when file format options has changed and been applied). (thanks to wwp for the patch.) * Applied a patch from wwp that enforces the parsing of prefs (when loading), and makes it a real tag parser. (Thanks to wwp). * Applied a patch from wwp as a correction to a previous patch of his to eliminate a possible memory leak. 2008-02-02 Shlomi Fish * Tagged and released gringotts-1.2.10pre1. 2008-09-03 Shlomi Fish * Applied a series of patches by Rorschach to add an optional "minimize-to-tray-icon" feature for gringotts. * Tagged and relased gringotts-1.2.10pre2. 2008-09-15 Shlomi Fish * Applied another patch by Rorschach to fix the tray icon functionality. wwp suggested it. * Tagged and relased gringotts-1.2.10pre3. 2009-06-13 Shlomi Fish * Tagged and released gringotts-1.2.10. gringotts-1.2.10/FAQ000066400000000000000000000417001201055014300141360ustar00rootroot00000000000000 -= The Gringotts FAQ =- -= The Project =- Q: Why Gringotts, in first place? A: The name comes from a famous book saga for children, by J.K.Rowling, and it is the name of a bank, famous for its extreme safety. If you still have doubts, the best thing you can do is to read the books - they're cool! :) The idea of the program comes from a similar program I once used under Windows - I can't remember its name. Since I had the desire to program something about security, I started this. Now the application is quite different from that, because of all the people who gave me invaluable advice... :) -= On Security =- Q: You define it a strongbox. How safe it is, actually? A: Very safe, and not entirely safe. If a malicious user put his hands on a file created with Gringotts (Grg, from now on), there's virtually nothing he can do to open it without knowing the password. It can't retrieve any information about the content - neither the type of password, nor the kind of data contained. It's all locked. Q: What if the attacker can access the system I'm working into? A: It still has barely a remote chance to read them. The memory is protected, and neither users nor root can spy it; the data that are written to temporary files are coded with temporary keys, so they're safe, too. Data is also protected from paging, and gets overwritten with random data at exit, so after the use of Gringotts he can't get anything dumping the memory you wrote to, or the swap file. Q: What if it can see my screen?? A: Don't joke. It's impossible to protect anything in these conditions... or maybe it is... ;-) I've received an important advice on this, and I'm working on it :) Q: Amazing! It's totally safe! A: No :( Grg is built on top of Gtk+, and even if these are very safe libraries, they aren't designed with the same goal as Grg in mind. They would be too slow, for istance. So, it's still true that nothing gets paged and no one can spy in the memory, but not all the data gets securely erased after use. Not clipboard, nor the editor buffer, for instance. Be careful. I'm working on it, anyway. Q: Ok, ok. What else does it provide? A: Some other cute features. It allows the user to securely delete files, in such a way that no one can recover them later. It allows one to use different password than just strings. Q: Nice! Tell me more on this! A: Well, the user can use three kind of passwords. The first is plain text, the usual ones. Simple character blah-blah-blah. The second, files. You can use any regular file to protect data. If an attacker doesn't have that file, he can't even dream to open your data. Third, floppy disks. This is the closest thing to smart cards available on common PC's: insert your key disk, use it to protect your data, and store it in a safe place. As long as no one can access it, no one will be able to read your passwords... :) The nice thing about this all is that it's impossible to tell what kind of password you used to protect your data by just looking at the file! Q: Is there something I should know about string passwords? A: Hmm... they can be up to 32 bytes in size... and when you first type your password, a gauge will tell you how "good" it is. You have an idea of how secure your data will be. My advice for this choice is the usual: try to use as many characters, symbols and numbers you can, and be sure not to forget it. Q: Is there something I should know about passfiles? A: When using a file, the "password quality" is very secure because both its length and its alphabet size will be considerably larger. If you're on your "private" system, at home, and want to store your data in a "public" place (i.e. an internet repository), you can use this feature to simply ensure a much better password quality. The bad thing is that, if you aren't careful, the number of possible keys will be *much smaller* using files than using passwords: in fact, you'll need to choose a file that won't change, and if you are on a "public" system (i.e. logged on a system where other users are logged on, too) the choice could be quite limited. So, a brute-force attack that simply tries all the files in the system is relatively simple to do. Don't rely on simply deleting a file; it can be undeleted, so it's better use the `wipe file' tool present in Gringotts. The best thing to do is probably to store the file on a removable device (i.e. a floppy disk) and bring it with you... and keep it safe. Here are some notes to take into consideration: * Pay extra attention to the integrity of the file you use: if you lose it or it gets corrupted, you'll lose your data! There's NO recovering! * Only the *content* of the file is used. So, you can change file name, date, permissions as much as you want; as long as the content is preserved, it will work. * Don't rely on being able to generate the same password file. For example, if you compile a program and use the binary as password, don't assume you will be able to re-generate the /very same/ file: next time, something can be different, and even a slight difference will lead to a different result, trashing your data! This is valid also for "generated" images, especially using lossy algorithms (JPEG...). * Generating files from commandline (i.e. echo "password" | bzip2 -c | gzip -c > file.pwd ) may be a good idea, *but* be careful, all the same: be sure to erase the command from the bash history (~/.bash_history), and, when you delete the generated file (and the bash history, in case), to ensure they can't be undeleted. * Password files (and strings) are hashed into keys, to be used by the coder. These keys are generally of 256 bits, which are 32 bytes. So, if you use a good file (that is, a file in which bytes can assume all the 255 values, and aren't disposed in any particular pattern, for example in some binary data), a 32 byte file is just as good as a 512 Kb one. Is this a weakness? No! A good hashing algorithm (and the two used by Gringotts are the best) will scramble the data in a very impredictable manner, so there's NO way to guess the key without knowing the password. In a word: just pick a password and use it, and don't worry! :-) * It's better not to leave files on the hard drive, anyway. Store them in something you can protect such as a CD, a USB flash drive, etc, and keep it safe. Remember to securely wipe files from hard disk when you delete them! Q: Is there something I should know about keydisks? A: Using floppy disks as passwords can effectively improve safety of your data. If you choose the disk carefully, it's very unlikely that an opponent can find one *exactly* equal to yours. Again, here are some considerations: * choose non-standard disks. Avoid use of default linux boot disks, for example. They can easily be downloaded on the Internet. Use a disk for a while, add files to it, remove them, read some more -- and then use it. * the good thing of this feature is that as long as an attacker can't access the "keydisk", he can't access the data, either. The bad case would be if the disks in your collection are few. So: don't let the keydisk hang around on your desktop! Hide it in a safe place! * magnetic media are delicate: dust, heat or a weak magnetic field can make your data unrecoverable. BEWARE! Store the disk in a cool place, wrapped, and far from magnetic fields. * ...and make backups! In UNIX, it's simply a matter of cat /dev/fd0 > floppy.img then you can protect the image as you like: compress it, copy it to other disks (make backups of your disk and hide them; it's the best solution), store it on a safe and less error-prone CD-R.. only, take care not to leave the image file on the hard disk, and to wipe it securely. It can be restored with cat floppy.img > /dev/fd0 Q: Anything else? A: Please be aware that the most common way to crack a password isn't done analyzing the file, but analyzing the owner! Don't use obvious passwords, and please, please don't write them in paper sheets, booklets, unprotected PDAs.. In a word: be careful! Q: What if I lose the password/passfile/keydisk? A: Short answer: no way back. Please, be careful with it. Long answer: there can't be a way back, in a safe system. Gringotts could do two things to grant a solution: tell you the password, and be able to recover the data with another one, or without any. In the first case, the password should be stored in the file, and an attacker could retrieve it pretending to be you. The only way to prevent this would be to protect it... with another password. So what's the use? The second solution is really stupid: if you can access to the data without the password, anyone could. Another short answer: protect Your Password!!! -= Configurations =- Q: What's that `strong random' stuff, in ./configure and/or commandline? A: You can make the program use /dev/random instead of /dev/urandom as the source of random data. I mean with `strong randomness'. You do this by specifying the option `--enable-strong-random' in ./configure for Gringotts <= 1.2.0, or by passing the commandline option `--strong-random' in later versions. /dev/random returns only true random data; when no more random data are available, it stops and waits for the entropy sources. In such cases, it will block the application. When alot of random data is required (i.e. in saving and loading of files, etc), it can be a real pain. Using /dev/urandom will provide a constant stream of numbers, calculating them with a cryptographically strong algorythm based on the true random data available. This means that it's almost as secure as the other method, but much faster. Q: Why are there many algorithms to choose among. What are they used for? A: There are three types of algorithms to choose. Basically, the data you submit to Grg are compressed, then encrypted using a key. This key is obtained by hashing the password you provide. You can choose the algorithms used to perform these three operations: encrypting, hashing and compressing. Of course, you can also decide the compression ratio. "0" actually means that you didn't use any compression algorithm. Q: Which is the best encryption algorithm to use? A: Your mileage may vary. Basically, all the algorithms used are safe ones. They are chosen among the contestants to be AES; LOKI97, SAFER+ and CAST-256 which didn't get to the final phase; first was Rijndael (128), that was designed to be the AES. Second prize went to Serpent, while Twofish was third. Rijndael 256 is a 256-bit-block version of Rijndael, thus a little safer. 3DES (Triple DES) was the algorithm of choice before AES, after DES was proved to be unsafe. Serpent is thought to be the safest, while Rijndael is the best tradeoff between speed and safety. Recent attacks seem to have cast doubts on both of them, while Twofish seems to be unaffected. But no one knows for sure if these attacks are really exploitable. For more information see http://www.counterpane.com/crypto-gram-0209.html#1 and http://www.counterpane.com/crypto-gram-0210.html#2 Anyways, we are in the field of theoretical speculation, since no one has yet found a real, effective attack that breaks these algorithms. Choose one, and be happy! :) Q: Which is the best hashing algorithm to use? A: Again, it's a matter of personal preference. Both SHA1 and RIPEMD-160 are designed to be safe, and no one yet has proved they aren't. Just pick one of them: SHA1 is american, and Ripemd-160 is european, if this means something to you. Q: Which is the best compression algorithm to use? A: This is a more interesting question. BZip2 is slower, but ZLib (gzip) grants lower compression rates. If you prefer to have smaller files, you'll probably want to choose BZip2; on the other hand, if you don't have a powerful PC, or you just don't care, ZLib will be your choice. Notice that if you have few data to encode, ZLib will still generate smaller files than BZip2. -= Internals =- Q: Why didn't you use SHA-256 for hashing? A: To generate the key, Gringotts use the P2K (Password-to-Key) algorithm used by OpenPGP. Using 256-bit hashes would not improve the security, compared to use of 160-bit ones; and since Grg already uses SHA1, it would be somehow a duplication. Q: How does the secure file erasing tool work? A: First, it overwrites the file data several times, using random data. You can control how many times to repeat the process. Then it unlinks the file, and actually deletes it. This way, the previously written data should be impossible to recover. Q: Haven't you read the Gutmann paper? You don't do as he says! Are you mad? A: I've read it. Before calling me names ;-), read it again to the end: it clearly states that 35 passages are just too many for modern drives. Being almost all (E)PRML drives, `a few passages of random scrubbing is the best you can do' (sic). Gringotts allows you to make up to 32 of such passes... Ops... don't you know what the Gutmann paper is? It's a document called `Securing deletion of data from magnetic and solid-state memory', by Peter Gutmann, of Auckland University (NZ). It's really good; you can find it at http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html Q: Nice! So this feature is perfect! :) A: :( Aw, no. As you can read in the man page of shred(1), of which it obviously shares the concept, it works under an important assumption: the filesystem must overwrite the files "in place". This is the case of, for example, Ext2 and FAT, but not of some modern journalling FSs (such as ReiserFS, XFS, JFS) nor of network file systems. Moreover, a network file system could store a copy of the file somewhere remotely, and that one wouldn't be properly wiped. This is valid also for RAID systems, of course. Be careful. Q: Aw! It's SLOW! :( What's up with it? A: Unfortunately, it is. If you save large amounts of data, the various operations involved in encoding them took quite a lot of time. The actual performances varies depending on the system you use: on my K6-3 466 saving a 1 Mb file takes as long as 1.5 minutes, on my Athlon XP1600 about 15 seconds. It depends on many factors: memory speed, processor speed, hard disk speed... anyway, there's much to do for speed, so expect consistent speedups as new versions are released. Q: Hey, I can't use [ gdb | Electric Fence | something else ] to debug it! A: The security measures grg adopts have the effect to corrupt the way it behaves with debuggers. Gdb should work fine, as long as you launch it on a non-SUID binary; on the other hand, grg won't produce core dumps, so you must gdb it "on the fly". It erases also the environmental variables, so programs like Electric Fence will get confused; compile with the --disable-env-check switch to ./configure to disable this erasure -- you won't be able to debug the very env validation code, tough. Finally, ptrace and strace won't work on SUID binaries, just like gdb. -= Future releases =- Q: How can I know when a new version of Gringotts is released? A: Subscribe to the project in Freshmeat (http://freshmeat.net). I'll update the record regularly. Q: Will Grg be ever ported to other systems? A: It should be reasonably compatible with many UNIXes. If it isn't, please tell me. It is currently supported in Linux (RedHat, Mandrake, Gentoo, Debian) and FreeBSD. I don't think I'll ever port it to native Windows systems. They lack many of the special features Gringotts uses to ensure data safety. I simply don't want to spend time to find workarounds for them. Anyway, maybe it can be ported to the cygwin environment; stay tuned! ;) Gringotts could be ported easily to PHP, and published on the web, providing to have a good random number generator. I'll consider it. I have also an idea of porting it to Python, making it a little bit more cross-platform. It depends on the effective availability of libmcrypt and mhash for that platform, tough. We'll see :) Q: Will you implement asymmetric (public/private) key encryption? A: No. It's not in the scope of Grg. But, as many people are asking me it, I'm beginning to consider the possibility. Please tell me if you'd like this, and I'll consider it further... :) Q: What about console/commandline operability? A: This is another thing people keep asking. In latest versions, some basic functionalities have been added; I'd like to add some more, but I don't know how exactly to design them. Every suggestion is greatly appreciated... what would you like to be able to do, exactly? --thanks, thanks, thanks to Dan Frezza for correcting my english!! :-) gringotts-1.2.10/INSTALL000066400000000000000000000062641201055014300146430ustar00rootroot00000000000000 -= Gringotts installation instructions =- Hi! you may have downloaded gringotts mainly in three forms: the CVS repository image, the tarball or an RPM file. Here is how to handle each of them: -= CVS=- You can access to cvs repository of Pluto-devel with these data: CVSROOT: :pserver:anonymous@cvs.pluto.linux.it:/Devel password: anonymous the directory to checkout is called "gringotts". If you download Gringotts from CVS, it will miss all the various files generated by the GNU build tools. So, you need to re-create them. In order to do this, you'll need: Autoconf >= 2.52 Automake = 1.4.* or 1.6.* now, cd to the gringotts dir and type: sh autogen.sh ./configure make dist after these steps, you should have in your current directory a file called gringotts-x.y.z.tar.gz. Please read the next section to learn how to handle it. -= Tarball =- So, you have a tar file, hm? These instructions will deal with a gringotts-x.y.z.tar.gz file; if you've a .tar.bz2 one, you should know how to adapt them to it. If not, just do a bunzip2 gringotts-x.y.z.tar.bz2 gzip --best gringotts-x.y.z.tar to convert it. Well, please unarchive it and go to its dir: tar xzf gringotts-x.y.z.tar.gz cd gringotts-x.y.z in order to compile it, you will need: Gtk+ 2 (>= 1.3.13) http://www.gtk.org libGringotts http://www.prosa.com/people/grizzo/libgringotts/ the specified package versions are simply those I use; if you have older versions, gringotts may or may not compile. Once checked this, do a simple ./configure make make install sequence to install it. You may want to specify some options to the configure script; type ./configure --help to learn more. ./configure currently accepts 4 non-standard options: --enable-env-check at startup, it checks the environment variables, and reset them to safe values. Necessary for a safe use of Gringotts, but in some (rare) cases it can lead to incompatibilities. --enable-root-filter normally, root user can't start Gringotts. This can be avoided specifying a Gringotts commandline option; if you want to make this unavoidable, use this ./configure switch. --enable-maintainer-mode this enables some checks (assertions, MALLOC_CHECK_ env var) useful for programmers, but unneeded to end users. To build an RPM package from the tarball, simply do: rpm -tb --clean gringotts-x.y.z.tar.bz2 or, in a rpm 4.1-based system such as RedHat 8.0, rpmbuild -tb --clean gringotts-x.y.z.tar.bz2 to build a binary package; notice that you'll need the bz2 tarball (simply recompress it if you have a gz one). "-ts" will build a source RPM. After this, read on. -= RPM =- Finally, let's suppose you have an RPM. Gringotts behave just normally, so to compile a source RPM you'll do: rpm --rebuild gringotts-x.y.z-1.src.rpm or, in a rpm 4.1-based system such as RedHat 8.0, rpmbuild --rebuild gringotts-x.y.z-1.src.rpm To specify some configure flags for the compilation process, set the variable $GRG_COMPILE_FLAGS: GRG_COMPILE_FLAGS="--enable-root-filter" rpm --rebuild [...] To install the binary one, you can do: rpm -Uvh gringotts-x.y.z-1.i386.rpm easy, ain't it? Here we are, have fun! -- Mano :) gringotts-1.2.10/Makefile.am000066400000000000000000000013621201055014300156400ustar00rootroot00000000000000SUBDIRS = src pixmaps po doc_DATA = BUGS FAQ README AUTHORS ChangeLog TODO NEWS COPYING EXTRA_DIST = gringotts.spec.in gringotts.desktop.in $(doc_DATA) EXTRA_DIST += autogen.sh Dsktpdir = $(datadir)/gnome/apps/Utilities Dsktp_in_files = gringotts.desktop.in Dsktp_DATA = $(Dsktp_in_files:.desktop.in=.desktop) dist-hook: gringotts.spec cp gringotts.spec $(distdir) install-exec-local: @echo @echo @echo ---------------------------------------------------------------------- @echo md5sum of relevant files: @echo @md5sum $(DESTDIR)$(bindir)/gringotts|(read A B; echo $$B ": " $$A) @echo @echo use this value to check program integrity at any time @echo ---------------------------------------------------------------------- @echo @echo gringotts-1.2.10/Makefile.in000066400000000000000000000545421201055014300156610ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/gringotts.desktop.in $(srcdir)/gringotts.spec.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO config.guess config.sub depcomp install-sh missing \ mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = gringotts.spec gringotts.desktop SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(Dsktpdir)" "$(DESTDIR)$(docdir)" DsktpDATA_INSTALL = $(INSTALL_DATA) docDATA_INSTALL = $(INSTALL_DATA) DATA = $(Dsktp_DATA) $(doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GDKPIX_CFLAGS = @GDKPIX_CFLAGS@ GDKPIX_LIBS = @GDKPIX_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GRG_CAP_NAME = @GRG_CAP_NAME@ GRG_FILE_SUBVERSION = @GRG_FILE_SUBVERSION@ GRG_NAME = @GRG_NAME@ GRG_VERSION = @GRG_VERSION@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBGRG_CFLAGS = @LIBGRG_CFLAGS@ LIBGRG_LIBS = @LIBGRG_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POFILES = @POFILES@ POPT = @POPT@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src pixmaps po doc_DATA = BUGS FAQ README AUTHORS ChangeLog TODO NEWS COPYING EXTRA_DIST = gringotts.spec.in gringotts.desktop.in $(doc_DATA) \ autogen.sh Dsktpdir = $(datadir)/gnome/apps/Utilities Dsktp_in_files = gringotts.desktop.in Dsktp_DATA = $(Dsktp_in_files:.desktop.in=.desktop) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 gringotts.spec: $(top_builddir)/config.status $(srcdir)/gringotts.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ gringotts.desktop: $(top_builddir)/config.status $(srcdir)/gringotts.desktop.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-DsktpDATA: $(Dsktp_DATA) @$(NORMAL_INSTALL) test -z "$(Dsktpdir)" || $(MKDIR_P) "$(DESTDIR)$(Dsktpdir)" @list='$(Dsktp_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(DsktpDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(Dsktpdir)/$$f'"; \ $(DsktpDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(Dsktpdir)/$$f"; \ done uninstall-DsktpDATA: @$(NORMAL_UNINSTALL) @list='$(Dsktp_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(Dsktpdir)/$$f'"; \ rm -f "$(DESTDIR)$(Dsktpdir)/$$f"; \ done install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)" @list='$(doc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \ $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \ rm -f "$(DESTDIR)$(docdir)/$$f"; \ done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(Dsktpdir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 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 clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-DsktpDATA install-docDATA install-dvi: install-dvi-recursive install-exec-am: install-exec-local install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-DsktpDATA uninstall-docDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-hook dist-lzma dist-shar dist-tarZ dist-zip distcheck \ distclean distclean-generic distclean-hdr distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-DsktpDATA install-am \ install-data install-data-am install-docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-exec-local \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall \ uninstall-DsktpDATA uninstall-am uninstall-docDATA dist-hook: gringotts.spec cp gringotts.spec $(distdir) install-exec-local: @echo @echo @echo ---------------------------------------------------------------------- @echo md5sum of relevant files: @echo @md5sum $(DESTDIR)$(bindir)/gringotts|(read A B; echo $$B ": " $$A) @echo @echo use this value to check program integrity at any time @echo ---------------------------------------------------------------------- @echo @echo # 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: gringotts-1.2.10/NEWS000066400000000000000000000000001201055014300142670ustar00rootroot00000000000000gringotts-1.2.10/README000066400000000000000000000202611201055014300144630ustar00rootroot00000000000000Hi! :) A short preamble: Gringotts is the name of the inviolable wizard bank in a famous children book series, known in all the wizardry world for the truculent fate that awaits all the wannabe robbers. I think it's a quite fitting name for a program which purpose is to secure sensitive data, isn't it? :-) Gringotts is a small utility for Linux and other unices that allows you to jot down sensitive data (passwords, credit card numbers, PINs, friends' addresses) in an easy-to-read, easy-to-access, and most of all very secure form. It is inspired by a similar program for Windows (sorry, I can't remember its name) that I used for quite a while (when I was a windows-ist)... it was very useful! For encryptions, Gringotts makes use of the libGringotts library, that is based upon libMCrypt and MHash by Nikos Mavroyanopoulos; in addition, it uses GTK+ 2 for the interface. Actually, it was born as a programming exercise for these libraries, but the program itself is quite cute and useful all the same... in my humble opinion! Being Free Sofware, you're *encouraged* to take the code and do just whatever you want with it.. as long as you retain the original copyright note, of course. Every contribution is more than welcome! Now it's time to read INSTALL, or if you want to step into the project. Please, do! Have a nice day, and thank you very much, Mano :) ------------------------------------------------------------------------ Features This application aims to be as complete and (ehm) feature-ful (?) as possible, with a stress on lightness and simplicity. Currently it features: * Fast, lightweight GTK2 interface * Good integration with GNOME; still, it's not a GNOME application, so it's perfectly integrated in all the others environments as well * High stress on safety & security * Not only "normal" string passwords can be used, but any file can be the password to your data (see FAQ on this). You can even use entire floppy disks! * It features a "password-expiration" system, that warns you when the password gets too old. * Highly customizable * 8 encryption algorithms are available (via libGringotts): o The AES winner: + RIJNDAEL-128 o AES finalists: + SERPENT + TWOFISH o Other AES contestants: + CAST 256 + SAFER+ + LOKI97 o Other strong algorithms: + 3DES + RIJNDAEL-256 * 2 160-bit hash algorithms, used to generate the key o SHA1 o RIPEMD 160 * 2 compression types, with 4 compression levels each o ZLib o BZip2 * Complete & easy management of entries' order * Small files can be embedded into any entry * Complete Search function. * Very intuitive usability, you won't need any manual (yet :) * The standard linux file utility identifies Gringotts files correctly, from version 3.38 Of course, the program lacks of many, many features, still.. please feel free to write me if you have some particular wish! ------------------------------------------------------------------------ Troubleshooting for common problems with Gringotts ================================================== ((((((( Taken from README.Debian by: -- Bastian Kleineidam ))))))) Startup failure --------------- If gringotts crashes on startup with a segmentation fault or the message "gringotts-CRITICAL **: Increase the memory locking limit to at least 51200000 bytes. Current limit: bytes.", you have to increase the locked memory on your system. One option would be to copy the gringotts executable and make it not SUID-root. If you're interested in the other option - read on. It might also be a good idea to switch to check if your login manager properly supports PAM (for example the wdm login program does not support PAM). a) Replace 'mylogin' with your username, and add the lines below to /etc/security/limits.conf. See the documentation at the beginning of limits.conf for more info about these values. # mylogin soft memlock 50000 mylogin hard memlock 50000 b) Enable the pam_limits.so module in all PAM login managers, for example in /etc/pam.d/{login,xdm,gdm,ssh}. c) Log out, and log in again. Now your memlock limit should be 50000 KBytes (or roughly 50MB). Verify this by executing ulimit: $ ulimit -l 50000 If you want to understand the above steps, read along. Since kernel 2.6.9, the amount of locked memory is limited for normal users. But gringotts needs locked memory, lots of it. And when it does not get enough locked memory gringotts just exits. So the above steps increase the amount of locked memory each user is allowed to have. a) The limits.conf configures resource limits. See the documentation at the beginning of the file what each entry means. b) The limits.conf directory is activated by the pam_limits.so PAM module. So the module has to be enabled in all PAM applications you use to login into your machine. c) After logging in again, the limits should be set. Note that Gringotts can only use memory locking when it has the setuid bit set in its permissions. If you do not want memory locking enabled anyway, use dpkg-statoverride(8) to remove the setuid bit. But I do not recommend this. Gringotts is very slow ---------------------- You most certainly have a debug build of gringotts which enables mudflap support. This slows down gringotts a lot. To disable mudflap, set this environment variable: $ export MUDFLAP_OPTIONS="-mode-nop" For more information about mudflap, see http://gcc.gnu.org/wiki/Mudflap%20Pointer%20Debugging =================================================== Authors This program has been originally designed & written by Germano Rizzo (aka Mano) (aka me :-) . I also translated it into italian. Additional (precious :-) coding and french translation by Nicholas Pouillon (aka Nipo) . German translation by Hermann J. Beckers . Nice patches and a major bugfix by James Antill . Many other people have given their unvaluable contribution to this project. Not in any particular order: Bob Mathews Anders Nordby Gabriele Giorgetti Lawrence MacIntyre Gianluca Montecchi Kurt Hindenburg Christos Zoulas William McVey Dan Frezza Sebastien Bonnegent Rene Puls Phillip Hofmeister Kevin Tucker Christian Lang Pavel Tavoda Sherwin J. Singer Terry Nightingale Antonella Beccaria Pierluigi Perri Leonardo Boshell Ted Rolle Davide Savazzi Patrick Karl Lattimer Massimiliano Bini Jason Hildebrand Goetz Waschk Timothy H. Keitt ------------------------------------------------------------------------ Copyright notes The "Gringotts" application itself is (c) (better, copyleft) 2002 by Germano Rizzo . You can use, modify and redistribute them /as you wish/ (it's free software! :), under the terms of the GNU General Public License , v.2 or later. My deepest thanks to the Free Software Foundation and the GNU project for having created such a wonderful concept! Being quoted by Joanna K. Rowling's books, the very name Gringotts could be (c), (r) or (tm) by her or by someone in her behalf, altough I'm not aware of it. In case I'm violating any right, just let me know. gringotts-1.2.10/TODO000066400000000000000000000027221201055014300142750ustar00rootroot00000000000000* fix the text processing of the options in src/grg_prefs_io.c: - more robust checking for if a character is a digit. - check for '\0' character. - -- 1.3 -- * in next FILE SUBFORMAT, comment of attached files shouldn't default to "none" when not present: it gets translation-dependent. * remove the many commented parts in (i.e.) gringotts.c * possibility to consistenly use other devices than /dev/fd0 * "structured" spreadsheet-style pages with "masked" text * HUGE check for memory leaks and overruns, part. for structures * fix problem with editor bgcolor when switching fonts * attach controls in a separate window -- 1.X -- * remap menu key bindings * help * apply stiles to fonts (bold, italic, underl., teletype) * undo command -- ?.? -- * display MD5 of attachments * handling of signals * assertions * check if another instance is using a file, if so quit * check that argv[0] is the executable itself * alert when new versions are available * hide also the entries' text, when in memory -- 2 consider -- * add eterm and opera to doc managers; add stg for windows, too? * find a better way to visualize docs * b64ize the attached files immediately * possibility to use more than one pwd type (bad 4 cmdline...) * possibility to add fields, etc. * don't load all in memory * update to xml-i18n-tools * multiple document model * add possibility to set max file size (in ./configure or elsewhere) * `paned' window, no nav toolbar, entry list at the left edge gringotts-1.2.10/aclocal.m4000066400000000000000000001444331201055014300154530ustar00rootroot00000000000000# generated automatically by aclocal 1.10.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008 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. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(AC_AUTOCONF_VERSION, [2.63],, [m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. # # This file is free software, distributed under the terms of the GNU # General Public License. As a special exception to the GNU General # Public License, this file may be distributed as part of a program # that contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # # Macro to add for using GNU gettext. # Ulrich Drepper , 1995, 1996 # # Modified to never use included libintl. # Owen Taylor , 12/15/1998 # # Major rework to remove unused code # Owen Taylor , 12/11/2002 # # Added better handling of ALL_LINGUAS from GNU gettext version # written by Bruno Haible, Owen Taylor 5/30/3002 # # Modified to require ngettext # Matthias Clasen 08/06/2004 # # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT AC_PREREQ(2.53) dnl dnl We go to great lengths to make sure that aclocal won't dnl try to pull in the installed version of these macros dnl when running aclocal in the glib directory. dnl m4_copy([AC_DEFUN],[glib_DEFUN]) m4_copy([AC_REQUIRE],[glib_REQUIRE]) dnl dnl At the end, if we're not within glib, we'll define the public dnl definitions in terms of our private definitions. dnl # GLIB_LC_MESSAGES #-------------------- glib_DEFUN([GLIB_LC_MESSAGES], [AC_CHECK_HEADERS([locale.h]) 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 file defines LC_MESSAGES.]) fi fi]) # GLIB_PATH_PROG_WITH_TEST #---------------------------- dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], [# 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 ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], dnl NLS is obligatory [USE_NLS=yes AC_SUBST(USE_NLS) gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, [AC_TRY_LINK([ #include ], [return !ngettext ("","", 1)], gt_cv_func_ngettext_libc=yes, gt_cv_func_ngettext_libc=no) ]) if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, [AC_TRY_LINK([ #include ], [return !dgettext ("","")], gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no) ]) fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CHECK_FUNCS(bind_textdomain_codeset) fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then AC_CHECK_LIB(intl, bindtextdomain, [AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dgettext, gt_cv_func_dgettext_libintl=yes)])]) if test "$gt_cv_func_dgettext_libintl" != "yes" ; then AC_MSG_CHECKING([if -liconv is needed to use gettext]) AC_MSG_RESULT([]) AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dcgettext, [gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv], :,-liconv)], :,-liconv) fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset AC_CHECK_FUNCS(bind_textdomain_codeset) LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then AC_DEFINE(HAVE_GETTEXT,1, [Define if the GNU gettext() function is already present or preinstalled.]) GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) MSGFMT_OPTS= AC_MSG_CHECKING([if msgfmt accepts -c]) GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) AC_SUBST(MSGFMT_OPTS) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr], [CATOBJEXT=.gmo DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share and dnl and CATOBJEXT=.gmo in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [CATOBJEXT=.gmo DATADIRNAME=share], [CATOBJEXT=.mo DATADIRNAME=lib]) ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac]) LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi ]) if test "$gt_cv_have_gettext" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [always defined to indicate that i18n is enabled]) fi dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is not 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 program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po AC_OUTPUT_COMMANDS( [case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac]) dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.in. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLLIBS) AC_SUBST(PO_IN_DATADIR_TRUE) AC_SUBST(PO_IN_DATADIR_FALSE) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) # AM_GLIB_GNU_GETTEXT # ------------------- # Do checks necessary for use of gettext. If a suitable implementation # of gettext is found in either in libintl or in the C library, # it will set INTLLIBS to the libraries needed for use of gettext # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl glib_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_HEADER_STDC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi 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 dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but ($top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- # Define VARIABLE to the location where catalog files will # be installed by po/Makefile. glib_DEFUN([GLIB_DEFINE_LOCALEDIR], [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" AC_DEFINE_UNQUOTED($1, "$localedir", [Define the location where the catalogs will be installed]) ]) dnl dnl Now the definitions that aclocal will find dnl ifdef(glib_configure_in,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) # # Create a temporary file with TEST-FILE as its contents and pass the # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with # 0 and perform ACTION-IF-FAIL for any other exit status. AC_DEFUN([GLIB_RUN_PROG], [cat >conftest.foo <<_ACEOF $2 _ACEOF if AC_RUN_LOG([$1 conftest.foo]); then m4_ifval([$3], [$3], [:]) m4_ifvaln([$4], [else $4])dnl echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD fi]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # 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. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007 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. # 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. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 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. # 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. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # 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. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl 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])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # 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. # serial 9 # 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], UPC, [depcc="$UPC" am_compiler_list=], [$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 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && 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 # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' 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 build --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])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 # 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. #serial 3 # _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. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. 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 " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # 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. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008 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. # serial 13 # 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. # 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_PREREQ([2.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi 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 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])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_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # 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([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _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 AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])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_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 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. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 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. # serial 2 # 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])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 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. # serial 3 # 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 ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # 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. # serial 5 # 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 AC_REQUIRE_AUX_FILE([missing])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 ]) # Copyright (C) 2003, 2004, 2005, 2006 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. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 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. # serial 3 # _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. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # 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. # serial 4 # 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)]) # Copyright (C) 2001, 2003, 2005 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. # AM_PROG_INSTALL_STRIP # --------------------- # 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="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 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. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 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. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR gringotts-1.2.10/autogen.sh000077500000000000000000000000451201055014300156020ustar00rootroot00000000000000#!/bin/sh aclocal automake autoconf gringotts-1.2.10/config.guess000066400000000000000000000000001201055014300161050ustar00rootroot00000000000000gringotts-1.2.10/config.h.in000066400000000000000000000066311201055014300156330ustar00rootroot00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Enable 2Mb limit to attachments */ #undef ATTACH_LIMIT /* block device file to be used as password */ #undef BLOCK_DEV /* BLOCK_DEV is a proper floppy device */ #undef BLOCK_DEV_IS_FLOPPY /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* Validate the environmental variables at startup */ #undef ENV_CHECK /* Package for GettText */ #undef GETTEXT_PACKAGE /* The program name with capital initial letter */ #undef GRG_CAP_NAME /* The version of the XML format used to save files */ #undef GRG_FILE_SUBVERSION /* The program name */ #undef GRG_NAME /* The program version */ #undef GRG_VERSION /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `clearenv' function. */ #undef HAVE_CLEARENV /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the `environ' function. */ #undef HAVE_ENVIRON /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `isatty' function. */ #undef HAVE_ISATTY /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_FD_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mlockall' function. */ #undef HAVE_MLOCKALL /* 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 to 1 if you have the header file. */ #undef HAVE_SYS_FSUID_H /* 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 `tcgetattr' function. */ #undef HAVE_TCGETATTR /* Define to 1 if you have the `ttyname' function. */ #undef HAVE_TTYNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Enable checks normally unneeded */ #undef MAINTAINER_MODE /* 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 /* Strictly forbids access to the root user */ #undef ROOT_FILTER /* Define to 1 if the `S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* Define to empty if `const' does not conform to ANSI C. */ #undef const gringotts-1.2.10/config.sub000066400000000000000000000000001201055014300155500ustar00rootroot00000000000000gringotts-1.2.10/configure000077500000000000000000010721221201055014300155160ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for gringotts 1.2.10. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='gringotts' PACKAGE_TARNAME='gringotts' PACKAGE_VERSION='1.2.10' PACKAGE_STRING='gringotts 1.2.10' PACKAGE_BUGREPORT='shlomif@iglu.org.il' ac_unique_file="src/gringotts.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS POPT LIBGRG_LIBS LIBGRG_CFLAGS GDKPIX_LIBS GDKPIX_CFLAGS GTK2_LIBS GTK2_CFLAGS PKG_CONFIG X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS XMKMF MKINSTALLDIRS POSUB POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INTLLIBS INSTOBJEXT GMOFILES DATADIRNAME CATOBJEXT CATALOGS XGETTEXT GMSGFMT MSGFMT_OPTS MSGFMT USE_NLS EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC GRG_FILE_SUBVERSION GRG_CAP_NAME GRG_NAME GRG_VERSION GETTEXT_PACKAGE am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_env_check enable_root_filter enable_maintainer_mode enable_attach_limit with_floppy_device enable_dependency_tracking with_x ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP XMKMF PKG_CONFIG GTK2_CFLAGS GTK2_LIBS GDKPIX_CFLAGS GDKPIX_LIBS LIBGRG_CFLAGS LIBGRG_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures gringotts 1.2.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/gringotts] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of gringotts 1.2.10:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-env-check validate the environmental variables at startup (default=yes) --enable-root-filter strictly forbids access to the root user (default=no) --enable-maintainer-mode enable some checks that are normally unneeded (default=no) --enable-attach-limit enable 2Mb limit for attached files (default=yes) --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-block-device=DEV specify the block device to be used as password (default=/dev/fd0) --with-x use the X Window System Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor XMKMF Path to xmkmf, Makefile generator for X Window System PKG_CONFIG path to pkg-config utility GTK2_CFLAGS C compiler flags for GTK2, overriding pkg-config GTK2_LIBS linker flags for GTK2, overriding pkg-config GDKPIX_CFLAGS C compiler flags for GDKPIX, overriding pkg-config GDKPIX_LIBS linker flags for GDKPIX, overriding pkg-config LIBGRG_CFLAGS C compiler flags for LIBGRG, overriding pkg-config LIBGRG_LIBS linker flags for LIBGRG, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF gringotts configure 1.2.10 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gringotts $as_me 1.2.10, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu GRG_NAME=$PACKAGE_NAME GRG_CAP_NAME=Gringotts GRG_VERSION=$PACKAGE_VERSION GRG_FILE_SUBVERSION="3" am__api_version='1.10' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # 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". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` 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= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi 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 if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi 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 # Define the identity of the package. PACKAGE=$GRG_NAME VERSION=$GRG_VERSION cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # 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. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers config.h" GETTEXT_PACKAGE=$GRG_NAME cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define GRG_NAME "$GRG_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define GRG_CAP_NAME "$GRG_CAP_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define GRG_VERSION "$GRG_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define GRG_FILE_SUBVERSION "$GRG_FILE_SUBVERSION" _ACEOF # Check whether --enable-env-check was given. if test "${enable_env_check+set}" = set; then enableval=$enable_env_check; enable_env_check="$enableval" else enable_env_check=yes fi if test "$enable_env_check" = yes; then { $as_echo "$as_me:$LINENO: env validation active" >&5 $as_echo "$as_me: env validation active" >&6;} cat >>confdefs.h <<\_ACEOF #define ENV_CHECK 1 _ACEOF else { $as_echo "$as_me:$LINENO: env validation inactive" >&5 $as_echo "$as_me: env validation inactive" >&6;} fi # Check whether --enable-root-filter was given. if test "${enable_root_filter+set}" = set; then enableval=$enable_root_filter; enable_root_filter="$enableval" else enable_root_filter=no fi if test "$enable_root_filter" = yes; then { $as_echo "$as_me:$LINENO: strict root check active" >&5 $as_echo "$as_me: strict root check active" >&6;} cat >>confdefs.h <<\_ACEOF #define ROOT_FILTER 1 _ACEOF else { $as_echo "$as_me:$LINENO: strict root check inactive" >&5 $as_echo "$as_me: strict root check inactive" >&6;} fi # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; enable_maintainer_mode="$enableval" else enable_maintainer_mode=no fi if test "$enable_maintainer_mode" = yes; then { $as_echo "$as_me:$LINENO: maintainer checks active" >&5 $as_echo "$as_me: maintainer checks active" >&6;} cat >>confdefs.h <<\_ACEOF #define MAINTAINER_MODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: maintainer checks inactive" >&5 $as_echo "$as_me: maintainer checks inactive" >&6;} fi # Check whether --enable-attach-limit was given. if test "${enable_attach_limit+set}" = set; then enableval=$enable_attach_limit; enable_attach_limit="$enableval" else enable_attach_limit=no fi if test "$enable_attach_limit" = yes; then { $as_echo "$as_me:$LINENO: 2Mb attachment limit active" >&5 $as_echo "$as_me: 2Mb attachment limit active" >&6;} cat >>confdefs.h <<\_ACEOF #define ATTACH_LIMIT 1 _ACEOF else { $as_echo "$as_me:$LINENO: 2Mb attachment limit inactive" >&5 $as_echo "$as_me: 2Mb attachment limit inactive" >&6;} fi # Check whether --with-floppy-device was given. if test "${with_floppy_device+set}" = set; then withval=$with_floppy_device; with_floppy_device="$withval" else with_floppy_device="/dev/fd0" fi if test -b "$with_floppy_device"; then { $as_echo "$as_me:$LINENO: valid block device found in $with_floppy_device" >&5 $as_echo "$as_me: valid block device found in $with_floppy_device" >&6;} cat >>confdefs.h <<_ACEOF #define BLOCK_DEV "$with_floppy_device" _ACEOF else { $as_echo "$as_me:$LINENO: invalid block device $with_floppy_device, using /dev/fd0" >&5 $as_echo "$as_me: invalid block device $with_floppy_device, using /dev/fd0" >&6;} cat >>confdefs.h <<\_ACEOF #define BLOCK_DEV "/dev/fd0" _ACEOF fi if test "`expr substr "$with_floppy_device" 1 7`" = "/dev/fd"; then { $as_echo "$as_me:$LINENO: block device seems to be a floppy" >&5 $as_echo "$as_me: block device seems to be a floppy" >&6;} cat >>confdefs.h <<\_ACEOF #define BLOCK_DEV_IS_FLOPPY 1 _ACEOF fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" 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. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } 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 { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else 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_CC_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 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && 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 # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ALL_LINGUAS="it fr de pl ru" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in locale.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------- ## ## Report this to shlomif@iglu.org.il ## ## ---------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if test "${am_cv_val_LC_MESSAGES+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_val_LC_MESSAGES=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_val_LC_MESSAGES=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_LC_MESSAGES 1 _ACEOF fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= if test "${ac_cv_header_libintl_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for libintl.h" >&5 $as_echo_n "checking for libintl.h... " >&6; } if test "${ac_cv_header_libintl_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 $as_echo "$ac_cv_header_libintl_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking libintl.h usability" >&5 $as_echo_n "checking libintl.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking libintl.h presence" >&5 $as_echo_n "checking libintl.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------- ## ## Report this to shlomif@iglu.org.il ## ## ---------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:$LINENO: checking for libintl.h" >&5 $as_echo_n "checking for libintl.h... " >&6; } if test "${ac_cv_header_libintl_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_libintl_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 $as_echo "$ac_cv_header_libintl_h" >&6; } fi if test "x$ac_cv_header_libintl_h" = x""yes; then gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:$LINENO: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if test "${gt_cv_func_ngettext_libc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_ngettext_libc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_ngettext_libc=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:$LINENO: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if test "${gt_cv_func_dgettext_libc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_dgettext_libc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_dgettext_libc=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_intl_bindtextdomain=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_bindtextdomain=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = x""yes; then { $as_echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if test "${ac_cv_lib_intl_ngettext+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_intl_ngettext=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_ngettext=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = x""yes; then { $as_echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if test "${ac_cv_lib_intl_dgettext+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_intl_dgettext=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_dgettext=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = x""yes; then gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:$LINENO: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if test "${ac_cv_lib_intl_ngettext+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_intl_ngettext=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_ngettext=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = x""yes; then { $as_echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if test "${ac_cv_lib_intl_dcgettext+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_intl_dcgettext=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_intl_dcgettext=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = x""yes; then gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MSGFMT+set}" = set; then $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:$LINENO: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { ($as_echo "$as_me:$LINENO: \$MSGFMT -c -o /dev/null conftest.foo") >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GMSGFMT+set}" = set; then $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:$LINENO: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_XGETTEXT+set}" = set; then $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then CATOBJEXT=.gmo DATADIRNAME=share else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 case $host in *-*-solaris*) { $as_echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5 $as_echo_n "checking for bind_textdomain_codeset... " >&6; } if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define bind_textdomain_codeset to an innocuous variant, in case declares bind_textdomain_codeset. For example, HP-UX 11i declares gettimeofday. */ #define bind_textdomain_codeset innocuous_bind_textdomain_codeset /* System header to define __stub macros and hopefully few prototypes, which can conflict with char bind_textdomain_codeset (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef bind_textdomain_codeset /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bind_textdomain_codeset (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_bind_textdomain_codeset || defined __stub___bind_textdomain_codeset choke me #endif int main () { return bind_textdomain_codeset (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_bind_textdomain_codeset=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_bind_textdomain_codeset=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5 $as_echo "$ac_cv_func_bind_textdomain_codeset" >&6; } if test "x$ac_cv_func_bind_textdomain_codeset" = x""yes; then CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:$LINENO: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES { $as_echo "$as_me:$LINENO: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5 $as_echo "$as_me: error: cannot use X directory names containing '" >&2;} { (exit 1); exit 1; }; };; #( *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /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' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # We can compile using X headers with no special include directory. ac_x_includes= else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:$LINENO: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. cat >>confdefs.h <<\_ACEOF #define X_DISPLAY_MISSING 1 _ACEOF X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { $as_echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dnet_dnet_ntoa=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. { $as_echo "$as_me:$LINENO: checking for gethostbyname" >&5 $as_echo_n "checking for gethostbyname... " >&6; } if test "${ac_cv_func_gethostbyname+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_gethostbyname || defined __stub___gethostbyname choke me #endif int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_gethostbyname=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 $as_echo "$ac_cv_func_gethostbyname" >&6; } if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_nsl_gethostbyname=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_bsd_gethostbyname=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. { $as_echo "$as_me:$LINENO: checking for connect" >&5 $as_echo_n "checking for connect... " >&6; } if test "${ac_cv_func_connect+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_connect || defined __stub___connect choke me #endif int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_connect=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 $as_echo "$ac_cv_func_connect" >&6; } if test $ac_cv_func_connect = no; then { $as_echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if test "${ac_cv_lib_socket_connect+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_socket_connect=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = x""yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. { $as_echo "$as_me:$LINENO: checking for remove" >&5 $as_echo_n "checking for remove... " >&6; } if test "${ac_cv_func_remove+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_remove || defined __stub___remove choke me #endif int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_remove=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 $as_echo "$ac_cv_func_remove" >&6; } if test $ac_cv_func_remove = no; then { $as_echo "$as_me:$LINENO: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if test "${ac_cv_lib_posix_remove+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_posix_remove=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. { $as_echo "$as_me:$LINENO: checking for shmat" >&5 $as_echo_n "checking for shmat... " >&6; } if test "${ac_cv_func_shmat+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shmat || defined __stub___shmat choke me #endif int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shmat=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 $as_echo "$ac_cv_func_shmat" >&6; } if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if test "${ac_cv_lib_ipc_shmat+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_ipc_shmat=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = x""yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # 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. # John Interrante, Karl Berry { $as_echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_ICE_IceConnectionNumber=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for GTK2" >&5 $as_echo_n "checking for GTK2... " >&6; } if test -n "$GTK2_CFLAGS"; then pkg_cv_GTK2_CFLAGS="$GTK2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.12.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.12.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.12.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK2_LIBS"; then pkg_cv_GTK2_LIBS="$GTK2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.12.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.12.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GTK2_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.12.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= 2.12.0" 2>&1` else GTK2_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= 2.12.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK2_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (gtk+-2.0 >= 2.12.0) were not met: $GTK2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (gtk+-2.0 >= 2.12.0) were not met: $GTK2_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK2_CFLAGS and GTK2_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else GTK2_CFLAGS=$pkg_cv_GTK2_CFLAGS GTK2_LIBS=$pkg_cv_GTK2_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for GDKPIX" >&5 $as_echo_n "checking for GDKPIX... " >&6; } if test -n "$GDKPIX_CFLAGS"; then pkg_cv_GDKPIX_CFLAGS="$GDKPIX_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gdk-pixbuf-2.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GDKPIX_CFLAGS=`$PKG_CONFIG --cflags "gdk-pixbuf-2.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GDKPIX_LIBS"; then pkg_cv_GDKPIX_LIBS="$GDKPIX_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gdk-pixbuf-2.0\"") >&5 ($PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_GDKPIX_LIBS=`$PKG_CONFIG --libs "gdk-pixbuf-2.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GDKPIX_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gdk-pixbuf-2.0" 2>&1` else GDKPIX_PKG_ERRORS=`$PKG_CONFIG --print-errors "gdk-pixbuf-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GDKPIX_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (gdk-pixbuf-2.0) were not met: $GDKPIX_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GDKPIX_CFLAGS and GDKPIX_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (gdk-pixbuf-2.0) were not met: $GDKPIX_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GDKPIX_CFLAGS and GDKPIX_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GDKPIX_CFLAGS and GDKPIX_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GDKPIX_CFLAGS and GDKPIX_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else GDKPIX_CFLAGS=$pkg_cv_GDKPIX_CFLAGS GDKPIX_LIBS=$pkg_cv_GDKPIX_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for LIBGRG" >&5 $as_echo_n "checking for LIBGRG... " >&6; } if test -n "$LIBGRG_CFLAGS"; then pkg_cv_LIBGRG_CFLAGS="$LIBGRG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libgringotts >= 1.2.0\"") >&5 ($PKG_CONFIG --exists --print-errors "libgringotts >= 1.2.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBGRG_CFLAGS=`$PKG_CONFIG --cflags "libgringotts >= 1.2.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBGRG_LIBS"; then pkg_cv_LIBGRG_LIBS="$LIBGRG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libgringotts >= 1.2.0\"") >&5 ($PKG_CONFIG --exists --print-errors "libgringotts >= 1.2.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBGRG_LIBS=`$PKG_CONFIG --libs "libgringotts >= 1.2.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBGRG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libgringotts >= 1.2.0" 2>&1` else LIBGRG_PKG_ERRORS=`$PKG_CONFIG --print-errors "libgringotts >= 1.2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBGRG_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (libgringotts >= 1.2.0) were not met: $LIBGRG_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBGRG_CFLAGS and LIBGRG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (libgringotts >= 1.2.0) were not met: $LIBGRG_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBGRG_CFLAGS and LIBGRG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables LIBGRG_CFLAGS and LIBGRG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables LIBGRG_CFLAGS and LIBGRG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else LIBGRG_CFLAGS=$pkg_cv_LIBGRG_CFLAGS LIBGRG_LIBS=$pkg_cv_LIBGRG_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi { $as_echo "$as_me:$LINENO: checking for poptGetContext in -lpopt" >&5 $as_echo_n "checking for poptGetContext in -lpopt... " >&6; } if test "${ac_cv_lib_popt_poptGetContext+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpopt $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char poptGetContext (); int main () { return poptGetContext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_popt_poptGetContext=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_popt_poptGetContext=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_popt_poptGetContext" >&5 $as_echo "$ac_cv_lib_popt_poptGetContext" >&6; } if test "x$ac_cv_lib_popt_poptGetContext" = x""yes; then if test "${ac_cv_header_popt_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for popt.h" >&5 $as_echo_n "checking for popt.h... " >&6; } if test "${ac_cv_header_popt_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5 $as_echo "$ac_cv_header_popt_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking popt.h usability" >&5 $as_echo_n "checking popt.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking popt.h presence" >&5 $as_echo_n "checking popt.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: popt.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: popt.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: popt.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: popt.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: popt.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: popt.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: popt.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: popt.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: popt.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: popt.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: popt.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: popt.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: popt.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: popt.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: popt.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: popt.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------- ## ## Report this to shlomif@iglu.org.il ## ## ---------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:$LINENO: checking for popt.h" >&5 $as_echo_n "checking for popt.h... " >&6; } if test "${ac_cv_header_popt_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_popt_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5 $as_echo "$ac_cv_header_popt_h" >&6; } fi if test "x$ac_cv_header_popt_h" = x""yes; then POPT='-lpopt' else { { $as_echo "$as_me:$LINENO: error: *** ERROR: POPT header files not found ***" >&5 $as_echo "$as_me: error: *** ERROR: POPT header files not found ***" >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** ERROR: POPT library not found ***" >&5 $as_echo "$as_me: error: *** ERROR: POPT library not found ***" >&2;} { (exit 1); exit 1; }; } fi for ac_func in mlockall tcgetattr clearenv environ isatty ttyname do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 $as_echo_n "checking whether stat file-mode macros are broken... " >&6; } if test "${ac_cv_header_stat_broken+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if defined S_ISBLK && defined S_IFDIR extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; #endif #if defined S_ISBLK && defined S_IFCHR extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; #endif #if defined S_ISLNK && defined S_IFREG extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; #endif #if defined S_ISSOCK && defined S_IFREG extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stat_broken=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stat_broken=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 $as_echo "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then cat >>confdefs.h <<\_ACEOF #define STAT_MACROS_BROKEN 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi for ac_header in sys/fsuid.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------- ## ## Report this to shlomif@iglu.org.il ## ## ---------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in linux/fd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------- ## ## Report this to shlomif@iglu.org.il ## ## ---------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const /**/ _ACEOF fi ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files src/Makefile" ac_config_files="$ac_config_files pixmaps/Makefile" ac_config_files="$ac_config_files po/Makefile.in" ac_config_files="$ac_config_files gringotts.spec" ac_config_files="$ac_config_files gringotts.desktop" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by gringotts $as_me 1.2.10, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="`echo $ac_config_files`" config_headers="`echo $ac_config_headers`" config_commands="`echo $ac_config_commands`" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ gringotts config.status 1.2.10 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "gringotts.spec") CONFIG_FILES="$CONFIG_FILES gringotts.spec" ;; "gringotts.desktop") CONFIG_FILES="$CONFIG_FILES gringotts.desktop" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || 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. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. 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 " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi gringotts-1.2.10/configure.ac000066400000000000000000000105371201055014300160760ustar00rootroot00000000000000AC_INIT(gringotts, 1.2.10, shlomif@iglu.org.il) GRG_NAME=$PACKAGE_NAME GRG_CAP_NAME=Gringotts GRG_VERSION=$PACKAGE_VERSION GRG_FILE_SUBVERSION="3" AM_INIT_AUTOMAKE($GRG_NAME, $GRG_VERSION) AC_CONFIG_SRCDIR(src/gringotts.c) AM_CONFIG_HEADER(config.h) GETTEXT_PACKAGE=$GRG_NAME AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", Package for GettText) AC_SUBST(GRG_VERSION) AC_SUBST(GRG_NAME) AC_SUBST(GRG_CAP_NAME) AC_SUBST(GRG_FILE_SUBVERSION) AC_DEFINE_UNQUOTED(GRG_NAME, "$GRG_NAME", The program name) AC_DEFINE_UNQUOTED(GRG_CAP_NAME, "$GRG_CAP_NAME", The program name with capital initial letter) AC_DEFINE_UNQUOTED(GRG_VERSION, "$GRG_VERSION", The program version) AC_DEFINE_UNQUOTED(GRG_FILE_SUBVERSION, "$GRG_FILE_SUBVERSION", The version of the XML format used to save files) dnl Specify a configuration file dnl additional ./configure options AH_TEMPLATE(ENV_CHECK,[Validate the environmental variables at startup]) AC_ARG_ENABLE(env-check, AC_HELP_STRING([--enable-env-check],[validate the environmental variables at startup (default=yes)]), enable_env_check="$enableval", enable_env_check=yes) if test "$enable_env_check" = yes; then AC_MSG_NOTICE(env validation active) AC_DEFINE(ENV_CHECK) else AC_MSG_NOTICE(env validation inactive) fi AH_TEMPLATE(ROOT_FILTER,[Strictly forbids access to the root user]) AC_ARG_ENABLE(root-filter, AC_HELP_STRING([--enable-root-filter],[strictly forbids access to the root user (default=no)]), enable_root_filter="$enableval", enable_root_filter=no) if test "$enable_root_filter" = yes; then AC_MSG_NOTICE(strict root check active) AC_DEFINE(ROOT_FILTER) else AC_MSG_NOTICE(strict root check inactive) fi AH_TEMPLATE(MAINTAINER_MODE,[Enable checks normally unneeded]) AC_ARG_ENABLE(maintainer-mode, AC_HELP_STRING([--enable-maintainer-mode],[enable some checks that are normally unneeded (default=no)]), enable_maintainer_mode="$enableval", enable_maintainer_mode=no) if test "$enable_maintainer_mode" = yes; then AC_MSG_NOTICE(maintainer checks active) AC_DEFINE(MAINTAINER_MODE) else AC_MSG_NOTICE(maintainer checks inactive) fi AH_TEMPLATE(ATTACH_LIMIT,[Enable 2Mb limit to attachments]) AC_ARG_ENABLE(attach-limit, AC_HELP_STRING([--enable-attach-limit],[enable 2Mb limit for attached files (default=yes)]), enable_attach_limit="$enableval", enable_attach_limit=no) if test "$enable_attach_limit" = yes; then AC_MSG_NOTICE(2Mb attachment limit active) AC_DEFINE(ATTACH_LIMIT) else AC_MSG_NOTICE(2Mb attachment limit inactive) fi AH_TEMPLATE(BLOCK_DEV,[block device file to be used as password]) AC_ARG_WITH(floppy-device, AC_HELP_STRING([--with-block-device=DEV],[specify the block device to be used as password (default=/dev/fd0)]), with_floppy_device="$withval", with_floppy_device="/dev/fd0") if test -b "$with_floppy_device"; then AC_MSG_NOTICE([valid block device found in $with_floppy_device]) AC_DEFINE_UNQUOTED(BLOCK_DEV, "$with_floppy_device") else AC_MSG_NOTICE([invalid block device $with_floppy_device, using /dev/fd0]) AC_DEFINE(BLOCK_DEV, "/dev/fd0") fi AH_TEMPLATE(BLOCK_DEV_IS_FLOPPY,[BLOCK_DEV is a proper floppy device]) if test "`expr substr "$with_floppy_device" 1 7`" = "/dev/fd"; then AC_MSG_NOTICE([block device seems to be a floppy]) AC_DEFINE(BLOCK_DEV_IS_FLOPPY) fi dnl Checks for programs. AC_PROG_CC ALL_LINGUAS="it fr de pl ru" AM_GLIB_GNU_GETTEXT dnl Checks for libraries. AC_PATH_XTRA PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.12.0) AC_SUBST(GTK2_CFLAGS) AC_SUBST(GTK2_LIBS) PKG_CHECK_MODULES(GDKPIX, gdk-pixbuf-2.0) AC_SUBST(GDKPIX_CFLAGS) AC_SUBST(GDKPIX_LIBS) PKG_CHECK_MODULES(LIBGRG, libgringotts >= 1.2.0) AC_SUBST(LIBGRG_CFLAGS) AC_SUBST(LIBGRG_LIBS) AC_CHECK_LIB(popt, poptGetContext, [AC_CHECK_HEADER(popt.h, POPT='-lpopt', [AC_MSG_ERROR(*** ERROR: POPT header files not found ***)])], [AC_MSG_ERROR(*** ERROR: POPT library not found ***)]) AC_SUBST(POPT) AC_CHECK_FUNCS(mlockall tcgetattr clearenv environ isatty ttyname) dnl Checks for header files. AC_HEADER_STAT AC_HEADER_STDC AC_CHECK_HEADERS(sys/fsuid.h) AC_CHECK_HEADERS(linux/fd.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST dnl Checks for library functions. AC_CONFIG_FILES(Makefile) AC_CONFIG_FILES(src/Makefile) AC_CONFIG_FILES(pixmaps/Makefile ) AC_CONFIG_FILES(po/Makefile.in) AC_CONFIG_FILES(gringotts.spec) AC_CONFIG_FILES(gringotts.desktop) AC_OUTPUT gringotts-1.2.10/depcomp000077500000000000000000000275331201055014300151710ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects # Copyright 1999, 2000 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., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, 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. # Originally written by Alexandre Oliva . if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # `libtool' can also be set to `yes' or `no'. if test -z "$depfile"; then base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` dir=`echo "$object" | sed 's,/.*$,/,'` if test "$dir" = "$object"; then dir= fi # FIXME: should be _deps on DOS. depfile="$dir.deps/$base" fi tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. This file always lives in the current directory. # Also, the AIX compiler puts `$object:' at the start of each line; # $object doesn't have directory information. stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" outname="$stripped.o" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a space and a tab in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. We will use -o /dev/null later, # however we can't do the remplacement now because # `-o $object' might simply not be used IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; -*) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 gringotts-1.2.10/gringotts.desktop.in000066400000000000000000000010671201055014300176260ustar00rootroot00000000000000[Desktop Entry] Name=@GRG_CAP_NAME@ GenericName=Electronic "Strongbox" Comment=An electronic strongbox Version=1.0 Encoding=UTF-8 Icon=/usr/share/pixmaps/gringotts.xpm Exec=gringotts Terminal=false Type=Application TryExec= X-GNOME-DocPath= Name[it_IT]=@GRG_CAP_NAME@ GenericName[it_IT]="Cassaforte" elettronica Comment[it_IT]=Una cassaforte elettronica Name[fr]=@GRG_CAP_NAME@ GenericName[fr]="Coffre-fort" électronique Comment[fr]=Un coffre-fort électronique Name[de]=@GRG_CAP_NAME@ GenericName[de]=Elektronischer "Tresor" Comment[de]=Ein elektronischer "Tresor" gringotts-1.2.10/gringotts.spec000066400000000000000000000026641201055014300165060ustar00rootroot00000000000000Summary: Gringotts, an electronic strongbox Name: gringotts Version: 1.2.10 Release: 1 License: GPL Group: Applications/Productivity URL: http://devel.pluto.linux.it/projects/Gringotts/ Packager: Dag Wieers Vendor: Germano Rizzo Source: http://devel.pluto.linux.it/projects/Gringotts/current/%{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/root-%{name}-%{version} Prefix: %{_prefix} BuildPrereq: gtk2-devel, popt, textutils, libgringotts-devel >= 1.2.0, pkgconfig %description Gringotts is a small but (hopely ;) useful utility that stores sensitive data (passwords, credit card numbers, friends' addresses) in an organized, optimized and most of all very secure form. It uses libGringotts to provide a strong level of encryption, just aiming to be as trustworthy as possible. %prep %setup %build %configure %{__make} %install %{__rm} -rf %{buildroot} %makeinstall %find_lang %{name} %clean %{__rm} -rf %{buildroot} %files -f %{name}.lang %defattr(-, root, root, 0755) %attr(4755, -, -) %{_bindir}/* %{_datadir}/pixmaps/gringotts.xpm %{_datadir}/gnome/apps/Utilities/gringotts.desktop %{_datadir}/doc/*/* %changelog * Fri Apr 18 2003 Germano Rizzo - slightly modified to be included into package * Thu Apr 17 2003 Dag Wieers - 1.2.5-0 - Updated to release 1.2.5. * Tue Jan 07 2003 Dag Wieers - 1.2.3-0 - Initial package. (using dar) gringotts-1.2.10/gringotts.spec.in000066400000000000000000000026671201055014300171160ustar00rootroot00000000000000Summary: Gringotts, an electronic strongbox Name: @PACKAGE@ Version: @VERSION@ Release: 1 License: GPL Group: Applications/Productivity URL: http://devel.pluto.linux.it/projects/Gringotts/ Packager: Dag Wieers Vendor: Germano Rizzo Source: http://devel.pluto.linux.it/projects/Gringotts/current/%{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/root-%{name}-%{version} Prefix: %{_prefix} BuildPrereq: gtk2-devel, popt, textutils, libgringotts-devel >= 1.2.0, pkgconfig %description Gringotts is a small but (hopely ;) useful utility that stores sensitive data (passwords, credit card numbers, friends' addresses) in an organized, optimized and most of all very secure form. It uses libGringotts to provide a strong level of encryption, just aiming to be as trustworthy as possible. %prep %setup %build %configure %{__make} %install %{__rm} -rf %{buildroot} %makeinstall %find_lang %{name} %clean %{__rm} -rf %{buildroot} %files -f %{name}.lang %defattr(-, root, root, 0755) %attr(4755, -, -) %{_bindir}/* %{_datadir}/pixmaps/gringotts.xpm %{_datadir}/gnome/apps/Utilities/gringotts.desktop %{_datadir}/doc/*/* %changelog * Fri Apr 18 2003 Germano Rizzo - slightly modified to be included into package * Thu Apr 17 2003 Dag Wieers - 1.2.5-0 - Updated to release 1.2.5. * Tue Jan 07 2003 Dag Wieers - 1.2.3-0 - Initial package. (using dar) gringotts-1.2.10/install-sh000077500000000000000000000142531201055014300156130ustar00rootroot00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd=$cpprog shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "$0: no input file specified" >&2 exit 1 else : fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d "$dst" ]; then instcmd=: chmodcmd="" else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f "$src" ] || [ -d "$src" ] then : else echo "$0: $src does not exist" >&2 exit 1 fi if [ x"$dst" = x ] then echo "$0: no destination specified" >&2 exit 1 else : fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d "$dst" ] then dst=$dst/`basename "$src"` else : fi fi ## this sed command emulates the dirname command dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` IFS=$oIFS pathcomp='' while [ $# -ne 0 ] ; do pathcomp=$pathcomp$1 shift if [ ! -d "$pathcomp" ] ; then $mkdirprog "$pathcomp" else : fi pathcomp=$pathcomp/ done fi if [ x"$dir_arg" != x ] then $doit $instcmd "$dst" && if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename "$dst"` else dstfile=`basename "$dst" $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename "$dst"` else : fi # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/#inst.$$# rmtmp=$dstdir/#rm.$$# # Trap to clean up temp files at exit. trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 trap '(exit $?); exit' 1 2 13 15 # Move or copy the file name to the temp name $doit $instcmd "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && # Now remove or move aside any old file at destination location. We try this # two ways since rm can't unlink itself on some systems and the destination # file might be busy for other reasons. In this case, the final cleanup # might fail but the new file should still install successfully. { if [ -f "$dstdir/$dstfile" ] then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" fi && # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit } gringotts-1.2.10/missing000077500000000000000000000240361201055014300152060ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, 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. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing 0.4 - GNU automake" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. You can get \`$1Help2man' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then # We have makeinfo, but it failed. exit 1 fi echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 fi # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 gringotts-1.2.10/mkinstalldirs000077500000000000000000000037041201055014300164140ustar00rootroot00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here gringotts-1.2.10/pixmaps/000077500000000000000000000000001201055014300152635ustar00rootroot00000000000000gringotts-1.2.10/pixmaps/Makefile.am000066400000000000000000000001721201055014300173170ustar00rootroot00000000000000EXTRA_DIST = gringotts.xpm gringotts-32.xpm pixmapdir = $(datadir)/pixmaps pixmap_DATA = gringotts.xpm gringotts-32.xpm gringotts-1.2.10/pixmaps/Makefile.in000066400000000000000000000236351201055014300173410ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = pixmaps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pixmapdir)" pixmapDATA_INSTALL = $(INSTALL_DATA) DATA = $(pixmap_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GDKPIX_CFLAGS = @GDKPIX_CFLAGS@ GDKPIX_LIBS = @GDKPIX_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GRG_CAP_NAME = @GRG_CAP_NAME@ GRG_FILE_SUBVERSION = @GRG_FILE_SUBVERSION@ GRG_NAME = @GRG_NAME@ GRG_VERSION = @GRG_VERSION@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBGRG_CFLAGS = @LIBGRG_CFLAGS@ LIBGRG_LIBS = @LIBGRG_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POFILES = @POFILES@ POPT = @POPT@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = gringotts.xpm gringotts-32.xpm pixmapdir = $(datadir)/pixmaps pixmap_DATA = gringotts.xpm gringotts-32.xpm all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu pixmaps/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-pixmapDATA: $(pixmap_DATA) @$(NORMAL_INSTALL) test -z "$(pixmapdir)" || $(MKDIR_P) "$(DESTDIR)$(pixmapdir)" @list='$(pixmap_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pixmapDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapdir)/$$f'"; \ $(pixmapDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapdir)/$$f"; \ done uninstall-pixmapDATA: @$(NORMAL_UNINSTALL) @list='$(pixmap_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pixmapdir)/$$f'"; \ rm -f "$(DESTDIR)$(pixmapdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pixmapdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-pixmapDATA install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pixmapDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pixmapDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-pixmapDATA # 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: gringotts-1.2.10/pixmaps/gringotts-32.xpm000066400000000000000000000141141201055014300202540ustar00rootroot00000000000000/* XPM */ static char * gringotts_32_xpm[] = { "32 32 249 2", " c None", ". c #EFDCBB", "+ c #EEDBBA", "@ c #D8C4A1", "# c #C7B18D", "$ c #BFA984", "% c #C0A985", "& c #DEC9A7", "* c #EDDAB8", "= c #EDDAB9", "- c #DECAA8", "; c #E1CDAB", "> c #DCC7A5", ", c #9A8159", "' c #6C5025", ") c #64471B", "! c #5D4014", "~ c #54360A", "{ c #533408", "] c #533508", "^ c #5A3C10", "/ c #71552A", "( c #91774F", "_ c #D3BE9B", ": c #B69E79", "< c #73572D", "[ c #856A41", "} c #DBC7A4", "| c #EBD8B6", "1 c #BCA580", "2 c #583A0E", "3 c #523306", "4 c #A38B65", "5 c #E7D4B2", "6 c #CDB894", "7 c #604317", "8 c #C4AD89", "9 c #75592F", "0 c #70542A", "a c #7C6137", "b c #5D3F13", "c c #4F3003", "d c #684B21", "e c #81663D", "f c #8B7048", "g c #5C3D12", "h c #C8B18E", "i c #B7A17C", "j c #513306", "k c #997F58", "l c #ECD8B7", "m c #E2CEAC", "n c #DBC6A4", "o c #9B815A", "p c #C3AC88", "q c #684B20", "r c #7E6339", "s c #DFCAA8", "t c #C2AC88", "u c #E6D2B1", "v c #C9B48F", "w c #523407", "x c #4C2D00", "y c #8E744C", "z c #E8D5B3", "A c #876C44", "B c #6B4E23", "C c #7F633A", "D c #DFCBA9", "E c #DDC9A7", "F c #876C43", "G c #63461B", "H c #503104", "I c #D7C3A0", "J c #C7B18E", "K c #5B3D11", "L c #D7C29F", "M c #C3AD89", "N c #593B0F", "O c #C0AA85", "P c #A68E67", "Q c #AD946E", "R c #503205", "S c #83683F", "T c #B09872", "U c #4D2E01", "V c #A18962", "W c #E0CCAA", "X c #6D5026", "Y c #6C4F25", "Z c #927850", "` c #765B31", " . c #B69F7A", ".. c #AC946E", "+. c #AE9671", "@. c #BBA480", "#. c #55370A", "$. c #B7A07B", "%. c #E5D2B0", "&. c #90764D", "*. c #957C54", "=. c #D8C3A1", "-. c #B29A75", ";. c #5E4014", ">. c #7B5F36", ",. c #E7D3B2", "'. c #937952", "). c #8F754D", "!. c #C6B08C", "~. c #C5AF8A", "{. c #7E633A", "]. c #7A5F35", "^. c #785C32", "/. c #987E57", "(. c #ECD9B8", "_. c #9C835B", ":. c #AD956F", "<. c #CEB995", "[. c #8F764D", "}. c #D2BC99", "|. c #9E855E", "1. c #775B31", "2. c #63451A", "3. c #CFBA97", "4. c #83683E", "5. c #6E5127", "6. c #BEA883", "7. c #4D2F02", "8. c #8D734B", "9. c #E6D3B1", "0. c #A08760", "a. c #694C21", "b. c #674A1F", "c. c #D4BF9C", "d. c #977D56", "e. c #57390D", "f. c #AC946F", "g. c #AF9771", "h. c #523307", "i. c #937951", "j. c #5D3F14", "k. c #82673E", "l. c #65481D", "m. c #D2BD99", "n. c #E2CDAC", "o. c #C4AE8A", "p. c #E3CFAD", "q. c #E9D5B4", "r. c #A38A64", "s. c #C8B28E", "t. c #AE9771", "u. c #66491D", "v. c #9E865F", "w. c #A58C66", "x. c #A9916B", "y. c #593C0F", "z. c #846940", "A. c #AA926C", "B. c #755A30", "C. c #614318", "D. c #A38B64", "E. c #74582E", "F. c #D1BC99", "G. c #998059", "H. c #90764E", "I. c #82663D", "J. c #8A7047", "K. c #AD9670", "L. c #E5D1AF", "M. c #7C6037", "N. c #B19A74", "O. c #56370B", "P. c #E4D0AE", "Q. c #A78F69", "R. c #72562C", "S. c #DBC6A3", "T. c #CEB895", "U. c #66491E", "V. c #947A53", "W. c #8C7149", "X. c #B39C77", "Y. c #71552B", "Z. c #BDA681", "`. c #63461A", " + c #896F47", ".+ c #5F4116", "++ c #C1AA86", "@+ c #EEDBB9", "#+ c #7F643B", "$+ c #CDB794", "%+ c #EBD7B6", "&+ c #D6C19E", "*+ c #C9B38F", "=+ c #CCB793", "-+ c #C5AF8B", ";+ c #775C32", ">+ c #614418", ",+ c #6B4F24", "'+ c #DDC8A6", ")+ c #947A52", "!+ c #543509", "~+ c #91764F", "{+ c #AB936D", "]+ c #8C7249", "^+ c #80653C", "/+ c #967C54", "(+ c #866C43", "_+ c #D5C09D", ":+ c #B59E79", "<+ c #B09973", "[+ c #6F5228", "}+ c #785C33", "|+ c #8D734A", "1+ c #684C20", "2+ c #65471C", "3+ c #886E45", "4+ c #CFBA96", "5+ c #E9D6B5", "6+ c #7D6138", "7+ c #D0BA97", "8+ c #D9C5A2", "9+ c #CCB692", "0+ c #D5C09E", "a+ c #795D34", "b+ c #C9B390", "c+ c #E8D4B3", "d+ c #A48B65", "e+ c #6A4D22", "f+ c #8D724A", "g+ c #5C3E12", "h+ c #785D33", "i+ c #896F46", "j+ c #E5D1B0", "k+ c #BDA682", "l+ c #8F744C", "m+ c #866B43", "n+ c #8A6F47", "o+ c #E3CFAE", "p+ c #90774F", "q+ c #BBA580", "r+ c #7B6036", "s+ c #BDA782", "t+ c #BAA37F", "u+ c #73562C", "v+ c #CCB693", "w+ c #DAC5A3", "x+ c #BAA37E", "y+ c #886D44", "z+ c #CAB490", " . . . . . . . . . + @ # $ $ $ $ % # & * . . = - ; . . . ", " . . . . . . . . . > , ' ) ! ~ { { ] ^ / ( _ + : < [ } . . . ", ". . . . . . . . | 1 2 3 4 5 6 7 > 8 9 0 a b c d e f g h . . . . ", ". . . . . . . . i ! j k l . 6 7 m . n ( o p q r s - t u . . . . ", ". . . . . . . v w x y z . . 6 7 m . . + A B C D . . . . . . . . ", ". . . . . . E F G H I . . . J K L . . . M N O . . . . . . . . . ", ". . . . . . P Q R S . . . . T U V . . W X Y Z ` .= . . . . . . ", ". . . . . = e ..U +.. . . . @.#.$.. %.&.*.=.-.;.>.,.. . . . . . ", ". . . . . O '.).^ !.~.{.].^./.K L (._.:.. . <.[.}.. . . . . . . ", ". . . . . |.P 1.2.3.4.5.O 6.2 7.n : 8.9.. . . . . . . . . . . . ", ". . . . . A 0.a.b.c.d.e.f.. g.h.i.^ j.b.b.b.b.b.b.b.e } . . . . ", ". . . . . k.|.b.l.m.n.o.p.. _ b.e.' 9 9 9 9 9 9 H x |.q.. . . . ", ". . . . . [.r.' K s.. . . . t.] u.v.w.w.w.w.x.- y.z.. . . . . . ", ". . . . . P A.B.c .. . . m C.x D.$ $ $ $ $ E.6 y.|.. . . . . . ", ". . . . . F.G.H.x k.. . p.I.J.K.L.= p ( z.# M.6 y.|.. . . . . . ", ". . . . . (.y N.x O.P.. Q.R.S.( T.v.U.V.O.W.M.6 y.|.. . . . . . ", ". . . . . . X.x.Y.x '.Z.5.m.& / `.M.I n i.!.M.6 y.|.. . . . . . ", ". . . . . . W +..U.O..+++@+o.2 S m . . . . M.6 y.|.. . . . . . ", ". . . . . . . E #+x.U.K $+%+&+a.*+. . . . q.9 =+y.|.. . . . . . ", ". . . . . 5 f.o.-+;+( `.>+H.O ,+c.. . . '+)+#.[ !+|.. . . . . . ", ". . . . . ~+b.M.{+( ]+;+x x x x ^+|./+M.b.(+_+:+K |.. . . . . . ", ". . . . . <+[+}+Z & z *+|+1+#.x c 2+3+A.4+q.. . Z.6.. . . . . . ", ". . . . . . s E . . . . . . 5+6+7+. . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . k.% . . . . . . . . . . . . . . . ", ". . . . . . &+t 8+@ 9+P A 1 0+a+-+$+|.X.b+6 6 6 F.c+. . . . . . ", ". . . . . . d+e+K.g.f+g+x 7 h+O.H.i+c !+R.M.M.M.H.'+. . . . . . ", ". . . . . . . . . . . | M j+8.X a 8 _+; . . . . . . . . . . . . ", ". . . . . . . . . . . . . k+l+D.:.m+- . P.D . . . . . . . . . . ", ". . . . . . . . . ..a.$ G.n+o+p+M - ).q+r+[+. . . . . . . . . . ", ". . . . . . . . . _+).r.s+P.t+K u+v+w+-.H.x+. . . . . . . . . . ", " . . . . . . . . . . . . . y+U.e+<+. . . . . . . . . . . . . ", " . . . . . . . . . . . . o+z+0+| . . . . . . . . . . . . "}; gringotts-1.2.10/pixmaps/gringotts.xpm000066400000000000000000000067271201055014300200450ustar00rootroot00000000000000/* XPM */ const char *gringotts_xpm[115] = { "48 48 66 1", " c None", ". c #EFDCBB", "+ c #E8D4B3", "@ c #947A52", "# c #75592F", "$ c #8E744C", "% c #C9B490", "& c #705329", "* c #513206", "= c #5E4015", "- c #4F3003", "; c #4C2D00", "> c #BDA681", ", c #B09872", "' c #9E855E", ") c #BAA37E", "! c #E3CFAD", "~ c #D1BC99", "{ c #543509", "] c #E0CCAA", "^ c #C4AE8A", "/ c #A38A64", "( c #EDDAB9", "_ c #876C43", ": c #91774F", "< c #967D55", "[ c #C2AB87", "} c #846941", "| c #6D5126", "1 c #72562C", "2 c #63461A", "3 c #8C7249", "4 c #B29B75", "5 c #66481D", "6 c #775C32", "7 c #5B3D12", "8 c #AB936D", "9 c #7A5E35", "0 c #82673E", "a c #6B4E23", "b c #896F46", "c c #C7B18D", "d c #EBD7B6", "e c #B7A07B", "f c #E5D2B0", "g c #A08861", "h c #56380C", "i c #CCB693", "j c #BFA984", "k c #9B825B", "l c #7D6138", "m c #A8906A", "n c #684B20", "o c #A58D67", "p c #593B0F", "q c #604317", "r c #CEB996", "s c #997F58", "t c #DEC9A7", "u c #DBC7A4", "v c #D6C19E", "w c #AD956F", "x c #B59E78", "y c #7F643B", "z c #D4BE9B", "A c #D9C4A1", " ........................................ ", " ...............d)3|qqqqqqq2y8u.....]84(..... .", " ..............dgp;-qq{;;;;;;;;;14d.j{;;<...... ", " .............zn;;=i..b;uzk{{0p;;;p}-35;5...... ", ".............%{;;5]...b;u..u|aA,5;;-o./-'.......", "............%{;;2]....b;u...+07~.b-)............", "...........up;;-~.....b;u....(6{_;m.............", "..........(|-;;s......b;u.....+n;0..............", "..........g|y;{f......&;[.....(6;>(.............", ".........]{zh;3......+-;y.....$;;&&1^...........", ".........@_%;;^......~;;1....w;ai(m|-t..........", "........d{cs;*d.......#;,...^-s(.%;;;z..........", "........ep.a;|..4|q2_zb;c..vpe...f|pw...........", "........30f;;}.j;_4gp-p;~.!5o...................", "........akj;;<.3-9e.]2;;~(#a(...................", "........h'o;;'.s;;#..i;;>3;=############4.......", "........;'';;'.+}2e...y;n;;;;;;;;;;;;;;;e.......", "........;'';;@........8;;2bbbbbbbbbb{;;s........", "........p'm;;0.......(|;;8ccccccccv.q;3.........", "........|'e;;5......./;;hqqqqqqqq*b.q;c.........", "........3s~;;;!.....~-;;x........#b.q;c.........", "........4l({;;,....+5-8o]...Akb).#b.q;c.........", "........!hdy;;6....$;4+/t.f$-h=;[#b.q;c.........", ".........0,>;;;v..e;:.z*c)p;yrp;g#b.q;c.........", ".........i=f2;;}.v{#(.~;&;7).[q|z#b.q;c.........", "..........}$^-;;/5q!..$;;3f......#b.q;c.........", "..........!7,)-;;{~...q;5........#b.q;c.........", "...........c*))-;|(...k;w........#b.q;c.........", "............)-/)-;|c..4;c.......zp0.q;c.........", "........t:yc.e;yw-;;#)o;c.....do{;;|{;c.........", "........5;;n(0#ap0;;;;;;}cc[8_h;2>t6;;c.........", "........p$ex|&+.42;;;;;;;;;;;-9)(..($;c.........", "........w-a*0+....jb|q;;;plk>f.......jv.........", ".........tcu..........v;>.......................", ".......................;c.......................", ".......................;s.......................", ".................j$~..d;r..c>...................", ".........i*#84m@5;;;6o/;<86-pq6bbbbbb,..........", ".........i{#84,kl*;;2|;;9m9;--n######>..........", ".................fgc.,=h2,.ij+..................", "....................d2e}:*).....................", "...................(0a(bc[7%..d^]...............", "..............3-4.~&5].6[.%7^.8;9...............", ".............._;#:{<+.[;}..~|12;3...............", " .............+,')!..~{;;&]..^/)(.............. ", " ....................&*=-;>.................... ", " ...................+@#$%.................... ", " ........................................ "}; gringotts-1.2.10/po/000077500000000000000000000000001201055014300142205ustar00rootroot00000000000000gringotts-1.2.10/po/ChangeLog000066400000000000000000000005761201055014300160020ustar00rootroot000000000000002005-05-14 Mano * added ru.po * added pl.po * updated de.po 2002-04-01 Hermann J. Beckers * added de.po 2002-03-14 Nipo * added fr.po 2002-03-03 Mano * added it.po 2002-03-03 gettextize * Makefile.in.in: Upgrade to gettext-0.10.38. gringotts-1.2.10/po/Makefile.in.in000066400000000000000000000121341201055014300166730ustar00rootroot00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper # # This file file be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. PACKAGE = @PACKAGE@ VERSION = @VERSION@ # These two variables depend on the location of this directory. subdir = po top_builddir = .. SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = @MKINSTALLDIRS@ mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` CC = @CC@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge DEFS = @DEFS@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ INCLUDES = -I.. -I$(top_srcdir)/intl COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) POFILES = @POFILES@ GMOFILES = @GMOFILES@ DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ $(POFILES) $(GMOFILES) POTFILES = \ CATALOGS = @CATALOGS@ .SUFFIXES: .SUFFIXES: .c .o .po .pox .gmo .mo .c.o: $(COMPILE) $< .po.pox: $(MAKE) $(PACKAGE).pot $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) --statistics -o $$file $< all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: # Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. $(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ --add-comments --keyword=_ --keyword=N_ \ --files-from=$(srcdir)/POTFILES.in \ && test ! -f $(PACKAGE).po \ || ( rm -f $(srcdir)/$(PACKAGE).pot \ && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then \ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ else \ $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ echo "installing $(srcdir)/$$cat as" \ "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ fi; \ done # Define this as empty until I found a useful application. installcheck: uninstall: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\.gmo$$//'`; \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ done if test "$(PACKAGE)" = "gettext"; then \ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ else \ : ; \ fi check: all dvi info tags TAGS ID: mostlyclean: rm -f core core.* *.pox $(PACKAGE).po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: $(DISTFILES) dists="$(DISTFILES)"; \ for file in $$dists; do \ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ cp -p $$dir/$$file $(distdir); \ done update-po: Makefile $(MAKE) $(PACKAGE).pot if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ cd $(srcdir); \ catalogs='$(GMOFILES)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\.gmo$$//'`; \ echo "$$lang:"; \ if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ mv -f $$lang.new.po $$lang.po; \ else \ echo "msgmerge for $$cat failed!"; \ rm -f $$lang.new.po; \ fi; \ done $(MAKE) update-gmo update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: gringotts-1.2.10/po/POTFILES.in000066400000000000000000000006471201055014300160040ustar00rootroot00000000000000src/grg_defs.h src/grg_entries.c src/grg_entries.h src/grg_entries_vis.c src/grg_entries_vis.h src/grg_list.c src/grg_list.h src/grg_menus.c src/grg_menus.h src/grg_widgets.c src/grg_widgets.h src/gringotts.c src/gringotts.h src/grg_prefs.c src/grg_prefs.h src/grg_pwd.c src/grg_pwd.h src/grg_safe.c src/grg_safe.h src/grg_recent_dox.c src/grg_recent_dox.h src/grg_popt.c src/grg_popt.h src/grg_attachs.c src/grg_attachs.h gringotts-1.2.10/po/de.gmo000066400000000000000000000405511201055014300153210ustar00rootroot00000000000000t  &; CMQdh }= +hh -RQC 0H hr     + % 1< X f"-.38= M W-c  <$6GXm2rD*Lw0PRUl!$$   & /< Vc<h#  04@.u  6%7 W cq&9 D?S5 /`2G!x 6 : !%!!G!3g!!!!8! """!=" _"j" r" ~""" "4" #9,#(f# ## ## ###"#$$$@?$$$$$$$ $$<$% %5%D%9c%%%%% %^%S'h'p'' ''' '''T' F(9R(( )-)A)I)O):b)$)`)`#*(*'***++ +,6+#c+&+ ++ + + +++,., C, P,Z,3c,,,#,,!,-(-A-"S-$v--9----- . .4.S.q...F.//2/K/f//8/B/2: 2E2Y2.v2282P2J3M3l333&3'33 44#4'4+4 :4E4 T4u44L414 5 5$545J5a5t5F5>5 6 6C'6k6s6 6666667 75'7]7m7 777777Q8KY888 88.8g9Y|9!99:>:]:&Q;'x; ;;;;<$<GA<<-<,< <= =$=7=%I=,o=A=(=L>5T>)>> >> >>>#?,?!0?LR?????$?? ? ?G @ Q@[@w@!@S@!A"A!+AMAUAFZtK67c!4I VN".;rf)em%2 zP_vM}L$8yU9/GRjTqoQs|A@S03aW~En{B^h#Yl*(,5 C] k'J-`pX\OxH+d< ?=& iw[1D>ugb: Block size: %d bits Index Key length: %d bits Title version (c)AddAdd a new attachmentAdd an entryAfter this, there's no way to recover the file. Are you sure?AlgorithmsAre you sure you want to remove this entry?Are you sure you want to wipe this file? Its content will be securely erased, so no recover is possible.Ask when overwriting filesAttached filesAuthorsBestBye, then!Cannot create file, or file already existent.Cannot decode tempfile.Cannot drop root group privileges. Someone is hacking this process. I cannot go onCannot drop root user privileges. Someone is hacking this process. I cannot go onCannot encode tempfile.Cannot open file to attach.Case sensitiveChange commentChoiceChoose fileChoose password type:Clear clipboard on closing fileClear clipboard on exitClick to change the editor fontClipboardClose documentCommentCompressionConfirmConfirm...Copy selectionCouldn't backup old fileCut selectionDecorationsDimensionDiskDo you want to overwrite the existing file?Editor fontEncryptionEnforced use of /dev/randomEnter commentEnter it again for confirmation:Enter new passwordEnter new password:Enter passwordEnter the string to find:Environmental variables validationErrorError in compression! Probably a zlib problemFILEFastFileFile is too bigFile nameFile savingFile to load does not exists or it is invalidFile to open at startupFile to wipeFile wiping failedFind a stringFor security reasons, you cannot run Gringotts as root user.General optionsGo to first entryGo to last entryGo to next entryGo to previous entryGoodGringotts internal error. Cannot finish operation.Gringotts is a small but (hopely ;) useful utility that stores sensitive data (passwords, credit card numbers, friends' addresses) in an organized and most of all very secure form. It uses libmcrypt and libmhash to provide a strong level of encryption, just trying to be as trustworthy as possible. This program is released under the GNU GPL, v.2 or later See COPYING or go to http://www.gnu.org/copyleft/gpl.htmlHashingI can't overwrite a directory or a symlinkIndex of entriesInfo on this attachmentInsert a disk and press OkInvalid entry numberInvalid preferences file. Resetting to defaults.It isn't possible to redirect data to stdin, as it is a potential security flaw.KbList of attached filesMake backups of filesMbMemory protection from core dumpsMemory protection from ptrace spyingMemory protection from swap writingsMove downMove upMy first pageNUMNewNew documentNew fileNew passwordNew title for this entry:New title...NoneNumber of overwritings with random data, when wiping a file:Only regular files can be attached.Open documentOpen...Overwrite?Password expirationPassword expires inPassword successfully changedPaste selectionPlease enter a comment for this file (max. 32 chars)Please insert a disk in the first floppy drivePlease waitPreferencesProblem with libmcrypt, probably a faulty installationQuitQuit GringottsRemoveRemove this attachmentRemove this entryRunning without root privilegesSave as....Save documentSave this attachmentSave?Saved data contain invalid UTF-8 charsSearch for textSearch only in this entrySecuritySecurity level: %sSecurity monitorSee COPYING or go to http://www.gnu.org/copyleft/gpl.htmlSelect file...Some changes have not been saved. Do you wish to save them now?Sorry, currently you can attach files only up to 2 MbSplash screenStrict prohibition to root userStringTXTText not found. Continue search from beginning?The current password is expired. You should change it, or modify this setting in the preferencesThe disk is not write protected. For security reasons, I'll not use it.The file appears to be corrupted!The file does not existThe file has been created with a newer version of Gringotts. If you save it using this one, some formatting can be lost.The password is too short, it must be at least 4 charsThe process is setuid root, but I can't lock memory pagingThe selected file doesn't existsThe text searched could not be found!The two passwords are differentThis file doesn't seem to be a valid Gringotts one!Title for the new entry:Title...Too many data to writeTry to compile with --disable-root-filter in ./configureTry using -sUh-oh! I can't read from the file!Uh-oh! I can't write to the file!View indexWarningWipe passesWrap around?Wrong passwordWrong password! Re-enter itYou must enter a valid password!You must specify a file to dump (with the -f switch)You must specify a regular fileYou'll lose all the changes from last save! Are you sure?You've selected a directory or a symlinkallow usage as root -- DANGEROUSassembling dataattachingbytescleaning updaysdump the content of a fileforce use of /dev/random -- slowergoodindex of the entry to dumpit isn't possible to hide password typing; be extremely careful!loadinglownoneoptimalpasses in file wipingpassword qualityreading filereading floppyreleased under GNU General Public License (GPL) v.2 or latersavingsecurely wipe a fileshows the helpspecify the input file to openstdin, stdout and/or stderr are invalid. Cannot continue.stdout/stdin/stderr validationthe nametitle of the entry to dumpversionwiping fileProject-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2008-09-15 19:57+0300 PO-Revision-Date: 2003-03-16 22:36GMT Last-Translator: Hermann J. Beckers Language-Team: deutsch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 0.9.6 Blockgröße %d Bits Index Schlüssellenge: %d Bits Titel Version ©HinzufügenNeuen Anhang hinzufügenEintrag hinzufügenHiernach besteht keine Möglichkeit, die Datei wiederherzustellen. Sind Sie sicher?AlgorithmenSind Sie sicher, das Sie diesen Eintrag entfernen wollen?Möchten Sie diese Datei wirklich überschreiben? Der Inhalt wird sicher gelöscht, daher ist keine Wiederherstellung möglich.Dateiüberschreiben bestätigenAngehängte DateienAutorenBesteBis dann, Tschüs!Kann Datei nicht erstellen oder sie ist bereits vorhanden.Kann Zwischendatei nicht dekodieren.Kann Root-Rechte nicht aufgeben. Jemand manipuliert diesen Prozeß. Ich kann nicht weitermachen.Kann Root-Rechte nicht aufgeben. Jemand manipuliert diesen Prozeß. Ich kann nicht weitermachen.Kann Zwischendatei nicht verschlüsseln.Kann anzuhängende Datei nicht öffnen.Gross-/Kleinschreibung beachtenKommentar ändernAuswahlDatei auswählenPasswort-Typ wählen:Beim Dateischliessen auch Clipboard löschenClipboard bei Programmende löschenZum Wechsel der Editor-Schrift klickenClipboardSchliesse DokumentKommentarKompressionBestätigenBestätigung...Auswahl kopierenKonnte alte Datei nicht sichernAuswahl ausschneidenDekorationenDimensionDisketteMöchten Sie die existierende Datei überschreiben?Editor-SchriftVerschlüsselungBenutzung von /dev/random erzwungenKommentar eingebenZur Bestätigung erneut eingeben:Neues Passwort eingebenNeues Passwort eingeben:Passwort eingebenZu suchende Zeichenkette eingeben:Überprüfung der UmgebungsvariablenFehlerFehler beim Komprimieren! Wahrscheinlich ein zlib-ProblemDATEISchnellDateiDatei ist zu großDateinameDateispeicherungZu ladende Datei existiert nicht oder ist ungültigtBeim Start zu öffnende Dateizu überschreibende DateiDateiüberschreibung fehlerhaftZeichenkette suchenAus Sicherheitsgründen können Sie Gringotts nicht als root starten. Allgemeine OptionenGehe zum ersten EintragGehe zum letzten EintragGehe zum nächsten EintragGehe zum vorherigen EintragGutinterner Gringotts-Fehler. Kann Operation nicht beenden.Gringotts ist ein kleines aber (hoffentlich ;) nützliches Programm, das sensible Daten (Passwörter, Kreditkarten-Nummern, Adressen der Freundin(nen)) in einer organisierten udn vor allem sehr sicheren Form speichert. Es benutzt libmcrypt und libmhash um einen starken Verschlüsselungs-Level zu bieten, und versucht so vertrauenswürdig wie nur eben möglich zu sein. This program is released under the GNU GPL, v.2 or later See COPYING or go to http://www.gnu.org/copyleft/gpl.html libmcrypt is (c) 1998,1999 Nikos Mavroyanopoulos libmhash is (c) 2001 Nikos MavroyanopoulosHashingIch kann ein Verzeichnis oder SymLink nicht überschreibenIndex der EinträgeInformation zu diesem AnhangLegen Sie eine Diskette ein und klicken Sie OKÜngültige EintragsnummerUngültige Einstellungs-Datei. Fehlwerte werden benutzt.Datenumleitung auf stdin ist nicht möglich, da dies ein Sicherheitsrisiko ist.KbListe der angehängten DateienDatei-Sicherungskopie erstellenMbSpeicherschutz vor Kernel-DumpsSpeicherschutz vor ptrace-ÜberwachungSpeicherschutz vor Swap-ÜberschreibungAbwärtsAufwärtsMeine erste SeiteNUMNeuNeues DokumentNeue DateiNeues PasswortNeuer Titel für diesen Eintrag:Neuer Titel...KeineAnzahl Überschreibungen mit Zufalls- Daten beim Überschreiben einer Datei:Es können nur normale Dateien angehängt werden.Öffne DokumentÖffnen...Überschreiben?Ablauf des PasswortesPasswort läuft ab in Passwort geändertAuswahl einfügenBitte geben Sie einen Kommentar für diese Datei ein (max. 32 Zeichen)Bitte legen Sie eine Diskette in das erste Floppy-Laufwerk einBitte wartenEinstellungenProblem mit libmcrypt, wahrscheinlich eine fehlerhafte InstallationBeendenGringotts verlassenEntfernenDiesen Anhang entfernenDiesen Eintrag entfernenArbeite ohne Root-PrivilegienSpeichern als...Speichere DokumentDiesen Anhang speichernSpeichern?Gespeicherte Daten enthalten ungültige UTF-8-ZeichenSuche nach TextNur in diesem Eintrag suchenSicherheitSicherheitsstufe: %sSicherheits-MonitorSiehe COPYING oder http://www.gnu.org/copyleft/gpl.htmlDatei wählen...Einige Änderungen wurden noch nicht gesichert. Möchten Sie sie jetzt speichern?Tut mir leid, aber z. Z. können nur Dateien bis zu 2 Mb angehängt werden.Start-BildschirmRoot-Wechsel absolut verbotenZeichenketteTXTText nicht gefunden. Suche vom Anfang starten?Das aktuelle Passwort ist abgelaufen. Sie sollten es ändern oder den Wert in den Einstellungen ändernDie Diskette ist nicht schreibgeschützt. Aus Sicherheitsgründen wird sie nicht benutzt.Die Datei scheint defekt zu sein!Die Datei existiert nichtDiese Datei wurde mit einer neueren Version von Gringotts erstellt. Wenn Sie diese Datei mit dieser Version speichern, kann Formatier-Information verloren gehen.Das Passwort ist zu kurz, es müssen mindestens 4 Zeichen seinDer Prozeß läuft mit Root-UserID, aber das Hauptspeicher-Paging kann nicht gesperrt werden.Die ausgewählte Datei existiert nichtDer gesuchte Text wurde nicht gefunden!Die Passwörter sind verschiedenDiese Datei scheint keine gültige Gringotts-Datei zu sein!Titel für den neuen Eintrag:Titel...Zu viele Daten zum SchreibenVersuchen Sie die Übersetzung mit --disable-root-filter in ./configureVersuchen Sie -sUh-oh! Ich kann nicht aus dieser Datei lesen!Uh-oh! Ich kann diese Datei nicht schreiben!Index ansehenWarnungAnzahl ÜberschreibungenVon vorn beginnen?Falsches PasswortFalsches Passwort! Bitte neu eingebenSie müssen ein gültiges Passwort eingeben!Sie müssen eine auszugebende Datei angeben (mit dem -f-Schalter)Sie müssen eine reguläre Datei angebenSie verlieren alle Änderungen seit der letzten Sicherung! Sind Sie sicher?Sie haben ein Verzeichnis oder einen SymLink gewählterlaubt Benutzung als root -- GEFÄHRLICHDaten zusammenstellenHänge anBytesBereinigungTagenInhalt einer Datei ausgebenbenutzung von /dev/random erzwungenGutIndex des auszugebenden EintragesDie Passwort-Eingabe kann nicht versteckt werden; seien Sie sehr vorsichtig!LadeniedrigKeineoptimalDurchgänge bei DateiüberschreibungPasswort-QualitätLese DateiLese Floppyveröffentlicht unter GNU General Public License (GPL) v.2 oder späterSpeichereDatei sicher überschreibenzeigt die Hilfe anzu öffnende Eingabedatei angebenStandardeingabe, -ausgabe und/oder -fehler sind ungültig. Kann nicht weitermachen.stdout/stdin/stderr-Überprüfungder NameTitel des auszugebenden Eintrags:Versionüberschreibe Dateigringotts-1.2.10/po/de.po000066400000000000000000000661001201055014300151530ustar00rootroot00000000000000# 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. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-15 19:57+0300\n" "PO-Revision-Date: 2003-03-16 22:36GMT\n" "Last-Translator: Hermann J. Beckers \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 0.9.6\n" #: src/grg_entries.c:393 msgid "Invalid entry number" msgstr "Üngültige Eintragsnummer" #: src/grg_entries.c:495 src/gringotts.c:509 src/gringotts.c:751 msgid "assembling data" msgstr "Daten zusammenstellen" #: src/grg_entries.c:504 src/grg_attachs.c:268 msgid "saving" msgstr "Speichere" #: src/grg_entries.c:509 src/gringotts.c:512 src/gringotts.c:754 msgid "cleaning up" msgstr "Bereinigung" #: src/grg_entries.c:632 msgid "" "The file has been created with a newer version of Gringotts. If you save it " "using this one, some formatting can be lost." msgstr "" "Diese Datei wurde mit einer neueren Version von Gringotts erstellt. Wenn Sie " "diese Datei mit dieser Version speichern, kann Formatier-Information " "verloren gehen." #: src/grg_entries_vis.c:150 src/grg_entries_vis.c:151 msgid "Tabs Width" msgstr "" #: src/grg_entries_vis.c:504 msgid "The text searched could not be found!" msgstr "Der gesuchte Text wurde nicht gefunden!" #: src/grg_entries_vis.c:511 msgid "Wrap around?" msgstr "Von vorn beginnen?" #: src/grg_entries_vis.c:512 msgid "Text not found. Continue search from beginning?" msgstr "Text nicht gefunden. Suche vom Anfang starten?" #: src/grg_list.c:95 msgid " Index " msgstr " Index " #: src/grg_list.c:103 msgid " Title " msgstr " Titel " #: src/grg_list.c:213 msgid "Index of entries" msgstr "Index der Einträge" #: src/grg_list.c:247 msgid "Move up" msgstr "Aufwärts" #: src/grg_list.c:251 msgid "Move down" msgstr "Abwärts" #: src/grg_menus.c:110 #, fuzzy msgid "_New" msgstr "Neu" #: src/grg_menus.c:113 #, fuzzy msgid "_Open" msgstr "Öffnen" #: src/grg_menus.c:115 #, fuzzy msgid "_Save" msgstr "Speichern" #: src/grg_menus.c:117 #, fuzzy msgid "Save _As" msgstr "Speichern als" #: src/grg_menus.c:119 #, fuzzy msgid "_Revert" msgstr "umkehren" #: src/grg_menus.c:121 #, fuzzy msgid "_Close" msgstr "Schliessen" #: src/grg_menus.c:132 #, fuzzy msgid "_Quit" msgstr "Beenden" #: src/grg_menus.c:136 #, fuzzy msgid "_File" msgstr "Datei" #: src/grg_menus.c:149 msgid "Add" msgstr "Hinzufügen" #: src/grg_menus.c:151 msgid "Remove" msgstr "Entfernen" #: src/grg_menus.c:154 #, fuzzy msgid "Cu_t" msgstr "Ausschneiden" #: src/grg_menus.c:156 #, fuzzy msgid "_Copy" msgstr "Kopieren" #: src/grg_menus.c:158 #, fuzzy msgid "_Paste" msgstr "Einfügen" #: src/grg_menus.c:162 #, fuzzy msgid "_Find" msgstr "Suche" #: src/grg_menus.c:164 #, fuzzy msgid "Find a_gain" msgstr "erneut suchen" #: src/grg_menus.c:167 #, fuzzy msgid "Change Pass_word" msgstr "Password ändern" #: src/grg_menus.c:171 #, fuzzy msgid "P_references" msgstr "Einstellungen" #: src/grg_menus.c:174 #, fuzzy msgid "_Edit" msgstr "Editieren" #: src/grg_menus.c:187 #, fuzzy msgid "_First" msgstr "Erste/s" #: src/grg_menus.c:190 #, fuzzy msgid "_Back" msgstr "Zurück" #: src/grg_menus.c:193 #, fuzzy msgid "For_ward" msgstr "Vorwärts" #: src/grg_menus.c:197 #, fuzzy msgid "_Last" msgstr "letzte/s" #: src/grg_menus.c:201 #, fuzzy msgid "_Index" msgstr "Index" #: src/grg_menus.c:205 #, fuzzy msgid "_Navigation" msgstr "Navigation" #: src/grg_menus.c:218 #, fuzzy msgid "_Wipe file" msgstr "Datei überschreiben" #: src/grg_menus.c:222 #, fuzzy msgid "_Tools" msgstr "Werkzeuge" #: src/grg_menus.c:235 #, fuzzy msgid "_Security monitor" msgstr "Sicherheits-Monitor" #: src/grg_menus.c:244 #, fuzzy msgid "_About" msgstr "Über" #: src/grg_menus.c:247 #, fuzzy msgid "_Help" msgstr "Hilfe" #: src/grg_widgets.c:65 msgid "Error" msgstr "Fehler" #: src/grg_widgets.c:240 msgid "Find a string" msgstr "Zeichenkette suchen" #: src/grg_widgets.c:253 msgid "Enter the string to find:" msgstr "Zu suchende Zeichenkette eingeben:" #: src/grg_widgets.c:263 msgid "Search only in this entry" msgstr "Nur in diesem Eintrag suchen" #: src/grg_widgets.c:267 msgid "Case sensitive" msgstr "Gross-/Kleinschreibung beachten" #: src/grg_widgets.c:314 src/grg_widgets.c:316 src/grg_widgets.c:353 msgid "Please wait" msgstr "Bitte warten" #: src/grg_widgets.c:392 src/gringotts.c:1461 src/grg_pwd.c:122 #: src/grg_popt.c:287 msgid "The file does not exist" msgstr "Die Datei existiert nicht" #: src/gringotts.c:139 msgid " version " msgstr " Version " #: src/gringotts.c:140 src/gringotts.c:153 src/gringotts.c:155 #: src/gringotts.c:157 src/gringotts.c:1933 msgid "(c)" msgstr "©" #: src/gringotts.c:142 msgid "Authors" msgstr "Autoren" #: src/gringotts.c:146 msgid "" "Gringotts is a small but (hopely ;) useful utility that stores sensitive " "data (passwords, credit card numbers, friends' addresses) in an organized " "and most of all very secure form.\n" "It uses libmcrypt and libmhash to provide a strong level of encryption, just " "trying to be as trustworthy as possible.\n" "\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" "Gringotts ist ein kleines aber (hoffentlich ;) nützliches Programm, das " "sensible Daten (Passwörter, Kreditkarten-Nummern, Adressen der Freundin" "(nen)) in einer organisierten udn vor allem sehr sicheren Form speichert.\n" "Es benutzt libmcrypt und libmhash um einen starken Verschlüsselungs-Level zu " "bieten, und versucht so vertrauenswürdig wie nur eben möglich zu sein.\n" "\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html\n" "\n" "libmcrypt is (c) 1998,1999 Nikos Mavroyanopoulos\n" "libmhash is (c) 2001 Nikos Mavroyanopoulos" #: src/gringotts.c:156 msgid "the name" msgstr "der Name" #: src/gringotts.c:268 src/gringotts.c:629 src/gringotts.c:958 #: src/gringotts.c:1181 msgid "New file" msgstr "Neue Datei" #: src/gringotts.c:415 msgid "Save?" msgstr "Speichern?" #: src/gringotts.c:417 msgid "" "Some changes have not been saved.\n" "Do you wish to save them now?" msgstr "" "Einige Änderungen wurden noch nicht gesichert.\n" "Möchten Sie sie jetzt speichern?" #: src/gringotts.c:471 src/gringotts.c:1386 msgid "Confirm" msgstr "Bestätigen" #: src/gringotts.c:472 msgid "" "You'll lose all the changes from\n" "last save! Are you sure?" msgstr "" "Sie verlieren alle Änderungen seit \n" "der letzten Sicherung! Sind Sie sicher?" #: src/gringotts.c:476 src/gringotts.c:739 msgid "loading" msgstr "Lade" #: src/gringotts.c:485 src/gringotts.c:615 src/grg_popt.c:65 msgid "You've selected a directory or a symlink" msgstr "Sie haben ein Verzeichnis oder einen SymLink gewählt" #: src/gringotts.c:492 src/gringotts.c:622 src/grg_popt.c:61 msgid "The selected file doesn't exists" msgstr "Die ausgewählte Datei existiert nicht" #: src/gringotts.c:530 src/gringotts.c:574 src/gringotts.c:683 #: src/gringotts.c:718 src/gringotts.c:772 src/gringotts.c:802 #: src/gringotts.c:1092 src/gringotts.c:1135 src/grg_popt.c:83 #: src/grg_popt.c:107 src/grg_popt.c:142 src/grg_popt.c:158 msgid "Gringotts internal error. Cannot finish operation." msgstr "interner Gringotts-Fehler. Kann Operation nicht beenden." #: src/gringotts.c:542 src/gringotts.c:700 src/grg_popt.c:98 msgid "The file appears to be corrupted!" msgstr "Die Datei scheint defekt zu sein!" #: src/gringotts.c:549 src/gringotts.c:708 src/grg_popt.c:102 msgid "File is too big" msgstr "Datei ist zu groß" #: src/gringotts.c:556 src/gringotts.c:691 src/grg_popt.c:93 msgid "Uh-oh! I can't read from the file!" msgstr "Uh-oh! Ich kann nicht aus dieser Datei lesen!" #: src/gringotts.c:564 src/gringotts.c:785 src/gringotts.c:1117 #: src/grg_popt.c:152 msgid "Problem with libmcrypt, probably a faulty installation" msgstr "Problem mit libmcrypt, wahrscheinlich eine fehlerhafte Installation" #: src/gringotts.c:587 src/gringotts.c:838 msgid "" "The current password is expired.\n" "You should change it, or modify this setting in the preferences" msgstr "" "Das aktuelle Passwort ist abgelaufen.\n" "Sie sollten es ändern oder den Wert in den Einstellungen ändern" #: src/gringotts.c:665 src/grg_popt.c:89 msgid "This file doesn't seem to be a valid Gringotts one!" msgstr "Diese Datei scheint keine gültige Gringotts-Datei zu sein!" #: src/gringotts.c:779 src/grg_popt.c:146 msgid "Wrong password! Re-enter it" msgstr "Falsches Passwort! Bitte neu eingeben" #: src/gringotts.c:792 src/grg_popt.c:166 msgid "Saved data contain invalid UTF-8 chars" msgstr "Gespeicherte Daten enthalten ungültige UTF-8-Zeichen" #: src/gringotts.c:861 src/grg_pwd.c:80 msgid "Open..." msgstr "Öffnen..." #: src/gringotts.c:950 src/grg_popt.c:117 msgid "You must enter a valid password!" msgstr "Sie müssen ein gültiges Passwort eingeben!" #: src/gringotts.c:968 msgid "My first page" msgstr "Meine erste Seite" #: src/gringotts.c:983 msgid "New title..." msgstr "Neuer Titel..." #: src/gringotts.c:984 msgid "New title for this entry:" msgstr "Neuer Titel für diesen Eintrag:" #: src/gringotts.c:1035 msgid "I can't overwrite a directory or a symlink" msgstr "Ich kann ein Verzeichnis oder SymLink nicht überschreiben" #: src/gringotts.c:1043 msgid "Overwrite?" msgstr "Überschreiben?" #: src/gringotts.c:1045 msgid "Do you want to overwrite the existing file?" msgstr "Möchten Sie die existierende Datei überschreiben?" #: src/gringotts.c:1059 msgid "Couldn't backup old file" msgstr "Konnte alte Datei nicht sichern" #: src/gringotts.c:1100 msgid "Error in compression! Probably a zlib problem" msgstr "Fehler beim Komprimieren! Wahrscheinlich ein zlib-Problem" #: src/gringotts.c:1108 msgid "Uh-oh! I can't write to the file!" msgstr "Uh-oh! Ich kann diese Datei nicht schreiben!" #: src/gringotts.c:1125 msgid "Too many data to write" msgstr "Zu viele Daten zum Schreiben" #: src/gringotts.c:1153 src/gringotts.c:1407 msgid "Save as...." msgstr "Speichern als..." #: src/gringotts.c:1195 msgid "Title..." msgstr "Titel..." #: src/gringotts.c:1196 msgid "Title for the new entry:" msgstr "Titel für den neuen Eintrag:" #: src/gringotts.c:1197 msgid "New" msgstr "Neu" #: src/gringotts.c:1221 src/gringotts.c:1466 msgid "Confirm..." msgstr "Bestätigung..." #: src/gringotts.c:1222 msgid "Are you sure you want to remove this entry?" msgstr "Sind Sie sicher, das Sie diesen Eintrag entfernen wollen?" #: src/gringotts.c:1249 msgid "Wrong password" msgstr "Falsches Passwort" #: src/gringotts.c:1269 msgid "Password successfully changed" msgstr "Passwort geändert" #: src/gringotts.c:1353 src/grg_prefs.c:395 msgid "Select file..." msgstr "Datei wählen..." #: src/gringotts.c:1388 msgid "" "After this, there's no way to\n" "recover the file. Are you sure?" msgstr "" "Hiernach besteht keine Möglichkeit, die \n" "Datei wiederherzustellen. Sind Sie sicher?" #: src/gringotts.c:1436 msgid "File to wipe" msgstr "zu überschreibende Datei" #: src/gringotts.c:1467 src/grg_popt.c:290 msgid "" "Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible." msgstr "" "Möchten Sie diese Datei wirklich überschreiben?\n" "Der Inhalt wird sicher gelöscht, daher ist \n" "keine Wiederherstellung möglich." #: src/gringotts.c:1475 msgid "wiping file" msgstr "überschreibe Datei" #: src/gringotts.c:1484 src/grg_popt.c:305 msgid "File wiping failed" msgstr "Dateiüberschreibung fehlerhaft" #: src/gringotts.c:1574 #, fuzzy msgid "E_dit..." msgstr "_Editieren..." #: src/gringotts.c:1594 msgid "Go to last entry" msgstr "Gehe zum letzten Eintrag" #: src/gringotts.c:1597 msgid "Go to next entry" msgstr "Gehe zum nächsten Eintrag" #: src/gringotts.c:1603 msgid "View index" msgstr "Index ansehen" #: src/gringotts.c:1609 msgid "Go to previous entry" msgstr "Gehe zum vorherigen Eintrag" #: src/gringotts.c:1612 msgid "Go to first entry" msgstr "Gehe zum ersten Eintrag" #: src/gringotts.c:1626 #, c-format msgid "Security level: %s" msgstr "Sicherheitsstufe: %s" #: src/gringotts.c:1630 src/grg_prefs.c:632 msgid "Security" msgstr "Sicherheit" #: src/gringotts.c:1644 msgid "New document" msgstr "Neues Dokument" #: src/gringotts.c:1649 msgid "Open document" msgstr "Öffne Dokument" #: src/gringotts.c:1651 msgid "Save document" msgstr "Speichere Dokument" #: src/gringotts.c:1653 msgid "Close document" msgstr "Schliesse Dokument" #: src/gringotts.c:1658 msgid "Cut selection" msgstr "Auswahl ausschneiden" #: src/gringotts.c:1660 msgid "Copy selection" msgstr "Auswahl kopieren" #: src/gringotts.c:1663 msgid "Paste selection" msgstr "Auswahl einfügen" #: src/gringotts.c:1669 msgid "Search for text" msgstr "Suche nach Text" #: src/gringotts.c:1674 msgid "Add an entry" msgstr "Eintrag hinzufügen" #: src/gringotts.c:1676 msgid "Remove this entry" msgstr "Diesen Eintrag entfernen" #: src/gringotts.c:1681 src/grg_prefs.c:446 msgid "Preferences" msgstr "Einstellungen" #: src/gringotts.c:1686 msgid "Quit Gringotts" msgstr "Gringotts verlassen" #: src/gringotts.c:1703 msgid "Attached files" msgstr "Angehängte Dateien" #: src/gringotts.c:1713 msgid "Add a new attachment" msgstr "Neuen Anhang hinzufügen" #: src/gringotts.c:1715 msgid "Remove this attachment" msgstr "Diesen Anhang entfernen" #: src/gringotts.c:1718 msgid "Save this attachment" msgstr "Diesen Anhang speichern" #: src/gringotts.c:1721 msgid "Info on this attachment" msgstr "Information zu diesem Anhang" #: src/gringotts.c:1723 msgid "Change comment" msgstr "Kommentar ändern" #: src/gringotts.c:1747 msgid "List of attached files" msgstr "Liste der angehängten Dateien" #: src/gringotts.c:1933 msgid "version" msgstr "Version" #: src/gringotts.c:1935 msgid "released under GNU General Public License (GPL) v.2 or later" msgstr "veröffentlicht unter GNU General Public License (GPL) v.2 oder später" #: src/gringotts.c:1937 msgid "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "Siehe COPYING oder http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:1951 src/grg_prefs.c:151 msgid "Invalid preferences file. Resetting to defaults." msgstr "Ungültige Einstellungs-Datei. Fehlwerte werden benutzt." #: src/gringotts.c:1977 msgid "File to load does not exists or it is invalid" msgstr "Zu ladende Datei existiert nicht oder ist ungültigt" #: src/grg_prefs.c:220 #, c-format msgid " Block size: %d bits" msgstr "Blockgröße %d Bits" #: src/grg_prefs.c:223 #, c-format msgid " Key length: %d bits" msgstr " Schlüssellenge: %d Bits" #: src/grg_prefs.c:457 msgid "Encryption" msgstr "Verschlüsselung" #: src/grg_prefs.c:502 msgid "Hashing" msgstr "Hashing" #: src/grg_prefs.c:515 msgid "Compression" msgstr "Kompression" #: src/grg_prefs.c:530 msgid "None" msgstr "Keine" #: src/grg_prefs.c:535 msgid "Fast" msgstr "Schnell" #: src/grg_prefs.c:539 msgid "Good" msgstr "Gut" #: src/grg_prefs.c:543 msgid "Best" msgstr "Beste" #: src/grg_prefs.c:547 msgid "Algorithms" msgstr "Algorithmen" #: src/grg_prefs.c:554 msgid "General options" msgstr "Allgemeine Optionen" #: src/grg_prefs.c:556 msgid "Editor font" msgstr "Editor-Schrift" #: src/grg_prefs.c:561 msgid "Click to change the editor font" msgstr "Zum Wechsel der Editor-Schrift klicken" #: src/grg_prefs.c:571 msgid "Decorations" msgstr "Dekorationen" #: src/grg_prefs.c:579 msgid "Splash screen" msgstr "Start-Bildschirm" #: src/grg_prefs.c:587 msgid "Tray-Icon (Needs Gringotts restart to take affect)" msgstr "" #: src/grg_prefs.c:592 msgid "File to open at startup" msgstr "Beim Start zu öffnende Datei" #: src/grg_prefs.c:611 msgid "File saving" msgstr "Dateispeicherung" #: src/grg_prefs.c:618 msgid "Make backups of files" msgstr "Datei-Sicherungskopie erstellen" #: src/grg_prefs.c:624 msgid "Ask when overwriting files" msgstr "Dateiüberschreiben bestätigen" #: src/grg_prefs.c:634 msgid "Password expiration" msgstr "Ablauf des Passwortes" #: src/grg_prefs.c:641 msgid "Password expires in" msgstr "Passwort läuft ab in " #: src/grg_prefs.c:645 msgid "days" msgstr "Tagen" #. this means "passes in wiping a file", not "wipe the passes" :) #: src/grg_prefs.c:657 msgid "Wipe passes" msgstr "Anzahl Überschreibungen" #: src/grg_prefs.c:663 msgid "" "Number of overwritings with random\n" "data, when wiping a file:" msgstr "" "Anzahl Überschreibungen mit Zufalls-\n" "Daten beim Überschreiben einer Datei:" #: src/grg_prefs.c:676 msgid "Clipboard" msgstr "Clipboard" #: src/grg_prefs.c:684 msgid "Clear clipboard on closing file" msgstr "Beim Dateischliessen auch Clipboard löschen" #: src/grg_prefs.c:691 msgid "Clear clipboard on exit" msgstr "Clipboard bei Programmende löschen" #: src/grg_pwd.c:128 msgid "You must specify a regular file" msgstr "Sie müssen eine reguläre Datei angeben" #: src/grg_pwd.c:137 msgid "reading file" msgstr "Lese Datei" #: src/grg_pwd.c:168 msgid "Please insert a disk in the first floppy drive" msgstr "Bitte legen Sie eine Diskette in das erste Floppy-Laufwerk ein" #: src/grg_pwd.c:180 msgid "The disk is not write protected. For security reasons, I'll not use it." msgstr "" "Die Diskette ist nicht schreibgeschützt. Aus Sicherheitsgründen wird sie " "nicht benutzt." #: src/grg_pwd.c:190 msgid "reading floppy" msgstr "Lese Floppy" #: src/grg_pwd.c:222 msgid "Enter new password" msgstr "Neues Passwort eingeben" #: src/grg_pwd.c:230 src/grg_pwd.c:751 msgid "Choose file" msgstr "Datei auswählen" #: src/grg_pwd.c:238 src/grg_pwd.c:609 msgid "Insert a disk and press Ok" msgstr "Legen Sie eine Diskette ein und klicken Sie OK" #: src/grg_pwd.c:316 msgid "New password" msgstr "Neues Passwort" #: src/grg_pwd.c:330 src/grg_pwd.c:573 src/grg_pwd.c:717 msgid "Choose password type:" msgstr "Passwort-Typ wählen:" #: src/grg_pwd.c:333 src/grg_pwd.c:575 src/grg_pwd.c:717 msgid "String" msgstr "Zeichenkette" #: src/grg_pwd.c:337 src/grg_pwd.c:579 src/grg_pwd.c:717 msgid "File" msgstr "Datei" #: src/grg_pwd.c:342 src/grg_pwd.c:584 src/grg_pwd.c:718 msgid "Disk" msgstr "Diskette" #: src/grg_pwd.c:347 msgid "Enter new password:" msgstr "Neues Passwort eingeben:" #: src/grg_pwd.c:355 msgid "Enter it again for confirmation:" msgstr "Zur Bestätigung erneut eingeben:" #: src/grg_pwd.c:392 msgid "password quality" msgstr "Passwort-Qualität" #: src/grg_pwd.c:436 msgid "The password is too short, it must be at least 4 chars" msgstr "Das Passwort ist zu kurz, es müssen mindestens 4 Zeichen sein" #: src/grg_pwd.c:448 msgid "The two passwords are different" msgstr "Die Passwörter sind verschieden" #: src/grg_pwd.c:560 src/grg_pwd.c:733 msgid "Enter password" msgstr "Passwort eingeben" #: src/grg_pwd.c:718 msgid "Quit" msgstr "Beenden" #: src/grg_pwd.c:721 msgid "Choice" msgstr "Auswahl" #: src/grg_pwd.c:771 msgid "Bye, then!" msgstr "Bis dann, Tschüs!" #: src/grg_safe.c:124 #, c-format msgid "Cannot get MEMLOCK resource limit: %s" msgstr "" #: src/grg_safe.c:129 #, c-format msgid "" "Increase the memory locking limit to at least %d bytes. Current limit: %d " "bytes.\n" "See /usr/share/doc/gringotts/README for \n" "directions or alternatively make gringotts\n" "non-SUID-root\n" msgstr "" #: src/grg_safe.c:144 msgid "The process is setuid root, but I can't lock memory paging" msgstr "" "Der Prozeß läuft mit Root-UserID, aber das Hauptspeicher-Paging kann nicht " "gesperrt werden." #: src/grg_safe.c:166 msgid "" "Cannot drop root user privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Kann Root-Rechte nicht aufgeben. Jemand manipuliert diesen Prozeß. Ich kann " "nicht weitermachen." #: src/grg_safe.c:179 msgid "" "Cannot drop root group privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Kann Root-Rechte nicht aufgeben. Jemand manipuliert diesen Prozeß. Ich kann " "nicht weitermachen." #: src/grg_safe.c:224 src/grg_safe.c:230 msgid "For security reasons, you cannot run Gringotts as root user." msgstr "Aus Sicherheitsgründen können Sie Gringotts nicht als root starten. " #: src/grg_safe.c:226 msgid "Try to compile with --disable-root-filter in ./configure" msgstr "Versuchen Sie die Übersetzung mit --disable-root-filter in ./configure" #: src/grg_safe.c:231 msgid "Try using -s" msgstr "Versuchen Sie -s" #: src/grg_safe.c:251 msgid "stdin, stdout and/or stderr are invalid. Cannot continue." msgstr "" "Standardeingabe, -ausgabe und/oder -fehler sind ungültig. Kann nicht " "weitermachen." #: src/grg_safe.c:270 msgid "Invalid LANG environment variable:" msgstr "" #: src/grg_safe.c:277 msgid "Invalid XAUTHORITY environment variable:" msgstr "" #: src/grg_safe.c:286 msgid "Invalid DISPLAY environment variable:" msgstr "" #: src/grg_safe.c:393 msgid "optimal" msgstr "optimal" #: src/grg_safe.c:395 msgid "good" msgstr "Gut" #: src/grg_safe.c:398 msgid "low" msgstr "niedrig" #: src/grg_safe.c:418 msgid "Security monitor" msgstr "Sicherheits-Monitor" #: src/grg_safe.c:433 src/grg_safe.c:437 src/grg_safe.c:440 msgid "Running without root privileges" msgstr "Arbeite ohne Root-Privilegien" #: src/grg_safe.c:446 src/grg_safe.c:449 msgid "Memory protection from core dumps" msgstr "Speicherschutz vor Kernel-Dumps" #: src/grg_safe.c:457 src/grg_safe.c:460 msgid "Memory protection from swap writings" msgstr "Speicherschutz vor Swap-Überschreibung" #: src/grg_safe.c:465 src/grg_safe.c:468 msgid "Memory protection from ptrace spying" msgstr "Speicherschutz vor ptrace-Überwachung" #: src/grg_safe.c:472 src/grg_safe.c:475 msgid "Environmental variables validation" msgstr "Überprüfung der Umgebungsvariablen" #: src/grg_safe.c:478 msgid "stdout/stdin/stderr validation" msgstr "stdout/stdin/stderr-Überprüfung" #: src/grg_safe.c:481 src/grg_safe.c:484 msgid "Enforced use of /dev/random" msgstr "Benutzung von /dev/random erzwungen" #: src/grg_safe.c:488 src/grg_safe.c:491 msgid "Strict prohibition to root user" msgstr "Root-Wechsel absolut verboten" #: src/grg_popt.c:53 msgid "Warning" msgstr "Warnung" #: src/grg_popt.c:55 msgid "it isn't possible to hide password typing; be extremely careful!" msgstr "" "Die Passwort-Eingabe kann nicht versteckt werden; seien Sie sehr vorsichtig!" #: src/grg_popt.c:199 msgid "shows the help" msgstr "zeigt die Hilfe an" #: src/grg_popt.c:202 msgid "specify the input file to open" msgstr "zu öffnende Eingabedatei angeben" #: src/grg_popt.c:202 src/grg_popt.c:216 msgid "FILE" msgstr "DATEI" #: src/grg_popt.c:205 msgid "allow usage as root -- DANGEROUS" msgstr "erlaubt Benutzung als root -- GEFÄHRLICH" #: src/grg_popt.c:208 msgid "force use of /dev/random -- slower" msgstr "benutzung von /dev/random erzwungen" #: src/grg_popt.c:210 msgid "dump the content of a file" msgstr "Inhalt einer Datei ausgeben" #: src/grg_popt.c:212 msgid "index of the entry to dump" msgstr "Index des auszugebenden Eintrages" #: src/grg_popt.c:212 src/grg_popt.c:218 msgid "NUM" msgstr "NUM" #: src/grg_popt.c:214 msgid "title of the entry to dump" msgstr "Titel des auszugebenden Eintrags:" #: src/grg_popt.c:214 msgid "TXT" msgstr "TXT" #: src/grg_popt.c:216 msgid "securely wipe a file" msgstr "Datei sicher überschreiben" #: src/grg_popt.c:218 msgid "passes in file wiping" msgstr "Durchgänge bei Dateiüberschreibung" #: src/grg_popt.c:273 msgid "" "It isn't possible to redirect data to stdin, as it is a potential security " "flaw." msgstr "" "Datenumleitung auf stdin ist nicht möglich, da dies ein Sicherheitsrisiko " "ist." #: src/grg_popt.c:314 msgid "You must specify a file to dump (with the -f switch)" msgstr "Sie müssen eine auszugebende Datei angeben (mit dem -f-Schalter)" #: src/grg_attachs.c:68 msgid "Cannot open file to attach." msgstr "Kann anzuhängende Datei nicht öffnen." #: src/grg_attachs.c:75 msgid "Only regular files can be attached." msgstr "Es können nur normale Dateien angehängt werden." #: src/grg_attachs.c:87 msgid "Sorry, currently you can attach files only up to 2 Mb" msgstr "" "Tut mir leid, aber z. Z. können nur Dateien bis zu 2 Mb angehängt werden." #: src/grg_attachs.c:95 src/grg_attachs.c:339 msgid "Enter comment" msgstr "Kommentar eingeben" #: src/grg_attachs.c:97 src/grg_attachs.c:340 msgid "" "Please enter a comment for this\n" "file (max. 32 chars)" msgstr "" "Bitte geben Sie einen Kommentar für\n" "diese Datei ein (max. 32 Zeichen)" #: src/grg_attachs.c:107 src/grg_attachs.c:347 msgid "none" msgstr "Keine" #: src/grg_attachs.c:117 msgid "attaching" msgstr "Hänge an" #: src/grg_attachs.c:125 msgid "Cannot encode tempfile." msgstr "Kann Zwischendatei nicht verschlüsseln." #: src/grg_attachs.c:194 src/grg_attachs.c:273 msgid "Cannot decode tempfile." msgstr "Kann Zwischendatei nicht dekodieren." #: src/grg_attachs.c:284 msgid "Cannot create file, or file already existent." msgstr "Kann Datei nicht erstellen oder sie ist bereits vorhanden." #: src/grg_attachs.c:316 msgid "File name" msgstr "Dateiname" #: src/grg_attachs.c:317 msgid "Dimension" msgstr "Dimension" #: src/grg_attachs.c:317 src/grg_attachs.c:386 msgid "bytes" msgstr "Bytes" #: src/grg_attachs.c:318 msgid "Comment" msgstr "Kommentar" #: src/grg_attachs.c:394 msgid "Kb" msgstr "Kb" #: src/grg_attachs.c:400 msgid "Mb" msgstr "Mb" #: src/grg_attachs.c:432 msgid "" msgstr "" #~ msgid "Invalid environment variables. They could have been manipulated." #~ msgstr "Ungültige Umgebungsvariablen. Sie sind evtl. manipuliert." #~ msgid "" #~ "For security reasons, you cannot run Gringotts as root. Try using --" #~ "disable-root-filter in ./configure" #~ msgstr "" #~ "Aus Sicherheitsgründen können Sie Gringotts nicht als root starten. " #~ "Versuchen Sie --disable-root-filter in ./configure" #~ msgid "" #~ "This is a relatively new feature, so it's still under heavydevelopment... " #~ "and may have some problem. In this case,the stability and data safety " #~ "should be good, but it lacksquite much in speed. If you attach larger " #~ "files, you mayhave to wait a pretty huge deal of time. It depends " #~ "fromcase to case anyway; the best thing is to try it yourself. Infuture " #~ "releases of Gringotts we'll work also on this aspect." #~ msgstr "" #~ "Dies ist eine recht neue Fähigkeit; daher ist es noch sehr in Entwicklung " #~ "und kann noch Probleme enthalten. Stabilität und Datensicherheit sollten " #~ "recht gut sein, es fehlt aber noch an Geschwindigkeit. Wenn Sie große " #~ "Dateien anhängen, werden Sie recht lange warten müssen. Es kommt afu den " #~ "Fall an, am besten probieren Sie es selbst aus. In künftigen Versionen " #~ "von Gringotts werden wir auch an diesem Aspekt arbeiten." #~ msgid "" #~ "Important informations\n" #~ "on this feature" #~ msgstr "" #~ "Wichtige Informationen\n" #~ "zu dieser Eigenschaft" #~ msgid "The file cannot be opened" #~ msgstr "Die Datei kann nicht geöffnet werden" #~ msgid "Choose file:" #~ msgstr "Datei auswählen:" #, fuzzy #~ msgid "The file does not exists" #~ msgstr "Die Datei existiert nicht" #, fuzzy #~ msgid "File does not exists" #~ msgstr "Die Datei existiert nicht" #~ msgid "Miscellaneous" #~ msgstr "Sonstiges" #~ msgid "Icon file %s not found" #~ msgstr "Ikon-Datei %s nicht gefunden" #~ msgid "Please wait, reading data..." #~ msgstr "Bitte warten, lese Daten ..." #~ msgid "don't remove the disk" #~ msgstr "Diskette nicht entfernen" gringotts-1.2.10/po/fr.gmo000066400000000000000000000400161201055014300153340ustar00rootroot00000000000000t  &; CMQdh }= +hh -RQC 0H hr     + % 1< X f"-.38= M W-c  <$6GXm2rD*Lw0PRUl!$$   & /< Vc<h#  04@.u  6%7 W cq&9 D?S5 /`2G!x 6 : !%!!G!3g!!!!8! """!=" _"j" r" ~""" "4" #9,#(f# ## ## ###"#$$$@?$$$$$$$ $$<$% %5%D%9c%%%%% %A%6'O'W's' {''''''@' (.(xB(#(((( )0 )'<)pd)p)$F*$k******/*%+B+a+p+ + + +++6+, ,$, +,+5,a,v,",, ,,, --(1-Z-5a-------- .6.K.].Gr..../!/@/7D/|/G14O11!1(11B1i322222"2)3*3 H3 T3a3s3w33333335354S4 f4 p4{44!44445 15 ;54H5}55 5555566 56?B66$6666A627KN7>7 7778.8]68M8"899F9P9&N:)u:':.::;;F8; ;;; ; ;;;;!<)6<<`<'<><1=56=l=== ==="===K> Z>e>i>r>z>>>>0> ? ?5?D?Ic?$?????FZtK67c!4I VN".;rf)em%2 zP_vM}L$8yU9/GRjTqoQs|A@S03aW~En{B^h#Yl*(,5 C] k'J-`pX\OxH+d< ?=& iw[1D>ugb: Block size: %d bits Index Key length: %d bits Title version (c)AddAdd a new attachmentAdd an entryAfter this, there's no way to recover the file. Are you sure?AlgorithmsAre you sure you want to remove this entry?Are you sure you want to wipe this file? Its content will be securely erased, so no recover is possible.Ask when overwriting filesAttached filesAuthorsBestBye, then!Cannot create file, or file already existent.Cannot decode tempfile.Cannot drop root group privileges. Someone is hacking this process. I cannot go onCannot drop root user privileges. Someone is hacking this process. I cannot go onCannot encode tempfile.Cannot open file to attach.Case sensitiveChange commentChoiceChoose fileChoose password type:Clear clipboard on closing fileClear clipboard on exitClick to change the editor fontClipboardClose documentCommentCompressionConfirmConfirm...Copy selectionCouldn't backup old fileCut selectionDecorationsDimensionDiskDo you want to overwrite the existing file?Editor fontEncryptionEnforced use of /dev/randomEnter commentEnter it again for confirmation:Enter new passwordEnter new password:Enter passwordEnter the string to find:Environmental variables validationErrorError in compression! Probably a zlib problemFILEFastFileFile is too bigFile nameFile savingFile to load does not exists or it is invalidFile to open at startupFile to wipeFile wiping failedFind a stringFor security reasons, you cannot run Gringotts as root user.General optionsGo to first entryGo to last entryGo to next entryGo to previous entryGoodGringotts internal error. Cannot finish operation.Gringotts is a small but (hopely ;) useful utility that stores sensitive data (passwords, credit card numbers, friends' addresses) in an organized and most of all very secure form. It uses libmcrypt and libmhash to provide a strong level of encryption, just trying to be as trustworthy as possible. This program is released under the GNU GPL, v.2 or later See COPYING or go to http://www.gnu.org/copyleft/gpl.htmlHashingI can't overwrite a directory or a symlinkIndex of entriesInfo on this attachmentInsert a disk and press OkInvalid entry numberInvalid preferences file. Resetting to defaults.It isn't possible to redirect data to stdin, as it is a potential security flaw.KbList of attached filesMake backups of filesMbMemory protection from core dumpsMemory protection from ptrace spyingMemory protection from swap writingsMove downMove upMy first pageNUMNewNew documentNew fileNew passwordNew title for this entry:New title...NoneNumber of overwritings with random data, when wiping a file:Only regular files can be attached.Open documentOpen...Overwrite?Password expirationPassword expires inPassword successfully changedPaste selectionPlease enter a comment for this file (max. 32 chars)Please insert a disk in the first floppy drivePlease waitPreferencesProblem with libmcrypt, probably a faulty installationQuitQuit GringottsRemoveRemove this attachmentRemove this entryRunning without root privilegesSave as....Save documentSave this attachmentSave?Saved data contain invalid UTF-8 charsSearch for textSearch only in this entrySecuritySecurity level: %sSecurity monitorSee COPYING or go to http://www.gnu.org/copyleft/gpl.htmlSelect file...Some changes have not been saved. Do you wish to save them now?Sorry, currently you can attach files only up to 2 MbSplash screenStrict prohibition to root userStringTXTText not found. Continue search from beginning?The current password is expired. You should change it, or modify this setting in the preferencesThe disk is not write protected. For security reasons, I'll not use it.The file appears to be corrupted!The file does not existThe file has been created with a newer version of Gringotts. If you save it using this one, some formatting can be lost.The password is too short, it must be at least 4 charsThe process is setuid root, but I can't lock memory pagingThe selected file doesn't existsThe text searched could not be found!The two passwords are differentThis file doesn't seem to be a valid Gringotts one!Title for the new entry:Title...Too many data to writeTry to compile with --disable-root-filter in ./configureTry using -sUh-oh! I can't read from the file!Uh-oh! I can't write to the file!View indexWarningWipe passesWrap around?Wrong passwordWrong password! Re-enter itYou must enter a valid password!You must specify a file to dump (with the -f switch)You must specify a regular fileYou'll lose all the changes from last save! Are you sure?You've selected a directory or a symlinkallow usage as root -- DANGEROUSassembling dataattachingbytescleaning updaysdump the content of a fileforce use of /dev/random -- slowergoodindex of the entry to dumpit isn't possible to hide password typing; be extremely careful!loadinglownoneoptimalpasses in file wipingpassword qualityreading filereading floppyreleased under GNU General Public License (GPL) v.2 or latersavingsecurely wipe a fileshows the helpspecify the input file to openstdin, stdout and/or stderr are invalid. Cannot continue.stdout/stdin/stderr validationthe nametitle of the entry to dumpversionwiping fileProject-Id-Version: gringotts 0.3 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-09-15 19:57+0300 PO-Revision-Date: 2002-10-24 09:32+0200 Last-Translator: Nicolas Pouillon Language-Team: French MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Taille du bloc: %d bits Index Taille de la clef: %d bits Titre version ©AjouterAjouter un fichierAjouter une ficheIl n'y a pas de moyen de recupérer les données. Etes-vous sur?AlgorithmesEtes-vous sûr de vouloir retirer cette fiche?Etes-vous sur de vouloir effacer ce fichier sachant qu'il sera detruit de manière efficace, sans moyen de le retrouver?Demander avant d'ecraser un ficnierFichiers jointsAuteursMeilleurA bientot!Ne peut créer le fichier, ou il éxiste déjà.Ne peut décoder le fichier temporaire.Ne peut pas se débarasser des privileges root, quelqu'un est en train de regarder ce process, ne peut continuerNe peut pas se débarasser des privileges root, quelqu'un est en train de regarder ce process, ne peut continuerNe peut coder le fichier temporaire.Ne peut ouvrir le fichier a joindre.Respecter la casseChanger le commentaireCkoixChoisissez un fichierType de mot de passe:Effacer le presse-papiers en fermant le fichierEffacer le presse-papiers en quittantCliquer pour changer la policePresse-papiersFermer le documentCommentaireCompressionConfirmationConfirmation...Copier la selectionNe peut faire de sauvegarde de la version précédenteCouper la selectionDécorationsTailleDisquetteVoulez-vous remplacer le fichier éxistant?Police de l'éditeurCryptageUtilisation de /dev/random forcéeEntrer un commentaireConfirmation:Entrez le nouveau mot de passeEntrez le nouveau mot de passe:Mot de passeEntrer la chaîne à chercher:Validation des variables d'environnementErreurProblème en compressant, probablement venant de zlibFICHIERRapideFichierLe fichier est trop grosNom de fichierFichier en cours de sauvegardeFichier inéxistant ou corrompuFichier en ouverture automatiqueFichier à détruireEffçage échouéChercher une chaînePour des raisons de securité, Gringotts ne peut être lancé par root.Options généralesAller à la première ficheAller à la dernière ficheAller à la fiche suivanteAller à la fiche précédenteBonErreur interne de Gringotts. Ne peut finir l'opérationGringotts est un petit programme, mais (heureusement ;) bien utile qui garde vos données sensibles ( mots de passe, No de carte de crédit, adresse de votre copine... ) d'une manière simple et efficace. Il utilise libmcrypt et libmhash pour un encryptage de haut niveau, en s'éfforçant d'être aussi fiable que possible. Ce programme est distribué sous la GNU GPL v. 2 ou ultérieure; Cf COPYING ou allez voir l'url http://www.gnu.org/copyleft/gpl.htmlHashageNe peut écrire par dessus un lien ou un répertoireIndex des fichesInformations sur ce fichier jointInsérez une disquette et appuyez sur OkNombre invalideFichier de préférences invalide. Retour aux valeurs par défaut.Il est impossible de rediriger les données vers stdin, ceci présentant un trou de sécurité potentiel.KoListe des fichiers jointsFaire des sauvegardes (backups)MoProtection contre les 'core-dumps'Protection contre l'espionnage par ptraceProtection contre le swappingVers le basVers le hautMa première pageNUMNouveauNouveau documentNouveauNouveau mot de passeNouveau titre pour cette fiche:Nouveau titre...Aucun(e)Nombre de passes lors de la destruction d'un fichier:Seuls les fichiers 'classiques' peuvent être joints.Ouvrir un documentOuvrir...Remplacer?Vie du mot de passeMot de passe obsolète dansMot de passe changé avec succèsColler la selectionEntrer un commentaire pour ce fichier (32 chrs max.)Insérez une disquette SVPPatientezPréferencesProblème avec libmcrypt, vérifiez son installationQuitterQuitter GringottsSupprimerRetirer ce fichier jointRetirer cette ficheTournant sans les droits rootEnregistrer sous...Sauvegarder un documentSauvegarder le fichier jointSauvegarder?Les données sauvegardées contiennent des chrs UTF-8 invalidesRechercher le texteChercher uniquement dans cette ficheSecuriteNoveau de securite: %sMoniteur de securiteCf COPYING ou allez voir sur http://www.gnu.org/copyleft/gpl.htmlSélectionner un fichier...Les modifications n'ont pas été sauvées Voulez-vous le faire maintenant?Désolé, la limite est actuellement à 2Mo de fichiers jointsSplash screenInterdiction au rootChaineTXTTexte non trouvé, continuer depuis le début?Le mot de passe actuel est obsolète. Vous devriez le changer, ou modifier vos préférences.La disquette n'est pas protégée. Pour la sécurite, je ne l'utiliserai pas.Le fichier paraît être corrompu!Le fichier n'éxiste pasLe fichier a été créé avec une version plus recente de Gringotts. Si vous sauvegardez avec la version courante, des données peuvent être perdues.Le mot de passe est trop court, il doit faire 4 caractères au minimumL'executable est setuid root, mais je ne peux pas bloquer la pagination mémoireLe fichier sélectionné n'éxiste pasLe texte recherché ne peut être trouvéLes deux mots de passe sont différentsCe fichier ne paraît pas être du bon format!Titre pour la nouvelle fiche:Titre...Trop de données a écrireErrayez de compiler avec l'option --disable-root-filter au ./configureEssayez -sLecture du fichier impossible!Ecriture impossible!Voir l'indexAttentionPasses de destructionRevenir au début?Mot de passe invalideMauvais mot de passe, recommencezVous devez entrer un mot de passe valide!Vous devez spécifier un fichier a sauver (avec l'option -f)Vous devez choisir un fichier classiqueVous allez perdre les dernières modifications Etes-vous sûr?Vous avez sélectionné un répertoire ou un lienautoriser l'utilisation en tant que root -- DANGEREUXassemblage des donnéesinclusion en coursoctetsnettoyagejoursposer le contenu d'un fichierutilisation de /dev/random forcéebonindex de la fiche a sauveril est impossible de cacher la frappe du mot de passe, soyeztrès vigilent!chargementbasaucun(e)optimalpasses lors de la destructionqualite du mot de passelecture du fichierlecture de la disquettedistribué sous la GNU GPL v. 2.0 ou ultérieuresauvegarde en coursdétruire un fichieraffiche l'aidespécifie le fichier d'entréestdin, stdout, et/ou stderr sont invalides. Impossible d'aller plus loin.Validation des flux d'entrée-sortieNomtitre de la fiche a sauverversiondestruction en coursgringotts-1.2.10/po/fr.po000066400000000000000000000614311201055014300151740ustar00rootroot00000000000000# Gringotts french translation. # Copyright (C) 2002 Free Software Foundation, Inc. # Nicolas Pouillon , 2002. # msgid "" msgstr "" "Project-Id-Version: gringotts 0.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-15 19:57+0300\n" "PO-Revision-Date: 2002-10-24 09:32+0200\n" "Last-Translator: Nicolas Pouillon \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/grg_entries.c:393 msgid "Invalid entry number" msgstr "Nombre invalide" #: src/grg_entries.c:495 src/gringotts.c:509 src/gringotts.c:751 msgid "assembling data" msgstr "assemblage des données" #: src/grg_entries.c:504 src/grg_attachs.c:268 msgid "saving" msgstr "sauvegarde en cours" #: src/grg_entries.c:509 src/gringotts.c:512 src/gringotts.c:754 msgid "cleaning up" msgstr "nettoyage" #: src/grg_entries.c:632 msgid "" "The file has been created with a newer version of Gringotts. If you save it " "using this one, some formatting can be lost." msgstr "" "Le fichier a été créé avec une version plus recente de Gringotts. Si vous " "sauvegardez avec la version courante, des données peuvent être perdues." #: src/grg_entries_vis.c:150 src/grg_entries_vis.c:151 msgid "Tabs Width" msgstr "" #: src/grg_entries_vis.c:504 msgid "The text searched could not be found!" msgstr "Le texte recherché ne peut être trouvé" #: src/grg_entries_vis.c:511 msgid "Wrap around?" msgstr "Revenir au début?" #: src/grg_entries_vis.c:512 msgid "Text not found. Continue search from beginning?" msgstr "Texte non trouvé, continuer depuis le début?" #: src/grg_list.c:95 msgid " Index " msgstr " Index " #: src/grg_list.c:103 msgid " Title " msgstr " Titre " #: src/grg_list.c:213 msgid "Index of entries" msgstr "Index des fiches" #: src/grg_list.c:247 msgid "Move up" msgstr "Vers le haut" #: src/grg_list.c:251 msgid "Move down" msgstr "Vers le bas" #: src/grg_menus.c:110 #, fuzzy msgid "_New" msgstr "Nouveau" #: src/grg_menus.c:113 #, fuzzy msgid "_Open" msgstr "Ouvrir" #: src/grg_menus.c:115 #, fuzzy msgid "_Save" msgstr "Sauvegarder" #: src/grg_menus.c:117 #, fuzzy msgid "Save _As" msgstr "Enregistrer sous" #: src/grg_menus.c:119 #, fuzzy msgid "_Revert" msgstr "Version précédente" #: src/grg_menus.c:121 #, fuzzy msgid "_Close" msgstr "Fermer" #: src/grg_menus.c:132 #, fuzzy msgid "_Quit" msgstr "Quitter" #: src/grg_menus.c:136 #, fuzzy msgid "_File" msgstr "Fichier" #: src/grg_menus.c:149 msgid "Add" msgstr "Ajouter" #: src/grg_menus.c:151 msgid "Remove" msgstr "Supprimer" #: src/grg_menus.c:154 #, fuzzy msgid "Cu_t" msgstr "Couper" #: src/grg_menus.c:156 #, fuzzy msgid "_Copy" msgstr "Copier" #: src/grg_menus.c:158 #, fuzzy msgid "_Paste" msgstr "Coller" #: src/grg_menus.c:162 #, fuzzy msgid "_Find" msgstr "Rechercher" #: src/grg_menus.c:164 #, fuzzy msgid "Find a_gain" msgstr "Suivant" #: src/grg_menus.c:167 #, fuzzy msgid "Change Pass_word" msgstr "Changer de mot de passe" #: src/grg_menus.c:171 #, fuzzy msgid "P_references" msgstr "Préferences" #: src/grg_menus.c:174 #, fuzzy msgid "_Edit" msgstr "Edition" #: src/grg_menus.c:187 #, fuzzy msgid "_First" msgstr "Premier" #: src/grg_menus.c:190 #, fuzzy msgid "_Back" msgstr "Précédent" #: src/grg_menus.c:193 #, fuzzy msgid "For_ward" msgstr "Suivant" #: src/grg_menus.c:197 #, fuzzy msgid "_Last" msgstr "Dernier" #: src/grg_menus.c:201 #, fuzzy msgid "_Index" msgstr "Index" #: src/grg_menus.c:205 #, fuzzy msgid "_Navigation" msgstr "Navigation" #: src/grg_menus.c:218 #, fuzzy msgid "_Wipe file" msgstr "Detruire fichier" #: src/grg_menus.c:222 #, fuzzy msgid "_Tools" msgstr "Outils" #: src/grg_menus.c:235 #, fuzzy msgid "_Security monitor" msgstr "Moniteur de securite" #: src/grg_menus.c:244 #, fuzzy msgid "_About" msgstr "A propos" #: src/grg_menus.c:247 #, fuzzy msgid "_Help" msgstr "Aide" #: src/grg_widgets.c:65 msgid "Error" msgstr "Erreur" #: src/grg_widgets.c:240 msgid "Find a string" msgstr "Chercher une chaîne" #: src/grg_widgets.c:253 msgid "Enter the string to find:" msgstr "Entrer la chaîne à chercher:" #: src/grg_widgets.c:263 msgid "Search only in this entry" msgstr "Chercher uniquement dans cette fiche" #: src/grg_widgets.c:267 msgid "Case sensitive" msgstr "Respecter la casse" #: src/grg_widgets.c:314 src/grg_widgets.c:316 src/grg_widgets.c:353 msgid "Please wait" msgstr "Patientez" #: src/grg_widgets.c:392 src/gringotts.c:1461 src/grg_pwd.c:122 #: src/grg_popt.c:287 msgid "The file does not exist" msgstr "Le fichier n'éxiste pas" #: src/gringotts.c:139 msgid " version " msgstr " version " #: src/gringotts.c:140 src/gringotts.c:153 src/gringotts.c:155 #: src/gringotts.c:157 src/gringotts.c:1933 msgid "(c)" msgstr "©" #: src/gringotts.c:142 msgid "Authors" msgstr "Auteurs" #: src/gringotts.c:146 msgid "" "Gringotts is a small but (hopely ;) useful utility that stores sensitive " "data (passwords, credit card numbers, friends' addresses) in an organized " "and most of all very secure form.\n" "It uses libmcrypt and libmhash to provide a strong level of encryption, just " "trying to be as trustworthy as possible.\n" "\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" "Gringotts est un petit programme, mais (heureusement ;) bien utile qui garde " "vos données sensibles ( mots de passe, No de carte de crédit, adresse de " "votre copine... ) d'une manière simple et efficace.\n" "Il utilise libmcrypt et libmhash pour un encryptage de haut niveau, en " "s'éfforçant d'être aussi fiable que possible.\n" "\n" "Ce programme est distribué sous la GNU GPL v. 2 ou ultérieure;\n" "Cf COPYING ou allez voir l'url http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:156 msgid "the name" msgstr "Nom" #: src/gringotts.c:268 src/gringotts.c:629 src/gringotts.c:958 #: src/gringotts.c:1181 msgid "New file" msgstr "Nouveau" #: src/gringotts.c:415 msgid "Save?" msgstr "Sauvegarder?" #: src/gringotts.c:417 msgid "" "Some changes have not been saved.\n" "Do you wish to save them now?" msgstr "" "Les modifications n'ont pas été sauvées\n" "Voulez-vous le faire maintenant?" #: src/gringotts.c:471 src/gringotts.c:1386 msgid "Confirm" msgstr "Confirmation" #: src/gringotts.c:472 msgid "" "You'll lose all the changes from\n" "last save! Are you sure?" msgstr "" "Vous allez perdre les\n" "dernières modifications\n" "Etes-vous sûr?" #: src/gringotts.c:476 src/gringotts.c:739 msgid "loading" msgstr "chargement" #: src/gringotts.c:485 src/gringotts.c:615 src/grg_popt.c:65 msgid "You've selected a directory or a symlink" msgstr "Vous avez sélectionné un répertoire ou un lien" #: src/gringotts.c:492 src/gringotts.c:622 src/grg_popt.c:61 msgid "The selected file doesn't exists" msgstr "Le fichier sélectionné n'éxiste pas" #: src/gringotts.c:530 src/gringotts.c:574 src/gringotts.c:683 #: src/gringotts.c:718 src/gringotts.c:772 src/gringotts.c:802 #: src/gringotts.c:1092 src/gringotts.c:1135 src/grg_popt.c:83 #: src/grg_popt.c:107 src/grg_popt.c:142 src/grg_popt.c:158 msgid "Gringotts internal error. Cannot finish operation." msgstr "Erreur interne de Gringotts. Ne peut finir l'opération" #: src/gringotts.c:542 src/gringotts.c:700 src/grg_popt.c:98 msgid "The file appears to be corrupted!" msgstr "Le fichier paraît être corrompu!" #: src/gringotts.c:549 src/gringotts.c:708 src/grg_popt.c:102 msgid "File is too big" msgstr "Le fichier est trop gros" #: src/gringotts.c:556 src/gringotts.c:691 src/grg_popt.c:93 msgid "Uh-oh! I can't read from the file!" msgstr "Lecture du fichier impossible!" #: src/gringotts.c:564 src/gringotts.c:785 src/gringotts.c:1117 #: src/grg_popt.c:152 msgid "Problem with libmcrypt, probably a faulty installation" msgstr "Problème avec libmcrypt, vérifiez son installation" #: src/gringotts.c:587 src/gringotts.c:838 msgid "" "The current password is expired.\n" "You should change it, or modify this setting in the preferences" msgstr "" "Le mot de passe actuel est obsolète.\n" "Vous devriez le changer, ou modifier vos préférences." #: src/gringotts.c:665 src/grg_popt.c:89 msgid "This file doesn't seem to be a valid Gringotts one!" msgstr "Ce fichier ne paraît pas être du bon format!" #: src/gringotts.c:779 src/grg_popt.c:146 msgid "Wrong password! Re-enter it" msgstr "Mauvais mot de passe, recommencez" #: src/gringotts.c:792 src/grg_popt.c:166 msgid "Saved data contain invalid UTF-8 chars" msgstr "Les données sauvegardées contiennent des chrs UTF-8 invalides" #: src/gringotts.c:861 src/grg_pwd.c:80 msgid "Open..." msgstr "Ouvrir..." #: src/gringotts.c:950 src/grg_popt.c:117 msgid "You must enter a valid password!" msgstr "Vous devez entrer un mot de passe valide!" #: src/gringotts.c:968 msgid "My first page" msgstr "Ma première page" #: src/gringotts.c:983 msgid "New title..." msgstr "Nouveau titre..." #: src/gringotts.c:984 msgid "New title for this entry:" msgstr "Nouveau titre pour cette fiche:" #: src/gringotts.c:1035 msgid "I can't overwrite a directory or a symlink" msgstr "Ne peut écrire par dessus un lien ou un répertoire" #: src/gringotts.c:1043 msgid "Overwrite?" msgstr "Remplacer?" #: src/gringotts.c:1045 msgid "Do you want to overwrite the existing file?" msgstr "Voulez-vous remplacer le fichier éxistant?" #: src/gringotts.c:1059 msgid "Couldn't backup old file" msgstr "Ne peut faire de sauvegarde de la version précédente" #: src/gringotts.c:1100 msgid "Error in compression! Probably a zlib problem" msgstr "Problème en compressant, probablement venant de zlib" #: src/gringotts.c:1108 msgid "Uh-oh! I can't write to the file!" msgstr "Ecriture impossible!" #: src/gringotts.c:1125 msgid "Too many data to write" msgstr "Trop de données a écrire" #: src/gringotts.c:1153 src/gringotts.c:1407 msgid "Save as...." msgstr "Enregistrer sous..." #: src/gringotts.c:1195 msgid "Title..." msgstr "Titre..." #: src/gringotts.c:1196 msgid "Title for the new entry:" msgstr "Titre pour la nouvelle fiche:" #: src/gringotts.c:1197 msgid "New" msgstr "Nouveau" #: src/gringotts.c:1221 src/gringotts.c:1466 msgid "Confirm..." msgstr "Confirmation..." #: src/gringotts.c:1222 msgid "Are you sure you want to remove this entry?" msgstr "Etes-vous sûr de vouloir retirer cette fiche?" #: src/gringotts.c:1249 msgid "Wrong password" msgstr "Mot de passe invalide" #: src/gringotts.c:1269 msgid "Password successfully changed" msgstr "Mot de passe changé avec succès" #: src/gringotts.c:1353 src/grg_prefs.c:395 msgid "Select file..." msgstr "Sélectionner un fichier..." #: src/gringotts.c:1388 msgid "" "After this, there's no way to\n" "recover the file. Are you sure?" msgstr "" "Il n'y a pas de moyen de recupérer\n" "les données. Etes-vous sur?" #: src/gringotts.c:1436 msgid "File to wipe" msgstr "Fichier à détruire" #: src/gringotts.c:1467 src/grg_popt.c:290 msgid "" "Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible." msgstr "" "Etes-vous sur de vouloir effacer ce fichier\n" "sachant qu'il sera detruit de manière efficace, sans moyen de le retrouver?" #: src/gringotts.c:1475 msgid "wiping file" msgstr "destruction en cours" #: src/gringotts.c:1484 src/grg_popt.c:305 msgid "File wiping failed" msgstr "Effçage échoué" #: src/gringotts.c:1574 #, fuzzy msgid "E_dit..." msgstr "_Edition" #: src/gringotts.c:1594 msgid "Go to last entry" msgstr "Aller à la dernière fiche" #: src/gringotts.c:1597 msgid "Go to next entry" msgstr "Aller à la fiche suivante" #: src/gringotts.c:1603 msgid "View index" msgstr "Voir l'index" #: src/gringotts.c:1609 msgid "Go to previous entry" msgstr "Aller à la fiche précédente" #: src/gringotts.c:1612 msgid "Go to first entry" msgstr "Aller à la première fiche" #: src/gringotts.c:1626 #, c-format msgid "Security level: %s" msgstr "Noveau de securite: %s" #: src/gringotts.c:1630 src/grg_prefs.c:632 msgid "Security" msgstr "Securite" #: src/gringotts.c:1644 msgid "New document" msgstr "Nouveau document" #: src/gringotts.c:1649 msgid "Open document" msgstr "Ouvrir un document" #: src/gringotts.c:1651 msgid "Save document" msgstr "Sauvegarder un document" #: src/gringotts.c:1653 msgid "Close document" msgstr "Fermer le document" #: src/gringotts.c:1658 msgid "Cut selection" msgstr "Couper la selection" #: src/gringotts.c:1660 msgid "Copy selection" msgstr "Copier la selection" #: src/gringotts.c:1663 msgid "Paste selection" msgstr "Coller la selection" #: src/gringotts.c:1669 msgid "Search for text" msgstr "Rechercher le texte" #: src/gringotts.c:1674 msgid "Add an entry" msgstr "Ajouter une fiche" #: src/gringotts.c:1676 msgid "Remove this entry" msgstr "Retirer cette fiche" #: src/gringotts.c:1681 src/grg_prefs.c:446 msgid "Preferences" msgstr "Préferences" #: src/gringotts.c:1686 msgid "Quit Gringotts" msgstr "Quitter Gringotts" #: src/gringotts.c:1703 msgid "Attached files" msgstr "Fichiers joints" #: src/gringotts.c:1713 msgid "Add a new attachment" msgstr "Ajouter un fichier" #: src/gringotts.c:1715 msgid "Remove this attachment" msgstr "Retirer ce fichier joint" #: src/gringotts.c:1718 msgid "Save this attachment" msgstr "Sauvegarder le fichier joint" #: src/gringotts.c:1721 msgid "Info on this attachment" msgstr "Informations sur ce fichier joint" #: src/gringotts.c:1723 msgid "Change comment" msgstr "Changer le commentaire" #: src/gringotts.c:1747 msgid "List of attached files" msgstr "Liste des fichiers joints" #: src/gringotts.c:1933 msgid "version" msgstr "version" #: src/gringotts.c:1935 msgid "released under GNU General Public License (GPL) v.2 or later" msgstr "distribué sous la GNU GPL v. 2.0 ou ultérieure" #: src/gringotts.c:1937 msgid "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "Cf COPYING ou allez voir sur http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:1951 src/grg_prefs.c:151 msgid "Invalid preferences file. Resetting to defaults." msgstr "Fichier de préférences invalide. Retour aux valeurs par défaut." #: src/gringotts.c:1977 msgid "File to load does not exists or it is invalid" msgstr "Fichier inéxistant ou corrompu" #: src/grg_prefs.c:220 #, c-format msgid " Block size: %d bits" msgstr " Taille du bloc: %d bits" #: src/grg_prefs.c:223 #, c-format msgid " Key length: %d bits" msgstr " Taille de la clef: %d bits" #: src/grg_prefs.c:457 msgid "Encryption" msgstr "Cryptage" #: src/grg_prefs.c:502 msgid "Hashing" msgstr "Hashage" #: src/grg_prefs.c:515 msgid "Compression" msgstr "Compression" #: src/grg_prefs.c:530 msgid "None" msgstr "Aucun(e)" #: src/grg_prefs.c:535 msgid "Fast" msgstr "Rapide" #: src/grg_prefs.c:539 msgid "Good" msgstr "Bon" #: src/grg_prefs.c:543 msgid "Best" msgstr "Meilleur" #: src/grg_prefs.c:547 msgid "Algorithms" msgstr "Algorithmes" #: src/grg_prefs.c:554 msgid "General options" msgstr "Options générales" #: src/grg_prefs.c:556 msgid "Editor font" msgstr "Police de l'éditeur" #: src/grg_prefs.c:561 msgid "Click to change the editor font" msgstr "Cliquer pour changer la police" #: src/grg_prefs.c:571 msgid "Decorations" msgstr "Décorations" #: src/grg_prefs.c:579 msgid "Splash screen" msgstr "Splash screen" #: src/grg_prefs.c:587 msgid "Tray-Icon (Needs Gringotts restart to take affect)" msgstr "" #: src/grg_prefs.c:592 msgid "File to open at startup" msgstr "Fichier en ouverture automatique" #: src/grg_prefs.c:611 msgid "File saving" msgstr "Fichier en cours de sauvegarde" #: src/grg_prefs.c:618 msgid "Make backups of files" msgstr "Faire des sauvegardes (backups)" #: src/grg_prefs.c:624 msgid "Ask when overwriting files" msgstr "Demander avant d'ecraser un ficnier" #: src/grg_prefs.c:634 msgid "Password expiration" msgstr "Vie du mot de passe" #: src/grg_prefs.c:641 msgid "Password expires in" msgstr "Mot de passe obsolète dans" #: src/grg_prefs.c:645 msgid "days" msgstr "jours" #. this means "passes in wiping a file", not "wipe the passes" :) #: src/grg_prefs.c:657 msgid "Wipe passes" msgstr "Passes de destruction" #: src/grg_prefs.c:663 msgid "" "Number of overwritings with random\n" "data, when wiping a file:" msgstr "" "Nombre de passes lors de la destruction\n" "d'un fichier:" #: src/grg_prefs.c:676 msgid "Clipboard" msgstr "Presse-papiers" #: src/grg_prefs.c:684 msgid "Clear clipboard on closing file" msgstr "Effacer le presse-papiers en fermant le fichier" #: src/grg_prefs.c:691 msgid "Clear clipboard on exit" msgstr "Effacer le presse-papiers en quittant" #: src/grg_pwd.c:128 msgid "You must specify a regular file" msgstr "Vous devez choisir un fichier classique" #: src/grg_pwd.c:137 msgid "reading file" msgstr "lecture du fichier" #: src/grg_pwd.c:168 msgid "Please insert a disk in the first floppy drive" msgstr "Insérez une disquette SVP" #: src/grg_pwd.c:180 msgid "The disk is not write protected. For security reasons, I'll not use it." msgstr "" "La disquette n'est pas protégée. Pour la sécurite, je ne l'utiliserai pas." #: src/grg_pwd.c:190 msgid "reading floppy" msgstr "lecture de la disquette" #: src/grg_pwd.c:222 msgid "Enter new password" msgstr "Entrez le nouveau mot de passe" #: src/grg_pwd.c:230 src/grg_pwd.c:751 msgid "Choose file" msgstr "Choisissez un fichier" #: src/grg_pwd.c:238 src/grg_pwd.c:609 msgid "Insert a disk and press Ok" msgstr "Insérez une disquette et appuyez sur Ok" #: src/grg_pwd.c:316 msgid "New password" msgstr "Nouveau mot de passe" #: src/grg_pwd.c:330 src/grg_pwd.c:573 src/grg_pwd.c:717 msgid "Choose password type:" msgstr "Type de mot de passe:" #: src/grg_pwd.c:333 src/grg_pwd.c:575 src/grg_pwd.c:717 msgid "String" msgstr "Chaine" #: src/grg_pwd.c:337 src/grg_pwd.c:579 src/grg_pwd.c:717 msgid "File" msgstr "Fichier" #: src/grg_pwd.c:342 src/grg_pwd.c:584 src/grg_pwd.c:718 msgid "Disk" msgstr "Disquette" #: src/grg_pwd.c:347 msgid "Enter new password:" msgstr "Entrez le nouveau mot de passe:" #: src/grg_pwd.c:355 msgid "Enter it again for confirmation:" msgstr "Confirmation:" #: src/grg_pwd.c:392 msgid "password quality" msgstr "qualite du mot de passe" #: src/grg_pwd.c:436 msgid "The password is too short, it must be at least 4 chars" msgstr "Le mot de passe est trop court, il doit faire 4 caractères au minimum" #: src/grg_pwd.c:448 msgid "The two passwords are different" msgstr "Les deux mots de passe sont différents" #: src/grg_pwd.c:560 src/grg_pwd.c:733 msgid "Enter password" msgstr "Mot de passe" #: src/grg_pwd.c:718 msgid "Quit" msgstr "Quitter" #: src/grg_pwd.c:721 msgid "Choice" msgstr "Ckoix" #: src/grg_pwd.c:771 msgid "Bye, then!" msgstr "A bientot!" #: src/grg_safe.c:124 #, c-format msgid "Cannot get MEMLOCK resource limit: %s" msgstr "" #: src/grg_safe.c:129 #, c-format msgid "" "Increase the memory locking limit to at least %d bytes. Current limit: %d " "bytes.\n" "See /usr/share/doc/gringotts/README for \n" "directions or alternatively make gringotts\n" "non-SUID-root\n" msgstr "" #: src/grg_safe.c:144 msgid "The process is setuid root, but I can't lock memory paging" msgstr "" "L'executable est setuid root, mais je ne peux pas bloquer la pagination " "mémoire" #: src/grg_safe.c:166 msgid "" "Cannot drop root user privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Ne peut pas se débarasser des privileges root, quelqu'un est en train de " "regarder ce process, ne peut continuer" #: src/grg_safe.c:179 msgid "" "Cannot drop root group privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Ne peut pas se débarasser des privileges root, quelqu'un est en train de " "regarder ce process, ne peut continuer" #: src/grg_safe.c:224 src/grg_safe.c:230 msgid "For security reasons, you cannot run Gringotts as root user." msgstr "Pour des raisons de securité, Gringotts ne peut être lancé par root." #: src/grg_safe.c:226 msgid "Try to compile with --disable-root-filter in ./configure" msgstr "Errayez de compiler avec l'option --disable-root-filter au ./configure" #: src/grg_safe.c:231 msgid "Try using -s" msgstr "Essayez -s" #: src/grg_safe.c:251 msgid "stdin, stdout and/or stderr are invalid. Cannot continue." msgstr "" "stdin, stdout, et/ou stderr sont invalides. Impossible d'aller plus loin." #: src/grg_safe.c:270 msgid "Invalid LANG environment variable:" msgstr "" #: src/grg_safe.c:277 msgid "Invalid XAUTHORITY environment variable:" msgstr "" #: src/grg_safe.c:286 msgid "Invalid DISPLAY environment variable:" msgstr "" #: src/grg_safe.c:393 msgid "optimal" msgstr "optimal" #: src/grg_safe.c:395 msgid "good" msgstr "bon" #: src/grg_safe.c:398 msgid "low" msgstr "bas" #: src/grg_safe.c:418 msgid "Security monitor" msgstr "Moniteur de securite" #: src/grg_safe.c:433 src/grg_safe.c:437 src/grg_safe.c:440 msgid "Running without root privileges" msgstr "Tournant sans les droits root" #: src/grg_safe.c:446 src/grg_safe.c:449 msgid "Memory protection from core dumps" msgstr "Protection contre les 'core-dumps'" #: src/grg_safe.c:457 src/grg_safe.c:460 msgid "Memory protection from swap writings" msgstr "Protection contre le swapping" #: src/grg_safe.c:465 src/grg_safe.c:468 msgid "Memory protection from ptrace spying" msgstr "Protection contre l'espionnage par ptrace" #: src/grg_safe.c:472 src/grg_safe.c:475 msgid "Environmental variables validation" msgstr "Validation des variables d'environnement" #: src/grg_safe.c:478 msgid "stdout/stdin/stderr validation" msgstr "Validation des flux d'entrée-sortie" #: src/grg_safe.c:481 src/grg_safe.c:484 msgid "Enforced use of /dev/random" msgstr "Utilisation de /dev/random forcée" #: src/grg_safe.c:488 src/grg_safe.c:491 msgid "Strict prohibition to root user" msgstr "Interdiction au root" #: src/grg_popt.c:53 msgid "Warning" msgstr "Attention" #: src/grg_popt.c:55 msgid "it isn't possible to hide password typing; be extremely careful!" msgstr "" "il est impossible de cacher la frappe du mot de passe, soyeztrès vigilent!" #: src/grg_popt.c:199 msgid "shows the help" msgstr "affiche l'aide" #: src/grg_popt.c:202 msgid "specify the input file to open" msgstr "spécifie le fichier d'entrée" #: src/grg_popt.c:202 src/grg_popt.c:216 msgid "FILE" msgstr "FICHIER" #: src/grg_popt.c:205 msgid "allow usage as root -- DANGEROUS" msgstr "autoriser l'utilisation en tant que root -- DANGEREUX" #: src/grg_popt.c:208 msgid "force use of /dev/random -- slower" msgstr "utilisation de /dev/random forcée" #: src/grg_popt.c:210 msgid "dump the content of a file" msgstr "poser le contenu d'un fichier" #: src/grg_popt.c:212 msgid "index of the entry to dump" msgstr "index de la fiche a sauver" #: src/grg_popt.c:212 src/grg_popt.c:218 msgid "NUM" msgstr "NUM" #: src/grg_popt.c:214 msgid "title of the entry to dump" msgstr "titre de la fiche a sauver" #: src/grg_popt.c:214 msgid "TXT" msgstr "TXT" #: src/grg_popt.c:216 msgid "securely wipe a file" msgstr "détruire un fichier" #: src/grg_popt.c:218 msgid "passes in file wiping" msgstr "passes lors de la destruction" #: src/grg_popt.c:273 msgid "" "It isn't possible to redirect data to stdin, as it is a potential security " "flaw." msgstr "" "Il est impossible de rediriger les données vers stdin, ceci présentant un " "trou de sécurité potentiel." #: src/grg_popt.c:314 msgid "You must specify a file to dump (with the -f switch)" msgstr "Vous devez spécifier un fichier a sauver (avec l'option -f)" #: src/grg_attachs.c:68 msgid "Cannot open file to attach." msgstr "Ne peut ouvrir le fichier a joindre." #: src/grg_attachs.c:75 msgid "Only regular files can be attached." msgstr "Seuls les fichiers 'classiques' peuvent être joints." #: src/grg_attachs.c:87 msgid "Sorry, currently you can attach files only up to 2 Mb" msgstr "Désolé, la limite est actuellement à 2Mo de fichiers joints" #: src/grg_attachs.c:95 src/grg_attachs.c:339 msgid "Enter comment" msgstr "Entrer un commentaire" #: src/grg_attachs.c:97 src/grg_attachs.c:340 msgid "" "Please enter a comment for this\n" "file (max. 32 chars)" msgstr "" "Entrer un commentaire pour ce fichier\n" "(32 chrs max.)" #: src/grg_attachs.c:107 src/grg_attachs.c:347 msgid "none" msgstr "aucun(e)" #: src/grg_attachs.c:117 msgid "attaching" msgstr "inclusion en cours" #: src/grg_attachs.c:125 msgid "Cannot encode tempfile." msgstr "Ne peut coder le fichier temporaire." #: src/grg_attachs.c:194 src/grg_attachs.c:273 msgid "Cannot decode tempfile." msgstr "Ne peut décoder le fichier temporaire." #: src/grg_attachs.c:284 msgid "Cannot create file, or file already existent." msgstr "Ne peut créer le fichier, ou il éxiste déjà." #: src/grg_attachs.c:316 msgid "File name" msgstr "Nom de fichier" #: src/grg_attachs.c:317 msgid "Dimension" msgstr "Taille" #: src/grg_attachs.c:317 src/grg_attachs.c:386 msgid "bytes" msgstr "octets" #: src/grg_attachs.c:318 msgid "Comment" msgstr "Commentaire" #: src/grg_attachs.c:394 msgid "Kb" msgstr "Ko" #: src/grg_attachs.c:400 msgid "Mb" msgstr "Mo" #: src/grg_attachs.c:432 msgid "" msgstr "" #~ msgid "Invalid environment variables. They could have been manipulated." #~ msgstr "Variables d'environnement invalides. Elles ont pu être manipulées." gringotts-1.2.10/po/gringotts.pot000066400000000000000000000440561201055014300167750ustar00rootroot00000000000000# 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: 2008-09-15 19:57+0300\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" #: src/grg_entries.c:393 msgid "Invalid entry number" msgstr "" #: src/grg_entries.c:495 src/gringotts.c:509 src/gringotts.c:751 msgid "assembling data" msgstr "" #: src/grg_entries.c:504 src/grg_attachs.c:268 msgid "saving" msgstr "" #: src/grg_entries.c:509 src/gringotts.c:512 src/gringotts.c:754 msgid "cleaning up" msgstr "" #: src/grg_entries.c:632 msgid "" "The file has been created with a newer version of Gringotts. If you save it " "using this one, some formatting can be lost." msgstr "" #: src/grg_entries_vis.c:150 src/grg_entries_vis.c:151 msgid "Tabs Width" msgstr "" #: src/grg_entries_vis.c:504 msgid "The text searched could not be found!" msgstr "" #: src/grg_entries_vis.c:511 msgid "Wrap around?" msgstr "" #: src/grg_entries_vis.c:512 msgid "Text not found. Continue search from beginning?" msgstr "" #: src/grg_list.c:95 msgid " Index " msgstr "" #: src/grg_list.c:103 msgid " Title " msgstr "" #: src/grg_list.c:213 msgid "Index of entries" msgstr "" #: src/grg_list.c:247 msgid "Move up" msgstr "" #: src/grg_list.c:251 msgid "Move down" msgstr "" #: src/grg_menus.c:110 msgid "_New" msgstr "" #: src/grg_menus.c:113 msgid "_Open" msgstr "" #: src/grg_menus.c:115 msgid "_Save" msgstr "" #: src/grg_menus.c:117 msgid "Save _As" msgstr "" #: src/grg_menus.c:119 msgid "_Revert" msgstr "" #: src/grg_menus.c:121 msgid "_Close" msgstr "" #: src/grg_menus.c:132 msgid "_Quit" msgstr "" #: src/grg_menus.c:136 msgid "_File" msgstr "" #: src/grg_menus.c:149 msgid "Add" msgstr "" #: src/grg_menus.c:151 msgid "Remove" msgstr "" #: src/grg_menus.c:154 msgid "Cu_t" msgstr "" #: src/grg_menus.c:156 msgid "_Copy" msgstr "" #: src/grg_menus.c:158 msgid "_Paste" msgstr "" #: src/grg_menus.c:162 msgid "_Find" msgstr "" #: src/grg_menus.c:164 msgid "Find a_gain" msgstr "" #: src/grg_menus.c:167 msgid "Change Pass_word" msgstr "" #: src/grg_menus.c:171 msgid "P_references" msgstr "" #: src/grg_menus.c:174 msgid "_Edit" msgstr "" #: src/grg_menus.c:187 msgid "_First" msgstr "" #: src/grg_menus.c:190 msgid "_Back" msgstr "" #: src/grg_menus.c:193 msgid "For_ward" msgstr "" #: src/grg_menus.c:197 msgid "_Last" msgstr "" #: src/grg_menus.c:201 msgid "_Index" msgstr "" #: src/grg_menus.c:205 msgid "_Navigation" msgstr "" #: src/grg_menus.c:218 msgid "_Wipe file" msgstr "" #: src/grg_menus.c:222 msgid "_Tools" msgstr "" #: src/grg_menus.c:235 msgid "_Security monitor" msgstr "" #: src/grg_menus.c:244 msgid "_About" msgstr "" #: src/grg_menus.c:247 msgid "_Help" msgstr "" #: src/grg_widgets.c:65 msgid "Error" msgstr "" #: src/grg_widgets.c:240 msgid "Find a string" msgstr "" #: src/grg_widgets.c:253 msgid "Enter the string to find:" msgstr "" #: src/grg_widgets.c:263 msgid "Search only in this entry" msgstr "" #: src/grg_widgets.c:267 msgid "Case sensitive" msgstr "" #: src/grg_widgets.c:314 src/grg_widgets.c:316 src/grg_widgets.c:353 msgid "Please wait" msgstr "" #: src/grg_widgets.c:392 src/gringotts.c:1461 src/grg_pwd.c:122 #: src/grg_popt.c:287 msgid "The file does not exist" msgstr "" #: src/gringotts.c:139 msgid " version " msgstr "" #: src/gringotts.c:140 src/gringotts.c:153 src/gringotts.c:155 #: src/gringotts.c:157 src/gringotts.c:1933 msgid "(c)" msgstr "" #: src/gringotts.c:142 msgid "Authors" msgstr "" #: src/gringotts.c:146 msgid "" "Gringotts is a small but (hopely ;) useful utility that stores sensitive " "data (passwords, credit card numbers, friends' addresses) in an organized " "and most of all very secure form.\n" "It uses libmcrypt and libmhash to provide a strong level of encryption, just " "trying to be as trustworthy as possible.\n" "\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" #: src/gringotts.c:156 msgid "the name" msgstr "" #: src/gringotts.c:268 src/gringotts.c:629 src/gringotts.c:958 #: src/gringotts.c:1181 msgid "New file" msgstr "" #: src/gringotts.c:415 msgid "Save?" msgstr "" #: src/gringotts.c:417 msgid "" "Some changes have not been saved.\n" "Do you wish to save them now?" msgstr "" #: src/gringotts.c:471 src/gringotts.c:1386 msgid "Confirm" msgstr "" #: src/gringotts.c:472 msgid "" "You'll lose all the changes from\n" "last save! Are you sure?" msgstr "" #: src/gringotts.c:476 src/gringotts.c:739 msgid "loading" msgstr "" #: src/gringotts.c:485 src/gringotts.c:615 src/grg_popt.c:65 msgid "You've selected a directory or a symlink" msgstr "" #: src/gringotts.c:492 src/gringotts.c:622 src/grg_popt.c:61 msgid "The selected file doesn't exists" msgstr "" #: src/gringotts.c:530 src/gringotts.c:574 src/gringotts.c:683 #: src/gringotts.c:718 src/gringotts.c:772 src/gringotts.c:802 #: src/gringotts.c:1092 src/gringotts.c:1135 src/grg_popt.c:83 #: src/grg_popt.c:107 src/grg_popt.c:142 src/grg_popt.c:158 msgid "Gringotts internal error. Cannot finish operation." msgstr "" #: src/gringotts.c:542 src/gringotts.c:700 src/grg_popt.c:98 msgid "The file appears to be corrupted!" msgstr "" #: src/gringotts.c:549 src/gringotts.c:708 src/grg_popt.c:102 msgid "File is too big" msgstr "" #: src/gringotts.c:556 src/gringotts.c:691 src/grg_popt.c:93 msgid "Uh-oh! I can't read from the file!" msgstr "" #: src/gringotts.c:564 src/gringotts.c:785 src/gringotts.c:1117 #: src/grg_popt.c:152 msgid "Problem with libmcrypt, probably a faulty installation" msgstr "" #: src/gringotts.c:587 src/gringotts.c:838 msgid "" "The current password is expired.\n" "You should change it, or modify this setting in the preferences" msgstr "" #: src/gringotts.c:665 src/grg_popt.c:89 msgid "This file doesn't seem to be a valid Gringotts one!" msgstr "" #: src/gringotts.c:779 src/grg_popt.c:146 msgid "Wrong password! Re-enter it" msgstr "" #: src/gringotts.c:792 src/grg_popt.c:166 msgid "Saved data contain invalid UTF-8 chars" msgstr "" #: src/gringotts.c:861 src/grg_pwd.c:80 msgid "Open..." msgstr "" #: src/gringotts.c:950 src/grg_popt.c:117 msgid "You must enter a valid password!" msgstr "" #: src/gringotts.c:968 msgid "My first page" msgstr "" #: src/gringotts.c:983 msgid "New title..." msgstr "" #: src/gringotts.c:984 msgid "New title for this entry:" msgstr "" #: src/gringotts.c:1035 msgid "I can't overwrite a directory or a symlink" msgstr "" #: src/gringotts.c:1043 msgid "Overwrite?" msgstr "" #: src/gringotts.c:1045 msgid "Do you want to overwrite the existing file?" msgstr "" #: src/gringotts.c:1059 msgid "Couldn't backup old file" msgstr "" #: src/gringotts.c:1100 msgid "Error in compression! Probably a zlib problem" msgstr "" #: src/gringotts.c:1108 msgid "Uh-oh! I can't write to the file!" msgstr "" #: src/gringotts.c:1125 msgid "Too many data to write" msgstr "" #: src/gringotts.c:1153 src/gringotts.c:1407 msgid "Save as...." msgstr "" #: src/gringotts.c:1195 msgid "Title..." msgstr "" #: src/gringotts.c:1196 msgid "Title for the new entry:" msgstr "" #: src/gringotts.c:1197 msgid "New" msgstr "" #: src/gringotts.c:1221 src/gringotts.c:1466 msgid "Confirm..." msgstr "" #: src/gringotts.c:1222 msgid "Are you sure you want to remove this entry?" msgstr "" #: src/gringotts.c:1249 msgid "Wrong password" msgstr "" #: src/gringotts.c:1269 msgid "Password successfully changed" msgstr "" #: src/gringotts.c:1353 src/grg_prefs.c:395 msgid "Select file..." msgstr "" #: src/gringotts.c:1388 msgid "" "After this, there's no way to\n" "recover the file. Are you sure?" msgstr "" #: src/gringotts.c:1436 msgid "File to wipe" msgstr "" #: src/gringotts.c:1467 src/grg_popt.c:290 msgid "" "Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible." msgstr "" #: src/gringotts.c:1475 msgid "wiping file" msgstr "" #: src/gringotts.c:1484 src/grg_popt.c:305 msgid "File wiping failed" msgstr "" #: src/gringotts.c:1574 msgid "E_dit..." msgstr "" #: src/gringotts.c:1594 msgid "Go to last entry" msgstr "" #: src/gringotts.c:1597 msgid "Go to next entry" msgstr "" #: src/gringotts.c:1603 msgid "View index" msgstr "" #: src/gringotts.c:1609 msgid "Go to previous entry" msgstr "" #: src/gringotts.c:1612 msgid "Go to first entry" msgstr "" #: src/gringotts.c:1626 #, c-format msgid "Security level: %s" msgstr "" #: src/gringotts.c:1630 src/grg_prefs.c:632 msgid "Security" msgstr "" #: src/gringotts.c:1644 msgid "New document" msgstr "" #: src/gringotts.c:1649 msgid "Open document" msgstr "" #: src/gringotts.c:1651 msgid "Save document" msgstr "" #: src/gringotts.c:1653 msgid "Close document" msgstr "" #: src/gringotts.c:1658 msgid "Cut selection" msgstr "" #: src/gringotts.c:1660 msgid "Copy selection" msgstr "" #: src/gringotts.c:1663 msgid "Paste selection" msgstr "" #: src/gringotts.c:1669 msgid "Search for text" msgstr "" #: src/gringotts.c:1674 msgid "Add an entry" msgstr "" #: src/gringotts.c:1676 msgid "Remove this entry" msgstr "" #: src/gringotts.c:1681 src/grg_prefs.c:446 msgid "Preferences" msgstr "" #: src/gringotts.c:1686 msgid "Quit Gringotts" msgstr "" #: src/gringotts.c:1703 msgid "Attached files" msgstr "" #: src/gringotts.c:1713 msgid "Add a new attachment" msgstr "" #: src/gringotts.c:1715 msgid "Remove this attachment" msgstr "" #: src/gringotts.c:1718 msgid "Save this attachment" msgstr "" #: src/gringotts.c:1721 msgid "Info on this attachment" msgstr "" #: src/gringotts.c:1723 msgid "Change comment" msgstr "" #: src/gringotts.c:1747 msgid "List of attached files" msgstr "" #: src/gringotts.c:1933 msgid "version" msgstr "" #: src/gringotts.c:1935 msgid "released under GNU General Public License (GPL) v.2 or later" msgstr "" #: src/gringotts.c:1937 msgid "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" #: src/gringotts.c:1951 src/grg_prefs.c:151 msgid "Invalid preferences file. Resetting to defaults." msgstr "" #: src/gringotts.c:1977 msgid "File to load does not exists or it is invalid" msgstr "" #: src/grg_prefs.c:220 #, c-format msgid " Block size: %d bits" msgstr "" #: src/grg_prefs.c:223 #, c-format msgid " Key length: %d bits" msgstr "" #: src/grg_prefs.c:457 msgid "Encryption" msgstr "" #: src/grg_prefs.c:502 msgid "Hashing" msgstr "" #: src/grg_prefs.c:515 msgid "Compression" msgstr "" #: src/grg_prefs.c:530 msgid "None" msgstr "" #: src/grg_prefs.c:535 msgid "Fast" msgstr "" #: src/grg_prefs.c:539 msgid "Good" msgstr "" #: src/grg_prefs.c:543 msgid "Best" msgstr "" #: src/grg_prefs.c:547 msgid "Algorithms" msgstr "" #: src/grg_prefs.c:554 msgid "General options" msgstr "" #: src/grg_prefs.c:556 msgid "Editor font" msgstr "" #: src/grg_prefs.c:561 msgid "Click to change the editor font" msgstr "" #: src/grg_prefs.c:571 msgid "Decorations" msgstr "" #: src/grg_prefs.c:579 msgid "Splash screen" msgstr "" #: src/grg_prefs.c:587 msgid "Tray-Icon (Needs Gringotts restart to take affect)" msgstr "" #: src/grg_prefs.c:592 msgid "File to open at startup" msgstr "" #: src/grg_prefs.c:611 msgid "File saving" msgstr "" #: src/grg_prefs.c:618 msgid "Make backups of files" msgstr "" #: src/grg_prefs.c:624 msgid "Ask when overwriting files" msgstr "" #: src/grg_prefs.c:634 msgid "Password expiration" msgstr "" #: src/grg_prefs.c:641 msgid "Password expires in" msgstr "" #: src/grg_prefs.c:645 msgid "days" msgstr "" #. this means "passes in wiping a file", not "wipe the passes" :) #: src/grg_prefs.c:657 msgid "Wipe passes" msgstr "" #: src/grg_prefs.c:663 msgid "" "Number of overwritings with random\n" "data, when wiping a file:" msgstr "" #: src/grg_prefs.c:676 msgid "Clipboard" msgstr "" #: src/grg_prefs.c:684 msgid "Clear clipboard on closing file" msgstr "" #: src/grg_prefs.c:691 msgid "Clear clipboard on exit" msgstr "" #: src/grg_pwd.c:128 msgid "You must specify a regular file" msgstr "" #: src/grg_pwd.c:137 msgid "reading file" msgstr "" #: src/grg_pwd.c:168 msgid "Please insert a disk in the first floppy drive" msgstr "" #: src/grg_pwd.c:180 msgid "The disk is not write protected. For security reasons, I'll not use it." msgstr "" #: src/grg_pwd.c:190 msgid "reading floppy" msgstr "" #: src/grg_pwd.c:222 msgid "Enter new password" msgstr "" #: src/grg_pwd.c:230 src/grg_pwd.c:751 msgid "Choose file" msgstr "" #: src/grg_pwd.c:238 src/grg_pwd.c:609 msgid "Insert a disk and press Ok" msgstr "" #: src/grg_pwd.c:316 msgid "New password" msgstr "" #: src/grg_pwd.c:330 src/grg_pwd.c:573 src/grg_pwd.c:717 msgid "Choose password type:" msgstr "" #: src/grg_pwd.c:333 src/grg_pwd.c:575 src/grg_pwd.c:717 msgid "String" msgstr "" #: src/grg_pwd.c:337 src/grg_pwd.c:579 src/grg_pwd.c:717 msgid "File" msgstr "" #: src/grg_pwd.c:342 src/grg_pwd.c:584 src/grg_pwd.c:718 msgid "Disk" msgstr "" #: src/grg_pwd.c:347 msgid "Enter new password:" msgstr "" #: src/grg_pwd.c:355 msgid "Enter it again for confirmation:" msgstr "" #: src/grg_pwd.c:392 msgid "password quality" msgstr "" #: src/grg_pwd.c:436 msgid "The password is too short, it must be at least 4 chars" msgstr "" #: src/grg_pwd.c:448 msgid "The two passwords are different" msgstr "" #: src/grg_pwd.c:560 src/grg_pwd.c:733 msgid "Enter password" msgstr "" #: src/grg_pwd.c:718 msgid "Quit" msgstr "" #: src/grg_pwd.c:721 msgid "Choice" msgstr "" #: src/grg_pwd.c:771 msgid "Bye, then!" msgstr "" #: src/grg_safe.c:124 #, c-format msgid "Cannot get MEMLOCK resource limit: %s" msgstr "" #: src/grg_safe.c:129 #, c-format msgid "" "Increase the memory locking limit to at least %d bytes. Current limit: %d " "bytes.\n" "See /usr/share/doc/gringotts/README for \n" "directions or alternatively make gringotts\n" "non-SUID-root\n" msgstr "" #: src/grg_safe.c:144 msgid "The process is setuid root, but I can't lock memory paging" msgstr "" #: src/grg_safe.c:166 msgid "" "Cannot drop root user privileges. Someone is hacking this process. I cannot " "go on" msgstr "" #: src/grg_safe.c:179 msgid "" "Cannot drop root group privileges. Someone is hacking this process. I cannot " "go on" msgstr "" #: src/grg_safe.c:224 src/grg_safe.c:230 msgid "For security reasons, you cannot run Gringotts as root user." msgstr "" #: src/grg_safe.c:226 msgid "Try to compile with --disable-root-filter in ./configure" msgstr "" #: src/grg_safe.c:231 msgid "Try using -s" msgstr "" #: src/grg_safe.c:251 msgid "stdin, stdout and/or stderr are invalid. Cannot continue." msgstr "" #: src/grg_safe.c:270 msgid "Invalid LANG environment variable:" msgstr "" #: src/grg_safe.c:277 msgid "Invalid XAUTHORITY environment variable:" msgstr "" #: src/grg_safe.c:286 msgid "Invalid DISPLAY environment variable:" msgstr "" #: src/grg_safe.c:393 msgid "optimal" msgstr "" #: src/grg_safe.c:395 msgid "good" msgstr "" #: src/grg_safe.c:398 msgid "low" msgstr "" #: src/grg_safe.c:418 msgid "Security monitor" msgstr "" #: src/grg_safe.c:433 src/grg_safe.c:437 src/grg_safe.c:440 msgid "Running without root privileges" msgstr "" #: src/grg_safe.c:446 src/grg_safe.c:449 msgid "Memory protection from core dumps" msgstr "" #: src/grg_safe.c:457 src/grg_safe.c:460 msgid "Memory protection from swap writings" msgstr "" #: src/grg_safe.c:465 src/grg_safe.c:468 msgid "Memory protection from ptrace spying" msgstr "" #: src/grg_safe.c:472 src/grg_safe.c:475 msgid "Environmental variables validation" msgstr "" #: src/grg_safe.c:478 msgid "stdout/stdin/stderr validation" msgstr "" #: src/grg_safe.c:481 src/grg_safe.c:484 msgid "Enforced use of /dev/random" msgstr "" #: src/grg_safe.c:488 src/grg_safe.c:491 msgid "Strict prohibition to root user" msgstr "" #: src/grg_popt.c:53 msgid "Warning" msgstr "" #: src/grg_popt.c:55 msgid "it isn't possible to hide password typing; be extremely careful!" msgstr "" #: src/grg_popt.c:199 msgid "shows the help" msgstr "" #: src/grg_popt.c:202 msgid "specify the input file to open" msgstr "" #: src/grg_popt.c:202 src/grg_popt.c:216 msgid "FILE" msgstr "" #: src/grg_popt.c:205 msgid "allow usage as root -- DANGEROUS" msgstr "" #: src/grg_popt.c:208 msgid "force use of /dev/random -- slower" msgstr "" #: src/grg_popt.c:210 msgid "dump the content of a file" msgstr "" #: src/grg_popt.c:212 msgid "index of the entry to dump" msgstr "" #: src/grg_popt.c:212 src/grg_popt.c:218 msgid "NUM" msgstr "" #: src/grg_popt.c:214 msgid "title of the entry to dump" msgstr "" #: src/grg_popt.c:214 msgid "TXT" msgstr "" #: src/grg_popt.c:216 msgid "securely wipe a file" msgstr "" #: src/grg_popt.c:218 msgid "passes in file wiping" msgstr "" #: src/grg_popt.c:273 msgid "" "It isn't possible to redirect data to stdin, as it is a potential security " "flaw." msgstr "" #: src/grg_popt.c:314 msgid "You must specify a file to dump (with the -f switch)" msgstr "" #: src/grg_attachs.c:68 msgid "Cannot open file to attach." msgstr "" #: src/grg_attachs.c:75 msgid "Only regular files can be attached." msgstr "" #: src/grg_attachs.c:87 msgid "Sorry, currently you can attach files only up to 2 Mb" msgstr "" #: src/grg_attachs.c:95 src/grg_attachs.c:339 msgid "Enter comment" msgstr "" #: src/grg_attachs.c:97 src/grg_attachs.c:340 msgid "" "Please enter a comment for this\n" "file (max. 32 chars)" msgstr "" #: src/grg_attachs.c:107 src/grg_attachs.c:347 msgid "none" msgstr "" #: src/grg_attachs.c:117 msgid "attaching" msgstr "" #: src/grg_attachs.c:125 msgid "Cannot encode tempfile." msgstr "" #: src/grg_attachs.c:194 src/grg_attachs.c:273 msgid "Cannot decode tempfile." msgstr "" #: src/grg_attachs.c:284 msgid "Cannot create file, or file already existent." msgstr "" #: src/grg_attachs.c:316 msgid "File name" msgstr "" #: src/grg_attachs.c:317 msgid "Dimension" msgstr "" #: src/grg_attachs.c:317 src/grg_attachs.c:386 msgid "bytes" msgstr "" #: src/grg_attachs.c:318 msgid "Comment" msgstr "" #: src/grg_attachs.c:394 msgid "Kb" msgstr "" #: src/grg_attachs.c:400 msgid "Mb" msgstr "" #: src/grg_attachs.c:432 msgid "" msgstr "" gringotts-1.2.10/po/it.gmo000066400000000000000000000416651201055014300153540ustar00rootroot00000000000000T7hi~  = (+3h_ - 8RPQ )8IX _k   (A F T `j+o    -<"Vy-  - (5 H V<b29* 4O0dP!$;$`     <#9 ]k s ~4. E Q6]   0 &6 ] m    9  ? 5=! s!!!!/!`!G="!""x"68#:o# #%##3$E$^$g$8~$ $"$!$ %% % (%5%D% `%4%%9%(&9&@&F&M&S&Y&_&e&l&r&y& &&&&&&&&& & && '' '"'''"B'e'j'@''''''' ((<"(_(f({((9(() )&) .)E:)**** ******@ + J+'T+|+#, ),7,>, F,0S,+,q,q"-)-$---.....-J.x..... .. ./,/A/I/ Z/ g/ r/%|/ // ///"/050S0i0&00<00001 1'1,81e1~1111F122*2@2V2o22?2242444"5$55AZ5Y5556(6%+6"Q60t6 6 66666 667"727@:7*{777 7 7778'8E98,8 8 8@8999!999%O9u9999929:: 2:<:U:Bm::9:2: /;"=;`;h;(l;`;\;S<l<<;=IM====5=> :>D>E\>>">#>> ?? &?2?B?"[?7~? ?@?*@C@ W@a@i@ p@z@@@@@@ @@@@@ @@@ @A&A>A OA]AbAjAqAAAA<A BB B'B0BJB SB`BErB BB B$B?C"UCxCCC C>o<%fZ@EKJbt[dM^Sc)6z}4{+AXW `0I1B ;r~_Y]7# &ys*=V NTli"8m5UxnGeRH$u:?DFOCh3j|-gp!'Q(a\/wqPL9k. 2 ,v Block size: %d bits Index Key length: %d bits Title version (c)AddAdd a new attachmentAdd an entryAfter this, there's no way to recover the file. Are you sure?AlgorithmsAre you sure you want to remove this entry?Are you sure you want to wipe this file? Its content will be securely erased, so no recover is possible.Ask when overwriting filesAttached filesAuthorsBestBye, then!Cannot create file, or file already existent.Cannot decode tempfile.Cannot drop root group privileges. Someone is hacking this process. I cannot go onCannot drop root user privileges. Someone is hacking this process. I cannot go onCannot encode tempfile.Cannot open file to attach.Case sensitiveChange Pass_wordChange commentChoiceChoose fileChoose password type:Clear clipboard on closing fileClear clipboard on exitClick to change the editor fontClipboardClose documentCommentCompressionConfirmConfirm...Copy selectionCouldn't backup old fileCu_tCut selectionDecorationsDimensionDiskDo you want to overwrite the existing file?E_dit...Editor fontEncryptionEnforced use of /dev/randomEnter commentEnter it again for confirmation:Enter new passwordEnter new password:Enter passwordEnter the string to find:Environmental variables validationErrorError in compression! Probably a zlib problemFILEFastFileFile is too bigFile nameFile savingFile to load does not exists or it is invalidFile to open at startupFile to wipeFile wiping failedFind a stringFind a_gainFor security reasons, you cannot run Gringotts as root user.For_wardGeneral optionsGo to first entryGo to last entryGo to next entryGo to previous entryGoodGringotts internal error. Cannot finish operation.Gringotts is a small but (hopely ;) useful utility that stores sensitive data (passwords, credit card numbers, friends' addresses) in an organized and most of all very secure form. It uses libmcrypt and libmhash to provide a strong level of encryption, just trying to be as trustworthy as possible. This program is released under the GNU GPL, v.2 or later See COPYING or go to http://www.gnu.org/copyleft/gpl.htmlHashingI can't overwrite a directory or a symlinkIndex of entriesInfo on this attachmentInsert a disk and press OkInvalid entry numberInvalid preferences file. Resetting to defaults.It isn't possible to redirect data to stdin, as it is a potential security flaw.KbList of attached filesMake backups of filesMbMemory protection from core dumpsMemory protection from ptrace spyingMemory protection from swap writingsMove downMove upMy first pageNUMNewNew documentNew fileNew passwordNew title for this entry:New title...NoneNumber of overwritings with random data, when wiping a file:Only regular files can be attached.Open documentOpen...Overwrite?P_referencesPassword expirationPassword expires inPassword successfully changedPaste selectionPlease enter a comment for this file (max. 32 chars)Please insert a disk in the first floppy drivePlease waitPreferencesProblem with libmcrypt, probably a faulty installationQuitQuit GringottsRemoveRemove this attachmentRemove this entryRunning without root privilegesSave _AsSave as....Save documentSave this attachmentSave?Saved data contain invalid UTF-8 charsSearch for textSearch only in this entrySecuritySecurity level: %sSecurity monitorSee COPYING or go to http://www.gnu.org/copyleft/gpl.htmlSelect file...Some changes have not been saved. Do you wish to save them now?Sorry, currently you can attach files only up to 2 MbSplash screenStrict prohibition to root userStringTXTText not found. Continue search from beginning?The current password is expired. You should change it, or modify this setting in the preferencesThe disk is not write protected. For security reasons, I'll not use it.The file appears to be corrupted!The file does not existThe file has been created with a newer version of Gringotts. If you save it using this one, some formatting can be lost.The password is too short, it must be at least 4 charsThe process is setuid root, but I can't lock memory pagingThe selected file doesn't existsThe text searched could not be found!The two passwords are differentThis file doesn't seem to be a valid Gringotts one!Title for the new entry:Title...Too many data to writeTry to compile with --disable-root-filter in ./configureTry using -sUh-oh! I can't read from the file!Uh-oh! I can't write to the file!View indexWarningWipe passesWrap around?Wrong passwordWrong password! Re-enter itYou must enter a valid password!You must specify a file to dump (with the -f switch)You must specify a regular fileYou'll lose all the changes from last save! Are you sure?You've selected a directory or a symlink_About_Back_Close_Copy_Edit_File_Find_First_Help_Index_Last_Navigation_New_Open_Paste_Quit_Revert_Save_Security monitor_Tools_Wipe fileallow usage as root -- DANGEROUSassembling dataattachingbytescleaning updaysdump the content of a fileforce use of /dev/random -- slowergoodindex of the entry to dumpit isn't possible to hide password typing; be extremely careful!loadinglownoneoptimalpasses in file wipingpassword qualityreading filereading floppyreleased under GNU General Public License (GPL) v.2 or latersavingsecurely wipe a fileshows the helpspecify the input file to openstdin, stdout and/or stderr are invalid. Cannot continue.stdout/stdin/stderr validationthe nametitle of the entry to dumpversionwiping fileProject-Id-Version: gringotts 0.2 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-09-15 19:57+0300 PO-Revision-Date: 2005-05-14 10:27+0200 Last-Translator: Germano Rizzo Language-Team: ITALIAN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blocchi: %d bit Indice Chiave: %d bit Titolo versione ©AggiungiAllega un nuovo fileAggiungi una paginaDopo di questo, non c'è modo di recuperare il file. Sei sicuro?AlgoritmiSicuro di voler cancellare questa voce?Sei sicuro di voler eliminare questo file? Il suo contenuto sarà cancellato in maniera sicura, perciò non sarà possibile recuperarlo.Chiedi conferma alla sovrascritturaFile allegatiAutoriMassimaAllora ciao!Non posso creare il file, o file già esistente.Non riesco a decriptare il file temporaneo.Non posso rilasciare i privilegi di gruppo root. Qualcuno sta controllando questo processo. Non posso continuare.Non posso rilasciare i privilegi di utente root. Qualcuno sta controllando questo processo. Non posso continuare.Non riesco a criptare il file temporaneo.Non posso aprire il file da allegareMaiuscole/minuscoleCambia Pass_wordCambia commentoSceltaScegli il fileScegli il tipo di Password:Cancella gli appunti alla chiusura di un fileCancella gli appunti all'uscitaClicca per cambiare il fontAppuntiChiudi il documento correnteCommentoCompressioneConfermaConferma...Copia selezioneNon riesco a fare il backup del vecchio fileTa_gliaTaglia selezioneAbbellimentiDimensioneDischettoVuoi sovrascrivere il file esistente?_ModificaFont dell'editorCifraturaUso forzato di /dev/randomInserisci commentoInseriscila di nuovo per conferma:Inserisci una nuova passwordInserisci una nuova password:Inserisci la passwordImmetti il testo da cercareValidazione delle variabili d'ambienteErroreErrore nella compressione! Probabilmente un problema di zlibFILEBassaFileIl file è troppo grandeNome del fileSalvataggio fileIl file da aprire non esiste o non è validoFile da aprire all'avvioFile da distruggereDistruzione non riuscitaTrova un testoTrova di _nuovoPer ragioni di sicurezza, non puoi avviare Gringotts come utente root._AvantiOpzioni generaliVai alla prima paginaVai all'ultima paginaVai alla prossima paginaVai alla voce precedenteAltaErrore interno di Gringotts. Non posso completare l'operazione.Gringotts è una piccola ma (spero ;) comoda utility che conserva i tuoi dati segreti (password, numeri di carta di credito, indirizzi di ragazze) in maniera organizzata e soprattutto molto sicura. Utilizza libmcrypt e libmhash per fornire un alto livello di crittazione, e tende semplicemente ad essere quanto più affidabile possibile. Questo programma è rilasciato sotto la GNU GPL, v.2 o successive; Vedi il file COPYING o visita http://www.gnu.org/copyleft/gpl.htmlHashNon posso sovrascrivere una directory o un symlinkIndice delle pagineInformazioni su questo allegatoInserire un dischetto e premere OkIl numero della pagina non è validoFile delle preferenze non valido. Reimposto i valori predefiniti.Non si possono redirezionare dati allo stdin, perché è un potenziale buco di sicurezza.KbLista dei file allegatiFai il backup dei fileMbProtezione della memoria da core dumpProtezione della memoria da ptraceProtezione della memoria da scritture nello swapSposta giùSposta suLa mia prima paginaNUMNuovoNuovo documentoNuovo fileNuova passwordNuovo titolo per questa paginaNuovo titolo...NessunaNumero di sovrascritture con dati casuali, distruggendo un file:Possono essere allegati solo file normali.Apri un documentoApri...Sovrascrivi?_PreferenzeScadenza della passwordLa password scade dopoPassword cambiata con successoIncolla selezionePer favore, inserisci un commento per questo file (max. 32 caratteri)Inserire un dischetto nel primo floppy driveAttenderePreferenzeProblema con libmcrypt, probabilmente un'installazione difettosaEsciEsci da GringottsRimuoviRimuovi questo allegatoRimuovi questa paginaIn funzione senza i privilegi di rootSa_lva con nome...Salva con nome...Salva il documento correnteSalva questo allegatoSalvo?I dati salvati contengono caratteri UTF-8 invalidiCerca del testoCerca solo in questa paginaSicurezzaLivello di sicurezza: %sMonitor della sicurezzaVedi il file COPYING o visita http://www.gnu.org/copyleft/gpl.htmlScegli un file...Alcune modifiche non son state salvate. Vuoi salvare ora?Scusa, per ora puoi allegare file solo fino a 2 MbSplash screenProibizione totale all'utente rootStringaTXTTesto non trovato. Continuo dall'inizio?La password attuale è scaduta. Dovresti cambiarla, o modificare l'impostazione nelle preferenzeIl disco non è protetto dalla scrittura. Per ragioni di sicurezza, non è possibile usarlo.Il file sembra rovinato!Il file non esisteIl file è stato creato con una versione più recente di Gringotts.Se lo salvi utilizzando quella corrente, potresti perdere della formattazione.La password è troppo corta, deve essere almeno 4 caratteriIl processo è setuid root, ma non posso bloccare il paging della memoriaIl file selezionato non esisteTesto non trovato!Le due password sono differentiQuesto non sembra essere un file di Gringotts valido!Titolo della nuova pagina:Titolo...Troppi dati da scrivereProva a compilare con lo switch di ./configure --disable-root-filter.Prova a usare -sOh-oh! Non posso leggere dal file!Oh-oh! Non posso scrivere sul file!Mostra l'indiceAttenzioneDistruzione fileRicomincio?Password errataPassword errata! RiprovaDevi inserire una password valida!Devi specificare un file da stampare (con lo switch -f)Devi specificare un file normalePerderai tutte le modifiche dall'ultimo cambiamento! Sei sicuro?Hai selezionato una directory o un symlink_Informazioni su...I_ndietro_Chiudi_Copia_Modifica_FileTr_ova_InizioAi_utoIn_diceFin_eNa_vigazione_Nuovo_Apri..._Incolla_Esci_Ripristina_SalvaMonitor della _sicurezzaS_trumenti_Distruggi filepermette l'uso come root -- PERICOLOSOcostruzione datisto allegandobytepuliziagiornistampa il contenuto di un fileuso forzato di /dev/randombuonanumero della pagina da stamparenon è possibile nascondere la password; stai molto attento!caricamentobassanienteottimalepassi nella cancellazionequalitàlettura filelettura dischettorilasciato sotto la GNU General Public License (GPL) v.2 o successivesalvataggiocancella un file in sicurezzamostra l'helpspecifica il file di input da aprirestdin, stdout e/o stderr non sono validi. Non posso continuare.Validazione di stdout/stdin/stderril nometitolo della pagina da stampareversionedistruzionegringotts-1.2.10/po/it.po000066400000000000000000000640421201055014300152020ustar00rootroot00000000000000# Gringotts italian translation. # Copyright (C) 2002 Free Software Foundation, Inc. # Germano Rizzo , 2002. # msgid "" msgstr "" "Project-Id-Version: gringotts 0.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-15 19:57+0300\n" "PO-Revision-Date: 2005-05-14 10:27+0200\n" "Last-Translator: Germano Rizzo \n" "Language-Team: ITALIAN \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/grg_entries.c:393 msgid "Invalid entry number" msgstr "Il numero della pagina non è valido" #: src/grg_entries.c:495 src/gringotts.c:509 src/gringotts.c:751 msgid "assembling data" msgstr "costruzione dati" #: src/grg_entries.c:504 src/grg_attachs.c:268 msgid "saving" msgstr "salvataggio" #: src/grg_entries.c:509 src/gringotts.c:512 src/gringotts.c:754 msgid "cleaning up" msgstr "pulizia" #: src/grg_entries.c:632 msgid "" "The file has been created with a newer version of Gringotts. If you save it " "using this one, some formatting can be lost." msgstr "" "Il file è stato creato con una versione più recente di Gringotts.Se lo salvi " "utilizzando quella corrente, potresti perdere della formattazione." #: src/grg_entries_vis.c:150 src/grg_entries_vis.c:151 msgid "Tabs Width" msgstr "" #: src/grg_entries_vis.c:504 msgid "The text searched could not be found!" msgstr "Testo non trovato!" #: src/grg_entries_vis.c:511 msgid "Wrap around?" msgstr "Ricomincio?" #: src/grg_entries_vis.c:512 msgid "Text not found. Continue search from beginning?" msgstr "Testo non trovato. Continuo dall'inizio?" #: src/grg_list.c:95 msgid " Index " msgstr " Indice" #: src/grg_list.c:103 msgid " Title " msgstr " Titolo" #: src/grg_list.c:213 msgid "Index of entries" msgstr "Indice delle pagine" #: src/grg_list.c:247 msgid "Move up" msgstr "Sposta su" #: src/grg_list.c:251 msgid "Move down" msgstr "Sposta giù" #: src/grg_menus.c:110 msgid "_New" msgstr "_Nuovo" #: src/grg_menus.c:113 msgid "_Open" msgstr "_Apri..." #: src/grg_menus.c:115 msgid "_Save" msgstr "_Salva" #: src/grg_menus.c:117 msgid "Save _As" msgstr "Sa_lva con nome..." #: src/grg_menus.c:119 msgid "_Revert" msgstr "_Ripristina" #: src/grg_menus.c:121 msgid "_Close" msgstr "_Chiudi" #: src/grg_menus.c:132 msgid "_Quit" msgstr "_Esci" #: src/grg_menus.c:136 msgid "_File" msgstr "_File" #: src/grg_menus.c:149 msgid "Add" msgstr "Aggiungi" #: src/grg_menus.c:151 msgid "Remove" msgstr "Rimuovi" #: src/grg_menus.c:154 msgid "Cu_t" msgstr "Ta_glia" #: src/grg_menus.c:156 msgid "_Copy" msgstr "_Copia" #: src/grg_menus.c:158 msgid "_Paste" msgstr "_Incolla" #: src/grg_menus.c:162 msgid "_Find" msgstr "Tr_ova" #: src/grg_menus.c:164 msgid "Find a_gain" msgstr "Trova di _nuovo" #: src/grg_menus.c:167 msgid "Change Pass_word" msgstr "Cambia Pass_word" #: src/grg_menus.c:171 msgid "P_references" msgstr "_Preferenze" #: src/grg_menus.c:174 msgid "_Edit" msgstr "_Modifica" #: src/grg_menus.c:187 msgid "_First" msgstr "_Inizio" #: src/grg_menus.c:190 msgid "_Back" msgstr "I_ndietro" #: src/grg_menus.c:193 msgid "For_ward" msgstr "_Avanti" #: src/grg_menus.c:197 msgid "_Last" msgstr "Fin_e" #: src/grg_menus.c:201 msgid "_Index" msgstr "In_dice" #: src/grg_menus.c:205 msgid "_Navigation" msgstr "Na_vigazione" #: src/grg_menus.c:218 msgid "_Wipe file" msgstr "_Distruggi file" #: src/grg_menus.c:222 msgid "_Tools" msgstr "S_trumenti" #: src/grg_menus.c:235 msgid "_Security monitor" msgstr "Monitor della _sicurezza" #: src/grg_menus.c:244 msgid "_About" msgstr "_Informazioni su..." #: src/grg_menus.c:247 msgid "_Help" msgstr "Ai_uto" #: src/grg_widgets.c:65 msgid "Error" msgstr "Errore" #: src/grg_widgets.c:240 msgid "Find a string" msgstr "Trova un testo" #: src/grg_widgets.c:253 msgid "Enter the string to find:" msgstr "Immetti il testo da cercare" #: src/grg_widgets.c:263 msgid "Search only in this entry" msgstr "Cerca solo in questa pagina" #: src/grg_widgets.c:267 msgid "Case sensitive" msgstr "Maiuscole/minuscole" #: src/grg_widgets.c:314 src/grg_widgets.c:316 src/grg_widgets.c:353 msgid "Please wait" msgstr "Attendere" #: src/grg_widgets.c:392 src/gringotts.c:1461 src/grg_pwd.c:122 #: src/grg_popt.c:287 msgid "The file does not exist" msgstr "Il file non esiste" #: src/gringotts.c:139 msgid " version " msgstr " versione " #: src/gringotts.c:140 src/gringotts.c:153 src/gringotts.c:155 #: src/gringotts.c:157 src/gringotts.c:1933 msgid "(c)" msgstr "©" #: src/gringotts.c:142 msgid "Authors" msgstr "Autori" #: src/gringotts.c:146 msgid "" "Gringotts is a small but (hopely ;) useful utility that stores sensitive " "data (passwords, credit card numbers, friends' addresses) in an organized " "and most of all very secure form.\n" "It uses libmcrypt and libmhash to provide a strong level of encryption, just " "trying to be as trustworthy as possible.\n" "\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" "Gringotts è una piccola ma (spero ;) comoda utility che conserva i tuoi dati " "segreti (password, numeri di carta di credito, indirizzi di ragazze) in " "maniera organizzata e soprattutto molto sicura.\n" "Utilizza libmcrypt e libmhash per fornire un alto livello di crittazione, e " "tende semplicemente ad essere quanto più affidabile possibile.\n" "\n" "Questo programma è rilasciato sotto la GNU GPL, v.2 o successive;\n" "Vedi il file COPYING o visita http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:156 msgid "the name" msgstr "il nome" #: src/gringotts.c:268 src/gringotts.c:629 src/gringotts.c:958 #: src/gringotts.c:1181 msgid "New file" msgstr "Nuovo file" #: src/gringotts.c:415 msgid "Save?" msgstr "Salvo?" #: src/gringotts.c:417 msgid "" "Some changes have not been saved.\n" "Do you wish to save them now?" msgstr "" "Alcune modifiche non son state salvate.\n" "Vuoi salvare ora?" #: src/gringotts.c:471 src/gringotts.c:1386 msgid "Confirm" msgstr "Conferma" #: src/gringotts.c:472 msgid "" "You'll lose all the changes from\n" "last save! Are you sure?" msgstr "" "Perderai tutte le modifiche dall'ultimo\n" "cambiamento! Sei sicuro?" #: src/gringotts.c:476 src/gringotts.c:739 msgid "loading" msgstr "caricamento" #: src/gringotts.c:485 src/gringotts.c:615 src/grg_popt.c:65 msgid "You've selected a directory or a symlink" msgstr "Hai selezionato una directory o un symlink" #: src/gringotts.c:492 src/gringotts.c:622 src/grg_popt.c:61 msgid "The selected file doesn't exists" msgstr "Il file selezionato non esiste" #: src/gringotts.c:530 src/gringotts.c:574 src/gringotts.c:683 #: src/gringotts.c:718 src/gringotts.c:772 src/gringotts.c:802 #: src/gringotts.c:1092 src/gringotts.c:1135 src/grg_popt.c:83 #: src/grg_popt.c:107 src/grg_popt.c:142 src/grg_popt.c:158 msgid "Gringotts internal error. Cannot finish operation." msgstr "Errore interno di Gringotts. Non posso completare l'operazione." #: src/gringotts.c:542 src/gringotts.c:700 src/grg_popt.c:98 msgid "The file appears to be corrupted!" msgstr "Il file sembra rovinato!" #: src/gringotts.c:549 src/gringotts.c:708 src/grg_popt.c:102 msgid "File is too big" msgstr "Il file è troppo grande" #: src/gringotts.c:556 src/gringotts.c:691 src/grg_popt.c:93 msgid "Uh-oh! I can't read from the file!" msgstr "Oh-oh! Non posso leggere dal file!" #: src/gringotts.c:564 src/gringotts.c:785 src/gringotts.c:1117 #: src/grg_popt.c:152 msgid "Problem with libmcrypt, probably a faulty installation" msgstr "Problema con libmcrypt, probabilmente un'installazione difettosa" #: src/gringotts.c:587 src/gringotts.c:838 msgid "" "The current password is expired.\n" "You should change it, or modify this setting in the preferences" msgstr "" "La password attuale è scaduta.\n" "Dovresti cambiarla, o modificare l'impostazione nelle preferenze" #: src/gringotts.c:665 src/grg_popt.c:89 msgid "This file doesn't seem to be a valid Gringotts one!" msgstr "Questo non sembra essere un file di Gringotts valido!" #: src/gringotts.c:779 src/grg_popt.c:146 msgid "Wrong password! Re-enter it" msgstr "Password errata! Riprova" #: src/gringotts.c:792 src/grg_popt.c:166 msgid "Saved data contain invalid UTF-8 chars" msgstr "I dati salvati contengono caratteri UTF-8 invalidi" #: src/gringotts.c:861 src/grg_pwd.c:80 msgid "Open..." msgstr "Apri..." #: src/gringotts.c:950 src/grg_popt.c:117 msgid "You must enter a valid password!" msgstr "Devi inserire una password valida!" #: src/gringotts.c:968 msgid "My first page" msgstr "La mia prima pagina" #: src/gringotts.c:983 msgid "New title..." msgstr "Nuovo titolo..." #: src/gringotts.c:984 msgid "New title for this entry:" msgstr "Nuovo titolo per questa pagina" #: src/gringotts.c:1035 msgid "I can't overwrite a directory or a symlink" msgstr "Non posso sovrascrivere una directory o un symlink" #: src/gringotts.c:1043 msgid "Overwrite?" msgstr "Sovrascrivi?" #: src/gringotts.c:1045 msgid "Do you want to overwrite the existing file?" msgstr "Vuoi sovrascrivere il file esistente?" #: src/gringotts.c:1059 msgid "Couldn't backup old file" msgstr "Non riesco a fare il backup del vecchio file" #: src/gringotts.c:1100 msgid "Error in compression! Probably a zlib problem" msgstr "Errore nella compressione! Probabilmente un problema di zlib" #: src/gringotts.c:1108 msgid "Uh-oh! I can't write to the file!" msgstr "Oh-oh! Non posso scrivere sul file!" #: src/gringotts.c:1125 msgid "Too many data to write" msgstr "Troppi dati da scrivere" #: src/gringotts.c:1153 src/gringotts.c:1407 msgid "Save as...." msgstr "Salva con nome..." #: src/gringotts.c:1195 msgid "Title..." msgstr "Titolo..." #: src/gringotts.c:1196 msgid "Title for the new entry:" msgstr "Titolo della nuova pagina:" #: src/gringotts.c:1197 msgid "New" msgstr "Nuovo" #: src/gringotts.c:1221 src/gringotts.c:1466 msgid "Confirm..." msgstr "Conferma..." #: src/gringotts.c:1222 msgid "Are you sure you want to remove this entry?" msgstr "Sicuro di voler cancellare questa voce?" #: src/gringotts.c:1249 msgid "Wrong password" msgstr "Password errata" #: src/gringotts.c:1269 msgid "Password successfully changed" msgstr "Password cambiata con successo" #: src/gringotts.c:1353 src/grg_prefs.c:395 msgid "Select file..." msgstr "Scegli un file..." #: src/gringotts.c:1388 msgid "" "After this, there's no way to\n" "recover the file. Are you sure?" msgstr "" "Dopo di questo, non c'è modo di\n" "recuperare il file. Sei sicuro?" #: src/gringotts.c:1436 msgid "File to wipe" msgstr "File da distruggere" #: src/gringotts.c:1467 src/grg_popt.c:290 msgid "" "Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible." msgstr "" "Sei sicuro di voler eliminare questo file?\n" "Il suo contenuto sarà cancellato in maniera\n" "sicura, perciò non sarà possibile recuperarlo." #: src/gringotts.c:1475 msgid "wiping file" msgstr "distruzione" #: src/gringotts.c:1484 src/grg_popt.c:305 msgid "File wiping failed" msgstr "Distruzione non riuscita" #: src/gringotts.c:1574 msgid "E_dit..." msgstr "_Modifica" #: src/gringotts.c:1594 msgid "Go to last entry" msgstr "Vai all'ultima pagina" #: src/gringotts.c:1597 msgid "Go to next entry" msgstr "Vai alla prossima pagina" #: src/gringotts.c:1603 msgid "View index" msgstr "Mostra l'indice" #: src/gringotts.c:1609 msgid "Go to previous entry" msgstr "Vai alla voce precedente" #: src/gringotts.c:1612 msgid "Go to first entry" msgstr "Vai alla prima pagina" #: src/gringotts.c:1626 #, c-format msgid "Security level: %s" msgstr "Livello di sicurezza: %s" #: src/gringotts.c:1630 src/grg_prefs.c:632 msgid "Security" msgstr "Sicurezza" #: src/gringotts.c:1644 msgid "New document" msgstr "Nuovo documento" #: src/gringotts.c:1649 msgid "Open document" msgstr "Apri un documento" #: src/gringotts.c:1651 msgid "Save document" msgstr "Salva il documento corrente" #: src/gringotts.c:1653 msgid "Close document" msgstr "Chiudi il documento corrente" #: src/gringotts.c:1658 msgid "Cut selection" msgstr "Taglia selezione" #: src/gringotts.c:1660 msgid "Copy selection" msgstr "Copia selezione" #: src/gringotts.c:1663 msgid "Paste selection" msgstr "Incolla selezione" #: src/gringotts.c:1669 msgid "Search for text" msgstr "Cerca del testo" #: src/gringotts.c:1674 msgid "Add an entry" msgstr "Aggiungi una pagina" #: src/gringotts.c:1676 msgid "Remove this entry" msgstr "Rimuovi questa pagina" #: src/gringotts.c:1681 src/grg_prefs.c:446 msgid "Preferences" msgstr "Preferenze" #: src/gringotts.c:1686 msgid "Quit Gringotts" msgstr "Esci da Gringotts" #: src/gringotts.c:1703 msgid "Attached files" msgstr "File allegati" #: src/gringotts.c:1713 msgid "Add a new attachment" msgstr "Allega un nuovo file" #: src/gringotts.c:1715 msgid "Remove this attachment" msgstr "Rimuovi questo allegato" #: src/gringotts.c:1718 msgid "Save this attachment" msgstr "Salva questo allegato" #: src/gringotts.c:1721 msgid "Info on this attachment" msgstr "Informazioni su questo allegato" #: src/gringotts.c:1723 msgid "Change comment" msgstr "Cambia commento" #: src/gringotts.c:1747 msgid "List of attached files" msgstr "Lista dei file allegati" #: src/gringotts.c:1933 msgid "version" msgstr "versione" #: src/gringotts.c:1935 msgid "released under GNU General Public License (GPL) v.2 or later" msgstr "rilasciato sotto la GNU General Public License (GPL) v.2 o successive" #: src/gringotts.c:1937 msgid "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "Vedi il file COPYING o visita http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:1951 src/grg_prefs.c:151 msgid "Invalid preferences file. Resetting to defaults." msgstr "File delle preferenze non valido. Reimposto i valori predefiniti." #: src/gringotts.c:1977 msgid "File to load does not exists or it is invalid" msgstr "Il file da aprire non esiste o non è valido" #: src/grg_prefs.c:220 #, c-format msgid " Block size: %d bits" msgstr " Blocchi: %d bit" #: src/grg_prefs.c:223 #, c-format msgid " Key length: %d bits" msgstr " Chiave: %d bit " #: src/grg_prefs.c:457 msgid "Encryption" msgstr "Cifratura" #: src/grg_prefs.c:502 msgid "Hashing" msgstr "Hash" #: src/grg_prefs.c:515 msgid "Compression" msgstr "Compressione" #: src/grg_prefs.c:530 msgid "None" msgstr "Nessuna" #: src/grg_prefs.c:535 msgid "Fast" msgstr "Bassa" #: src/grg_prefs.c:539 msgid "Good" msgstr "Alta" #: src/grg_prefs.c:543 msgid "Best" msgstr "Massima" #: src/grg_prefs.c:547 msgid "Algorithms" msgstr "Algoritmi" #: src/grg_prefs.c:554 msgid "General options" msgstr "Opzioni generali" #: src/grg_prefs.c:556 msgid "Editor font" msgstr "Font dell'editor" #: src/grg_prefs.c:561 msgid "Click to change the editor font" msgstr "Clicca per cambiare il font" #: src/grg_prefs.c:571 msgid "Decorations" msgstr "Abbellimenti" #: src/grg_prefs.c:579 msgid "Splash screen" msgstr "Splash screen" #: src/grg_prefs.c:587 msgid "Tray-Icon (Needs Gringotts restart to take affect)" msgstr "" #: src/grg_prefs.c:592 msgid "File to open at startup" msgstr "File da aprire all'avvio" #: src/grg_prefs.c:611 msgid "File saving" msgstr "Salvataggio file" #: src/grg_prefs.c:618 msgid "Make backups of files" msgstr "Fai il backup dei file" #: src/grg_prefs.c:624 msgid "Ask when overwriting files" msgstr "Chiedi conferma alla sovrascrittura" #: src/grg_prefs.c:634 msgid "Password expiration" msgstr "Scadenza della password" #: src/grg_prefs.c:641 msgid "Password expires in" msgstr "La password scade dopo" #: src/grg_prefs.c:645 msgid "days" msgstr "giorni" #. this means "passes in wiping a file", not "wipe the passes" :) #: src/grg_prefs.c:657 msgid "Wipe passes" msgstr "Distruzione file" #: src/grg_prefs.c:663 msgid "" "Number of overwritings with random\n" "data, when wiping a file:" msgstr "" "Numero di sovrascritture con dati\n" "casuali, distruggendo un file:" #: src/grg_prefs.c:676 msgid "Clipboard" msgstr "Appunti" #: src/grg_prefs.c:684 msgid "Clear clipboard on closing file" msgstr "Cancella gli appunti alla chiusura di un file" #: src/grg_prefs.c:691 msgid "Clear clipboard on exit" msgstr "Cancella gli appunti all'uscita" #: src/grg_pwd.c:128 msgid "You must specify a regular file" msgstr "Devi specificare un file normale" #: src/grg_pwd.c:137 msgid "reading file" msgstr "lettura file" #: src/grg_pwd.c:168 msgid "Please insert a disk in the first floppy drive" msgstr "Inserire un dischetto nel primo floppy drive" #: src/grg_pwd.c:180 msgid "The disk is not write protected. For security reasons, I'll not use it." msgstr "" "Il disco non è protetto dalla scrittura. Per\n" "ragioni di sicurezza, non è possibile usarlo." #: src/grg_pwd.c:190 msgid "reading floppy" msgstr "lettura dischetto" #: src/grg_pwd.c:222 msgid "Enter new password" msgstr "Inserisci una nuova password" #: src/grg_pwd.c:230 src/grg_pwd.c:751 msgid "Choose file" msgstr "Scegli il file" #: src/grg_pwd.c:238 src/grg_pwd.c:609 msgid "Insert a disk and press Ok" msgstr "Inserire un dischetto e premere Ok" #: src/grg_pwd.c:316 msgid "New password" msgstr "Nuova password" #: src/grg_pwd.c:330 src/grg_pwd.c:573 src/grg_pwd.c:717 msgid "Choose password type:" msgstr "Scegli il tipo di Password:" #: src/grg_pwd.c:333 src/grg_pwd.c:575 src/grg_pwd.c:717 msgid "String" msgstr "Stringa" #: src/grg_pwd.c:337 src/grg_pwd.c:579 src/grg_pwd.c:717 msgid "File" msgstr "File" #: src/grg_pwd.c:342 src/grg_pwd.c:584 src/grg_pwd.c:718 msgid "Disk" msgstr "Dischetto" #: src/grg_pwd.c:347 msgid "Enter new password:" msgstr "Inserisci una nuova password:" #: src/grg_pwd.c:355 msgid "Enter it again for confirmation:" msgstr "Inseriscila di nuovo per conferma:" #: src/grg_pwd.c:392 msgid "password quality" msgstr "qualità" #: src/grg_pwd.c:436 msgid "The password is too short, it must be at least 4 chars" msgstr "La password è troppo corta, deve essere almeno 4 caratteri" #: src/grg_pwd.c:448 msgid "The two passwords are different" msgstr "Le due password sono differenti" #: src/grg_pwd.c:560 src/grg_pwd.c:733 msgid "Enter password" msgstr "Inserisci la password" #: src/grg_pwd.c:718 msgid "Quit" msgstr "Esci" #: src/grg_pwd.c:721 msgid "Choice" msgstr "Scelta" #: src/grg_pwd.c:771 msgid "Bye, then!" msgstr "Allora ciao!" #: src/grg_safe.c:124 #, c-format msgid "Cannot get MEMLOCK resource limit: %s" msgstr "" #: src/grg_safe.c:129 #, c-format msgid "" "Increase the memory locking limit to at least %d bytes. Current limit: %d " "bytes.\n" "See /usr/share/doc/gringotts/README for \n" "directions or alternatively make gringotts\n" "non-SUID-root\n" msgstr "" #: src/grg_safe.c:144 msgid "The process is setuid root, but I can't lock memory paging" msgstr "" "Il processo è setuid root, ma non posso bloccare il paging della memoria" #: src/grg_safe.c:166 msgid "" "Cannot drop root user privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Non posso rilasciare i privilegi di utente root. Qualcuno sta controllando " "questo processo. Non posso continuare." #: src/grg_safe.c:179 msgid "" "Cannot drop root group privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Non posso rilasciare i privilegi di gruppo root. Qualcuno sta controllando " "questo processo. Non posso continuare." #: src/grg_safe.c:224 src/grg_safe.c:230 msgid "For security reasons, you cannot run Gringotts as root user." msgstr "Per ragioni di sicurezza, non puoi avviare Gringotts come utente root." #: src/grg_safe.c:226 msgid "Try to compile with --disable-root-filter in ./configure" msgstr "Prova a compilare con lo switch di ./configure --disable-root-filter." #: src/grg_safe.c:231 msgid "Try using -s" msgstr "Prova a usare -s" #: src/grg_safe.c:251 msgid "stdin, stdout and/or stderr are invalid. Cannot continue." msgstr "stdin, stdout e/o stderr non sono validi. Non posso continuare." #: src/grg_safe.c:270 msgid "Invalid LANG environment variable:" msgstr "" #: src/grg_safe.c:277 msgid "Invalid XAUTHORITY environment variable:" msgstr "" #: src/grg_safe.c:286 msgid "Invalid DISPLAY environment variable:" msgstr "" #: src/grg_safe.c:393 msgid "optimal" msgstr "ottimale" #: src/grg_safe.c:395 msgid "good" msgstr "buona" #: src/grg_safe.c:398 msgid "low" msgstr "bassa" #: src/grg_safe.c:418 msgid "Security monitor" msgstr "Monitor della sicurezza" #: src/grg_safe.c:433 src/grg_safe.c:437 src/grg_safe.c:440 msgid "Running without root privileges" msgstr "In funzione senza i privilegi di root" #: src/grg_safe.c:446 src/grg_safe.c:449 msgid "Memory protection from core dumps" msgstr "Protezione della memoria da core dump" #: src/grg_safe.c:457 src/grg_safe.c:460 msgid "Memory protection from swap writings" msgstr "Protezione della memoria da scritture nello swap" #: src/grg_safe.c:465 src/grg_safe.c:468 msgid "Memory protection from ptrace spying" msgstr "Protezione della memoria da ptrace" #: src/grg_safe.c:472 src/grg_safe.c:475 msgid "Environmental variables validation" msgstr "Validazione delle variabili d'ambiente" #: src/grg_safe.c:478 msgid "stdout/stdin/stderr validation" msgstr "Validazione di stdout/stdin/stderr" #: src/grg_safe.c:481 src/grg_safe.c:484 msgid "Enforced use of /dev/random" msgstr "Uso forzato di /dev/random" #: src/grg_safe.c:488 src/grg_safe.c:491 msgid "Strict prohibition to root user" msgstr "Proibizione totale all'utente root" #: src/grg_popt.c:53 msgid "Warning" msgstr "Attenzione" #: src/grg_popt.c:55 msgid "it isn't possible to hide password typing; be extremely careful!" msgstr "non è possibile nascondere la password; stai molto attento!" #: src/grg_popt.c:199 msgid "shows the help" msgstr "mostra l'help" #: src/grg_popt.c:202 msgid "specify the input file to open" msgstr "specifica il file di input da aprire" #: src/grg_popt.c:202 src/grg_popt.c:216 msgid "FILE" msgstr "FILE" #: src/grg_popt.c:205 msgid "allow usage as root -- DANGEROUS" msgstr "permette l'uso come root -- PERICOLOSO" #: src/grg_popt.c:208 msgid "force use of /dev/random -- slower" msgstr "uso forzato di /dev/random" #: src/grg_popt.c:210 msgid "dump the content of a file" msgstr "stampa il contenuto di un file" #: src/grg_popt.c:212 msgid "index of the entry to dump" msgstr "numero della pagina da stampare" #: src/grg_popt.c:212 src/grg_popt.c:218 msgid "NUM" msgstr "NUM" #: src/grg_popt.c:214 msgid "title of the entry to dump" msgstr "titolo della pagina da stampare" #: src/grg_popt.c:214 msgid "TXT" msgstr "TXT" #: src/grg_popt.c:216 msgid "securely wipe a file" msgstr "cancella un file in sicurezza" #: src/grg_popt.c:218 msgid "passes in file wiping" msgstr "passi nella cancellazione" #: src/grg_popt.c:273 msgid "" "It isn't possible to redirect data to stdin, as it is a potential security " "flaw." msgstr "" "Non si possono redirezionare dati allo stdin, perché è un potenziale buco di " "sicurezza." #: src/grg_popt.c:314 msgid "You must specify a file to dump (with the -f switch)" msgstr "Devi specificare un file da stampare (con lo switch -f)" #: src/grg_attachs.c:68 msgid "Cannot open file to attach." msgstr "Non posso aprire il file da allegare" #: src/grg_attachs.c:75 msgid "Only regular files can be attached." msgstr "Possono essere allegati solo file normali." #: src/grg_attachs.c:87 msgid "Sorry, currently you can attach files only up to 2 Mb" msgstr "Scusa, per ora puoi allegare file solo fino a 2 Mb" #: src/grg_attachs.c:95 src/grg_attachs.c:339 msgid "Enter comment" msgstr "Inserisci commento" #: src/grg_attachs.c:97 src/grg_attachs.c:340 msgid "" "Please enter a comment for this\n" "file (max. 32 chars)" msgstr "" "Per favore, inserisci un commento\n" "per questo file (max. 32 caratteri)" #: src/grg_attachs.c:107 src/grg_attachs.c:347 msgid "none" msgstr "niente" #: src/grg_attachs.c:117 msgid "attaching" msgstr "sto allegando" #: src/grg_attachs.c:125 msgid "Cannot encode tempfile." msgstr "Non riesco a criptare il file temporaneo." #: src/grg_attachs.c:194 src/grg_attachs.c:273 msgid "Cannot decode tempfile." msgstr "Non riesco a decriptare il file temporaneo." #: src/grg_attachs.c:284 msgid "Cannot create file, or file already existent." msgstr "Non posso creare il file, o file già esistente." #: src/grg_attachs.c:316 msgid "File name" msgstr "Nome del file" #: src/grg_attachs.c:317 msgid "Dimension" msgstr "Dimensione" #: src/grg_attachs.c:317 src/grg_attachs.c:386 msgid "bytes" msgstr "byte" #: src/grg_attachs.c:318 msgid "Comment" msgstr "Commento" #: src/grg_attachs.c:394 msgid "Kb" msgstr "Kb" #: src/grg_attachs.c:400 msgid "Mb" msgstr "Mb" #: src/grg_attachs.c:432 msgid "" msgstr "" #~ msgid "Invalid environment variables. They could have been manipulated." #~ msgstr "" #~ "Variabili d'ambiente non valide. Potrebbero essere state manipolate." #~ msgid "" #~ "For security reasons, you cannot run Gringotts as root. Try using --" #~ "disable-root-filter in ./configure" #~ msgstr "" #~ "Per ragioni di sicurezza, non puoi avviare Gringotts da root. Prova ad " #~ "usare --enable-root-use in ./configure" #~ msgid "" #~ "malloc failed. Probably this indicates a memory problem, such as resource " #~ "exhaustion. Attempting to exit cleanly..." #~ msgstr "" #~ "malloc è fallito. Probabilmente questo indica un problema di memoria, ad " #~ "esempio esaurimento delle risorse. Provo ad uscire in maniera pulita..." #~ msgid "" #~ "This is a relatively new feature, so it's still under heavydevelopment... " #~ "and may have some problem. In this case,the stability and data safety " #~ "should be good, but it lacksquite much in speed. If you attach larger " #~ "files, you mayhave to wait a pretty huge deal of time. It depends " #~ "fromcase to case anyway; the best thing is to try it yourself. Infuture " #~ "releases of Gringotts we'll work also on this aspect." #~ msgstr "" #~ "Questa è una funzione relativamente nuova, perciò è ancora in pesante " #~ "lavorazione... e può avere qualche problema. In questo caso, la stabilità " #~ "e la sicurezza dei dati dovrebbero essere buone, ma difetta parecchio in " #~ "velocità. Se si allegano file grossi, l'attesa può essere molto lunga. " #~ "Comunque, questo varia da caso a caso; la cosa migliore è provare da sè. " #~ "Nelle future release di Gringotts lavoreremo anche su questo aspetto." #~ msgid "" #~ "Important informations\n" #~ "on this feature" #~ msgstr "" #~ "Informazioni importanti\n" #~ "su questa funzione" #~ msgid "The file cannot be opened" #~ msgstr "Non riesco ad aprire il file" gringotts-1.2.10/po/pl.gmo000066400000000000000000000336551201055014300153530ustar00rootroot00000000000000\ !6>S [ei| = +h - 0Ph      + ; GR n |-!&+0 @ J-V  <):K`2e7*?j{0$!' IS [im q~  <   2Fd4t.  6',;BYk  &-9>x?5  /`FG!x)6: %5[3{8 !".!Q s~  9(8 a  "   <" _ f { 9   < "7">"\"e"n"q""" "\" #&#?#### $$2 $S$r$ $$&$*$)$ %(% 9% C% M% X%f%2n%% %%&%% %%& ,&M&_& r&"&&;&&&&& ''G)'q''$''V' 3(A(Z(s(((?((*:* 6+C+a+{+D++++,-,I,[,n,,, , , ,,,,G,+- <- G-R-j-{--5-.-. .C.W.`.s.y. .$.... .3. 3/A/[/k//H//E/S=00 00@0g0X[1)11192Y2,3)F3p3833 33^4g4!y4!4 4 4#4 45""5E59b5.5+5 56 66C6\6b6k6 r6'|66 66H6 7%767FG777778GwDATq0 $KQ.L?-Ii>JfXa<='!{vtYW]O"E l_+C)zjM&p%@RsScu4\1*erB:V ym,( N|^d[P;g} 6~kU#5/`2nbH9hxF3oZ Block size: %d bits Index Key length: %d bits Title version (c)AddAdd a new attachmentAdd an entryAfter this, there's no way to recover the file. Are you sure?AlgorithmsAre you sure you want to remove this entry?Are you sure you want to wipe this file? Its content will be securely erased, so no recover is possible.Ask when overwriting filesAttached filesAuthorsBestBye, then!Cannot create file, or file already existent.Case sensitiveChange commentChoose fileChoose password type:Clear clipboard on closing fileClear clipboard on exitClick to change the editor fontClipboardClose documentCommentCompressionConfirmConfirm...Copy selectionCouldn't backup old fileCut selectionDecorationsDiskDo you want to overwrite the existing file?Editor fontEncryptionEnforced use of /dev/randomEnter commentEnter it again for confirmation:Enter new passwordEnter new password:Enter passwordEnter the string to find:ErrorError in compression! Probably a zlib problemFILEFastFileFile is too bigFile nameFile savingFile to load does not exists or it is invalidFile to open at startupFile to wipeFile wiping failedFind a stringFor security reasons, you cannot run Gringotts as root user.General optionsGo to first entryGo to last entryGo to next entryGo to previous entryGoodGringotts internal error. Cannot finish operation.Gringotts is a small but (hopely ;) useful utility that stores sensitive data (passwords, credit card numbers, friends' addresses) in an organized and most of all very secure form. It uses libmcrypt and libmhash to provide a strong level of encryption, just trying to be as trustworthy as possible. This program is released under the GNU GPL, v.2 or later See COPYING or go to http://www.gnu.org/copyleft/gpl.htmlHashingI can't overwrite a directory or a symlinkIndex of entriesInfo on this attachmentInsert a disk and press OkInvalid entry numberInvalid preferences file. Resetting to defaults.KbList of attached filesMake backups of filesMbMemory protection from core dumpsMove downMove upMy first pageNUMNewNew documentNew fileNew passwordNew title for this entry:New title...NoneNumber of overwritings with random data, when wiping a file:Open documentOpen...Overwrite?Password expirationPassword expires inPassword successfully changedPaste selectionPlease enter a comment for this file (max. 32 chars)Please insert a disk in the first floppy drivePlease waitPreferencesProblem with libmcrypt, probably a faulty installationQuitQuit GringottsRemoveRemove this attachmentRemove this entryRunning without root privilegesSave as....Save documentSave this attachmentSave?Saved data contain invalid UTF-8 charsSearch for textSearch only in this entrySecuritySecurity level: %sSecurity monitorSee COPYING or go to http://www.gnu.org/copyleft/gpl.htmlSelect file...Some changes have not been saved. Do you wish to save them now?Sorry, currently you can attach files only up to 2 MbSplash screenStringTXTText not found. Continue search from beginning?The current password is expired. You should change it, or modify this setting in the preferencesThe disk is not write protected. For security reasons, I'll not use it.The file appears to be corrupted!The file does not existThe file has been created with a newer version of Gringotts. If you save it using this one, some formatting can be lost.The password is too short, it must be at least 4 charsThe process is setuid root, but I can't lock memory pagingThe selected file doesn't existsThe text searched could not be found!The two passwords are differentThis file doesn't seem to be a valid Gringotts one!Title for the new entry:Title...Too many data to writeTry to compile with --disable-root-filter in ./configureTry using -sUh-oh! I can't read from the file!Uh-oh! I can't write to the file!View indexWarningWipe passesWrong passwordWrong password! Re-enter itYou must enter a valid password!You must specify a regular fileYou'll lose all the changes from last save! Are you sure?You've selected a directory or a symlinkallow usage as root -- DANGEROUSattachingbytescleaning updaysforce use of /dev/random -- slowergoodloadinglowoptimalpasses in file wipingpassword qualityreading filereading floppyreleased under GNU General Public License (GPL) v.2 or latersavingsecurely wipe a fileshows the helpstdin, stdout and/or stderr are invalid. Cannot continue.the nameversionwiping fileProject-Id-Version: gringotts 0.2 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-09-15 19:57+0300 PO-Revision-Date: 2004-01-22 23:49+0100 Last-Translator: Germano Rizzo Language-Team: ITALIAN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rozmiar bloku: %d bitów Spis Długość klucza: %d bitów Tytuł wersja ©DodajDodaj nowy załącznikDodaj wpisPo wykonaniu tej czynności nie będzie możliwe odtworzenie tego pliku. Czy jesteś pewien?AlgorytmyCzy na pewno chcesz usunąć ten wpis?Czy jesteś pewien, że chcesz wymazać ten plik? Jego zawartość będzie usunięta w sposób bezpieczny, nie będzie możliwe jego odzyskanie.Pytaj o nadpisywanie plikówZałączone plikiAutorzyNajlepszaDo zobaczenia!Nie można utworzyć pliku lub plik już istnieje.Rozróżnia wielkość znakówZmień komentarzWybierz plikWybierz typ hasła:Wyczyść schowek przy zamykaniu plikuWyczyść schowek przy wyjściu z programuKliknij aby zmienić czcionkę w edytorzeSchowekZamknij dokumentKomentarzKompresjaPotwierdźZatwierdź...SkopiujNie mogłem wykonać kopii zapasowej starego plikuWytnijDekoracjeDyskCzy chcesz nadpisać istniejący plik?Czcionka w edytorzeSzyfrowanieWymuszone użycie /dev/randomWpisz komentarzWpisz ponownie aby potwierdzić:Wpisz nowe hasłoWpisz nowe hasło:Wpisz hasłoWpisz ciąg znaków do wyszukania:BłądBłąd kompresji! Prawdopodobnie problem z biblioteką zlibFILESzybkaPlikPlik jest zbyt dużyNazwa plikuZapisywanie plikuPlik, który mam załadować nie istnieje albo ma nieprawidłowy formatPrzy starcie otwórz ten plikPlik do wymazaniaWymazywanie pliku nie powiodło sięZnajdź ciąg znakówZe względów bezpieczeństwa nie możesz uruchamiać Gringotts jako użytkownik root.Opcje ogólneIdź do pierwszego wpisuIdź do ostatniego wpisuIdź do następnego wpisuIdź do poprzedniego wpisuDobraBłąd wewnętrzny Gringotts. Ukończenie operacji niemożliwe.Gringotts to małe, lecz (mam nadzieję ;) przydatne narzędzie do przechowywania ważnych danych (haseł, numerów kart kredytowych, adresów przyjaciół) w zorganizowany, a przede wszystkim bardzo bezpieczny sposób. Używa bibliotek libmcrypt i libmhash aby zapewnić bezpieczny poziom szyfrowania, po prostu - aby być tak bezpiecznym, jak to możliwe. Ten program jest rozprowadzany na licencji GNU GPL, v.2 lub późniejsza. Zajrzyj do pliku COPYING lub na stronę http://www.gnu.org/copyleft/gpl.htmlFukcja skrótuNie mogę nadpisać katalogu ani dowiązania symbolicznegoSpis wpisówInformacja o tym załącznikuWłóż dysk i kliknij OkNiewłaściwy numer wpisuNieprawidłowy plik preferencji. Resetuję do ustawień domyślnych.KbLista załączonych plikówWykonuj kopie zapasowe plikówMbPamięć zabezpieczona przez zrzutami rdzeniaPrzenieś w dółPrzenieś w góręMoja pierwsza stronaNUMNowyNowy dokumentNowy plikNowe hasłoNowy tytuł tego załącznika:Nowy tytuł...BrakPrzy wymazywaniu pliku zostanie on nadpisany przypadkowymi danymi razy:Otwórz dokumentOtwórz...Nadpisać?Okres ważności hasłaHasło wygasa zaHasło zostało zmienioneWklejWpisz komentarz dotyczący tego pliku (do 32 znaków)Włóż dyskietkę do pierwszej stacji dyskówCzekajPreferencjeProblem z biblioteką libmcrypt, przypuszczalnie coś z instalacjąZakończZakończ GringottsUsuńUsuń ten załącznikUsuń wpisProgram działa bez uprawnień rootaZapisz jako...Zapisz dokumentZapisz ten załącznikZapisać?Zapisane dane zawierają nieprawidłowe znaki UTF-8Szukaj tekstuSzukaj tylko w tym wpisieBezpieczeństwoPoziom bezpieczeństwa: %sMonitor bezpieczeństwaZobacz plik COPYING albo zajrzyj na http://www.gnu.org/copyleft/gpl.htmlWybierz plik...Niektóre zmiany nie zostały zapisane. Czy chcesz zapisać je teraz?Przykro mi, ale obecnie możliwe jest dołączanie plików nie większych niż 2 MbEkran startowyCiąg znakówTXTNie znaleziono tekstu. Kontynuować przeszukiwanie od początku?Obecne hasło wygasło. Powinieneś je zmienić lub zmodyfikować okres jego ważności w preferencjachDysk nie jest zabezpieczony przed zapisem. Ze względów bezpieczeństwa nie użyję go.Wygląda na to, że plik jest uszkodzony!Plik nie istniejeTen plik został utworzony z pomocą wcześniejszej wersji Gringotts. Jeżeli zapiszesz go używając bieżącej wersji, niektóre formatowania mogą zostać utracone.Hasło jest zbyt krótkie, musi mieć co najmniej 4 znakiProces ma działa z uprawnieniami roota, ale nie mogę zablokować stronicowania pamięciWybrany plik nie istniejePoszukiwany tekst nie został znaleziony!Podane hasła różnią sięWygląda na to, że to nie jest poprawny plik Gringotts!Tytuł dla nowego wpisu:Tytuł...Zbyt dużo danych do zapisaniaSpróbuj skompilować program z użyciem opcji --disable-root-filter dla polecenia ./configureSpróbuj opcji -sO nie! Nie mogę czytać z pliku!O nie! Nie mogę pisać do pliku!Zobacz spisOstrzeżenieNadpisywanie przy wymazywaniu plikuZłe hasłoZłe hasło! Wpisz ponownieMusisz wpisać prawidłowe hasło!Musisz wskazać zwykły plikUtracisz wszelkie niezapisane zmiany! Czy jesteś pewien?Wybrałeś katalog lub dowiązanie symbolicznezezwól na pracę jako root - NIEBEZPIECZNEzałączambajtówczyszczędniwymuś używanie urządzenia /dev/random -- program działa wolniejdobryładujęsłabyoptymalnyliczba nadpisań przy wymazywaniu plikujakość hasłaczytam plikczytam dyskietkęwydany na licencji GNU General Public License (GPL) v.2 lub późniejszazapisujębezpiecznie wymawyświetla pomocstdin, stdout i/lub stderr są nieprawidłowe. Nie mogę kontynuować.nazwawersjawymazywanie plikugringotts-1.2.10/po/pl.po000066400000000000000000000627601201055014300152060ustar00rootroot00000000000000# Gringotts italian translation. # Copyright (C) 2002 Free Software Foundation, Inc. # Germano Rizzo , 2002. # msgid "" msgstr "" "Project-Id-Version: gringotts 0.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-15 19:57+0300\n" "PO-Revision-Date: 2004-01-22 23:49+0100\n" "Last-Translator: Germano Rizzo \n" "Language-Team: ITALIAN \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/grg_entries.c:393 msgid "Invalid entry number" msgstr "Niewłaściwy numer wpisu" #: src/grg_entries.c:495 src/gringotts.c:509 src/gringotts.c:751 msgid "assembling data" msgstr "" #: src/grg_entries.c:504 src/grg_attachs.c:268 msgid "saving" msgstr "zapisuję" #: src/grg_entries.c:509 src/gringotts.c:512 src/gringotts.c:754 msgid "cleaning up" msgstr "czyszczę" #: src/grg_entries.c:632 msgid "" "The file has been created with a newer version of Gringotts. If you save it " "using this one, some formatting can be lost." msgstr "" "Ten plik został utworzony z pomocą wcześniejszej wersji Gringotts. Jeżeli " "zapiszesz go używając bieżącej wersji, niektóre formatowania mogą zostać " "utracone." #: src/grg_entries_vis.c:150 src/grg_entries_vis.c:151 msgid "Tabs Width" msgstr "" #: src/grg_entries_vis.c:504 msgid "The text searched could not be found!" msgstr "Poszukiwany tekst nie został znaleziony!" #: src/grg_entries_vis.c:511 msgid "Wrap around?" msgstr "" #: src/grg_entries_vis.c:512 msgid "Text not found. Continue search from beginning?" msgstr "Nie znaleziono tekstu. Kontynuować przeszukiwanie od początku?" #: src/grg_list.c:95 msgid " Index " msgstr " Spis " #: src/grg_list.c:103 msgid " Title " msgstr " Tytuł " #: src/grg_list.c:213 msgid "Index of entries" msgstr "Spis wpisów" #: src/grg_list.c:247 msgid "Move up" msgstr "Przenieś w górę" #: src/grg_list.c:251 msgid "Move down" msgstr "Przenieś w dół" #: src/grg_menus.c:110 #, fuzzy msgid "_New" msgstr "Nowy" #: src/grg_menus.c:113 #, fuzzy msgid "_Open" msgstr "Otwórz" #: src/grg_menus.c:115 #, fuzzy msgid "_Save" msgstr "Zapisz" #: src/grg_menus.c:117 #, fuzzy msgid "Save _As" msgstr "Zapisz jako" #: src/grg_menus.c:119 #, fuzzy msgid "_Revert" msgstr "Przywróć" #: src/grg_menus.c:121 #, fuzzy msgid "_Close" msgstr "Zamknij" #: src/grg_menus.c:132 #, fuzzy msgid "_Quit" msgstr "Zakończ" #: src/grg_menus.c:136 #, fuzzy msgid "_File" msgstr "Plik" #: src/grg_menus.c:149 msgid "Add" msgstr "Dodaj" #: src/grg_menus.c:151 msgid "Remove" msgstr "Usuń" #: src/grg_menus.c:154 #, fuzzy msgid "Cu_t" msgstr "Wytnij" #: src/grg_menus.c:156 #, fuzzy msgid "_Copy" msgstr "Skopiuj" #: src/grg_menus.c:158 #, fuzzy msgid "_Paste" msgstr "Wklej" #: src/grg_menus.c:162 #, fuzzy msgid "_Find" msgstr "Znajdź" #: src/grg_menus.c:164 #, fuzzy msgid "Find a_gain" msgstr "Znajdź następny" #: src/grg_menus.c:167 #, fuzzy msgid "Change Pass_word" msgstr "Zmień hasło" #: src/grg_menus.c:171 #, fuzzy msgid "P_references" msgstr "Preferencje" #: src/grg_menus.c:174 #, fuzzy msgid "_Edit" msgstr "Edytuj" #: src/grg_menus.c:187 #, fuzzy msgid "_First" msgstr "Pierwszy" #: src/grg_menus.c:190 #, fuzzy msgid "_Back" msgstr "Poprzedni" #: src/grg_menus.c:193 #, fuzzy msgid "For_ward" msgstr "Następny" #: src/grg_menus.c:197 #, fuzzy msgid "_Last" msgstr "Ostatni" #: src/grg_menus.c:201 #, fuzzy msgid "_Index" msgstr "Spis" #: src/grg_menus.c:205 #, fuzzy msgid "_Navigation" msgstr "Nawigacja" #: src/grg_menus.c:218 #, fuzzy msgid "_Wipe file" msgstr "Wymaż plik" #: src/grg_menus.c:222 #, fuzzy msgid "_Tools" msgstr "Narzędzia" #: src/grg_menus.c:235 #, fuzzy msgid "_Security monitor" msgstr "Monitor bezpieczeństwa" #: src/grg_menus.c:244 #, fuzzy msgid "_About" msgstr "Informacje o" #: src/grg_menus.c:247 #, fuzzy msgid "_Help" msgstr "Pomoc" #: src/grg_widgets.c:65 msgid "Error" msgstr "Błąd" #: src/grg_widgets.c:240 msgid "Find a string" msgstr "Znajdź ciąg znaków" #: src/grg_widgets.c:253 msgid "Enter the string to find:" msgstr "Wpisz ciąg znaków do wyszukania:" #: src/grg_widgets.c:263 msgid "Search only in this entry" msgstr "Szukaj tylko w tym wpisie" #: src/grg_widgets.c:267 msgid "Case sensitive" msgstr "Rozróżnia wielkość znaków" #: src/grg_widgets.c:314 src/grg_widgets.c:316 src/grg_widgets.c:353 msgid "Please wait" msgstr "Czekaj" #: src/grg_widgets.c:392 src/gringotts.c:1461 src/grg_pwd.c:122 #: src/grg_popt.c:287 msgid "The file does not exist" msgstr "Plik nie istnieje" #: src/gringotts.c:139 msgid " version " msgstr " wersja " #: src/gringotts.c:140 src/gringotts.c:153 src/gringotts.c:155 #: src/gringotts.c:157 src/gringotts.c:1933 msgid "(c)" msgstr "©" #: src/gringotts.c:142 msgid "Authors" msgstr "Autorzy" #: src/gringotts.c:146 msgid "" "Gringotts is a small but (hopely ;) useful utility that stores sensitive " "data (passwords, credit card numbers, friends' addresses) in an organized " "and most of all very secure form.\n" "It uses libmcrypt and libmhash to provide a strong level of encryption, just " "trying to be as trustworthy as possible.\n" "\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" "Gringotts to małe, lecz (mam nadzieję ;) przydatne narzędzie do " "przechowywania ważnych danych (haseł, numerów kart kredytowych, adresów " "przyjaciół) w zorganizowany, a przede wszystkim bardzo bezpieczny sposób.\n" "Używa bibliotek libmcrypt i libmhash aby zapewnić bezpieczny poziom " "szyfrowania, po prostu - aby być tak bezpiecznym, jak to możliwe.\n" "\n" "Ten program jest rozprowadzany na licencji GNU GPL, v.2 lub późniejsza.\n" "Zajrzyj do pliku COPYING lub na stronę http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:156 msgid "the name" msgstr "nazwa" #: src/gringotts.c:268 src/gringotts.c:629 src/gringotts.c:958 #: src/gringotts.c:1181 msgid "New file" msgstr "Nowy plik" #: src/gringotts.c:415 msgid "Save?" msgstr "Zapisać?" #: src/gringotts.c:417 msgid "" "Some changes have not been saved.\n" "Do you wish to save them now?" msgstr "" "Niektóre zmiany nie zostały zapisane.\n" "Czy chcesz zapisać je teraz?" #: src/gringotts.c:471 src/gringotts.c:1386 msgid "Confirm" msgstr "Potwierdź" #: src/gringotts.c:472 msgid "" "You'll lose all the changes from\n" "last save! Are you sure?" msgstr "" "Utracisz wszelkie niezapisane zmiany!\n" "Czy jesteś pewien?" #: src/gringotts.c:476 src/gringotts.c:739 msgid "loading" msgstr "ładuję" #: src/gringotts.c:485 src/gringotts.c:615 src/grg_popt.c:65 msgid "You've selected a directory or a symlink" msgstr "Wybrałeś katalog lub dowiązanie symboliczne" #: src/gringotts.c:492 src/gringotts.c:622 src/grg_popt.c:61 msgid "The selected file doesn't exists" msgstr "Wybrany plik nie istnieje" #: src/gringotts.c:530 src/gringotts.c:574 src/gringotts.c:683 #: src/gringotts.c:718 src/gringotts.c:772 src/gringotts.c:802 #: src/gringotts.c:1092 src/gringotts.c:1135 src/grg_popt.c:83 #: src/grg_popt.c:107 src/grg_popt.c:142 src/grg_popt.c:158 msgid "Gringotts internal error. Cannot finish operation." msgstr "Błąd wewnętrzny Gringotts. Ukończenie operacji niemożliwe." #: src/gringotts.c:542 src/gringotts.c:700 src/grg_popt.c:98 msgid "The file appears to be corrupted!" msgstr "Wygląda na to, że plik jest uszkodzony!" #: src/gringotts.c:549 src/gringotts.c:708 src/grg_popt.c:102 msgid "File is too big" msgstr "Plik jest zbyt duży" #: src/gringotts.c:556 src/gringotts.c:691 src/grg_popt.c:93 msgid "Uh-oh! I can't read from the file!" msgstr "O nie! Nie mogę czytać z pliku!" #: src/gringotts.c:564 src/gringotts.c:785 src/gringotts.c:1117 #: src/grg_popt.c:152 msgid "Problem with libmcrypt, probably a faulty installation" msgstr "Problem z biblioteką libmcrypt, przypuszczalnie coś z instalacją" #: src/gringotts.c:587 src/gringotts.c:838 msgid "" "The current password is expired.\n" "You should change it, or modify this setting in the preferences" msgstr "" "Obecne hasło wygasło.\n" "Powinieneś je zmienić lub zmodyfikować okres jego ważności w preferencjach" #: src/gringotts.c:665 src/grg_popt.c:89 msgid "This file doesn't seem to be a valid Gringotts one!" msgstr "Wygląda na to, że to nie jest poprawny plik Gringotts!" #: src/gringotts.c:779 src/grg_popt.c:146 msgid "Wrong password! Re-enter it" msgstr "Złe hasło! Wpisz ponownie" #: src/gringotts.c:792 src/grg_popt.c:166 msgid "Saved data contain invalid UTF-8 chars" msgstr "Zapisane dane zawierają nieprawidłowe znaki UTF-8" #: src/gringotts.c:861 src/grg_pwd.c:80 msgid "Open..." msgstr "Otwórz..." #: src/gringotts.c:950 src/grg_popt.c:117 msgid "You must enter a valid password!" msgstr "Musisz wpisać prawidłowe hasło!" #: src/gringotts.c:968 msgid "My first page" msgstr "Moja pierwsza strona" #: src/gringotts.c:983 msgid "New title..." msgstr "Nowy tytuł..." #: src/gringotts.c:984 msgid "New title for this entry:" msgstr "Nowy tytuł tego załącznika:" #: src/gringotts.c:1035 msgid "I can't overwrite a directory or a symlink" msgstr "Nie mogę nadpisać katalogu ani dowiązania symbolicznego" #: src/gringotts.c:1043 msgid "Overwrite?" msgstr "Nadpisać?" #: src/gringotts.c:1045 msgid "Do you want to overwrite the existing file?" msgstr "Czy chcesz nadpisać istniejący plik?" #: src/gringotts.c:1059 msgid "Couldn't backup old file" msgstr "Nie mogłem wykonać kopii zapasowej starego pliku" #: src/gringotts.c:1100 msgid "Error in compression! Probably a zlib problem" msgstr "Błąd kompresji! Prawdopodobnie problem z biblioteką zlib" #: src/gringotts.c:1108 msgid "Uh-oh! I can't write to the file!" msgstr "O nie! Nie mogę pisać do pliku!" #: src/gringotts.c:1125 msgid "Too many data to write" msgstr "Zbyt dużo danych do zapisania" #: src/gringotts.c:1153 src/gringotts.c:1407 msgid "Save as...." msgstr "Zapisz jako..." #: src/gringotts.c:1195 msgid "Title..." msgstr "Tytuł..." #: src/gringotts.c:1196 msgid "Title for the new entry:" msgstr "Tytuł dla nowego wpisu:" #: src/gringotts.c:1197 msgid "New" msgstr "Nowy" #: src/gringotts.c:1221 src/gringotts.c:1466 msgid "Confirm..." msgstr "Zatwierdź..." #: src/gringotts.c:1222 msgid "Are you sure you want to remove this entry?" msgstr "Czy na pewno chcesz usunąć ten wpis?" #: src/gringotts.c:1249 msgid "Wrong password" msgstr "Złe hasło" #: src/gringotts.c:1269 msgid "Password successfully changed" msgstr "Hasło zostało zmienione" #: src/gringotts.c:1353 src/grg_prefs.c:395 msgid "Select file..." msgstr "Wybierz plik..." #: src/gringotts.c:1388 msgid "" "After this, there's no way to\n" "recover the file. Are you sure?" msgstr "" "Po wykonaniu tej czynności nie będzie\n" "możliwe odtworzenie tego pliku. Czy jesteś pewien?" #: src/gringotts.c:1436 msgid "File to wipe" msgstr "Plik do wymazania" #: src/gringotts.c:1467 src/grg_popt.c:290 msgid "" "Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible." msgstr "" "Czy jesteś pewien, że chcesz wymazać ten plik?\n" "Jego zawartość będzie usunięta w sposób bezpieczny,\n" "nie będzie możliwe jego odzyskanie." #: src/gringotts.c:1475 msgid "wiping file" msgstr "wymazywanie pliku" #: src/gringotts.c:1484 src/grg_popt.c:305 msgid "File wiping failed" msgstr "Wymazywanie pliku nie powiodło się" #: src/gringotts.c:1574 #, fuzzy msgid "E_dit..." msgstr "_Edycja..." #: src/gringotts.c:1594 msgid "Go to last entry" msgstr "Idź do ostatniego wpisu" #: src/gringotts.c:1597 msgid "Go to next entry" msgstr "Idź do następnego wpisu" #: src/gringotts.c:1603 msgid "View index" msgstr "Zobacz spis" #: src/gringotts.c:1609 msgid "Go to previous entry" msgstr "Idź do poprzedniego wpisu" #: src/gringotts.c:1612 msgid "Go to first entry" msgstr "Idź do pierwszego wpisu" #: src/gringotts.c:1626 #, c-format msgid "Security level: %s" msgstr "Poziom bezpieczeństwa: %s" #: src/gringotts.c:1630 src/grg_prefs.c:632 msgid "Security" msgstr "Bezpieczeństwo" #: src/gringotts.c:1644 msgid "New document" msgstr "Nowy dokument" #: src/gringotts.c:1649 msgid "Open document" msgstr "Otwórz dokument" #: src/gringotts.c:1651 msgid "Save document" msgstr "Zapisz dokument" #: src/gringotts.c:1653 msgid "Close document" msgstr "Zamknij dokument" #: src/gringotts.c:1658 msgid "Cut selection" msgstr "Wytnij" #: src/gringotts.c:1660 msgid "Copy selection" msgstr "Skopiuj" #: src/gringotts.c:1663 msgid "Paste selection" msgstr "Wklej" #: src/gringotts.c:1669 msgid "Search for text" msgstr "Szukaj tekstu" #: src/gringotts.c:1674 msgid "Add an entry" msgstr "Dodaj wpis" #: src/gringotts.c:1676 msgid "Remove this entry" msgstr "Usuń wpis" #: src/gringotts.c:1681 src/grg_prefs.c:446 msgid "Preferences" msgstr "Preferencje" #: src/gringotts.c:1686 msgid "Quit Gringotts" msgstr "Zakończ Gringotts" #: src/gringotts.c:1703 msgid "Attached files" msgstr "Załączone pliki" #: src/gringotts.c:1713 msgid "Add a new attachment" msgstr "Dodaj nowy załącznik" #: src/gringotts.c:1715 msgid "Remove this attachment" msgstr "Usuń ten załącznik" #: src/gringotts.c:1718 msgid "Save this attachment" msgstr "Zapisz ten załącznik" #: src/gringotts.c:1721 msgid "Info on this attachment" msgstr "Informacja o tym załączniku" #: src/gringotts.c:1723 msgid "Change comment" msgstr "Zmień komentarz" #: src/gringotts.c:1747 msgid "List of attached files" msgstr "Lista załączonych plików" #: src/gringotts.c:1933 msgid "version" msgstr "wersja" #: src/gringotts.c:1935 msgid "released under GNU General Public License (GPL) v.2 or later" msgstr "wydany na licencji GNU General Public License (GPL) v.2 lub późniejsza" #: src/gringotts.c:1937 msgid "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" "Zobacz plik COPYING albo zajrzyj na http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:1951 src/grg_prefs.c:151 msgid "Invalid preferences file. Resetting to defaults." msgstr "Nieprawidłowy plik preferencji. Resetuję do ustawień domyślnych." #: src/gringotts.c:1977 msgid "File to load does not exists or it is invalid" msgstr "Plik, który mam załadować nie istnieje albo ma nieprawidłowy format" #: src/grg_prefs.c:220 #, c-format msgid " Block size: %d bits" msgstr "Rozmiar bloku: %d bitów" #: src/grg_prefs.c:223 #, c-format msgid " Key length: %d bits" msgstr " Długość klucza: %d bitów" #: src/grg_prefs.c:457 msgid "Encryption" msgstr "Szyfrowanie" #: src/grg_prefs.c:502 msgid "Hashing" msgstr "Fukcja skrótu" #: src/grg_prefs.c:515 msgid "Compression" msgstr "Kompresja" #: src/grg_prefs.c:530 msgid "None" msgstr "Brak" #: src/grg_prefs.c:535 msgid "Fast" msgstr "Szybka" #: src/grg_prefs.c:539 msgid "Good" msgstr "Dobra" #: src/grg_prefs.c:543 msgid "Best" msgstr "Najlepsza" #: src/grg_prefs.c:547 msgid "Algorithms" msgstr "Algorytmy" #: src/grg_prefs.c:554 msgid "General options" msgstr "Opcje ogólne" #: src/grg_prefs.c:556 msgid "Editor font" msgstr "Czcionka w edytorze" #: src/grg_prefs.c:561 msgid "Click to change the editor font" msgstr "Kliknij aby zmienić czcionkę w edytorze" #: src/grg_prefs.c:571 msgid "Decorations" msgstr "Dekoracje" #: src/grg_prefs.c:579 msgid "Splash screen" msgstr "Ekran startowy" #: src/grg_prefs.c:587 msgid "Tray-Icon (Needs Gringotts restart to take affect)" msgstr "" #: src/grg_prefs.c:592 msgid "File to open at startup" msgstr "Przy starcie otwórz ten plik" #: src/grg_prefs.c:611 msgid "File saving" msgstr "Zapisywanie pliku" #: src/grg_prefs.c:618 msgid "Make backups of files" msgstr "Wykonuj kopie zapasowe plików" #: src/grg_prefs.c:624 msgid "Ask when overwriting files" msgstr "Pytaj o nadpisywanie plików" #: src/grg_prefs.c:634 msgid "Password expiration" msgstr "Okres ważności hasła" #: src/grg_prefs.c:641 msgid "Password expires in" msgstr "Hasło wygasa za" #: src/grg_prefs.c:645 msgid "days" msgstr "dni" #. this means "passes in wiping a file", not "wipe the passes" :) #: src/grg_prefs.c:657 msgid "Wipe passes" msgstr "Nadpisywanie przy wymazywaniu pliku" #: src/grg_prefs.c:663 msgid "" "Number of overwritings with random\n" "data, when wiping a file:" msgstr "" "Przy wymazywaniu pliku zostanie on\n" "nadpisany przypadkowymi danymi razy:" #: src/grg_prefs.c:676 msgid "Clipboard" msgstr "Schowek" #: src/grg_prefs.c:684 msgid "Clear clipboard on closing file" msgstr "Wyczyść schowek przy zamykaniu pliku" #: src/grg_prefs.c:691 msgid "Clear clipboard on exit" msgstr "Wyczyść schowek przy wyjściu z programu" #: src/grg_pwd.c:128 msgid "You must specify a regular file" msgstr "Musisz wskazać zwykły plik" #: src/grg_pwd.c:137 msgid "reading file" msgstr "czytam plik" #: src/grg_pwd.c:168 msgid "Please insert a disk in the first floppy drive" msgstr "Włóż dyskietkę do pierwszej stacji dysków" #: src/grg_pwd.c:180 msgid "The disk is not write protected. For security reasons, I'll not use it." msgstr "" "Dysk nie jest zabezpieczony przed zapisem. Ze względów bezpieczeństwa nie " "użyję go." #: src/grg_pwd.c:190 msgid "reading floppy" msgstr "czytam dyskietkę" #: src/grg_pwd.c:222 msgid "Enter new password" msgstr "Wpisz nowe hasło" #: src/grg_pwd.c:230 src/grg_pwd.c:751 msgid "Choose file" msgstr "Wybierz plik" #: src/grg_pwd.c:238 src/grg_pwd.c:609 msgid "Insert a disk and press Ok" msgstr "Włóż dysk i kliknij Ok" #: src/grg_pwd.c:316 msgid "New password" msgstr "Nowe hasło" #: src/grg_pwd.c:330 src/grg_pwd.c:573 src/grg_pwd.c:717 msgid "Choose password type:" msgstr "Wybierz typ hasła:" #: src/grg_pwd.c:333 src/grg_pwd.c:575 src/grg_pwd.c:717 msgid "String" msgstr "Ciąg znaków" #: src/grg_pwd.c:337 src/grg_pwd.c:579 src/grg_pwd.c:717 msgid "File" msgstr "Plik" #: src/grg_pwd.c:342 src/grg_pwd.c:584 src/grg_pwd.c:718 msgid "Disk" msgstr "Dysk" #: src/grg_pwd.c:347 msgid "Enter new password:" msgstr "Wpisz nowe hasło:" #: src/grg_pwd.c:355 msgid "Enter it again for confirmation:" msgstr "Wpisz ponownie aby potwierdzić:" #: src/grg_pwd.c:392 msgid "password quality" msgstr "jakość hasła" #: src/grg_pwd.c:436 msgid "The password is too short, it must be at least 4 chars" msgstr "Hasło jest zbyt krótkie, musi mieć co najmniej 4 znaki" #: src/grg_pwd.c:448 msgid "The two passwords are different" msgstr "Podane hasła różnią się" #: src/grg_pwd.c:560 src/grg_pwd.c:733 msgid "Enter password" msgstr "Wpisz hasło" #: src/grg_pwd.c:718 msgid "Quit" msgstr "Zakończ" #: src/grg_pwd.c:721 msgid "Choice" msgstr "" #: src/grg_pwd.c:771 msgid "Bye, then!" msgstr "Do zobaczenia!" #: src/grg_safe.c:124 #, c-format msgid "Cannot get MEMLOCK resource limit: %s" msgstr "" #: src/grg_safe.c:129 #, c-format msgid "" "Increase the memory locking limit to at least %d bytes. Current limit: %d " "bytes.\n" "See /usr/share/doc/gringotts/README for \n" "directions or alternatively make gringotts\n" "non-SUID-root\n" msgstr "" #: src/grg_safe.c:144 msgid "The process is setuid root, but I can't lock memory paging" msgstr "" "Proces ma działa z uprawnieniami roota, ale nie mogę zablokować " "stronicowania pamięci" #: src/grg_safe.c:166 msgid "" "Cannot drop root user privileges. Someone is hacking this process. I cannot " "go on" msgstr "" #: src/grg_safe.c:179 msgid "" "Cannot drop root group privileges. Someone is hacking this process. I cannot " "go on" msgstr "" #: src/grg_safe.c:224 src/grg_safe.c:230 msgid "For security reasons, you cannot run Gringotts as root user." msgstr "" "Ze względów bezpieczeństwa nie możesz uruchamiać Gringotts jako użytkownik " "root." #: src/grg_safe.c:226 msgid "Try to compile with --disable-root-filter in ./configure" msgstr "" "Spróbuj skompilować program z użyciem opcji --disable-root-filter dla " "polecenia ./configure" #: src/grg_safe.c:231 msgid "Try using -s" msgstr "Spróbuj opcji -s" #: src/grg_safe.c:251 msgid "stdin, stdout and/or stderr are invalid. Cannot continue." msgstr "stdin, stdout i/lub stderr są nieprawidłowe. Nie mogę kontynuować." #: src/grg_safe.c:270 msgid "Invalid LANG environment variable:" msgstr "" #: src/grg_safe.c:277 msgid "Invalid XAUTHORITY environment variable:" msgstr "" #: src/grg_safe.c:286 msgid "Invalid DISPLAY environment variable:" msgstr "" #: src/grg_safe.c:393 msgid "optimal" msgstr "optymalny" #: src/grg_safe.c:395 msgid "good" msgstr "dobry" #: src/grg_safe.c:398 msgid "low" msgstr "słaby" #: src/grg_safe.c:418 msgid "Security monitor" msgstr "Monitor bezpieczeństwa" #: src/grg_safe.c:433 src/grg_safe.c:437 src/grg_safe.c:440 msgid "Running without root privileges" msgstr "Program działa bez uprawnień roota" #: src/grg_safe.c:446 src/grg_safe.c:449 msgid "Memory protection from core dumps" msgstr "Pamięć zabezpieczona przez zrzutami rdzenia" #: src/grg_safe.c:457 src/grg_safe.c:460 msgid "Memory protection from swap writings" msgstr "" #: src/grg_safe.c:465 src/grg_safe.c:468 msgid "Memory protection from ptrace spying" msgstr "" #: src/grg_safe.c:472 src/grg_safe.c:475 msgid "Environmental variables validation" msgstr "" #: src/grg_safe.c:478 msgid "stdout/stdin/stderr validation" msgstr "" #: src/grg_safe.c:481 src/grg_safe.c:484 msgid "Enforced use of /dev/random" msgstr "Wymuszone użycie /dev/random" #: src/grg_safe.c:488 src/grg_safe.c:491 msgid "Strict prohibition to root user" msgstr "" #: src/grg_popt.c:53 msgid "Warning" msgstr "Ostrzeżenie" #: src/grg_popt.c:55 msgid "it isn't possible to hide password typing; be extremely careful!" msgstr "" #: src/grg_popt.c:199 msgid "shows the help" msgstr "wyświetla pomoc" #: src/grg_popt.c:202 msgid "specify the input file to open" msgstr "" #: src/grg_popt.c:202 src/grg_popt.c:216 msgid "FILE" msgstr "FILE" #: src/grg_popt.c:205 msgid "allow usage as root -- DANGEROUS" msgstr "zezwól na pracę jako root - NIEBEZPIECZNE" #: src/grg_popt.c:208 msgid "force use of /dev/random -- slower" msgstr "wymuś używanie urządzenia /dev/random -- program działa wolniej" #: src/grg_popt.c:210 msgid "dump the content of a file" msgstr "" #: src/grg_popt.c:212 msgid "index of the entry to dump" msgstr "" #: src/grg_popt.c:212 src/grg_popt.c:218 msgid "NUM" msgstr "NUM" #: src/grg_popt.c:214 msgid "title of the entry to dump" msgstr "" #: src/grg_popt.c:214 msgid "TXT" msgstr "TXT" #: src/grg_popt.c:216 msgid "securely wipe a file" msgstr "bezpiecznie wyma" #: src/grg_popt.c:218 msgid "passes in file wiping" msgstr "liczba nadpisań przy wymazywaniu pliku" #: src/grg_popt.c:273 msgid "" "It isn't possible to redirect data to stdin, as it is a potential security " "flaw." msgstr "" #: src/grg_popt.c:314 msgid "You must specify a file to dump (with the -f switch)" msgstr "" #: src/grg_attachs.c:68 msgid "Cannot open file to attach." msgstr "" #: src/grg_attachs.c:75 msgid "Only regular files can be attached." msgstr "" #: src/grg_attachs.c:87 msgid "Sorry, currently you can attach files only up to 2 Mb" msgstr "" "Przykro mi, ale obecnie możliwe jest dołączanie plików nie większych niż 2 Mb" #: src/grg_attachs.c:95 src/grg_attachs.c:339 msgid "Enter comment" msgstr "Wpisz komentarz" #: src/grg_attachs.c:97 src/grg_attachs.c:340 msgid "" "Please enter a comment for this\n" "file (max. 32 chars)" msgstr "" "Wpisz komentarz dotyczący tego\n" "pliku (do 32 znaków)" #: src/grg_attachs.c:107 src/grg_attachs.c:347 msgid "none" msgstr "" #: src/grg_attachs.c:117 msgid "attaching" msgstr "załączam" #: src/grg_attachs.c:125 msgid "Cannot encode tempfile." msgstr "" #: src/grg_attachs.c:194 src/grg_attachs.c:273 msgid "Cannot decode tempfile." msgstr "" #: src/grg_attachs.c:284 msgid "Cannot create file, or file already existent." msgstr "Nie można utworzyć pliku lub plik już istnieje." #: src/grg_attachs.c:316 msgid "File name" msgstr "Nazwa pliku" #: src/grg_attachs.c:317 msgid "Dimension" msgstr "" #: src/grg_attachs.c:317 src/grg_attachs.c:386 msgid "bytes" msgstr "bajtów" #: src/grg_attachs.c:318 msgid "Comment" msgstr "Komentarz" #: src/grg_attachs.c:394 msgid "Kb" msgstr "Kb" #: src/grg_attachs.c:400 msgid "Mb" msgstr "Mb" #: src/grg_attachs.c:432 msgid "" msgstr "" #~ msgid "" #~ "For security reasons, you cannot run Gringotts as root. Try using --" #~ "disable-root-filter in ./configure" #~ msgstr "" #~ "Per ragioni di sicurezza, non puoi avviare Gringotts da root. Prova ad " #~ "usare --enable-root-use in ./configure" #~ msgid "" #~ "malloc failed. Probably this indicates a memory problem, such as resource " #~ "exhaustion. Attempting to exit cleanly..." #~ msgstr "" #~ "malloc è fallito. Probabilmente questo indica un problema di memoria, ad " #~ "esempio esaurimento delle risorse. Provo ad uscire in maniera pulita..." #~ msgid "" #~ "This is a relatively new feature, so it's still under heavydevelopment... " #~ "and may have some problem. In this case,the stability and data safety " #~ "should be good, but it lacksquite much in speed. If you attach larger " #~ "files, you mayhave to wait a pretty huge deal of time. It depends " #~ "fromcase to case anyway; the best thing is to try it yourself. Infuture " #~ "releases of Gringotts we'll work also on this aspect." #~ msgstr "" #~ "Questa è una funzione relativamente nuova, perciò è ancora in pesante " #~ "lavorazione... e può avere qualche problema. In questo caso, la stabilità " #~ "e la sicurezza dei dati dovrebbero essere buone, ma difetta parecchio in " #~ "velocità. Se si allegano file grossi, l'attesa può essere molto lunga. " #~ "Comunque, questo varia da caso a caso; la cosa migliore è provare da sè. " #~ "Nelle future release di Gringotts lavoreremo anche su questo aspetto." #~ msgid "" #~ "Important informations\n" #~ "on this feature" #~ msgstr "" #~ "Informazioni importanti\n" #~ "su questa funzione" #~ msgid "The file cannot be opened" #~ msgstr "Non riesco ad aprire il file" gringotts-1.2.10/po/ru.gmo000066400000000000000000000476651201055014300153740ustar00rootroot00000000000000t  &; CMQdh }= +hh -RQC 0H hr     + % 1< X f"-.38= M W-c  <$6GXm2rD*Lw0PRUl!$$   & /< Vc<h#  04@.u  6%7 W cq&9 D?S5 /`2G!x 6 : !%!!G!3g!!!!8! """!=" _"j" r" ~""" "4" #9,#(f# ## ## ###"#$$$@?$$$$$$$ $$<$% %5%D%9c%%%%% %3%"(' K' Y'z'''&'','(f!((K((G)* ,* 9*F*O]*C**+C!,>e,4,', - -%&-<L---H- . .+.B.W.n.'.8.#. / "///O>///D/%0F,0&s0'000081 H1IU1111&111T24n2&2.22a3s3+3131334S4_b44|7j7758.P8(8g899,9.9":@':>h:?::!;$);N; R;];y;;?; ;< <P<<==,=(L=*u=#=`=-%>S>s>Y> > >>,?(2?6[??#?0?@\@u@6@@+@' AD1AvAvAY BdBHuB BBCBCzC3ED"yDDdEpE5lF@F F?G2DGwG:GhG01H0bH+H!HH%H$I:IBXIAIRI80JtiJWJO6KKKKKK*KWKUL/dLfLL MM M97MqMMM]M!N66NmN>N[N$&OKO3RO O!OFZtK67c!4I VN".;rf)em%2 zP_vM}L$8yU9/GRjTqoQs|A@S03aW~En{B^h#Yl*(,5 C] k'J-`pX\OxH+d< ?=& iw[1D>ugb: Block size: %d bits Index Key length: %d bits Title version (c)AddAdd a new attachmentAdd an entryAfter this, there's no way to recover the file. Are you sure?AlgorithmsAre you sure you want to remove this entry?Are you sure you want to wipe this file? Its content will be securely erased, so no recover is possible.Ask when overwriting filesAttached filesAuthorsBestBye, then!Cannot create file, or file already existent.Cannot decode tempfile.Cannot drop root group privileges. Someone is hacking this process. I cannot go onCannot drop root user privileges. Someone is hacking this process. I cannot go onCannot encode tempfile.Cannot open file to attach.Case sensitiveChange commentChoiceChoose fileChoose password type:Clear clipboard on closing fileClear clipboard on exitClick to change the editor fontClipboardClose documentCommentCompressionConfirmConfirm...Copy selectionCouldn't backup old fileCut selectionDecorationsDimensionDiskDo you want to overwrite the existing file?Editor fontEncryptionEnforced use of /dev/randomEnter commentEnter it again for confirmation:Enter new passwordEnter new password:Enter passwordEnter the string to find:Environmental variables validationErrorError in compression! Probably a zlib problemFILEFastFileFile is too bigFile nameFile savingFile to load does not exists or it is invalidFile to open at startupFile to wipeFile wiping failedFind a stringFor security reasons, you cannot run Gringotts as root user.General optionsGo to first entryGo to last entryGo to next entryGo to previous entryGoodGringotts internal error. Cannot finish operation.Gringotts is a small but (hopely ;) useful utility that stores sensitive data (passwords, credit card numbers, friends' addresses) in an organized and most of all very secure form. It uses libmcrypt and libmhash to provide a strong level of encryption, just trying to be as trustworthy as possible. This program is released under the GNU GPL, v.2 or later See COPYING or go to http://www.gnu.org/copyleft/gpl.htmlHashingI can't overwrite a directory or a symlinkIndex of entriesInfo on this attachmentInsert a disk and press OkInvalid entry numberInvalid preferences file. Resetting to defaults.It isn't possible to redirect data to stdin, as it is a potential security flaw.KbList of attached filesMake backups of filesMbMemory protection from core dumpsMemory protection from ptrace spyingMemory protection from swap writingsMove downMove upMy first pageNUMNewNew documentNew fileNew passwordNew title for this entry:New title...NoneNumber of overwritings with random data, when wiping a file:Only regular files can be attached.Open documentOpen...Overwrite?Password expirationPassword expires inPassword successfully changedPaste selectionPlease enter a comment for this file (max. 32 chars)Please insert a disk in the first floppy drivePlease waitPreferencesProblem with libmcrypt, probably a faulty installationQuitQuit GringottsRemoveRemove this attachmentRemove this entryRunning without root privilegesSave as....Save documentSave this attachmentSave?Saved data contain invalid UTF-8 charsSearch for textSearch only in this entrySecuritySecurity level: %sSecurity monitorSee COPYING or go to http://www.gnu.org/copyleft/gpl.htmlSelect file...Some changes have not been saved. Do you wish to save them now?Sorry, currently you can attach files only up to 2 MbSplash screenStrict prohibition to root userStringTXTText not found. Continue search from beginning?The current password is expired. You should change it, or modify this setting in the preferencesThe disk is not write protected. For security reasons, I'll not use it.The file appears to be corrupted!The file does not existThe file has been created with a newer version of Gringotts. If you save it using this one, some formatting can be lost.The password is too short, it must be at least 4 charsThe process is setuid root, but I can't lock memory pagingThe selected file doesn't existsThe text searched could not be found!The two passwords are differentThis file doesn't seem to be a valid Gringotts one!Title for the new entry:Title...Too many data to writeTry to compile with --disable-root-filter in ./configureTry using -sUh-oh! I can't read from the file!Uh-oh! I can't write to the file!View indexWarningWipe passesWrap around?Wrong passwordWrong password! Re-enter itYou must enter a valid password!You must specify a file to dump (with the -f switch)You must specify a regular fileYou'll lose all the changes from last save! Are you sure?You've selected a directory or a symlinkallow usage as root -- DANGEROUSassembling dataattachingbytescleaning updaysdump the content of a fileforce use of /dev/random -- slowergoodindex of the entry to dumpit isn't possible to hide password typing; be extremely careful!loadinglownoneoptimalpasses in file wipingpassword qualityreading filereading floppyreleased under GNU General Public License (GPL) v.2 or latersavingsecurely wipe a fileshows the helpspecify the input file to openstdin, stdout and/or stderr are invalid. Cannot continue.stdout/stdin/stderr validationthe nametitle of the entry to dumpversionwiping fileProject-Id-Version: gringotts 0.1 Report-Msgid-Bugs-To: POT-Creation-Date: 2008-09-15 19:57+0300 PO-Revision-Date: 2004-02-06 09:44+0300 Last-Translator: Unatine Language-Team: Russian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Размер блока: %d бит СписокДлина ключа: %d бит Название версия ©<файл не присоединен>ДобавитьДобавить новое вложениеДобавить записьПосле этого не будет пути восстановить файл. Вы уверены?АлгоритмВы уверены что хотите удалить эту запись?Вы уверены что хотите уничтожить данный файл? Его содержимое будет уничтожено, так что не будет возможности восстановить.Спрашивать при перезаписывании файловВложенные файлыАвторыЛучшееДо свидания!Не могу создать файл, или он уже существует.Не могу декодировать временный файл.Не могу сбросить привелегии рута. Что-то мешает этому процессу. Не могу продолжать.Не могу сбросить привелегии рута. Что-то мешает этому процессу. Не могу продолжать.Не могу закодировать временный файл.Не могу открыть файл для вложения.Чувствительность к региструИзменить комментарийВыборВыберите файлВыберите тип пароля:Очищать буфер при закрытии файлаОчищать буфер при выходеНажмите для изменения шрифта редактораБуферЗакрыть документКомментарийКомпрессияПодтвердитьПодтвердите...Копировать выделениеНе могу создать резервный файлВырезать выделениеОформлениеРазмерДискетаВы хотитет перезаписать существующий файл?Шрифт редактораШифрованиеПринудительное использование /dev/randomВведите комментарийВведите его еще раз для подтверждения:Введите новый парольВведите новый пароль:Введите парольВведите строку для поиска:Проверка переменных окруженияОшибкаОшибка компрессии! Возможно проблема zlibФАЙЛБыстроеФайлФайл слишком большойИмя файлаСохранение файлаФайл для открытия не существует или поврежденФайл для открытия при стартеФайл для уничтоженияОшибка уничтожение файлаНайти строкуДля безопасности, вы не можете запускать Gringotts как root.Основные опцииПерейти к первой записиПерейти к последней записиПерейти к следующей записиПерейти к предыдущей записиХорошееВнутренняя ошибка Gringotts. Не могу закончить операцию.Gringotts это маленькая (надеюсь) полезная утилита, которая хранит важные данные (пароли, номера кредитных карт, адреса друзей) в организованной и в очень безопасной форме. Она использует libmcrypt и limhash что бы предоставить высокий уровень шифрования, просто попробуйте довериться ей. Эта программа выпущена под лицензией GNU GPL v.2 или более поздней Смотрите файл COPYING или http://www.gnu.org/copyleft/gpl.htmlХешированиеНе могу перезаписать директорию или символическую ссылкуСписок записейИнформация о данном вложенииВставьте диск и нажмите OKНеверный номер записиНеверный файл настроек. Сброс к настройкам по умолчанию.Нет возможности перенаправить данные в stdin, так как это потенциальный недостаток в безопасностиКбСписок вложенный файловСоздание резервных копийМбЗащита памяти против сброса памятиЗащита памяти против слежения ptraceЗащита памяти против записи в свопПереместить внизПереместить вверхМоя первая страницаNUMНовыйНовый документНовый файлНовый парольНовый заголовок для данной записи:Новый заголовок...НетКоличество перезаписываний случайными данными при уничтожении файла:Только обычный файл может быть присоединен.Открыть документОткрыть...Перезаписать?Истечение пароляПароль истекает черезПароль успешно измененВставить выделениеВведите комментарий для этого файла (макс. 32 символа)Вставьте диск в дисководПожайлуста ждитеНастройкиПроблема с libmcrypt, возможно повреждена исталляцияВыйтиВыходУдалитьУдалить данное вложениеУдалить данную записьЗапущено без привилегий рута.Сохранить как...Сохранить документСохранить данное вложениеСохранить?Сохраненные данные содержать неверные UTF-8 символыПоиск текстаИскать только в данной записиБезопасностьУровень безопасности: %sМонитор безопасностиСмотрите COPYING или http://www.gnu.org/copyleft/gpl.htmlВыберите файл...Некоторые изменения не сохранены. Вы хотите сохранить их сейчас?Извините, вы можете вложить файлов только на 2 Мб.ЗаставкаСтрогое запрещение для пользователя rootСтрокаTXTТекст не найден. Продолжить с начала?Срок действия данного пароля истек. Вы должны его изменить, или изменить этот параметр в настройкахЭтот диск не защищен от записи. Не используйте ее для безопасности.Файл выглядит поврежденным!Файл не существуетФайл был создан в более новой версии Gringotts. Если вы сохраните его используя данную версию, некоторое форматирование может быть потеряно.Пароль очень короткий, он должен быть минимум 4 символаПроцесс запущен с SUID, но не возможно залочить страницу памятиВыбранный файл не существуетИскомый текст не может быть найден!Два пароля разныеЭтот файл не выглядит файлом Gringotts!Заголовок для новой записи:Заголовок...Слишком много данных для записиПопробуйте скомпилитровать с опцией --disable-root-filter в ./configureПопробуйте использовать -sНе могу прочитать из файлаНе могу записать в файл!Посмотреть списокПредупреждениеПроходы уничтоженияПереносить?Неверный парольНеверный пароль! Введите его еще разВы должны ввести правильный пароль!Вы должны указать файл для сброса (с ключом -f)Вы должны указать обычный файлВы потеряете все изменения с последнего сохранения! Вы уверены?Вы выбрали директорию или символическую ссылкуразрешено использование под рутом -- ОПАСНОсборка данныхвложениебайточисткаднейсброс содержания файлапринудительное использование /dev/random -- медленнохорошийсписок записей для сбросаневозможно скрыть набор пароля; будьте очень осторожны!загрузканизкийнетоптимальныйпроходов при уничтожении файлакачество паролячтение файлачтение дискетывыпущено под GNU General Public License (GPL) v.2 или более позднейсохранениебезопасное уничтожение файлапоказать помощьукажите входной файл для открытияstdin, stdout и/или stderr неверны. Продолжение невозможно.Проверка stdout/stdin/stderrимязаголовок записи для сбросаверсияуничтожение файлаgringotts-1.2.10/po/ru.po000066400000000000000000000717661201055014300152270ustar00rootroot00000000000000# russian translation of Gringotts. # Copyright (C) 2003 THE Gringotts'S COPYRIGHT HOLDER # This file is distributed under the same license as the Gringotts package. # Unatine , 2003. # # msgid "" msgstr "" "Project-Id-Version: gringotts 0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-15 19:57+0300\n" "PO-Revision-Date: 2004-02-06 09:44+0300\n" "Last-Translator: Unatine \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/grg_entries.c:393 msgid "Invalid entry number" msgstr "Неверный номер записи" #: src/grg_entries.c:495 src/gringotts.c:509 src/gringotts.c:751 msgid "assembling data" msgstr "сборка данных" #: src/grg_entries.c:504 src/grg_attachs.c:268 msgid "saving" msgstr "сохранение" #: src/grg_entries.c:509 src/gringotts.c:512 src/gringotts.c:754 msgid "cleaning up" msgstr "очистка" #: src/grg_entries.c:632 msgid "" "The file has been created with a newer version of Gringotts. If you save it " "using this one, some formatting can be lost." msgstr "" "Файл был создан в более новой версии Gringotts. Если вы сохраните его " "используя данную версию, некоторое форматирование может быть потеряно." #: src/grg_entries_vis.c:150 src/grg_entries_vis.c:151 msgid "Tabs Width" msgstr "" #: src/grg_entries_vis.c:504 msgid "The text searched could not be found!" msgstr "Искомый текст не может быть найден!" #: src/grg_entries_vis.c:511 msgid "Wrap around?" msgstr "Переносить?" #: src/grg_entries_vis.c:512 msgid "Text not found. Continue search from beginning?" msgstr "Текст не найден. Продолжить с начала?" #: src/grg_list.c:95 msgid " Index " msgstr " Список" #: src/grg_list.c:103 msgid " Title " msgstr " Название" #: src/grg_list.c:213 msgid "Index of entries" msgstr "Список записей" #: src/grg_list.c:247 msgid "Move up" msgstr "Переместить вверх" #: src/grg_list.c:251 msgid "Move down" msgstr "Переместить вниз" #: src/grg_menus.c:110 #, fuzzy msgid "_New" msgstr "Новый" #: src/grg_menus.c:113 #, fuzzy msgid "_Open" msgstr "Открыть" #: src/grg_menus.c:115 #, fuzzy msgid "_Save" msgstr "Сохранить" #: src/grg_menus.c:117 #, fuzzy msgid "Save _As" msgstr "Сохранить как" #: src/grg_menus.c:119 #, fuzzy msgid "_Revert" msgstr "Вернуть" #: src/grg_menus.c:121 #, fuzzy msgid "_Close" msgstr "Закрыть" #: src/grg_menus.c:132 #, fuzzy msgid "_Quit" msgstr "Выйти" #: src/grg_menus.c:136 #, fuzzy msgid "_File" msgstr "Файл" #: src/grg_menus.c:149 msgid "Add" msgstr "Добавить" #: src/grg_menus.c:151 msgid "Remove" msgstr "Удалить" #: src/grg_menus.c:154 #, fuzzy msgid "Cu_t" msgstr "Вырезать" #: src/grg_menus.c:156 #, fuzzy msgid "_Copy" msgstr "Копировать" #: src/grg_menus.c:158 #, fuzzy msgid "_Paste" msgstr "Вставить" #: src/grg_menus.c:162 #, fuzzy msgid "_Find" msgstr "Найти" #: src/grg_menus.c:164 #, fuzzy msgid "Find a_gain" msgstr "Найти снова" #: src/grg_menus.c:167 #, fuzzy msgid "Change Pass_word" msgstr "Изменить пароль" #: src/grg_menus.c:171 #, fuzzy msgid "P_references" msgstr "Настройки" #: src/grg_menus.c:174 #, fuzzy msgid "_Edit" msgstr "Правка" #: src/grg_menus.c:187 #, fuzzy msgid "_First" msgstr "Первый" #: src/grg_menus.c:190 #, fuzzy msgid "_Back" msgstr "Назад" #: src/grg_menus.c:193 #, fuzzy msgid "For_ward" msgstr "Вперед" #: src/grg_menus.c:197 #, fuzzy msgid "_Last" msgstr "Последний" #: src/grg_menus.c:201 #, fuzzy msgid "_Index" msgstr "Список" #: src/grg_menus.c:205 #, fuzzy msgid "_Navigation" msgstr "Навигация" #: src/grg_menus.c:218 #, fuzzy msgid "_Wipe file" msgstr "Уничтожить файл" #: src/grg_menus.c:222 #, fuzzy msgid "_Tools" msgstr "Инструменты" #: src/grg_menus.c:235 #, fuzzy msgid "_Security monitor" msgstr "Монитор безопасности" #: src/grg_menus.c:244 #, fuzzy msgid "_About" msgstr "О программе" #: src/grg_menus.c:247 #, fuzzy msgid "_Help" msgstr "Помощь" #: src/grg_widgets.c:65 msgid "Error" msgstr "Ошибка" #: src/grg_widgets.c:240 msgid "Find a string" msgstr "Найти строку" #: src/grg_widgets.c:253 msgid "Enter the string to find:" msgstr "Введите строку для поиска:" #: src/grg_widgets.c:263 msgid "Search only in this entry" msgstr "Искать только в данной записи" #: src/grg_widgets.c:267 msgid "Case sensitive" msgstr "Чувствительность к регистру" #: src/grg_widgets.c:314 src/grg_widgets.c:316 src/grg_widgets.c:353 msgid "Please wait" msgstr "Пожайлуста ждите" #: src/grg_widgets.c:392 src/gringotts.c:1461 src/grg_pwd.c:122 #: src/grg_popt.c:287 msgid "The file does not exist" msgstr "Файл не существует" #: src/gringotts.c:139 msgid " version " msgstr " версия " #: src/gringotts.c:140 src/gringotts.c:153 src/gringotts.c:155 #: src/gringotts.c:157 src/gringotts.c:1933 msgid "(c)" msgstr "©" #: src/gringotts.c:142 msgid "Authors" msgstr "Авторы" #: src/gringotts.c:146 msgid "" "Gringotts is a small but (hopely ;) useful utility that stores sensitive " "data (passwords, credit card numbers, friends' addresses) in an organized " "and most of all very secure form.\n" "It uses libmcrypt and libmhash to provide a strong level of encryption, just " "trying to be as trustworthy as possible.\n" "\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "" "Gringotts это маленькая (надеюсь) полезная утилита, которая хранит важные " "данные (пароли, номера кредитных карт, адреса друзей) в организованной и в " "очень безопасной форме.\n" "Она использует libmcrypt и limhash что бы предоставить высокий уровень " "шифрования, просто попробуйте довериться ей.\n" "\n" "Эта программа выпущена под лицензией GNU GPL v.2 или более поздней\n" "Смотрите файл COPYING или http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:156 msgid "the name" msgstr "имя" #: src/gringotts.c:268 src/gringotts.c:629 src/gringotts.c:958 #: src/gringotts.c:1181 msgid "New file" msgstr "Новый файл" #: src/gringotts.c:415 msgid "Save?" msgstr "Сохранить?" #: src/gringotts.c:417 msgid "" "Some changes have not been saved.\n" "Do you wish to save them now?" msgstr "" "Некоторые изменения не сохранены.\n" "Вы хотите сохранить их сейчас?" #: src/gringotts.c:471 src/gringotts.c:1386 msgid "Confirm" msgstr "Подтвердить" #: src/gringotts.c:472 msgid "" "You'll lose all the changes from\n" "last save! Are you sure?" msgstr "" "Вы потеряете все изменения с\n" "последнего сохранения! Вы уверены?" #: src/gringotts.c:476 src/gringotts.c:739 msgid "loading" msgstr "загрузка" #: src/gringotts.c:485 src/gringotts.c:615 src/grg_popt.c:65 msgid "You've selected a directory or a symlink" msgstr "Вы выбрали директорию или символическую ссылку" #: src/gringotts.c:492 src/gringotts.c:622 src/grg_popt.c:61 msgid "The selected file doesn't exists" msgstr "Выбранный файл не существует" #: src/gringotts.c:530 src/gringotts.c:574 src/gringotts.c:683 #: src/gringotts.c:718 src/gringotts.c:772 src/gringotts.c:802 #: src/gringotts.c:1092 src/gringotts.c:1135 src/grg_popt.c:83 #: src/grg_popt.c:107 src/grg_popt.c:142 src/grg_popt.c:158 msgid "Gringotts internal error. Cannot finish operation." msgstr "Внутренняя ошибка Gringotts. Не могу закончить операцию." #: src/gringotts.c:542 src/gringotts.c:700 src/grg_popt.c:98 msgid "The file appears to be corrupted!" msgstr "Файл выглядит поврежденным!" #: src/gringotts.c:549 src/gringotts.c:708 src/grg_popt.c:102 msgid "File is too big" msgstr "Файл слишком большой" #: src/gringotts.c:556 src/gringotts.c:691 src/grg_popt.c:93 msgid "Uh-oh! I can't read from the file!" msgstr "Не могу прочитать из файла" #: src/gringotts.c:564 src/gringotts.c:785 src/gringotts.c:1117 #: src/grg_popt.c:152 msgid "Problem with libmcrypt, probably a faulty installation" msgstr "Проблема с libmcrypt, возможно повреждена исталляция" #: src/gringotts.c:587 src/gringotts.c:838 msgid "" "The current password is expired.\n" "You should change it, or modify this setting in the preferences" msgstr "" "Срок действия данного пароля истек.\n" "Вы должны его изменить, или изменить этот параметр в настройках" #: src/gringotts.c:665 src/grg_popt.c:89 msgid "This file doesn't seem to be a valid Gringotts one!" msgstr "Этот файл не выглядит файлом Gringotts!" #: src/gringotts.c:779 src/grg_popt.c:146 msgid "Wrong password! Re-enter it" msgstr "Неверный пароль! Введите его еще раз" #: src/gringotts.c:792 src/grg_popt.c:166 msgid "Saved data contain invalid UTF-8 chars" msgstr "Сохраненные данные содержать неверные UTF-8 символы" #: src/gringotts.c:861 src/grg_pwd.c:80 msgid "Open..." msgstr "Открыть..." #: src/gringotts.c:950 src/grg_popt.c:117 msgid "You must enter a valid password!" msgstr "Вы должны ввести правильный пароль!" #: src/gringotts.c:968 msgid "My first page" msgstr "Моя первая страница" #: src/gringotts.c:983 msgid "New title..." msgstr "Новый заголовок..." #: src/gringotts.c:984 msgid "New title for this entry:" msgstr "Новый заголовок для данной записи:" #: src/gringotts.c:1035 msgid "I can't overwrite a directory or a symlink" msgstr "Не могу перезаписать директорию или символическую ссылку" #: src/gringotts.c:1043 msgid "Overwrite?" msgstr "Перезаписать?" #: src/gringotts.c:1045 msgid "Do you want to overwrite the existing file?" msgstr "Вы хотитет перезаписать существующий файл?" #: src/gringotts.c:1059 msgid "Couldn't backup old file" msgstr "Не могу создать резервный файл" #: src/gringotts.c:1100 msgid "Error in compression! Probably a zlib problem" msgstr "Ошибка компрессии! Возможно проблема zlib" #: src/gringotts.c:1108 msgid "Uh-oh! I can't write to the file!" msgstr "Не могу записать в файл!" #: src/gringotts.c:1125 msgid "Too many data to write" msgstr "Слишком много данных для записи" #: src/gringotts.c:1153 src/gringotts.c:1407 msgid "Save as...." msgstr "Сохранить как..." #: src/gringotts.c:1195 msgid "Title..." msgstr "Заголовок..." #: src/gringotts.c:1196 msgid "Title for the new entry:" msgstr "Заголовок для новой записи:" #: src/gringotts.c:1197 msgid "New" msgstr "Новый" #: src/gringotts.c:1221 src/gringotts.c:1466 msgid "Confirm..." msgstr "Подтвердите..." #: src/gringotts.c:1222 msgid "Are you sure you want to remove this entry?" msgstr "Вы уверены что хотите удалить эту запись?" #: src/gringotts.c:1249 msgid "Wrong password" msgstr "Неверный пароль" #: src/gringotts.c:1269 msgid "Password successfully changed" msgstr "Пароль успешно изменен" #: src/gringotts.c:1353 src/grg_prefs.c:395 msgid "Select file..." msgstr "Выберите файл..." #: src/gringotts.c:1388 msgid "" "After this, there's no way to\n" "recover the file. Are you sure?" msgstr "" "После этого не будет пути\n" "восстановить файл. Вы уверены?" #: src/gringotts.c:1436 msgid "File to wipe" msgstr "Файл для уничтожения" #: src/gringotts.c:1467 src/grg_popt.c:290 msgid "" "Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible." msgstr "" "Вы уверены что хотите уничтожить данный файл?\n" "Его содержимое будет уничтожено, так что \n" "не будет возможности восстановить." #: src/gringotts.c:1475 msgid "wiping file" msgstr "уничтожение файла" #: src/gringotts.c:1484 src/grg_popt.c:305 msgid "File wiping failed" msgstr "Ошибка уничтожение файла" #: src/gringotts.c:1574 #, fuzzy msgid "E_dit..." msgstr "_Правка..." #: src/gringotts.c:1594 msgid "Go to last entry" msgstr "Перейти к последней записи" #: src/gringotts.c:1597 msgid "Go to next entry" msgstr "Перейти к следующей записи" #: src/gringotts.c:1603 msgid "View index" msgstr "Посмотреть список" #: src/gringotts.c:1609 msgid "Go to previous entry" msgstr "Перейти к предыдущей записи" #: src/gringotts.c:1612 msgid "Go to first entry" msgstr "Перейти к первой записи" #: src/gringotts.c:1626 #, c-format msgid "Security level: %s" msgstr "Уровень безопасности: %s" #: src/gringotts.c:1630 src/grg_prefs.c:632 msgid "Security" msgstr "Безопасность" #: src/gringotts.c:1644 msgid "New document" msgstr "Новый документ" #: src/gringotts.c:1649 msgid "Open document" msgstr "Открыть документ" #: src/gringotts.c:1651 msgid "Save document" msgstr "Сохранить документ" #: src/gringotts.c:1653 msgid "Close document" msgstr "Закрыть документ" #: src/gringotts.c:1658 msgid "Cut selection" msgstr "Вырезать выделение" #: src/gringotts.c:1660 msgid "Copy selection" msgstr "Копировать выделение" #: src/gringotts.c:1663 msgid "Paste selection" msgstr "Вставить выделение" #: src/gringotts.c:1669 msgid "Search for text" msgstr "Поиск текста" #: src/gringotts.c:1674 msgid "Add an entry" msgstr "Добавить запись" #: src/gringotts.c:1676 msgid "Remove this entry" msgstr "Удалить данную запись" #: src/gringotts.c:1681 src/grg_prefs.c:446 msgid "Preferences" msgstr "Настройки" #: src/gringotts.c:1686 msgid "Quit Gringotts" msgstr "Выход" #: src/gringotts.c:1703 msgid "Attached files" msgstr "Вложенные файлы" #: src/gringotts.c:1713 msgid "Add a new attachment" msgstr "Добавить новое вложение" #: src/gringotts.c:1715 msgid "Remove this attachment" msgstr "Удалить данное вложение" #: src/gringotts.c:1718 msgid "Save this attachment" msgstr "Сохранить данное вложение" #: src/gringotts.c:1721 msgid "Info on this attachment" msgstr "Информация о данном вложении" #: src/gringotts.c:1723 msgid "Change comment" msgstr "Изменить комментарий" #: src/gringotts.c:1747 msgid "List of attached files" msgstr "Список вложенный файлов" #: src/gringotts.c:1933 msgid "version" msgstr "версия" #: src/gringotts.c:1935 msgid "released under GNU General Public License (GPL) v.2 or later" msgstr "выпущено под GNU General Public License (GPL) v.2 или более поздней" #: src/gringotts.c:1937 msgid "See COPYING or go to http://www.gnu.org/copyleft/gpl.html" msgstr "Смотрите COPYING или http://www.gnu.org/copyleft/gpl.html" #: src/gringotts.c:1951 src/grg_prefs.c:151 msgid "Invalid preferences file. Resetting to defaults." msgstr "Неверный файл настроек. Сброс к настройкам по умолчанию." #: src/gringotts.c:1977 msgid "File to load does not exists or it is invalid" msgstr "Файл для открытия не существует или поврежден" #: src/grg_prefs.c:220 #, c-format msgid " Block size: %d bits" msgstr "Размер блока: %d бит" #: src/grg_prefs.c:223 #, c-format msgid " Key length: %d bits" msgstr "Длина ключа: %d бит" #: src/grg_prefs.c:457 msgid "Encryption" msgstr "Шифрование" #: src/grg_prefs.c:502 msgid "Hashing" msgstr "Хеширование" #: src/grg_prefs.c:515 msgid "Compression" msgstr "Компрессия" #: src/grg_prefs.c:530 msgid "None" msgstr "Нет" #: src/grg_prefs.c:535 msgid "Fast" msgstr "Быстрое" #: src/grg_prefs.c:539 msgid "Good" msgstr "Хорошее" #: src/grg_prefs.c:543 msgid "Best" msgstr "Лучшее" #: src/grg_prefs.c:547 msgid "Algorithms" msgstr "Алгоритм" #: src/grg_prefs.c:554 msgid "General options" msgstr "Основные опции" #: src/grg_prefs.c:556 msgid "Editor font" msgstr "Шрифт редактора" #: src/grg_prefs.c:561 msgid "Click to change the editor font" msgstr "Нажмите для изменения шрифта редактора" #: src/grg_prefs.c:571 msgid "Decorations" msgstr "Оформление" #: src/grg_prefs.c:579 msgid "Splash screen" msgstr "Заставка" #: src/grg_prefs.c:587 msgid "Tray-Icon (Needs Gringotts restart to take affect)" msgstr "" #: src/grg_prefs.c:592 msgid "File to open at startup" msgstr "Файл для открытия при старте" #: src/grg_prefs.c:611 msgid "File saving" msgstr "Сохранение файла" #: src/grg_prefs.c:618 msgid "Make backups of files" msgstr "Создание резервных копий" #: src/grg_prefs.c:624 msgid "Ask when overwriting files" msgstr "Спрашивать при перезаписывании файлов" #: src/grg_prefs.c:634 msgid "Password expiration" msgstr "Истечение пароля" #: src/grg_prefs.c:641 msgid "Password expires in" msgstr "Пароль истекает через" #: src/grg_prefs.c:645 msgid "days" msgstr "дней" #. this means "passes in wiping a file", not "wipe the passes" :) #: src/grg_prefs.c:657 msgid "Wipe passes" msgstr "Проходы уничтожения" #: src/grg_prefs.c:663 msgid "" "Number of overwritings with random\n" "data, when wiping a file:" msgstr "" "Количество перезаписываний случайными\n" "данными при уничтожении файла:" #: src/grg_prefs.c:676 msgid "Clipboard" msgstr "Буфер" #: src/grg_prefs.c:684 msgid "Clear clipboard on closing file" msgstr "Очищать буфер при закрытии файла" #: src/grg_prefs.c:691 msgid "Clear clipboard on exit" msgstr "Очищать буфер при выходе" #: src/grg_pwd.c:128 msgid "You must specify a regular file" msgstr "Вы должны указать обычный файл" #: src/grg_pwd.c:137 msgid "reading file" msgstr "чтение файла" #: src/grg_pwd.c:168 msgid "Please insert a disk in the first floppy drive" msgstr "Вставьте диск в дисковод" #: src/grg_pwd.c:180 msgid "The disk is not write protected. For security reasons, I'll not use it." msgstr "Этот диск не защищен от записи. Не используйте ее для безопасности." #: src/grg_pwd.c:190 msgid "reading floppy" msgstr "чтение дискеты" #: src/grg_pwd.c:222 msgid "Enter new password" msgstr "Введите новый пароль" #: src/grg_pwd.c:230 src/grg_pwd.c:751 msgid "Choose file" msgstr "Выберите файл" #: src/grg_pwd.c:238 src/grg_pwd.c:609 msgid "Insert a disk and press Ok" msgstr "Вставьте диск и нажмите OK" #: src/grg_pwd.c:316 msgid "New password" msgstr "Новый пароль" #: src/grg_pwd.c:330 src/grg_pwd.c:573 src/grg_pwd.c:717 msgid "Choose password type:" msgstr "Выберите тип пароля:" #: src/grg_pwd.c:333 src/grg_pwd.c:575 src/grg_pwd.c:717 msgid "String" msgstr "Строка" #: src/grg_pwd.c:337 src/grg_pwd.c:579 src/grg_pwd.c:717 msgid "File" msgstr "Файл" #: src/grg_pwd.c:342 src/grg_pwd.c:584 src/grg_pwd.c:718 msgid "Disk" msgstr "Дискета" #: src/grg_pwd.c:347 msgid "Enter new password:" msgstr "Введите новый пароль:" #: src/grg_pwd.c:355 msgid "Enter it again for confirmation:" msgstr "Введите его еще раз для подтверждения:" #: src/grg_pwd.c:392 msgid "password quality" msgstr "качество пароля" #: src/grg_pwd.c:436 msgid "The password is too short, it must be at least 4 chars" msgstr "Пароль очень короткий, он должен быть минимум 4 символа" #: src/grg_pwd.c:448 msgid "The two passwords are different" msgstr "Два пароля разные" #: src/grg_pwd.c:560 src/grg_pwd.c:733 msgid "Enter password" msgstr "Введите пароль" #: src/grg_pwd.c:718 msgid "Quit" msgstr "Выйти" #: src/grg_pwd.c:721 msgid "Choice" msgstr "Выбор" #: src/grg_pwd.c:771 msgid "Bye, then!" msgstr "До свидания!" #: src/grg_safe.c:124 #, c-format msgid "Cannot get MEMLOCK resource limit: %s" msgstr "" #: src/grg_safe.c:129 #, c-format msgid "" "Increase the memory locking limit to at least %d bytes. Current limit: %d " "bytes.\n" "See /usr/share/doc/gringotts/README for \n" "directions or alternatively make gringotts\n" "non-SUID-root\n" msgstr "" #: src/grg_safe.c:144 msgid "The process is setuid root, but I can't lock memory paging" msgstr "Процесс запущен с SUID, но не возможно залочить страницу памяти" #: src/grg_safe.c:166 msgid "" "Cannot drop root user privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Не могу сбросить привелегии рута. Что-то мешает этому процессу. Не могу " "продолжать." #: src/grg_safe.c:179 msgid "" "Cannot drop root group privileges. Someone is hacking this process. I cannot " "go on" msgstr "" "Не могу сбросить привелегии рута. Что-то мешает этому процессу. Не могу " "продолжать." #: src/grg_safe.c:224 src/grg_safe.c:230 msgid "For security reasons, you cannot run Gringotts as root user." msgstr "Для безопасности, вы не можете запускать Gringotts как root." #: src/grg_safe.c:226 msgid "Try to compile with --disable-root-filter in ./configure" msgstr "" "Попробуйте скомпилитровать с опцией --disable-root-filter в ./configure" #: src/grg_safe.c:231 msgid "Try using -s" msgstr "Попробуйте использовать -s" #: src/grg_safe.c:251 msgid "stdin, stdout and/or stderr are invalid. Cannot continue." msgstr "stdin, stdout и/или stderr неверны. Продолжение невозможно." #: src/grg_safe.c:270 msgid "Invalid LANG environment variable:" msgstr "" #: src/grg_safe.c:277 msgid "Invalid XAUTHORITY environment variable:" msgstr "" #: src/grg_safe.c:286 msgid "Invalid DISPLAY environment variable:" msgstr "" #: src/grg_safe.c:393 msgid "optimal" msgstr "оптимальный" #: src/grg_safe.c:395 msgid "good" msgstr "хороший" #: src/grg_safe.c:398 msgid "low" msgstr "низкий" #: src/grg_safe.c:418 msgid "Security monitor" msgstr "Монитор безопасности" #: src/grg_safe.c:433 src/grg_safe.c:437 src/grg_safe.c:440 msgid "Running without root privileges" msgstr "Запущено без привилегий рута." #: src/grg_safe.c:446 src/grg_safe.c:449 msgid "Memory protection from core dumps" msgstr "Защита памяти против сброса памяти" #: src/grg_safe.c:457 src/grg_safe.c:460 msgid "Memory protection from swap writings" msgstr "Защита памяти против записи в своп" #: src/grg_safe.c:465 src/grg_safe.c:468 msgid "Memory protection from ptrace spying" msgstr "Защита памяти против слежения ptrace" #: src/grg_safe.c:472 src/grg_safe.c:475 msgid "Environmental variables validation" msgstr "Проверка переменных окружения" #: src/grg_safe.c:478 msgid "stdout/stdin/stderr validation" msgstr "Проверка stdout/stdin/stderr" #: src/grg_safe.c:481 src/grg_safe.c:484 msgid "Enforced use of /dev/random" msgstr "Принудительное использование /dev/random" #: src/grg_safe.c:488 src/grg_safe.c:491 msgid "Strict prohibition to root user" msgstr "Строгое запрещение для пользователя root" #: src/grg_popt.c:53 msgid "Warning" msgstr "Предупреждение" #: src/grg_popt.c:55 msgid "it isn't possible to hide password typing; be extremely careful!" msgstr "невозможно скрыть набор пароля; будьте очень осторожны!" #: src/grg_popt.c:199 msgid "shows the help" msgstr "показать помощь" #: src/grg_popt.c:202 msgid "specify the input file to open" msgstr "укажите входной файл для открытия" #: src/grg_popt.c:202 src/grg_popt.c:216 msgid "FILE" msgstr "ФАЙЛ" #: src/grg_popt.c:205 msgid "allow usage as root -- DANGEROUS" msgstr "разрешено использование под рутом -- ОПАСНО" #: src/grg_popt.c:208 msgid "force use of /dev/random -- slower" msgstr "принудительное использование /dev/random -- медленно" #: src/grg_popt.c:210 msgid "dump the content of a file" msgstr "сброс содержания файла" #: src/grg_popt.c:212 msgid "index of the entry to dump" msgstr "список записей для сброса" #: src/grg_popt.c:212 src/grg_popt.c:218 msgid "NUM" msgstr "NUM" #: src/grg_popt.c:214 msgid "title of the entry to dump" msgstr "заголовок записи для сброса" #: src/grg_popt.c:214 msgid "TXT" msgstr "TXT" #: src/grg_popt.c:216 msgid "securely wipe a file" msgstr "безопасное уничтожение файла" #: src/grg_popt.c:218 msgid "passes in file wiping" msgstr "проходов при уничтожении файла" #: src/grg_popt.c:273 msgid "" "It isn't possible to redirect data to stdin, as it is a potential security " "flaw." msgstr "" "Нет возможности перенаправить данные в stdin, так как это потенциальный " "недостаток в безопасности" #: src/grg_popt.c:314 msgid "You must specify a file to dump (with the -f switch)" msgstr "Вы должны указать файл для сброса (с ключом -f)" #: src/grg_attachs.c:68 msgid "Cannot open file to attach." msgstr "Не могу открыть файл для вложения." #: src/grg_attachs.c:75 msgid "Only regular files can be attached." msgstr "Только обычный файл может быть присоединен." #: src/grg_attachs.c:87 msgid "Sorry, currently you can attach files only up to 2 Mb" msgstr "Извините, вы можете вложить файлов только на 2 Мб." #: src/grg_attachs.c:95 src/grg_attachs.c:339 msgid "Enter comment" msgstr "Введите комментарий" #: src/grg_attachs.c:97 src/grg_attachs.c:340 msgid "" "Please enter a comment for this\n" "file (max. 32 chars)" msgstr "" "Введите комментарий для этого\n" "файла (макс. 32 символа)" #: src/grg_attachs.c:107 src/grg_attachs.c:347 msgid "none" msgstr "нет" #: src/grg_attachs.c:117 msgid "attaching" msgstr "вложение" #: src/grg_attachs.c:125 msgid "Cannot encode tempfile." msgstr "Не могу закодировать временный файл." #: src/grg_attachs.c:194 src/grg_attachs.c:273 msgid "Cannot decode tempfile." msgstr "Не могу декодировать временный файл." #: src/grg_attachs.c:284 msgid "Cannot create file, or file already existent." msgstr "Не могу создать файл, или он уже существует." #: src/grg_attachs.c:316 msgid "File name" msgstr "Имя файла" #: src/grg_attachs.c:317 msgid "Dimension" msgstr "Размер" #: src/grg_attachs.c:317 src/grg_attachs.c:386 msgid "bytes" msgstr "байт" #: src/grg_attachs.c:318 msgid "Comment" msgstr "Комментарий" #: src/grg_attachs.c:394 msgid "Kb" msgstr "Кб" #: src/grg_attachs.c:400 msgid "Mb" msgstr "Мб" #: src/grg_attachs.c:432 msgid "" msgstr "<файл не присоединен>" #~ msgid "Invalid environment variables. They could have been manipulated." #~ msgstr "Неверные переменные окружения. Они могли быть изменены." gringotts-1.2.10/src/000077500000000000000000000000001201055014300143715ustar00rootroot00000000000000gringotts-1.2.10/src/Makefile.am000066400000000000000000000022271201055014300164300ustar00rootroot00000000000000INCLUDES = \ @DEFS@ @GTK2_CFLAGS@ @GDKPIX_CFLAGS@ @LIBGRG_CFLAGS@ \ -DG_LOG_DOMAIN=\"gringotts\" \ -DLOCALEDIR=\"$(datadir)/locale\" \ -DDOCDIR=\"$(docdir)\" \ -DG_DISABLE_DEPRECATED \ -DGDK_PIXBUF_DISABLE_DEPRECATED \ -DGDK_DISABLE_DEPRECATED \ -Wpointer-arith \ -Werror-implicit-function-declaration -Wstrict-prototypes -Wall # Remming out from INCLUDES so it won't disturb us with gtk+-2.13.x # -DGTK_DISABLE_DEPRECATED bin_PROGRAMS = gringotts gringotts_SOURCES = \ gringotts.c gringotts.h \ grg_widgets.c grg_widgets.h \ grg_entries.c grg_entries.h \ grg_entries_vis.c grg_entries_vis.h \ grg_list.c grg_list.h \ grg_menus.c grg_menus.h \ grg_prefs.c grg_prefs.h \ grg_prefs_io.c grg_prefs_io.h \ grg_pwd.c grg_pwd.h \ grg_safe.c grg_safe.h \ grg_recent_dox.c grg_recent_dox.h \ grg_popt.c grg_popt.h \ grg_pix.c grg_pix.h \ grg_attachs.c grg_attachs.h \ grg_xpm.c \ grg_defs.h gringotts_LDADD = @POPT@ @GTK2_LIBS@ @GDKPIX_LIBS@ @LIBGRG_LIBS@ install-exec-local: strip $(DESTDIR)$(bindir)/gringotts chmod u+s $(DESTDIR)$(bindir)/gringotts gringotts-1.2.10/src/Makefile.in000066400000000000000000000367751201055014300164600ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = gringotts$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_gringotts_OBJECTS = gringotts.$(OBJEXT) grg_widgets.$(OBJEXT) \ grg_entries.$(OBJEXT) grg_entries_vis.$(OBJEXT) \ grg_list.$(OBJEXT) grg_menus.$(OBJEXT) grg_prefs.$(OBJEXT) \ grg_prefs_io.$(OBJEXT) grg_pwd.$(OBJEXT) grg_safe.$(OBJEXT) \ grg_recent_dox.$(OBJEXT) grg_popt.$(OBJEXT) grg_pix.$(OBJEXT) \ grg_attachs.$(OBJEXT) grg_xpm.$(OBJEXT) gringotts_OBJECTS = $(am_gringotts_OBJECTS) gringotts_DEPENDENCIES = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(gringotts_SOURCES) DIST_SOURCES = $(gringotts_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GDKPIX_CFLAGS = @GDKPIX_CFLAGS@ GDKPIX_LIBS = @GDKPIX_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GRG_CAP_NAME = @GRG_CAP_NAME@ GRG_FILE_SUBVERSION = @GRG_FILE_SUBVERSION@ GRG_NAME = @GRG_NAME@ GRG_VERSION = @GRG_VERSION@ GTK2_CFLAGS = @GTK2_CFLAGS@ GTK2_LIBS = @GTK2_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBGRG_CFLAGS = @LIBGRG_CFLAGS@ LIBGRG_LIBS = @LIBGRG_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POFILES = @POFILES@ POPT = @POPT@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = \ @DEFS@ @GTK2_CFLAGS@ @GDKPIX_CFLAGS@ @LIBGRG_CFLAGS@ \ -DG_LOG_DOMAIN=\"gringotts\" \ -DLOCALEDIR=\"$(datadir)/locale\" \ -DDOCDIR=\"$(docdir)\" \ -DG_DISABLE_DEPRECATED \ -DGDK_PIXBUF_DISABLE_DEPRECATED \ -DGDK_DISABLE_DEPRECATED \ -Wpointer-arith \ -Werror-implicit-function-declaration -Wstrict-prototypes -Wall gringotts_SOURCES = \ gringotts.c gringotts.h \ grg_widgets.c grg_widgets.h \ grg_entries.c grg_entries.h \ grg_entries_vis.c grg_entries_vis.h \ grg_list.c grg_list.h \ grg_menus.c grg_menus.h \ grg_prefs.c grg_prefs.h \ grg_prefs_io.c grg_prefs_io.h \ grg_pwd.c grg_pwd.h \ grg_safe.c grg_safe.h \ grg_recent_dox.c grg_recent_dox.h \ grg_popt.c grg_popt.h \ grg_pix.c grg_pix.h \ grg_attachs.c grg_attachs.h \ grg_xpm.c \ grg_defs.h gringotts_LDADD = @POPT@ @GTK2_LIBS@ @GDKPIX_LIBS@ @LIBGRG_LIBS@ all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) gringotts$(EXEEXT): $(gringotts_OBJECTS) $(gringotts_DEPENDENCIES) @rm -f gringotts$(EXEEXT) $(LINK) $(gringotts_OBJECTS) $(gringotts_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_attachs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_entries.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_entries_vis.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_menus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_pix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_popt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_prefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_prefs_io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_pwd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_recent_dox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_safe.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_widgets.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grg_xpm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gringotts.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` 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; nonemtpy = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(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; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-binPROGRAMS install-exec-local install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-binPROGRAMS install-exec-local: strip $(DESTDIR)$(bindir)/gringotts chmod u+s $(DESTDIR)$(bindir)/gringotts # 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: gringotts-1.2.10/src/grg_attachs.c000066400000000000000000000250601201055014300170260ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_attachs.c - functions to manage attachments * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include #include "grg_defs.h" #include "grg_entries.h" #include "gringotts.h" #include "grg_widgets.h" #include "grg_safe.h" #include "grg_attachs.h" gint current_attach_ID; #ifdef ATTACH_LIMIT #define ATT_SIZE_MAX 2057152 static guint total_size = 0; #endif gint grg_attach_file (gchar * path, GtkWidget * parent) { GtkWidget *wait; GList *ceal = ((struct grg_entry *) current->data)->attach; /*Current Entry Attachment List*/ struct grg_attachment *newatt; gint fd, ID; glong fdim; gchar *comment; void *data; struct stat info; if (!ceal) ID = 0; else ID = ((struct grg_attachment *) (g_list_last (ceal))->data)-> ID + 1; fd = grg_safe_open (path); if (fd < 3) { grg_msg (_("Cannot open file to attach."), GTK_MESSAGE_ERROR, parent); return -1; } if (fd == GRG_OPEN_FILE_IRREGULAR) { grg_msg (_("Only regular files can be attached."), GTK_MESSAGE_ERROR, parent); return -1; } fstat (fd, &info); fdim = info.st_size; #ifdef ATTACH_LIMIT if (total_size + fdim > ATT_SIZE_MAX) { grg_msg (_ ("Sorry, currently you can attach files only up to 2 Mb"), GTK_MESSAGE_ERROR, parent); close (fd); return -1; } #endif comment = grg_input_dialog (_("Enter comment"), _ ("Please enter a comment for this\nfile (max. 32 chars)"), "", FALSE, parent); if (!comment) { close (fd); return -1; } if (STR_EQ (comment, "")) comment = g_strdup (_("none")); newatt = (struct grg_attachment *) grg_malloc (sizeof (struct grg_attachment)); newatt->ID = ID; newatt->filedim = fdim; newatt->filename = g_path_get_basename (path); newatt->comment = comment; newatt->pointer = grg_tmpfile_gen (gctx); wait = grg_wait_msg (_("attaching"), parent); data = mmap (NULL, newatt->filedim, PROT_READ, MAP_PRIVATE, fd, 0); if (grg_tmpfile_write (gctx, newatt->pointer, data, newatt->filedim) < 0) { gtk_widget_destroy (wait); grg_msg (_("Cannot encode tempfile."), GTK_MESSAGE_ERROR, parent); munmap (data, newatt->filedim); close (fd); GRGFREE (newatt, sizeof (struct grg_attachment)); return -1; } munmap (data, newatt->filedim); close (fd); gtk_widget_destroy (wait); ((struct grg_entry *) current->data)->attach = g_list_append (ceal, newatt); #ifdef ATTACH_LIMIT total_size += fdim; #endif return ID; } gint grg_attach_content (void *cont, glong fdim, gchar * fname, gchar * comment) { GList *ceal = ((struct grg_entry *) current->data)->attach; struct grg_attachment *newatt; gint ID; if (!ceal) ID = 0; else ID = ((struct grg_attachment *) (g_list_last (ceal))->data)-> ID + 1; newatt = (struct grg_attachment *) grg_malloc (sizeof (struct grg_attachment)); newatt->ID = ID; newatt->filedim = fdim; newatt->filename = g_strdup (fname); newatt->comment = g_strdup (comment); newatt->pointer = grg_tmpfile_gen (gctx); if (grg_tmpfile_write (gctx, newatt->pointer, cont, newatt->filedim) < 0) { GRGFREE (newatt, sizeof (struct grg_attachment)); return -1; } ((struct grg_entry *) current->data)->attach = g_list_append (ceal, newatt); #ifdef ATTACH_LIMIT total_size += fdim; #endif return ID; } gint grg_get_content (struct grg_attachment * att, void **cont, GtkWidget * parent) { GRG_TMPFILE tmpf = att->pointer; if (grg_tmpfile_read (gctx, tmpf, (unsigned char **) cont, NULL) < 0) { if (parent) grg_msg (_("Cannot decode tempfile."), GTK_MESSAGE_ERROR, parent); return FALSE; } return TRUE; } void grg_attachment_free (gpointer att, gpointer user_data) { GRGAFREE (((struct grg_attachment *) att)->filename); GRGAFREE (((struct grg_attachment *) att)->comment); grg_tmpfile_close (gctx, ((struct grg_attachment *) att)->pointer); GRGFREE (att, sizeof (struct grg_attachment)); } void grg_remove_attachment (void) { GList *tmp = ((struct grg_entry *) current->data)->attach; while (tmp && ((struct grg_attachment *) tmp->data)->ID != current_attach_ID) tmp = tmp->next; if (!tmp) return; ((struct grg_entry *) current->data)->attach = g_list_remove_link (((struct grg_entry *) current->data)-> attach, tmp); #ifdef ATTACH_LIMIT total_size -= ((struct grg_attachment *) tmp->data)->filedim; #endif grg_attachment_free ((struct grg_attachment *) tmp->data, NULL); g_list_free_1 (tmp); return; } void grg_attach_list_free (GList * ceal) { g_list_foreach (ceal, grg_attachment_free, NULL); g_list_free (ceal); current_attach_ID = -1; #ifdef ATTACH_LIMIT total_size = 0; #endif } gboolean grg_save_attachment (gchar * path, GtkWidget * parent) { GtkWidget *wait; GList *tmp = ((struct grg_entry *) current->data)->attach; GRG_TMPFILE tmpf; guchar *mem; gint fd; glong memDim; while (tmp && ((struct grg_attachment *) tmp->data)->ID != current_attach_ID) tmp = tmp->next; if (!tmp) return FALSE; tmpf = ((struct grg_attachment *) tmp->data)->pointer; wait = grg_wait_msg (_("saving"), parent); if (grg_tmpfile_read (gctx, tmpf, &mem, &memDim) < 0) { gtk_widget_destroy (wait); grg_msg (_("Cannot decode tempfile."), GTK_MESSAGE_ERROR, parent); return FALSE; } fd = open (path, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR); if (fd < 3) { gtk_widget_destroy (wait); grg_msg (_("Cannot create file, or file already existent."), GTK_MESSAGE_ERROR, parent); GRGFREE (mem, memDim); close (fd); return FALSE; } write (fd, mem, memDim); GRGFREE (mem, memDim); close (fd); gtk_widget_destroy (wait); return TRUE; } void grg_info_attachment (GtkWidget * parent) { GList *tmp = ((struct grg_entry *) current->data)->attach; struct grg_attachment *att; gchar *msg; while (tmp && ((struct grg_attachment *) tmp->data)->ID != current_attach_ID) tmp = tmp->next; if (!tmp) return; att = (struct grg_attachment *) tmp->data; msg = g_strdup_printf ("%s:\n %s\n\n%s:\n %ld %s\n\n%s:\n %s", _("File name"), att->filename, _("Dimension"), att->filedim, _("bytes"), _("Comment"), att->comment); grg_msg (msg, GTK_MESSAGE_INFO, parent); GRGAFREE (msg); } /*true if the action gets performed*/ gboolean grg_attachment_change_comment (GtkWidget * parent) { GList *tmp = ((struct grg_entry *) current->data)->attach; struct grg_attachment *att; gchar *comment; while (tmp && ((struct grg_attachment*) tmp->data)->ID != current_attach_ID) tmp = tmp->next; if (!tmp) return FALSE; att = (struct grg_attachment *) tmp->data; comment = grg_input_dialog (_("Enter comment"), _("Please enter a comment for this\nfile (max. 32 chars)"), att->comment, FALSE, parent); if (!comment) return FALSE; if (STR_EQ (comment, "")) comment = g_strdup (_("none")); GRGAFREE (att->comment); att->comment = comment; return TRUE; } static void set_ID (gpointer ignore, gpointer void_combo_attach) { GtkComboBox * combo_attach; GtkTreeIter iter; combo_attach = (GtkComboBox *)void_combo_attach; if (gtk_combo_box_get_active_iter (combo_attach, &iter)) { GValue value = { 0, }; gtk_tree_model_get_value (gtk_combo_box_get_model (combo_attach), &iter, ATTACHMENT_ID, &value); current_attach_ID = g_value_get_int (&value); } } static gchar * gen_index_string (const gchar * fname, const glong dim) { gchar *nfn, *u, *fmt, *ret; gfloat fdim = dim; if (strlen (fname) > 10) nfn = g_strdup_printf ("%.10s...", fname); else nfn = g_strdup (fname); if (fdim < 1024) { u = _("bytes"); fmt = "%s (%.0f %s)"; } else { fdim /= 1024; if (fdim < 1024) { u = _("Kb"); fmt = "%s (%.0f %s)"; } else { fdim /= 1024; u = _("Mb"); fmt = "%s (%.2f %s)"; } } ret = g_strdup_printf (fmt, nfn, fdim, u); GRGAFREE (nfn); return ret; } void grg_attachment_fill_combo_box (GtkComboBox * combo_attach) { GList *ceal; if (current) ceal = ((struct grg_entry *) current->data)->attach; else ceal = NULL; if (!ceal) { GtkTreeIter iter; GtkTreeModel *model; model = gtk_combo_box_get_model(combo_attach); gtk_list_store_clear (GTK_LIST_STORE (model)); gtk_list_store_append (GTK_LIST_STORE (model), &iter); gtk_list_store_set (GTK_LIST_STORE (model), &iter, ATTACHMENT_TITLE, _(""), ATTACHMENT_ID, (-1), -1 ); gtk_combo_box_set_active_iter (combo_attach, &iter); gtk_widget_set_sensitive (GTK_WIDGET (combo_attach), FALSE); current_attach_ID = -1; } else { GtkTreeIter iter; GtkTreeModel *model; model = gtk_combo_box_get_model(combo_attach); gtk_list_store_clear (GTK_LIST_STORE (model)); current_attach_ID = ((struct grg_attachment *) ceal->data)->ID; while (ceal) { struct grg_attachment *att = (struct grg_attachment *) ceal->data; gchar *lbl; lbl = gen_index_string (att->filename, att->filedim); gtk_list_store_append (GTK_LIST_STORE (model), &iter); gtk_list_store_set (GTK_LIST_STORE (model), &iter, ATTACHMENT_TITLE, lbl, ATTACHMENT_ID, (att->ID), -1 ); GRGAFREE (lbl); ceal = ceal->next; } g_signal_connect (G_OBJECT (combo_attach), "changed", G_CALLBACK (set_ID), (gpointer)combo_attach); gtk_widget_set_sensitive (GTK_WIDGET (combo_attach), TRUE); } } gringotts-1.2.10/src/grg_attachs.h000066400000000000000000000031471201055014300170350ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_attachs.h - header file for grg_attachs.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_ATTACHS_H #define GRG_ATTACHS_H #include gint current_attach_ID; gint grg_attach_file (gchar * path, GtkWidget * parent); void grg_remove_attachment (void); gint grg_attach_content (void *cont, glong fdim, gchar * fname, gchar * comment); gint grg_get_content (struct grg_attachment *att, void **cont, GtkWidget * parent); gboolean grg_save_attachment (gchar * path, GtkWidget * parent); void grg_info_attachment (GtkWidget * parent); void grg_attach_list_free (GList * ceal); enum { ATTACHMENT_TITLE, ATTACHMENT_ID }; void grg_attachment_fill_combo_box (GtkComboBox * combo_attach); gboolean grg_attachment_change_comment (GtkWidget * parent); #endif gringotts-1.2.10/src/grg_defs.h000066400000000000000000000060231201055014300163230ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_defs.h - various declarations * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_DEFS_H #define GRG_DEFS_H #include #include #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #define _(String) \ gettext (String) #define GRGFREE(mem, dim) \ grg_free (gctx, mem, dim) #define GRGAFREE(mem) \ grg_free (gctx, mem, -1) #define STR_EQ(s1, s2) \ (strcmp (s1, s2) == 0) /* mimick the behavour of isatty () if system doesn't have it but has ttyname () */ #ifndef HAVE_ISATTY #ifdef HAVE_TTYNAME #define isatty(fd) \ (ttyname(fd) != NULL) #define HAVE_ISATTY 1 #endif #endif /*limits for preferences*/ #define EXP_TIME_MIN 1 #define EXP_TIME_MAX 730 #define EXP_TIME_DEF 30 #define WIPE_PASSES_MIN 1 #define WIPE_PASSES_MAX 32 #define WIPE_PASSES_DEF 8 /*file descriptors*/ #define STDIN 0 #define STDOUT 1 #define STDERR 2 /*time for the dialog to be redrawn*/ #define GRG_VISUAL_LATENCY 333 /*ms*/ /*time for the splash screen display*/ #define GRG_SPLASH_TIMEOUT 1750 /*ms*/ /*errors in grg_safe_open*/ #define GRG_OPEN_FILE_NOT_FOUND -171 #define GRG_OPEN_FILE_IRREGULAR -172 #define GRG_OPEN_SECURITY_FAULT -173 /*types of entry*/ #define SIMPLE_ENTRY 0 #define STRUCT_ENTRY 1 /*models an entry item*/ struct grg_entry { gchar *entryID; gchar *entryBody; GList *attach; }; /*models an attached file*/ struct grg_attachment { gint ID; gchar *filename; glong filedim; gchar *comment; GRG_TMPFILE pointer; }; /*response*/ typedef enum { GRG_YES, GRG_NO, GRG_CANCEL } grg_response; /*saveability*/ typedef enum { GRG_SAVE_INACTIVE, GRG_SAVE_ACTIVE, GRG_SAVE_QUERY } grg_saveable; /*cut/copy/paste*/ typedef enum { GRG_CUT, GRG_COPY, GRG_PASTE } grg_clip_action; /*returned OK*/ #define GRG_OK 0 /*error*/ #define GRG_READ_INVALID_CHARSET_ERR -101 /*interface-specific constants*/ #define GRG_PAD 4 /*internal encryption algorithm*/ #define SESSION_ALGO MCRYPT_RIJNDAEL_128 /*suffix to Gringotts files*/ #define SUFFIX ".grg" #define SUFFIX_LEN 4 /*suffix to add to backup files*/ #define BACKUP_SUFFIX ".bak" /*direction to move to*/ #define GRG_MV_FIRST 1 #define GRG_MV_NEXT 2 #define GRG_MV_PREV 3 #define GRG_MV_LAST 4 #endif gringotts-1.2.10/src/grg_entries.c000066400000000000000000000372121201055014300170520ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_entries.c - functions to manage the GList of Gringotts' entries * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include "grg_defs.h" #include "gringotts.h" #include "grg_prefs.h" #include "grg_safe.h" #include "grg_widgets.h" #include "grg_recent_dox.h" #include "grg_attachs.h" #include static GList *entries = NULL; GList *current = NULL; static gchar *serialized; static gint pos_to_restore; static gboolean newer_data = FALSE; static gchar *afname, *afcomment; /** * meta_free: * @data: the callback's data * @user_data: the callback's user-defined data * * Frees a single node. Used only by grg_entries_free() */ static void meta_free (gpointer data, gpointer user_data) { struct grg_entry *entry = (struct grg_entry *) data; GRGAFREE (entry->entryID); entry->entryID = NULL; GRGAFREE (entry->entryBody); entry->entryBody = NULL; grg_attach_list_free (entry->attach); entry->attach = NULL; g_free (entry); entry = NULL; } /** * grg_entries_append: * @ID: the title of the new entry * * Appends a new entry to the list */ void grg_entries_append (void) { struct grg_entry *entry; entry = grg_malloc (sizeof (struct grg_entry)); entry->entryID = g_strdup (""); entry->entryBody = g_strdup (""); entry->attach = NULL; entries = g_list_append (entries, entry); current = g_list_last (entries); } /** * grg_entries_remove: * * Removes the current entry and frees it */ void grg_entries_remove (void) { gint pos; if (!current) return; pos = g_list_position (entries, current); meta_free (current->data, NULL); entries = g_list_remove_link (entries, current); g_list_free_1 (current); current = g_list_nth (entries, pos); if (!current) current = g_list_nth (entries, pos - 1); } /** * grg_entries_is_first: * * Tells if the current entry is the first one * * Returns: TRUE if true, FALSE if false. */ gboolean grg_entries_is_first (void) { if (!current) return TRUE; if (!current->prev) return TRUE; return FALSE; } /** * grg_entries_is_last: * * Tells if the current entry is the last one * * Returns: TRUE if true, FALSE if false. */ gboolean grg_entries_is_last (void) { if (!current) return TRUE; if (!current->next) return TRUE; return FALSE; } /** * grg_entries_is_empty: * * Tells if the current list is empty * * Returns: TRUE if true, FALSE if false. */ gboolean grg_entries_is_empty (void) { return (entries == NULL); } /** * grg_entries_first: * * Goes to the first entry */ void grg_entries_first (void) { current = g_list_first (entries); } /** * grg_entries_prev: * * Goes to the previous entry */ void grg_entries_prev (void) { if (current->prev) current = g_list_previous (current); } /** * grg_entries_next: * * Goes to the next entry */ void grg_entries_next (void) { if (current->next) current = g_list_next (current); } /** * grg_entries_last: * * Goes to the last entry */ void grg_entries_last (void) { current = g_list_last (entries); } /** * grg_entries_nth: * @pos: the position to go to * * Goes to the specified entry, if possible */ void grg_entries_nth (gint pos) { current = g_list_nth (entries, pos); } /** * grg_entries_position: * * Tells the position of the current entry in the list * * Returns: a gint with the position */ gint grg_entries_position (void) { if (!current) return -1; return g_list_position (entries, current); } /** * grg_entries_raise * * Shifts one position up */ void grg_entries_raise (void) { gpointer ent; if (!current->prev) return; ent = current->data; current->data = current->prev->data; current->prev->data = ent; } /** * grg_entries_sink * * Shifts one position down */ void grg_entries_sink (void) { gpointer ent; if (!current->next) return; ent = current->data; current->data = current->next->data; current->next->data = ent; } /** * grg_entries_get_ID * * Returns the title of the current entry. * * Returns: a gchar* with the title (NOT a copy), or NULL if the list is empty */ gchar * grg_entries_get_ID (void) { if (current) return ((struct grg_entry *) current->data)->entryID; return NULL; } /** * grg_entries_get_Body * * Returns the body text of the current entry. * * Returns: a gchar* with the text, or NULL if the list is empty */ gchar * grg_entries_get_Body (void) { if (current) return ((struct grg_entry *) current->data)->entryBody; return NULL; } static void grg_entries_set_ID_asis (gchar * ID) { if (current) { GRGAFREE (((struct grg_entry *) current->data)->entryID); ((struct grg_entry *) current->data)->entryID = ID; } else GRGAFREE (ID); } /** * grg_entries_set_ID * @ID: the text to store * * Stores the given title in the current entry. */ void grg_entries_set_ID (const gchar * ID) { if (ID) grg_entries_set_ID_asis (g_strdup (ID)); } static void grg_entries_set_Body_asis (gchar * Body) { if (current) { GRGAFREE (((struct grg_entry *) current->data)->entryBody); ((struct grg_entry *) current->data)->entryBody = Body; } else GRGAFREE (Body); } /** * grg_entries_set_Body * @Body: the text to store * * Stores the given text as the body of the current entry. */ void grg_entries_set_Body (const gchar * Body) { if (Body) grg_entries_set_Body_asis (g_strdup (Body)); } /** * grg_entries_free: * * Deletes and frees all the list */ void grg_entries_free (void) { if (!entries) return; g_list_foreach (entries, meta_free, NULL); g_list_free (entries); entries = NULL; current = NULL; } static void meta_print (gpointer data, gpointer user_data) { static int i = 0; /*it's used only for one call of grg_entries_print; it works only if so*/ int j = GPOINTER_TO_UINT (user_data); struct grg_entry *entry = (struct grg_entry *) data; g_print (" **********\n%d: %s\n **********\n\n", (j == 0 ? ++i : j), entry->entryID); g_print ("%s\n\n", entry->entryBody); } guint grg_entries_n_el (void); void grg_entries_print (gint ennum, gchar * enpage) { gchar *utfenpage = NULL; gsize ulen; if (ennum < 0 && enpage == NULL) { g_list_foreach (entries, meta_print, GUINT_TO_POINTER (0)); return; } if (ennum > -1) { if (ennum > grg_entries_n_el () || ennum == 0) report_err (_("Invalid entry number"), 0, 1, NULL); /*and quit*/ grg_entries_nth (ennum - 1); meta_print (current->data, GUINT_TO_POINTER (ennum)); return; } grg_entries_first (); if (!mapIsUTF) utfenpage = g_locale_to_utf8 (enpage, -1, NULL, &ulen, NULL); while (current) { if (STR_EQ (grg_entries_get_ID (), mapIsUTF ? enpage : utfenpage)) meta_print (current->data, GUINT_TO_POINTER (grg_entries_position () + 1)); current = current->next; } if (!mapIsUTF) GRGFREE (utfenpage, ulen); } /** * meta_save: * @data: the callback's data * @user_data: the callback's user-defined data * * "serializes" a single node. Used only by grg_entries_save() */ static void meta_save (gpointer data, gpointer user_data) { struct grg_entry *entry = (struct grg_entry *) data; gchar *eBody, *eID, *res, *attachments; gint dim; GList *attlist; dim = strlen (entry->entryBody); eBody = g_markup_escape_text (entry->entryBody, dim); dim = strlen (entry->entryID); eID = g_markup_escape_text (entry->entryID, dim); attlist = entry->attach; attachments = g_strdup (""); #define XML_ATT_FORMAT "%s\n%s" while (attlist) { struct grg_attachment *att = (struct grg_attachment *) attlist->data; void * void_origfile; gchar *origfile, *b64file, *append; grg_get_content (att, &void_origfile, NULL); origfile = (gchar*)void_origfile; b64file = (gchar*)grg_encode64 ((guchar*)origfile, att->filedim, NULL); GRGFREE (void_origfile, att->filedim); append = g_strdup_printf (XML_ATT_FORMAT, attachments, att->filename, att->comment, b64file); GRGAFREE (b64file); GRGAFREE (attachments); attachments = append; attlist = attlist->next; } #define XML_ENTRY_FORMAT "%s\n\n%s\n%s%s\n" res = g_strdup_printf (XML_ENTRY_FORMAT, serialized, eID, eBody, attachments); GRGAFREE (eBody); eBody = NULL; GRGAFREE (eID); eID = NULL; GRGAFREE (serialized); serialized = g_strdup (res); GRGAFREE (res); res = NULL; } /** * grg_entries_save: * @file: the path of the file to save * @key: the keyring to use * * Saves the list into an encrypted file * * Returns: GRG_OK if all is well, an error if not */ gint grg_entries_save (gchar * file, GRG_KEY key, GtkWidget * parent) { gint err, pos = grg_entries_position (); GtkWidget *wait; if (pwdbirth == 0) pwdbirth = time (NULL); wait = grg_wait_msg (_("assembling data"), parent); serialized = g_strdup_printf ("" GRG_FILE_SUBVERSION "" "\n%d" "\n%ld", pos, pwdbirth); g_list_foreach (entries, meta_save, NULL); grg_wait_message_change_reason (wait, _("saving")); err = grg_encrypt_file (gctx, key, (guchar*)file, (guchar*)serialized, strlen (serialized)); grg_wait_message_change_reason (wait, _("cleaning up")); GRGAFREE (serialized); serialized = NULL; gtk_widget_destroy (wait); if (err != GRG_OK) return err; grg_recent_dox_push (file); return GRG_OK; } /*the letter denoting the field is the first of the tag text*/ #define VERS_FIELD 's' #define TITLE_FIELD 't' #define BODY_FIELD 'b' #define POSITION_FIELD 'p' #define IGNORE_FIELD 'e' #define REGEN_PWD_FIELD 'r' #define ATTACH_FIELD 'a' static void get_tag (GMarkupParseContext * context, const gchar * element_name, const gchar ** attribute_names, const gchar ** attribute_values, gpointer user_data, GError ** error) { *((gchar *) user_data) = element_name[0]; if (element_name[0] == 'a') { afname = g_strdup (attribute_values[0]); afcomment = g_strdup (attribute_values[1]); } } static void trash_tag (GMarkupParseContext * context, const gchar * element_name, gpointer user_data, GError ** error) { *((gchar *) user_data) = IGNORE_FIELD; } static void compose_entry (GMarkupParseContext * context, const gchar * text, gsize text_len, gpointer user_data, GError ** error) { switch (*((gchar *) user_data)) { case TITLE_FIELD: grg_entries_append (); grg_entries_set_ID (text); break; case BODY_FIELD: grg_entries_set_Body (text); break; case POSITION_FIELD: pos_to_restore = atoi (text); break; case VERS_FIELD: newer_data = (text[0] > GRG_FILE_SUBVERSION[0]); break; case REGEN_PWD_FIELD: pwdbirth = atol (text); break; case ATTACH_FIELD: { guint dim; gchar *decoded = (gchar*)grg_decode64 ((guchar*)text, text_len, &dim); grg_attach_content (decoded, dim, afname, afcomment); GRGFREE (decoded, dim); GRGAFREE (afname); afname = NULL; GRGAFREE (afcomment); afcomment = NULL; } break; } } /** * grg_entries_load_from_string: * @str: the string which contains the data, XML (file format 3) * * "de-serializes" a (XML) string into an entry list */ void grg_entries_load_from_string (gchar * str, GtkWidget * parent, gboolean X) { gint end; gchar field; GMarkupParser *context; GMarkupParseContext *parser; GError *err = NULL; grg_entries_free (); context = (GMarkupParser *) grg_malloc (sizeof (GMarkupParser)); context->start_element = get_tag; context->end_element = trash_tag; context->text = compose_entry; context->passthrough = NULL; context->error = NULL; parser = g_markup_parse_context_new (context, 0, (gpointer) & field, NULL); end = strlen (str); g_markup_parse_context_parse (parser, str, end, &err); if (!err) g_markup_parse_context_end_parse (parser, &err); g_markup_parse_context_free (parser); if (err) g_error_free (err); g_free (context); grg_entries_nth (pos_to_restore); if (newer_data) report_err (_ ("The file has been created with a newer version of Gringotts. " "If you save it using this one, some formatting can be lost."), X, 0, parent); } /** * grg_load_wrapper: * @txt: a pointer to a byte sequence to store the data in. It must be freed after use! * @pwd: the password to decode data * @fd: a file pointer to read data from * * Wrapper to grg_load_crypted, to add UTF-8 validation. * * Returns: 0 if OK; an error code otherwise (see libgringotts' docs) */ gint grg_load_wrapper (gchar ** txt, GRG_KEY key, const gint fd, const gchar * file) { gint err; glong len = 0; guchar *unsigned_txt; /* I'm doing this assignment in and out because one cannot guarantee that * pointers of different types will be the same. * */ unsigned_txt = (guchar*)*txt; err = grg_decrypt_file_direct (gctx, key, fd, &unsigned_txt, &len); *txt = (gchar*)unsigned_txt; grg_prefs_update (); if (err != GRG_OK) return err; if (!g_utf8_validate (*txt, len, NULL)) return GRG_READ_INVALID_CHARSET_ERR; grg_recent_dox_push (file); return GRG_OK; } /** * grg_entries_n_el: * * Tells how many elements does the list contain * * Returns: a guint with the elements' number */ guint grg_entries_n_el (void) { if (entries) return g_list_length (entries); else return 0; } /** * grg_entries_n_att: * * Tells how many files are attached to the current entry * * Returns: a guint with the files' number */ guint grg_entries_n_att (void) { if (current) return g_list_length (((struct grg_entry *) current->data)-> attach); else return 0; } /** * grg_entries_find: * @needle: the text to find * @offset: the offset to search from * @only_current: if TRUE, consider only the current entry * @case_sens: wheter to be case sensitive or not * * Searches for a text in the entries. * * Returns: the offset of the found text, -1 if not found */ glong grg_entries_find (gchar * needle, glong offset, gboolean only_current, gboolean case_sens) { gchar *text = grg_entries_get_Body (), *start = g_utf8_offset_to_pointer (text, offset), *occur; glong result; if (case_sens) { occur = g_strstr_len (start, strlen (start), needle); if (occur) result = g_utf8_pointer_to_offset (text, occur) + offset; else result = -1; } else { gchar *tok1, *tok2; gulong len; tok1 = g_utf8_casefold (start, -1); tok2 = g_utf8_casefold (needle, -1); len = strlen (tok1); occur = g_strstr_len (tok1, len, tok2); if (occur) result = g_utf8_pointer_to_offset (tok1, occur) + offset; else result = -1; GRGFREE (tok1, len); tok1 = NULL; GRGAFREE (tok2); tok2 = NULL; } if (result < 0) { gint cur = grg_entries_position (), ret; if (only_current) return -1; if (grg_entries_is_last ()) return -1; else grg_entries_next (); ret = grg_entries_find (needle, 0, FALSE, case_sens); if (ret == -1) grg_entries_nth (cur); return ret; } /* FIXME: this update() is quite misplaced, it's not meant to be called directly */ update(); return result; } gringotts-1.2.10/src/grg_entries.h000066400000000000000000000063401201055014300170550ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_entries.h - header file for grg_entries.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_ENTRIES_H #define GRG_ENTRIES_H /* current element. */ /* MUST BE USED ONLY BY grg_attachs.h !!!! */ GList *current; /* Appends a new entry to the list */ void grg_entries_append (void); /* Removes the current entry and frees it */ void grg_entries_remove (void); /* Tells if the current entry is the first one */ gboolean grg_entries_is_first (void); /* Tells if the current entry is the last one */ gboolean grg_entries_is_last (void); /* Tells if the current list is empty */ gboolean grg_entries_is_empty (void); /* Goes to the first entry */ void grg_entries_first (void); /* Goes to the previous entry */ void grg_entries_prev (void); /* Goes to the next entry */ void grg_entries_next (void); /* Goes to the last entry */ void grg_entries_last (void); /* Goes to the specified entry, if possible */ void grg_entries_nth (gint pos); /* Tells the position of the current entry in the list */ gint grg_entries_position (void); /* Shifts one position up */ void grg_entries_raise (void); /* Shifts one position down */ void grg_entries_sink (void); /* Tells how many elements does the list contain */ guint grg_entries_n_el (void); /* Tells how many files are attached to the current entry */ guint grg_entries_n_att (void); /* Returns the title of the current entry. */ gchar *grg_entries_get_ID (void); /* Returns the body text of the current entry. */ gchar *grg_entries_get_Body (void); /* Stores the given title in the current entry. */ void grg_entries_set_ID (const gchar * ID); /* Stores the given text as the body of the current entry. */ void grg_entries_set_Body (const gchar * Body); /* Deletes and frees all the list */ void grg_entries_free (void); /* Prints the entries to cmdline */ void grg_entries_print (gint ennum, gchar * enpage); /* Saves the list into an encrypted file */ gint grg_entries_save (gchar * file, GRG_KEY key, GtkWidget * parent); /* "de-serializes" a string into an entry list */ void grg_entries_load_from_string (gchar * str, GtkWidget * parent, gboolean X); /* Wrapper to file-related functions, to add UTF-8 handling */ gint grg_load_wrapper (gchar ** txt, GRG_KEY key, const gint fd, const gchar * file); /* Searches for a text in the entries. */ glong grg_entries_find (gchar * needle, glong offset, gboolean only_current, gboolean case_sens); #endif gringotts-1.2.10/src/grg_entries_vis.c000066400000000000000000000327271201055014300177410ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_entries_vis.c - generate and manage the widget for entry contents * Authors: Germano Rizzo, Nicholas Pouillon * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "grg_defs.h" #include "grg_entries_vis.h" #include "gringotts.h" #include "grg_entries.h" #include "grg_prefs.h" #include "grg_widgets.h" #include /* Properties */ enum { PROP_0, PROP_TABS_WIDTH }; #define MAX_TAB_WIDTH 32 #define DEFAULT_TAB_WIDTH 8 static GObjectClass *parent_class = NULL; static GtkClipboard *clip = NULL; static gboolean isThereAClip = FALSE; static gchar *needle = NULL; /************** * Sorry for the many commented pieces of code. It's work in progress... *************/ static int current_mode = SIMPLE_ENTRY; static GtkTextBuffer *entryBuf = NULL; #if 0 static GtkListStore *mdl = NULL; #endif static GtkCustomTextView *simpleSheet = NULL/*, *structSheet = NULL*/; static gulong simpleSigID = 0/*, structSigID = 0*/; static void gtk_custom_text_view_init (GtkCustomTextView *view); static void gtk_custom_text_view_class_init (GtkCustomTextViewClass *klass); static guint gtk_custom_text_view_get_tabs_width (GtkCustomTextView *klass); static void gtk_custom_text_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void gtk_custom_text_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); void gtk_custom_text_view_set_tabs_width (GtkCustomTextView *view, guint width); void gtk_source_view_set_tabs_width (GtkCustomTextView *view, guint width); GType gtk_custom_text_view_get_type (void); static gboolean set_tab_stops_internal (GtkCustomTextView *view); static gint calculate_real_tab_width (GtkCustomTextView *view, guint tab_size, gchar c); void entries_vis_init (void){ /*GtkTreeViewColumn *c1, *c2, *c3; GtkCellRenderer *cr1, *cr2, *cr3; */ clip = gtk_clipboard_get (GDK_NONE); if (clip) /*why shouldn't it?*/ isThereAClip = TRUE; entryBuf = gtk_text_buffer_new (NULL); simpleSheet = g_object_new (GTK_TYPE_CUSTOM_TEXT_VIEW, NULL); gtk_text_view_set_buffer (GTK_TEXT_VIEW (simpleSheet), GTK_TEXT_BUFFER (entryBuf)); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (simpleSheet), GTK_WRAP_WORD); simpleSigID = g_signal_connect (G_OBJECT (entryBuf), "changed", G_CALLBACK (meta_saveable), GINT_TO_POINTER (GRG_SAVE_ACTIVE)); /* mdl = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); structSheet = gtk_tree_view_new_with_model (GTK_TREE_MODEL (mdl)); g_object_unref (G_OBJECT (mdl)); cr1=gtk_cell_renderer_text_new (); cr2=gtk_cell_renderer_text_new (); cr3=gtk_cell_renderer_text_new (); c1=gtk_tree_view_column_new_with_attributes ("URL", cr1, "text", 0, NULL); c2=gtk_tree_view_column_new_with_attributes ("UserID", cr2, "text", 1, NULL); c3=gtk_tree_view_column_new_with_attributes ("Password", cr3, "text", 2, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (structSheet), c1); gtk_tree_view_append_column (GTK_TREE_VIEW (structSheet), c2); gtk_tree_view_append_column (GTK_TREE_VIEW (structSheet), c3);*/ } static void gtk_custom_text_view_init (GtkCustomTextView *view) { char* htab_env = getenv("HTAB"); int htab = DEFAULT_TAB_WIDTH; if (htab_env) { int value; char* chk; value = (int)strtol(htab_env, &chk, 10); if (!*chk) { htab = value; } } g_object_set(view, "tabs_width", htab, NULL); } static void gtk_custom_text_view_class_init (GtkCustomTextViewClass *klass) { GObjectClass *object_class; GtkTextViewClass *textview_class; GtkWidgetClass *widget_class; object_class = G_OBJECT_CLASS (klass); textview_class = GTK_TEXT_VIEW_CLASS (klass); parent_class = g_type_class_peek_parent (klass); widget_class = GTK_WIDGET_CLASS (klass); object_class->get_property = gtk_custom_text_view_get_property; object_class->set_property = gtk_custom_text_view_set_property; g_object_class_install_property (object_class, PROP_TABS_WIDTH, g_param_spec_uint ("tabs_width", _("Tabs Width"), _("Tabs Width"), 1, MAX_TAB_WIDTH, DEFAULT_TAB_WIDTH, G_PARAM_READWRITE)); } static guint gtk_custom_text_view_get_tabs_width (GtkCustomTextView *view) { g_return_val_if_fail (view != NULL, FALSE); g_return_val_if_fail (GTK_IS_CUSTOM_TEXT_VIEW (view), FALSE); return view->tabs_width; } void gtk_custom_text_view_set_tabs_width (GtkCustomTextView *view, guint width) { guint save_width; g_return_if_fail (GTK_CUSTOM_TEXT_VIEW (view)); g_return_if_fail (width <= MAX_TAB_WIDTH); g_return_if_fail (width > 0); if (view->tabs_width == width) return; gtk_widget_ensure_style (GTK_WIDGET (view)); save_width = view->tabs_width; view->tabs_width = width; if (set_tab_stops_internal (view)) { g_object_notify (G_OBJECT (view), "tabs_width"); } else { g_warning ("Impossible to set tabs width."); view->tabs_width = save_width; } } GType gtk_custom_text_view_get_type (void) { static GType our_type = 0; if (our_type == 0) { static const GTypeInfo our_info = { sizeof (GtkCustomTextViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gtk_custom_text_view_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof (GtkCustomTextView), 0, /* n_preallocs */ (GInstanceInitFunc) gtk_custom_text_view_init }; our_type = g_type_register_static (GTK_TYPE_TEXT_VIEW, "GtkCustomTextView", &our_info, 0); } return our_type; } static void gtk_custom_text_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtkCustomTextView *view; g_return_if_fail (GTK_IS_CUSTOM_TEXT_VIEW (object)); view = GTK_CUSTOM_TEXT_VIEW (object); switch (prop_id) { case PROP_TABS_WIDTH: gtk_custom_text_view_set_tabs_width (view, g_value_get_uint (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void gtk_custom_text_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtkCustomTextView *view; g_return_if_fail (GTK_IS_CUSTOM_TEXT_VIEW (object)); view = GTK_CUSTOM_TEXT_VIEW (object); switch (prop_id) { case PROP_TABS_WIDTH: g_value_set_uint (value, gtk_custom_text_view_get_tabs_width (view)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static gboolean set_tab_stops_internal (GtkCustomTextView *view) { PangoTabArray *tab_array; gint real_tab_width; real_tab_width = calculate_real_tab_width (view, view->tabs_width, ' '); if (real_tab_width < 0) return FALSE; tab_array = pango_tab_array_new (1, TRUE); pango_tab_array_set_tab (tab_array, 0, PANGO_TAB_LEFT, real_tab_width); gtk_text_view_set_tabs (GTK_TEXT_VIEW (view), tab_array); pango_tab_array_free (tab_array); return TRUE; } static gint calculate_real_tab_width (GtkCustomTextView *view, guint tab_size, gchar c) { PangoLayout *layout; gchar *tab_string; gint tab_width = 0; if (tab_size == 0) return -1; tab_string = g_strnfill (tab_size, c); layout = gtk_widget_create_pango_layout (GTK_WIDGET (view), tab_string); g_free (tab_string); if (layout != NULL) { pango_layout_get_pixel_size (layout, &tab_width, NULL); g_object_unref (G_OBJECT (layout)); tab_width*=2; } else tab_width = -1; return tab_width; } gboolean has_needle (void) { return needle != NULL; } void del_needle (void) { if (!has_needle()) return; GRGAFREE (needle); needle = NULL; } void entries_vis_deinit (void){ if (isThereAClip && grg_prefs_clip_clear_on_quit && !grg_prefs_clip_clear_on_close) gtk_clipboard_clear (clip); del_needle (); } GtkWidget *get_updated_sheet (gboolean hasData){ /*if (current_mode == SIMPLE_ENTRY) {*/ g_signal_handler_block (entryBuf, simpleSigID); gtk_text_buffer_set_text (entryBuf, hasData ? grg_entries_get_Body () : "", -1); g_signal_handler_unblock (entryBuf, simpleSigID); return simpleSheet; /*} else { GtkTreeIter iter; mdl = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); gtk_list_store_append(mdl, &iter); gtk_list_store_set(mdl, &iter, 0, "www.prosa.com", 1, "admin", 2, "nIitnPp", -1); gtk_tree_view_set_model (GTK_TREE_VIEW(structSheet), GTK_TREE_MODEL (mdl)); return structSheet; }*/ } void clear_clipboard (void) { gtk_clipboard_clear (clip); } /** * sync_entry: * * Writes the information stored in the GtkTextBuffer to the * entry structure in memory. To be called whenever a page is * leaved, or saved. */ void sync_entry (void) { static GtkTextIter s, e; gtk_text_buffer_get_bounds (entryBuf, &s, &e); grg_entries_set_Body (gtk_text_buffer_get_text (entryBuf, &s, &e, FALSE)); } /** * cucopa: * @callback_data: unused callback param * @callback_action: action to perform (GRG_CUT, GRG_COPY, GRG_PASTE) * * basic CUT/COPY/PASTE clipboard operation. */ void cucopa (gpointer callback_data, guint callback_action) { switch ((grg_clip_action) callback_action) { case GRG_CUT: gtk_text_buffer_cut_clipboard (entryBuf, clip, TRUE); return; case GRG_COPY: gtk_text_buffer_copy_clipboard (entryBuf, clip); return; case GRG_PASTE: gtk_text_buffer_paste_clipboard (entryBuf, clip, NULL, TRUE); return; default: #ifdef MAINTAINER_MODE g_assert_not_reached (); #endif break; } } /** * find: * @callback_data: TRUE if I have to continue a previous search * * Search operation. */ void find (GtkWidget *widget, gpointer callback_data) { guint again = GPOINTER_TO_UINT(callback_data); static gboolean only_current, case_sens; gint found, offset = 0; gchar *buf; GtkTextIter position; GtkTextMark *cursor, *endsel; GtkWidget *parent = gtk_widget_get_toplevel(widget); /* Save the entry into memory, so if update() is called next it will * be saved. * */ sync_entry(); if (!again) if (!grg_find_dialog (&needle, &only_current, &case_sens, GTK_WINDOW (parent))) return; buf = grg_entries_get_Body (); if (((current_mode == SIMPLE_ENTRY) && GTK_WIDGET_HAS_FOCUS (simpleSheet))/* || ((current_mode == STRUCT_ENTRY) && GTK_WIDGET_HAS_FOCUS (structSheet))*/) { cursor = gtk_text_buffer_get_mark (entryBuf, "insert"); gtk_text_buffer_get_iter_at_mark (entryBuf, &position, cursor); offset = gtk_text_iter_get_offset (&position); } while (TRUE) { found = grg_entries_find (needle, offset, only_current, case_sens); if (found >= 0) { buf = grg_entries_get_Body (); g_signal_handler_block (entryBuf, simpleSigID); gtk_text_buffer_set_text (entryBuf, buf, -1); g_signal_handler_unblock (entryBuf, simpleSigID); /* * To avoid that searching again and again the same text finds * the same portion, we set the cursor AFTER the found text * And this time really do it -- Shlomi Fish * */ cursor = gtk_text_buffer_get_mark (entryBuf, "insert"); gtk_text_buffer_get_iter_at_mark (entryBuf, &position, cursor); endsel = gtk_text_buffer_get_mark (entryBuf, "selection_bound"); gtk_text_iter_set_offset (&position, found + g_utf8_strlen (needle, -1)); gtk_text_buffer_move_mark (entryBuf, cursor, &position); gtk_text_iter_set_offset (&position, found); gtk_text_buffer_move_mark (entryBuf, endsel, &position); /* * Make sure that the text-view window scrolls to * view the current selection. * */ gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (simpleSheet), gtk_text_buffer_get_mark (entryBuf, "insert")); /* * Make sure that the sheet gets focus, this is so * pressing "Find again" consecutively will yield * a second result, as well, as let the user move the * cursor immediately. * */ gtk_widget_grab_focus (GTK_WIDGET (simpleSheet)); break; } else { if (only_current) { grg_msg (_ ("The text searched could not be found!"), GTK_MESSAGE_ERROR, parent); break; } else { if (grg_ask_dialog (_("Wrap around?"), _("Text not found. Continue search from beginning?"), FALSE, parent) == GRG_YES) { grg_entries_first (); /* Call update() now, because we changed the page and * sync_entry() may be called later, which will otherwise * cause the first page to be over-rided with the * info in the current page. * */ update(); offset = 0; continue; } else break; } } } } gringotts-1.2.10/src/grg_entries_vis.h000066400000000000000000000044101201055014300177320ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_entries_vis.h - header file for grg_entries_vis.c * Authors: Germano Rizzo, Nicholas Pouillon * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_ENTRIES_VIS_H #define GRG_ENTRIES_VIS_H typedef struct _GtkCustomTextView GtkCustomTextView; typedef struct _GtkCustomTextViewClass GtkCustomTextViewClass; struct _GtkCustomTextView { GtkTextView parent; guint tabs_width; }; struct _GtkCustomTextViewClass { GtkTextViewClass parent_class; }; #define GTK_TYPE_CUSTOM_TEXT_VIEW (gtk_custom_text_view_get_type()) #define GTK_CUSTOM_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_CUSTOM_TEXT_VIEW, GtkCustomTextView)) #define GTK_CUSTOM_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CUSTOM_TEXT_VIEW, GtkCustomTextViewClass)) #define GTK_IS_CUSTOM_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CUSTOM_TEXT_VIEW)) #define GTK_IS_CUSTOM_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CUSTOM_TEXT_VIEW)) #define GTK_CUSTOM_TEXT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CUSTOM_TEXT_VIEW, GtkCustomTextViewClass)) void entries_vis_init (void); void entries_vis_deinit (void); void sync_entry (void); GtkWidget *get_updated_sheet (gboolean hasData); void cucopa (gpointer callback_data, guint callback_action); void clear_clipboard (void); //Search operation void del_needle (void); gboolean has_needle (void); void find (GtkWidget *widget, gpointer callback_data); #endif gringotts-1.2.10/src/grg_list.c000066400000000000000000000166271201055014300163630ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_list.c - widget used to display the list of entries * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "gringotts.h" #include "grg_entries.h" #include "grg_defs.h" #include "grg_pix.h" #include "grg_widgets.h" enum { COL_INDEX, COL_ID, NUM_ATT, NUM_COL }; static GtkWidget *treeview; static GtkTreeModel *model; /** * create_model: * * Creates the model for the GTK list widget * * Returns: a GtkTreeModel with the desired model */ static GtkTreeModel * create_model (void) { gint i = 0, pos = grg_entries_position (), max = grg_entries_n_el (); GtkListStore *store; GtkTreeIter iter; store = gtk_list_store_new (NUM_COL, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING); grg_entries_first (); for (i = 0; i < max; i++, grg_entries_next ()) { guint nat = grg_entries_n_att (); gchar *snat = (nat == 0) ? g_strdup ("-") : g_strdup_printf ("%d", nat); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COL_INDEX, i + 1, COL_ID, grg_entries_get_ID (), NUM_ATT, snat, -1); g_free (snat); } grg_entries_nth (pos); return GTK_TREE_MODEL (store); } /** * add_columns: * @treeview: the GtkTreeView to add the column to * * Adds a column to a GtkTreeView. */ static void add_columns (GtkTreeView * treeview) { GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkWidget *img_att; GdkPixbuf *pix; renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_(" Index "), renderer, "text", COL_INDEX, NULL); gtk_tree_view_column_set_alignment (column, (gfloat) 0.5); gtk_tree_view_append_column (treeview, column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_(" Title "), renderer, "text", COL_ID, NULL); gtk_tree_view_column_set_alignment (column, (gfloat) 0.5); gtk_tree_view_append_column (treeview, column); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new (); pix = gdk_pixbuf_new_from_xpm_data (clip_xpm); img_att = gtk_image_new_from_pixbuf (pix); gtk_misc_set_alignment (GTK_MISC (img_att), (gfloat) 0.5, (gfloat) 0.0); g_object_unref (G_OBJECT (pix)); gtk_tree_view_column_set_widget (column, img_att); g_object_set (G_OBJECT (renderer), "xalign", (gfloat) 0.5, NULL); /*needed at least in GTK 2.0.6, anyways doing it seems stupid 2 me*/ gtk_widget_show (img_att); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_add_attribute (column, renderer, "text", NUM_ATT); gtk_tree_view_column_set_alignment (column, (gfloat) 0.5); gtk_tree_view_append_column (treeview, column); } /** * get_sel_row_num: * * Gets the number of the selected row * * returns: a gint with the number */ static gint get_sel_row_num (void) { gint ret; GtkTreeSelection *gts = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); GtkTreeIter i; if (!gtk_tree_selection_get_selected (gts, NULL, &i)) return 0; gtk_tree_model_get (model, &i, 0, &ret, -1); return ret - 1; } /** * move_row: * @unused: unused... :-) * @upwards: a pointer encapsulating TRUE if the row has to be moved upwards, else FALSE * * Shifts a row upwards or downwards */ static void move_row (gpointer unused, gpointer upwards) { gint pos = get_sel_row_num (); gboolean up = GPOINTER_TO_INT (upwards); GtkTreePath *path = gtk_tree_path_new (); if (pos == (up ? 0 : (grg_entries_n_el () - 1))) return; grg_entries_nth (pos); if (up) grg_entries_raise (); else grg_entries_sink (); model = create_model (); gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model); gtk_tree_path_append_index (path, pos + (up ? -1 : 1)); gtk_tree_view_set_cursor (GTK_TREE_VIEW (treeview), path, NULL, FALSE); gtk_tree_path_free (path); update_saveable (GRG_SAVE_ACTIVE); } /** * double_click: * * Manages a double click event */ static gboolean double_click (GtkWidget * widget, GdkEventButton * event, gpointer user_data) { gboolean ret = (event->type == GDK_2BUTTON_PRESS); if (ret) gtk_dialog_response (GTK_DIALOG (user_data), GTK_RESPONSE_OK); return ret; } /** * grg_list_run: * * Creates, manages and displays a dialog with the entry list */ void grg_list_run (void) { GtkWidget *dialog, *sw, *tbar, *hbox, *bup, *bdown; GtkTreePath *path = gtk_tree_path_new (); guint res; dialog = gtk_dialog_new_with_buttons (_("Index of entries"), NULL, GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_container_set_border_width (GTK_CONTAINER (dialog), GRG_PAD); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), GRG_PAD); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_ETCHED_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); model = create_model (); treeview = gtk_tree_view_new_with_model (model); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE); gtk_tree_view_set_search_column (GTK_TREE_VIEW (treeview), COL_ID); g_signal_connect (G_OBJECT (treeview), "button-press-event", G_CALLBACK (double_click), (gpointer) dialog); g_object_unref (G_OBJECT (model)); gtk_container_add (GTK_CONTAINER (sw), treeview); add_columns (GTK_TREE_VIEW (treeview)); tbar = gtk_toolbar_new (); gtk_toolbar_set_orientation (GTK_TOOLBAR (tbar), GTK_ORIENTATION_VERTICAL); #if 0 gtk_toolbar_set_icon_size (GTK_TOOLBAR (tbar), GTK_ICON_SIZE_LARGE_TOOLBAR); #endif bup = grg_toolbar_insert_stock (GTK_TOOLBAR (tbar), GTK_STOCK_GO_UP, _("Move up"), (GtkSignalFunc) move_row, GINT_TO_POINTER (TRUE), -1); bdown = grg_toolbar_insert_stock (GTK_TOOLBAR (tbar), GTK_STOCK_GO_DOWN, _("Move down"), (GtkSignalFunc) move_row, GINT_TO_POINTER (FALSE), -1); hbox = gtk_hbox_new (FALSE, GRG_PAD); gtk_box_set_homogeneous (GTK_BOX (hbox), FALSE); gtk_box_pack_start (GTK_BOX (hbox), tbar, FALSE, TRUE, 0); gtk_box_pack_start (GTK_BOX (hbox), sw, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox, TRUE, TRUE, 0); gtk_window_set_default_size (GTK_WINDOW (dialog), 180, 250); gtk_tree_path_append_index (path, grg_entries_position ()); gtk_tree_view_set_cursor (GTK_TREE_VIEW (treeview), path, NULL, FALSE); gtk_tree_path_free (path); gtk_widget_show_all (dialog); res = gtk_dialog_run (GTK_DIALOG (dialog)); if (res == GTK_RESPONSE_OK) grg_entries_nth (get_sel_row_num ()); else grg_entries_nth (0); gtk_widget_destroy (dialog); } gringotts-1.2.10/src/grg_list.h000066400000000000000000000020551201055014300163560ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_list.h - header file for grg_list.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_LIST_H #define GRG_LIST_H /*Creates, manages and displays a dialog with the entry list*/ void grg_list_run (void); #endif gringotts-1.2.10/src/grg_menus.c000066400000000000000000000213471201055014300165320ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_menus.c - builds the menu widget(s) * Author: Nicolas Pouillon, Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include "gringotts.h" #include "grg_menus.h" #include "grg_recent_dox.h" #include "grg_defs.h" #include "grg_safe.h" #include "grg_entries_vis.h" #include "grg_widgets.h" #include #define NEW_MENU_ITEM(var, text, cb, data, parent, img, key, mod) \ var = gtk_image_menu_item_new_with_mnemonic(text); \ gtk_menu_shell_append (GTK_MENU_SHELL (parent), var); \ image = gtk_image_new_from_stock(img, GTK_ICON_SIZE_MENU ); \ gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(var), image ); \ if(key > 0) \ gtk_widget_add_accelerator (var, "activate", accel_group, key, mod, GTK_ACCEL_VISIBLE); \ g_signal_connect (var, "activate", G_CALLBACK(cb), data); #define NEW_FILE_MENU_ITEM(number, text) \ { \ gchar *ufile = g_filename_to_utf8 ((gchar *) text, -1, NULL, NULL, NULL); \ gchar *txt = g_strdup_printf("_%d - %s", number+1, ufile); \ gchar *text_copy = g_strdup(text); \ menu[number] = gtk_menu_item_new_with_mnemonic(txt); \ gtk_menu_shell_insert (GTK_MENU_SHELL (file), menu[number], 9+number); \ g_signal_connect (menu[number], "activate", G_CALLBACK(meta_load_file), text_copy); \ garbage = g_list_append (garbage, text_copy); \ g_free(txt); g_free (ufile); \ } #define NEW_MENU_SEPARATOR(parent) \ gtk_menu_shell_append (GTK_MENU_SHELL (parent), gtk_separator_menu_item_new()); static GtkWidget *file, *menu[GRG_RECENT_LIMIT]; static void faq (void) { grg_display_file (DOCDIR "/FAQ"); } static void readme (void) { grg_display_file (DOCDIR "/README"); } /** * grg_menu_create: * @window: the window to add the menu to * * Makes a menubar, within a handlebox, and returns the GtkWidget * * Returns: the menubar widget */ GtkWidget * grg_menu_create (GtkWidget * window) { /* the single menu item widgets are defined in the grg_menus.h file */ GtkWidget *menubar, *mhandle, *wid; GtkWidget *edit, *nav, *tools, *help; GtkWidget *image; GSList *recent; gint i = 0; GtkAccelGroup *accel_group; accel_group = gtk_accel_group_new (); gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); menubar = gtk_menu_bar_new (); mhandle = gtk_handle_box_new (); gtk_container_add (GTK_CONTAINER (mhandle), menubar); gtk_widget_show (menubar); /* * File menu */ file = gtk_menu_new (); wid = gtk_tearoff_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (file), wid); NEW_MENU_ITEM (bnew, _("_New"), do_new, NULL, file, GTK_STOCK_NEW, GDK_N, GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (file); NEW_MENU_ITEM (bopen, _("_Open"), meta_load, NULL, file, GTK_STOCK_OPEN, GDK_O, GDK_CONTROL_MASK); NEW_MENU_ITEM (bsave, _("_Save"), save, NULL, file, GTK_STOCK_SAVE, GDK_S, GDK_CONTROL_MASK); NEW_MENU_ITEM (bsas, _("Save _As"), meta_save_as, NULL, file, GTK_STOCK_SAVE_AS, GDK_A, GDK_CONTROL_MASK); NEW_MENU_ITEM (brev, _("_Revert"), revert, NULL, file, GTK_STOCK_REVERT_TO_SAVED, GDK_R, GDK_CONTROL_MASK); NEW_MENU_ITEM (bclose, _("_Close"), file_close, NULL, file, GTK_STOCK_CLOSE, GDK_W, GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (file); recent = grg_recent_dox; while ((recent != NULL) && (i < GRG_RECENT_LIMIT)) { NEW_FILE_MENU_ITEM (i, recent->data); recent = recent->next; i++; } NEW_MENU_SEPARATOR (file); NEW_MENU_ITEM (bquit, _("_Quit"), meta_quit, NULL, file, GTK_STOCK_QUIT, GDK_Q, GDK_CONTROL_MASK); wid = gtk_menu_item_new_with_mnemonic (_("_File")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (wid), file); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), wid); /* * Edit menu */ edit = gtk_menu_new (); wid = gtk_tearoff_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (edit), wid); NEW_MENU_ITEM (badd, _("Add"), insert, NULL, edit, GTK_STOCK_ADD, GDK_D, GDK_CONTROL_MASK); NEW_MENU_ITEM (brem, _("Remove"), del, NULL, edit, GTK_STOCK_REMOVE, GDK_E, GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (edit); NEW_MENU_ITEM (bcut, _("Cu_t"), cucopa, GINT_TO_POINTER (GRG_CUT), edit, GTK_STOCK_CUT, GDK_X, GDK_CONTROL_MASK); NEW_MENU_ITEM (bcop, _("_Copy"), cucopa, GINT_TO_POINTER (GRG_COPY), edit, GTK_STOCK_COPY, GDK_C, GDK_CONTROL_MASK); NEW_MENU_ITEM (bpaste, _("_Paste"), cucopa, GINT_TO_POINTER (GRG_PASTE), edit, GTK_STOCK_PASTE, GDK_V, GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (edit); NEW_MENU_ITEM (bfind, _("_Find"), find, GINT_TO_POINTER (FALSE), edit, GTK_STOCK_FIND, GDK_F, GDK_CONTROL_MASK); NEW_MENU_ITEM (bfinda, _("Find a_gain"), find, GINT_TO_POINTER (TRUE), edit, GTK_STOCK_FIND, GDK_F3, 0); NEW_MENU_SEPARATOR (edit); NEW_MENU_ITEM (bpwd, _("Change Pass_word"), chpwd, NULL, edit, GTK_STOCK_CONVERT, GDK_C, GDK_SHIFT_MASK | GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (edit); NEW_MENU_ITEM (bpref, _("P_references"), launch_prefs, NULL, edit, GTK_STOCK_PREFERENCES, GDK_P, GDK_CONTROL_MASK); wid = gtk_menu_item_new_with_mnemonic (_("_Edit")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (wid), edit); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), wid); /* * Navigation menu */ nav = gtk_menu_new (); wid = gtk_tearoff_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (nav), wid); NEW_MENU_ITEM (bmfirst, _("_First"), move_around, GINT_TO_POINTER (GRG_MV_FIRST), nav, GTK_STOCK_GOTO_FIRST, GDK_I, GDK_CONTROL_MASK); NEW_MENU_ITEM (bmback, _("_Back"), move_around, GINT_TO_POINTER (GRG_MV_PREV), nav, GTK_STOCK_GO_BACK, GDK_K, GDK_CONTROL_MASK); NEW_MENU_ITEM (bmfor, _("For_ward"), move_around, GINT_TO_POINTER (GRG_MV_NEXT), nav, GTK_STOCK_GO_FORWARD, GDK_W, GDK_SHIFT_MASK | GDK_CONTROL_MASK); NEW_MENU_ITEM (bmlast, _("_Last"), move_around, GINT_TO_POINTER (GRG_MV_LAST), nav, GTK_STOCK_GOTO_LAST, GDK_T, GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (nav); NEW_MENU_ITEM (bmind, _("_Index"), meta_list, NULL, nav, GTK_STOCK_INDEX, GDK_X, GDK_SHIFT_MASK | GDK_CONTROL_MASK); wid = gtk_menu_item_new_with_mnemonic (_("_Navigation")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (wid), nav); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), wid); /* * Tools menu */ tools = gtk_menu_new (); wid = gtk_tearoff_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (tools), wid); NEW_MENU_ITEM (bwipe, _("_Wipe file"), wipe_file, NULL, tools, GTK_STOCK_CLEAR, GDK_D, GDK_SHIFT_MASK | GDK_CONTROL_MASK); wid = gtk_menu_item_new_with_mnemonic (_("_Tools")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (wid), tools); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), wid); /* * Help menu */ help = gtk_menu_new (); wid = gtk_tearoff_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (help), wid); NEW_MENU_ITEM (babo, _("_Security monitor"), grg_security_monitor, NULL, help, GTK_STOCK_HELP, GDK_S, GDK_SHIFT_MASK | GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (help); NEW_MENU_ITEM (babo, "_README", readme, NULL, help, GTK_STOCK_HELP, GDK_R, GDK_SHIFT_MASK | GDK_CONTROL_MASK); NEW_MENU_ITEM (babo, "_FAQ", faq, NULL, help, GTK_STOCK_HELP, GDK_F, GDK_SHIFT_MASK | GDK_CONTROL_MASK); NEW_MENU_SEPARATOR (help); NEW_MENU_ITEM (babo, _("_About"), about, NULL, help, GTK_STOCK_HELP, GDK_B, GDK_CONTROL_MASK); wid = gtk_menu_item_new_with_mnemonic (_("_Help")); gtk_menu_item_set_submenu (GTK_MENU_ITEM (wid), help); gtk_menu_item_set_right_justified (GTK_MENU_ITEM (wid), TRUE); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), wid); return mhandle; } void grg_menu_update (void) { gint i = 0; GSList *tmp = grg_recent_dox; while (menu[i] && (i < GRG_RECENT_LIMIT)) { gtk_widget_destroy (menu[i]); menu[i] = NULL; i++; } i = 0; while ((tmp != NULL) && (i < GRG_RECENT_LIMIT)) { NEW_FILE_MENU_ITEM (i, tmp->data); tmp = tmp->next; i++; } i = 0; while (menu[i]) { gtk_widget_show (menu[i]); i++; } } gringotts-1.2.10/src/grg_menus.h000066400000000000000000000027261201055014300165370ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_menus.h - header file for grg_menus.c * Author: Nicolas Pouillon, Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_MENUS_H #define GRG_MENUS_H #include /* menu File */ GtkWidget *bnew, *bopen, *bsave, *bsas, *brev, *bclose, *bquit; /* menu Edit */ GtkWidget *badd, *brem, *bcut, *bcop, *bpaste, *bfind, *bfinda, *bpwd, *bpref; /* menu Navigation */ GtkWidget *bmfirst, *bmback, *bmfor, *bmlast, *bmind; /* menu Tools */ GtkWidget *bwipe; /* menu Help */ GtkWidget *babo; /*Makes a menubar, within a handlebox, and returns the GtkWidget */ GtkWidget *grg_menu_create (GtkWidget * window); void grg_menu_update (void); #endif gringotts-1.2.10/src/grg_pix.c000066400000000000000000001713061201055014300162040ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_pix.c - various pixmaps used in the application * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ char *red_xpm[58] = { "20 24 33 1", " c None", ". c #1F1313", "+ c #7F0A0A", "@ c #ACA6A6", "# c #7A7A7A", "$ c #CF0404", "% c #9D7676", "& c #461010", "* c #7E5E5E", "= c #DE7070", "- c #A00808", "; c #675F5F", "> c #AF5A5A", ", c #630E0E", "' c #D65656", ") c #E1A2A2", "! c #BB0606", "~ c #F10202", "{ c #472E2E", "] c #363232", "^ c #8F0A0A", "/ c #E10202", "( c #560E0E", "_ c #AA2626", ": c #D02222", "< c #6A2A2A", "[ c #301212", "} c #710D0D", "| c #AE0606", "1 c #862A2A", "2 c #962A2A", "3 c #BA2626", "4 c #C3A6A6", " ", " ", " 4>1+^2>) ", " 4<,}+^--||3) ", " %&,}}+^-||!!$= ", " #&(,}+^-||!$$$$= ", " @&((}++^-|!$$///$) ", " {&&,,+^^|!!$//~~/: ", "@[&&,}}^--!$$/~~~//)", ";[&((}+^^||$$/~~~/$'", "][&&(,++--|!$//~//$:", ".[[((,++^-|!!$/$$$!!", ".[[&(,}+^--|!!$$$!!|", "][[&((,++^-|||!!!!|_", ";.[&&(,}++^--|-|-|->", "@..[&((,}++^^^----^)", " ].[[&((,}++^+^^^^2 ", " @.[[[&((,,}++++++4 ", " #..[&&((,,,}}}}% ", " *.[[[&&((((,,% ", " @][[[&&&((<4 ", " @;{[&{*@ ", " ", " " }; const char *yellow_xpm[58] = { "20 24 33 1", " c None", ". c #1F1E18", "+ c #A1984B", "@ c #514D2C", "# c #716B36", "$ c #E0D45E", "% c #CABE55", "& c #8D863F", "* c #ACACA9", "= c #2C2B1C", "- c #E4E1BD", "; c #BFB452", "> c #C5C3B3", ", c #3B3825", "' c #5D582E", ") c #7E783B", "! c #ABA24A", "~ c #DCD6AA", "{ c #7A7A7A", "] c #F3E463", "^ c #474427", "/ c #BEBAAE", "( c #929082", "_ c #A8A688", ": c #B7AC4E", "< c #6B6634", "[ c #898240", "} c #DAD69A", "| c #D5C958", "1 c #BAB682", "2 c #6A6A64", "3 c #978F42", "4 c #656034", " ", " ", " >(&)&+1~ ", " /#4#)&3+!!;- ", " (@4#)[&+!::;;} ", " (@@4#)&++:;%%|%~ ", " *,@'4#[&!!:%|$$$|- ", " @,^'#)[3+:%|$$]$$| ", "*=^@'<)[3!:;|$]]]$|-", "2=,@'4)[3+:%|$]]]$|}", ",=^^'4)[3+!;||$]$$%%", "==,@'<#)&+!:;||||%;:", ".=,^@4#)&3!!:;%%%%;!", "=.=^@'4)[&3!!::;:!!:", "2.=,^''<)[&3+!!!!!+1", "_.==^@'4<)[&333+33&~", " =.=,^@'4<#)[[[&&&3 ", " *..=,^@'4<##)))))> ", " {.==,^@''4<###<_ ", " ).==,^^@'''4'_ ", " _,.=,,^^^@ c #70DE70", ", c #0B8E0B", "' c #0F5F0F", ") c #5F675F", "! c #02F102", "~ c #5ABA5A", "{ c #0E700E", "] c #56D656", "^ c #08BD08", "/ c #5A9A5A", "( c #02E102", "_ c #5E7E5E", ": c #122612", "< c #A6C3A6", "[ c #0C9A0C", "} c #323632", "| c #05D705", "1 c #0B850B", "2 c #2E432E", "3 c #123312", "4 c #08B108", " ", " ", " ", " ;=''{1,[&4^####> ", " @3='{+1[&4^#||((|% ", " 2$=''+1[&4##|!!((| ", "@3$='{+,[&4#|(!!!(|%", "):$=={+1[&^^|(!!!(|]", "233='{+1[&4^#|(!(|##", "::$=='{1,[&^#||||##^", ".:3$''{1,[&44^###^44", "}:3$=''+1,[&44^4^444", ").33=='{+1,[&&&4&&&~", "@.:3$=''{+1,,[[[[[[<", " }:33$=''{+11,,,,,[ ", " @.:3$==''{{+++1++< ", " *.:33===''{{{{{- ", " ).:33$===''''- ", " @}:33$$==={< ", " @)23$2_@ ", " ", " " }; const char *optimal_xpm[94] = { "20 24 69 1", " c None", ". c #A6C3A6", "+ c #5A9A5A", "@ c #0B850B", "# c #0B8E0B", "$ c #0C9A0C", "% c #5ABA5A", "& c #A2E1A2", "* c #0E700E", "= c #0F5F0F", "- c #06A606", "; c #08BD08", "> c #769276", ", c #105010", "' c #0A7A0A", ") c #08B108", "! c #07CC07", "~ c #70DE70", "{ c #3D9F05", "] c #AC4402", "^ c #A6ACA6", "/ c #123312", "( c #05D705", "_ c #8F6002", ": c #AA4B00", "< c #1DC801", "[ c #2E432E", "} c #104310", "| c #22B506", "1 c #AB4701", "2 c #AA5000", "3 c #02F102", "4 c #02E102", "5 c #E21800", "6 c #E21900", "7 c #1DD601", "8 c #5F675F", "9 c #122612", "0 c #23A807", "a c #E21500", "b c #56D656", "c c #AC3B02", "d c #FF0000", "e c #598804", "f c #2A470E", "g c #434A0B", "h c #AE3304", "i c #905403", "j c #131F13", "k c #5F2C0A", "l c #E30A01", "m c #5E4A09", "n c #5C5E07", "o c #C72501", "p c #323632", "q c #AF1A05", "r c #246C08", "s c #E30F01", "t c #26890A", "u c #E30901", "v c #E30C01", "w c #913B04", "x c #792C08", "y c #5F3F0A", "z c #942307", "A c #443E0C", "B c #7A7A7A", "C c #76A876", "D c #5E7E5E", " ", " ", " .+@@#$%& ", " .*=*@##---;& ", " >,=*'@$$));;!~ ", " >,==*@#$-);!!{]~ ", " ^/,=*'@$-);!(_:<(& ", " [},=='@$-)!|12344( ", "^/},=*'#$-)|567334(&", "89},,*'@$-0a5<3334(b", "[//,=*'@$-cde(434(!!", "99},fg*@#hdi!((((!!;", "j9/kldm@ndo));!!!;))", "p9/}qdlrsdt-)););)))", "8j//,udvdw#$---)---%", "^j9/}xddvr@##$$$$$$.", " p9//}ddy*'@@#####$ ", " ^j9/}zA==**'''@''. ", " Bj9//,,,==*****C ", " 8j9//},,,====C ", " ^p9//}},,,*. ", " ^8[/}[D^ ", " ", " " }; const char *splash_xpm[180] = { "349 146 33 1", " c None", ". c #563202", "+ c #644110", "@ c #7A705E", "# c #9B8A6E", "$ c #BDAC90", "% c #D0BC9E", "& c #DCCCAC", "* c #EDDAB8", "= c #EFE2B8", "- c #7D5E31", "; c #958670", "> c #E4CEAD", ", c #886A3C", "' c #FAE3C2", ") c #F2DAAE", "! c #AB9068", "~ c #704F1F", "{ c #9A815D", "] c #F0D6B9", "^ c #C7B696", "/ c #F2E2C2", "( c #A99C84", "_ c #5D3A09", ": c #F2DAB6", "< c #B69D77", "[ c #D6C3A3", "} c #F2DEC0", "| c #E8D4B4", "1 c #EEDEC2", "2 c #C8B08D", "3 c #917449", "4 c #FADEBE", "$2^^^^^^^^^^^^^^^^^^2^2^$22^2^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2^222^2222^^^22^2^22^^^222^^^^^^^^^^^^2^^^^2^^^^22^22^^^^^^^^^^^^^22^^^^^^^^^^^^^^^^^^^^^^^^^^^2^2^$22^2^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2^222^2222^^^22^2^22^^^222^^^^^^^^^^^^2^^^^2^^^^22^22^^^^^^^^^^^^^22^^^^^^^^^^^^^^^^^^^^^^^^^^^2^2^$22^2^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^2^222^2222^^^22^2^(", "(^%%%%[%[%%[%%[%%[%[[%%%%%%^[%[%%%%%%%%%%%[%%[%%%%[%%[%[%[%%[^%%%%%%[%%%[%%%%%%[%%%%[%%%[^%%[%[%%%&%%%%%%%[%%[^%[%%[%%[%[[[[%%[%%%%[%%[%%%%%%[%[%%[%%[%%[%[[%%%%%%^[%[%%%%%%%%%%%[%%[%%%%[%%[%[%[%%[^%%%%%%[%%%[%%%%%%[%%%%[%%%[^%%[%[%%%&%%%%%%%[%%[^%[%%[%%[%[[[[%%[%%%%[%%[%%%%%%[%[%%[%%[%%[%[[%%%%%%^[%[%%%%%%%%%%%[%%[%%%%[%%[%[%[%%[^%%%%%%[%%%[%%%%$;", "$$%&&&&&&&[&&&&&&&&&&&&&&&[&&[&&&&&&&&&&&[&&&&&&&[&&[&[&[&&&&&&&&&&&&&[[&[&[&&&&&&&&&&&[[[&[&&&&&&&|&&&&&[&&[&[&&&&&&&&&&&&&&&&&&&&&&[&&&&&&&&&&&[&&&&&&&&&&&&&&&[&&[&&&&&&&&&&&[&&&&&&&[&&[&[&[&&&&&&&&&&&&&[[&[&[&&&&&&&&&&&[[[&[&&&&&&&|&&&&&[&&[&[&&&&&&&&&&&&&&&&&&&&&&[&&&&&&&&&&&[&&&&&&&&&&&&&&&[&&[&&&&&&&&&&&[&&&&&&&[&&[&[&[&&&&&&&&&&&&&[[&[[&^(;", "(^%&>&||&||&||&|||||||&|&&||&|||&&&|&&&&&||*|*||>>>|&>&&>|>||&|||&|>>>>>>&>||1=1||>&>>>|&&&||&|||||||&&||||||||>|||||||****|||&&&||||||&&&&>&||&||&||&|||||||&|&&||&|||&&&|&&&&&||*|*||>>>|&>&&>|>||&|||&|>>>>>>&>||1=1||>&>>>|&&&||&|||||||&&||||||||>|||||||****|||&&&||||||&&&&>&||&||&||&|||||||&|&&||&|||&&&|&&&&&||*|*||>>>|&>&&>|>||&|||&|>>>>>&|>[$(;", "$$%&&*****1***|||****1||]||1|1*1||*1|11|111==1****|1>|||||*1*|||*]|]}}]]*]]*/1*111||*111***1111*|||||*||||||]|*:]|||*1*111****]]|*11**1*****|****1***|||****1||]||1|1*1||*1|11|111==1****|1>|||||*1*|||*]|]}}]]*]]*/1*111||*111***1111*|||||*||||||]|*:]|||*1*111****]]|*11**1*****|****1***|||****1||]||1|1*1||*1|11|111==1****|1>|||||*1*|||*]|]}}]]]]>%^(;", "(^[&>|*111//1*1*1*111111111111==111=1=1=1111==*|*|1********/*1****1*''}}:4}4'1)1/=1||*}/====}1*1**||1*1*****1}4}***1}/}1/1/*111111*1=11*****1*111//1*1*1*111111111111==111=1=1=1111==*|*|1********/*1****1*''}}:4}4'1)1/=1||*}/====}1*1**||1*1*****1}4}***1}/}1/1/*111111*1=11*****1*111//1*1*1*111111111111==111=1=1=1111==*|*|1********/*1****1*''}}:]>%$(;", "$^%&||*==}/'}}}}}//'/}}}}}//////1*1===11==/4/=1*1)=/=***111/}11*1}}}''''}4:4/=:)/=11)=/=/:}='44*****}***|*|]]}4'}}*}/}}///1*}****1*////111=111==}/'}}}}}//'/}}}}}//////1*1===11==/4/=1*1)=/=***111/}11*1}}}''''}4:4/=:)/=11)=/=/:}='44*****}***|*|]]}4'}}*}/}}///1*}****1*////111=111==}/'}}}}}//'/}}}}}//////1*1===11==/4/=1*1)=/=***111/}11*1}}}''''4]>%$(;", "(^[&|11////'//}}}}}'}/}}}/}/////=1/////=1///'=}**}'''/}1**/}//}}}}/}''''444}4'//]|)}=/4)**}}'4}1114/::)})]:]|}4''}}/}}}}}}*1:}}}}*|}/}}}}}}===////'//}}}}}'}/}}}/}/////=1/////=1///'=}**}'''/}1**/}//}}}}/}''''444}4'//]|)}=/4)**}}'4}1114/::)})]:]|}4''}}/}}}}}}*1:}}}}*|}/}}}}}}===////'//}}}}}'}/}}}/}/////=1/////=1///'=}**}'''/}1**/}//}}}}/}''/'}]&%$(;", "$^%&111=//'''/}/////}}//}///'''/////'///////'/}}=/=):*)//''''''''/}}'/'44''/'/)|)**}'=}]**///'4}:*4/44*)*)*]]]]}}}}}}*:}//}}}}''//}/''//}//'/}///'''/}/////}}//}///'''/////'///////'/}}=/=):*)//''''''''/}}'/'44''/'/)|)**}'=}]**///'4}:*4/44*)*)*]]]]}}}}}}*:}//}}}}''//}/''//}//'/}///'''/}/////}}//}///'''/////'///////'/}}=/=):*)//''''''''/}}'''4}]>[^(;", "$^[&|*=4/}}///////}///}}}/''////////''//}}1'''}*44/}/}})/''''''''}}}//4}}4''/}|*)/=''//1*4//'44:}44''4:=}*)]]]}:}}}}}}*1/}}1:/}//::///'/////4=4/}}///////}///}}}/''////////''//}}1'''}*44/}/}})/''''''''}}}//4}}4''/}|*)/=''//1*4//'44:}44''4:=}*)]]]}:}}}}}}*1/}}1:/}//::///'/////4=4/}}///////}///}}}/''////////''//}}1'''}*44/}/}})/''''''''}}}//4}}]>%$(;", "$^[&>*=}411*}/}///}}/}:}}/''1/1/////////}=}}''===/4=41}:1/''////'/}}}}}}}4''/}11/'''/4=/=/=/4}}:}}''''''41})]]}}}}}}}1**}}*1}}}}}1}///}}'}}1==}411*}/}///}}/}:}}/''1/1/////////}=}}''===/4=41}:1/''////'/}}}}}}}4''/}11/'''/4=/=/=/4}}:}}''''''41})]]}}}}}}}1**}}*1}}}}}1}///}}'}}1==}411*}/}///}}/}:}}/''1/1/////////}=}}''===/4=41}:1/''////'/}}}}}}}]|%$({", "(^[&|*1=/:**:}}}}}}}/}}:}///||1*1/////}/11==''///4//'/:*1=/'//////}}}}}}}'''4}:='''/4/4'}44}//}/4'''/''==::*]::}}}}}}:*}1}**}///::://}}}/}=*1/=/:**:}}}}}}}/}}:}///||1*1/////}/11==''///4//'/:*1=/'//////}}}}}}}'''4}:='''/4/4'}44}//}/4'''/''==::*]::}}}}}}:*}1}**}///::://}}}/}=*1/=/:**:}}}}}}}/}}:}///||1*1/////}/11==''///4//'/:*1=/'//////}}}}}}}*&[$(;", "$^%&>1=''/}1}}}}}}}}}}}}}/}11*1=/1////1*1*1=/4'''/}''/}*11/'==1//1}}}}/'''''//4''''}1/'''=}:///}}}/''''//}}*}1}}}}*:}}::}}::}///}}}//***}*}/}/''/}1}}}}}}}}}}}}}/}11*1=/1////1*1*1=/4'''/}''/}*11/'==1//1}}}}/'''''//4''''}1/'''=}:///}}}/''''//}}*}1}}}}*:}}::}}::}///}}}//***}*}/}/''/}1}}}}}}}}}}}}}/}11*1=/1////1*1*1=/4'''/}''/}*11/'==1//1}}}}/'/1&%$(;", "($%&|1='/4}:}}}}}}}}}//}}:*|[$<{,3333333333<%|''///''/}:*1//1/////}/}}/'/''''/''''/}}}///}}14=}//=44=}4}4::}:::}:}**}:1}}/}}4///}}:/}*****1/=''/4}:}}}}}}}}}//}}:1*11111***/*****11}}''///''/}:*1//1/////}/}}/'/''''/''''/}}}///}}14=}//=44=}4}4::}:::}:}**}:1}}/}}4///}}:/}*****1/=''/4}:}}}}}}}}}//}}:1*11111***/*****11}}''///''/}:*1//1/////}/}}/''}>[^(;", "$^%&|*=/=//}}}}}}/}'}}}:*[#-+.._............_~{^|4=/'/}1::|$;{$*}111**}}/'''''///'/}}}}}}}:1}======1===1==111]:}:]1]1:}}///=}::/''/}=11****/==/=//}}}}}}/}'}}}:}:**/===1**|1=***|111}/'}}//'/}1::11///}}111**}}/'''''///'/}}}}}}}:1}======1===1==111]:}:]1]1:}}///=}::/''/}=11****/==/=//}}}}}}/}'}}}:}:**/===1**|1=***|111}/'}}//'/}1::11///}}11/*1}}}*&%$(;", "(^%&|*}}4//:}}}//}//}}*%{+..................._.+~!%:'//}12-_...{//=1]]1}}///''/4/'//=}/}}:})==)1)1*****1*%!3$]]*]]*]:*:}}//*}}}/''}**//=}*)=//}4//:}}}//}//}}*1]*}/=11*|***|**|*))1*}}//}}/'//}11**//////=1]]1}}///''/4/'//=}/}}:})==)1)1*****1**}:]]]*]]*]:*:}}//*}}}/''}**//=}*)=//}4//:}}}//}//}}*1]*}/=11*|***|**|*))1*}}//}}/'//}11**///////*]|*}1]&%^(;", "$^[&*1}4}:}}}}}}}}}}}&!+_._..~~~~..._.............+-$|*12~.....+[:*|||}/}//}/''/:///1)}}/}}**/''=11}*1}|#+.._3|}}***//}}:}}/}*}////}}4}'''/''/4}:}}}}}}}}}}}1**1*}}==1=*|*|=*||)*)*|/'/4/}:'/*1*1////'}***|||}/}//}/''/:///1)}}/}}**/''=11}*1}}}:}}]**}}***//}}:}}/}*}////}}4}'''/''/4}:}}}}}}}}}}}1**1*}}==1=*|*|=*||)*)*|/'/4/}:'/*1*1////'}***||*://]&%$(;", "(^[&|:}}:}::}}}}}/}}2~.....~!&>>$_.~2{-_.............-$$~..+..__2:**]*:///}}/''/14'4)/=''=}))4''=})*1::<.~3.._!/'/**//}:}:}4}/}1'//}}}}}}=//'/}:}::}}}}}/}}1/***1}=1*=||*|*)))|]]])]/'}}//1'//1/111/''*]:**]*:///}}/''/14'4)/=''=}))4''=})*1:}}*}}/1}[&//**//}:}:}4}/}1'//}*[&}}=//'/}:}::}}}}}/}}1/***1}=1*=||*|*)))|]]])]/'}}//1'//1/111/'':|:**]]:/11[%$(;", "$^[&|1}}:}}:}1}/}}/2~.....-%}=|*^_.~|4]2,_..,-+........_..3<....$)**1}//}}:1/''/1}=////'''/=}///41}}}}|-.3%_..+>'}**/////}*}/}//'}/}/}}})4/4/}}*}}:}1}/}}//1=***=}/==*|*|***))))))4)/}1:}}1////////''/}*:**1}//}}:1/''/1}=////'''/=}///41}}}*}}*}}}%,~<'}**/////}*}/}//'}}%,~<})4/4/}}*}}:}1}/}}//1=***=}/==*|*|***))))))4)/}1:}}1////////''/}*}**1///}|[%$(#", "($[&|**}1*:****}//2~.....-[4=**|%_.~>)1)|!+_+<[!+........(/&+..+[)1)4=4///1:1''))/'4)='4'=4}///}*:}}*4%_.!>+.._$)))]/4/}//}}''///'//'/==/=4=4}}}*:****}////=11**1/===**&|***))1)]):4}**1}1*|1'/''///'/**}1)4=4///1:1''))/'4)='4'=4}///}*:}}:}}}}}&{+_2})})]/4/}//}}''///>{++2///=4=4}}}*:****}////=11**1/===**&|***))1)]):4}**1}1*|1'/''//'//}*)})}}}}/*&%$(;", "$^[&|**:}::**11}/^~.....-&///=*|^_.~[|))))$~._!:[{~...._#://<--!))=='='///}:/'/}}''/):=}=/)}=//41}}/}}|~.{[+.._2***]=//}}/}}///////}/44/==}*}*:}::**11}/}}/=1===}//==|*|***&**))|4*/}]*}}}1*/'//''//}}*:)=='='///}:/'/}}''/):=}=/)}=//41}}/}}}}|<~..,|]|**]=//}}/}}///1$~..,4}=/=}*}*:}::**11}/}}/=1===}//==|*|***&**))|4*/}]*}}}1*/'//'///}::**=='''/}|&%$(;", "(^[&|1}/4/=/=1}4%+.....~[4='===)^_.~>*}*)))2~.+!::%-.._!:1}|:||//)))''4'/4}}}/})}''/*14=4}})//4}::}/}}]3.~3...~&*))1}://}/}}/}////}}}111***}///4/=/=1}}///}1=11*}}====*|*==>*)11}*)4:*}}:*/''//1/11}:://)))''4'/4}}}/})}''/*14=4}})//4}::}/}}]2,__._<)))))1}://}/}}/:2,....$*}}***}///4/=/=1}}///}1=11*}}====*|*==>*)11}*)4:*}}:*/''////11}:}//))4'''//|&%$(;", "$$%&&*///4}}//}&-....._<}}//'===%__~>*)14}))2+__<:|{..{&}1}|}*:'/)4)/''4=//}//}:}''/)*//'=):}//}}}4}/}:>{~___~<))1))*:4/4}}}}}/}}}}}::****:}/=//4}}///}'///1=1=}}//====)**)***))=)111}'/}*/'//1111|11}'/)4)/''4=//}//}:}''/)*//'=):}//}}}}//[{+,_..~>})11))*:4/4}}:[{+,_..~>)****:}/=//4}}///}'///1=1=}}//====)**)***))=)111}'/}*/'/11111|}*}'')*)/''//]&%$(;", "(^[&|*}/}/''//*,......31}}=='''4[_.~>|*)'/4)4$_._!{_.,|'///1*]}''})=''/'///'//}}=''4/=''''//////1*}14}::4>%%%|))*]**1}}///1}//}}:1*}}}11}//}}4/}/''////}///=}}}14/='=======|*|=''=)::/''}/''/////11*]:''})=''/'///'//}}=''4/=''''//////}*:[{+_{|~..~|)*]]**1}}//1[{+_{|~..~]}11}//}}4/}/''////}///=}}}14/='=======|*|=''=)::/''}/''/////111|:''14='4''/|&[$(;", "$^[&*}//}}/'/'!_.....~%=**1}')))%_.~*==/'==/*}<.....+['//'''/}:/'''))'='4//''''}/////4'''=:*/}/}}*}}}1*}44::])})*>*'}=///}:*::}***}/}*)*/'//'//}}/'/''/}*}'/**11*1='=)))*)===4='=4=*}''}}/'/////''//}*/'''))'='4//''''}/////4'''=:*/}/}}[{+..3:]~._~|==*>*'}=//[{+..{||~..~|*)*/'//'//}}/'/''/}*}'/**11*1='=)))*)===4='=4=*}''}}/'/////''/'1:/''')=//'/]&[$(;", "(^[||*}/}}/''%+......!1*=1*====]$..~)'''''/}:4:3....('//'///'////'=1))'''''''///////4==''//}}}4}:*}/*:}11}}*]===|*|}'''''/}11}}}*}}]*1*}4'''/'/}}/''''/}=}/11*111*4'==)))==)'''''//}/''//''///////''////'=1))'''''''///////4==''//}}}4}){_...3[]~..~|=)|*|}''''{_...3[]~..~|1*}4'''/'/}}/''''/}=}/11*111*4'==)))==)'''''//}/''//''////////'//}/'=*)4'//1&[$(;", "$$[||1//}//'=,._....+[**1*=/=)')!_.~>'''''==//'>~..~|}111///''}/''))))/''/'''//}}}}}}}}''//41}}}11}/}:}}}}}1)==)**)=''''''}:}//}::1**1:}}''////}//'''''/}//**|*1)==))=)=='=''''''=//''////''/111///''//''))))/''/'''//}}}}}}}}''//41}}:*[%${+.<:~..~|=)*))=''''>[${_.<]~..~|**}}''////}//'''''/}//**|*1)==))=)=='=''''''=//''////''/111'//''//''))*)''/1&[$(;", "$^[&|1}'///'$.+{_...3*|*=1)/))4'3...^'''='==/''[+..!///1///'''/'')****4/}////'/}}}4}::}}4/4=*1:***}/}}:}14}))))))1=/'''/'/}}/}}}11**/}}}////'/'//'''''/''/=1*|1=1*=))4='4'=''''''=}/'''///'///1///'''4'=1)***4/}////'/}}}4}::}}4/4=*1*})4)4:{.<]~..~|)1))=='''''4:4{.<*~..~|=4}////'/'//'''''/''/=1*|1=1*=))4='4'=''''''=}/''''//'//11///'''/'=1)||*}//|&[$(;", "$^[&|1////'=-.{!..._2******4)]44,...{='''==}'':,...~,#2|1////'//'')=**)**1}/////}}}/}}}}}//=*}}:**4//}}}////)**1)='=''/}/}}}}}}}*1}////}////'////'''''/'''/=1|****}*]4''='=='='===='''''//'/''////////''')=**)**1}/////}}}/}}}}}///*}:}*1}/4<.<]~._~|))1/''''//=4}4<.<]~..~*//}////'////'''''/'''/=1|****}*]4''='=='='===='''''//'/''//////'}''===|})]1>[[$(;", "$^[&|1'/'/'$_~>,...-*=|*}=1*]]=|~...-==''==='/#.....__.~(1////)'=''=)=1*]]1/'///}}//}}}}}}//}}}}*1}/'/}}/'//***))/4}4/}//}}}}}}:}}//////}/}//////'''//''''//1**1=1)])=='''='='''==1''''/////''/1/////=''='=)=1*]]1/'///}}//}}}}}}/=}}}:**}/'<.<]~..~>|*)=}}}}4//}1}<.<*~._~]///}/}//////'''//''''//1**1=1)])=='''='='''==1''''/////''/1////}=''''/=}:*||&%$(;", "(^[&|1////*-.!&+...{/1*11}=}]))^_...+&='='=='$_...~<%%3_.#/1}//'='''=)=}*:/'''////}//}}}}4::}}/}**}/'}}}/''/*))***)1}//4}/}/::1}}/}}}}}//}}/'/////'///'''=/'=*1=}=}]]))))'===''='=='''///////'////1}}}''=''=)=}*:/'''////}//}}}}4::}}/}:*4/'<.<]~..~|))*))}==4}}4}/<.!|~..~|}}//}}/'/////'///'''=/'=*1=}=}]]))))'===''='=='/'///////'/1///1}}'''''==/**|&[$(;", "$$%&|1////$_+[2_...$=*|1'/4})))$....+*'''''4[~..+!>}[#,_.+&114/'==}=)=//''''''////'///}}}*}}}/}/}*}/''}/4''':=*)]||)/4/}}}}'}}**}}}}1}}///1///'////=''''//==*|1'/=4)))'4===''''=''/''/////////1///1}4/'==4=)=//''''''////'///}}}*}}}///1}}/'<.<*~..~)1}|||*'4=}1}}'<.<|~..~|}}///1///'////=''''//==*|1'/=4)))'4===''''=''/''///'/////////*}4='==)/)4/'/1&[$(;", "$^[&*1}}}:,.,/3...+&//==)1=//4)>-...,|=====|-..-2}*|3..._.$/}*)=''')*])=/'''////}////1///||}:/''}*4'''//*}}'/}*||11/''}}//}}:::**1}}}}}}}}/''/////'''===//=///}):='//))4=)====='==//11//11|/1111///}**1''=**])=/'''////}////1///||}}}''**/''<.<]~._~|*|*)1/''}}//4}<.<|~._~|}}}}}/''/////'''===//=///}):='//))4=)====='==//}1//11|/1111///}**}''/)*]1=}1&&$(;", "(^%&*}}}:%_.<]~...-)/=44)))'41}:<...(=='==4{__-&//}>~....+[/**1='/=======//////}//'//=/'/1)1*}=}*1='''}}}=//4)**))://}}}//}}11}**:/}}}}}}/'''/////''=/==''//=}=}))'/:)4)=))|===////1}}}/}11111]11}/**1=''/=/====//////}//'//=/'/1*=|}=}*1'''<.<|~..~]|1|1:}//}}//}}!.<|~..~|}}}}/'''/////''=/==''//=}=}))'/:)4)=))|===////11}1/}11111]11}/**1=''=1===11*&%$(;", "$^%&|1}/}!.+&%_.._3'4==&$<<<$[*}%_._^*==''$_.{>4/}}*,....{:}||1=//=4=//===///}////'////}}*11]*}:|11''=})}4==}111*}:/}}}}}}}}}}}}}}''/}}:}}/'//////'//=/''''4=4)*)*=/4*}41)*|*==''//}}1}'11]/111]:}}||1==//4=//===///}////'////}}**/**}}|1}''<.<]~..~|)1)}}=}}}}//4}<.<|~._~]}}:}}/'//////'//=/''''4=4)*)*=/4*}41)*|*==''//}}}1/}11}111]1}}||1==/=/=//==|&[$(;", "(^[&*1}/:,_,)<....+.!43....$4=%_..++_...+,_._%}=/],.~[4://}'//>%[]*1:*1=/=11=//1===''//}/}//''//*}=/=}}1*|>||):*:***1**})1:}::*:}}}}///}}}//}}}}}11/////////'//'''=/'''/''==)**)*1*|))===4}*:}}/////}1}*]*}**==/=*1=/=1===''//}'}//''//*}///4}**|>||}<.!|~..~|}}}1}}*1:}}}}/<.<]~._~]}}}11/////////'//'''=/'''/''==)**)*1*|))===/}*:}}}'/}}}1}*]**:*==/=11=/}===||[$(;", "$^[[|1}/%_.$:-..._[='3._3|>23+_...._%)='{._2}}//}}}}}4*]|1:1=/'/1/}=''/1*1=//'////'//'/1///}=:)**>||}1}11***|1:}:}:}1}}}}}}}}}1::}}}::}}11*////////'''''=/='''4''4'}*|**)*|1}////*1}}}/}}}}}:*]|1*}=/'/1/}=''/1*1=///////'//'/}/=/=}*})||>|:<.<|~..~>):::::}:1}}}}}<.<|~..~|:}}11*////////'''''=/='''4''4'}*|**)*|1}////:1}}//1}}}}}*]]*}1=/'/1//='/=11&&%$(;", "$$[&|1/'<._[[+..._[4>+.+!2)/4$~...._%):$_.{:''''}*:}*}*]]1}}1///////'''=1|=////////////}4'/|}}*|1*|*:]||||||>|>**1*:}:1]||]]|||||>1}}}}}/11*$$$<$2&1/'=//'''==)=')=}1||1**||||)**]|}}}1]||]]|||&||}1///////'''=1|='//]*|11////}/'/1})*****|)<.!*~_._<|||||||]}}}}}}<.<|~.__<||]]|||1////'/'''=//'''=>%|))}11||1**||*)&'}}:''''}1}}}1*|]*1}1///}///'''=1&&[$(;", "$^[&|*''!.+[%_..._['2_..._{/**<_..._%]%~.+[/''''}*1:}*|||*}}}///}//'/'/*^$<$<<<$[&'/1//}[!,~,!%*|*}*4{~~~~~~~~~$1:}/}4#~~~~~~~~~~-%:/}}}//[,_....._-%///4'''=4))='=**]|*1|]{~~~~~~~~~~~~~~~~~~~~~3|}///////''/=*1/|<3-~~~-{2}//''/|:1***1*}:<.<]~..._~~~~~~~{}}}}}:<.!|~..._~~~~~~~#''////'''//4''2,~_~~-3333333,333--|''/''''}]}}:*]*|*}}}///////'/==1&&[$(;", "$^[&*1/'3.~*<....~]'$.....-|)|>,..._2[-..+333{33333333333,33333#}1//'=[-_......._{/''/1<+_._..+,21}1){.........<):/}}:<-__..__..._%::}}}'^~.........+<41}=''==''=4)1|)|1}*2+...._............._._<'//}//1/////=1&{~_......__3%/'''/*1*}}=41|<.<*~...._._.__.341}}}*<.<|~.........._{///////'/}}}*!+................._~}''''''/1}}}*1*}1:}'//}/}1//'//==1&%$(;", "$^[&|1/'3.~:<....~|4|~....~|*]|2_...<{_.._._.........._.._.....~]////=>{...+3,...3/''}{_.......__3|**&3__+~_...<:}:}}}4|!_._+<_.._[}}}//<~...........+%/}4/'4==4'=1**|]}}|,_....................,}'}'/}}////=/=2~............+!=/=1*)})1****<.<*{33333333+..<}}}}}}<.<]#33333333~..$'//////'''=*3_...................,1'''''/}}}}}}}//}}/'}/'///////==1&&%$(;", "$^[&11//3_~|<..._~])/<+.._{'*]||,...-_.........................-*/////}*3..~][_..3/'/!.........._.{|]]>3.<&~...''*}/'//'///}<+.~!<<<{3~_.._._-[1)*}=:*||*|<.<*:}}}}/'4}3.+[}//}}}<.<4}}/}}}///3.+&////////'''!_.-!<<<<<=})/4)=='4'|]*}4>~.-<<<<<<<<<<<<<<#_..-[*//1}///'///}<_..-{<$|**&%,.....~%*|*/}||]*]!_!**=/=''/=[~.{}}}/'//<.<}}}//}}/'&~.#///////'/''$_.~|:)'/'''*]]:/:~...<:}1//]]]]|*:}}}}}}:}/11//'//////=1|&%$(;", "$^[&|1//3.~|<..._~]}}44)44'/}*}4|~....._________________....._!1//}}////*,.~*[_..3/1~....,2&[%$_._<)*||<.!*~.._/1(+....-&|*=}|>|)*<.<*]])*)})|3.+[4}/''/'<.~._#[[%%[[[[%%%[[<_..,]///11]|]]1}}}'/}}}}}}*}}///}1/1111&&^$(;", "$^[&11'/3_~|$....~1/'/:}='/'*}}}[+....![[[%%%%%%%[%[[[[^~....{}1}}}}}//}*3.~][_..3/!......_~3<<_.,>**)|<.<]~...**:/*%,_..3/'!...._$)1*1:}}}<.<)~._.#%%%%%]//}}}/''<.<1~_..#%%[[[|/'//1///''%_.___________+___..._!}}}''}1111:}/''''''''/}11*1}}}////}1|&%$(;", "$^[&*1//{.~][_..._^'''/:)44/}/'[+...._~~~~~~~~~~~~~~~,]]~..+^*}}}//'//}:*3_~][_..+~._<|1**^-....{='4::*<.<|~...<*:/''/}**'<.~%_.....-$>///=1%!+_~&}-...3'''''/:)///}/>~_.-!<<<<<<<<<-.+^}**://}/}<-._{1*,....->)}/='/:<.<*~.._%4)))'''/}11}''<_<:~..+['''''/'/'/////'1,.~%[[[[[%%[%[%[[%~..,*:}}}/}:4}}/4'''''//}/:**1}}}//'//}11&[[$(;", "$%&&|111<.~|[_....<'==}//=41''4{....__+_+______+_+__.~]]~.._%]]:}:}}}}}*|,.~>%_...._#)***))^_..~[)]]}44<.<>~...<}}/}}}}1:}<.~%_....3>4/'''/}'/2+.#}3...3'''/=}///4)'4#._!]4444}44]4]4)~..+~..34}:]|]]]*:]3._<:*]*}}*}/}:>3._3|[~..._<))))]]:<.<:~.._%41}}=4}}:*:1/'<_<*~.._[//'''/////111//%_.-'''4}4=4'))4{33_.~[444}}}4}::/}'''''''}::]|]]]:}:}:}}}*]|&%$(;", "$^[&|*//2_~|&+....{//11====]'42+....3%%[%%%[%[[%[[^~.~])~.._%]]}:}::}}}::3_~|[_....->:))*:)>~..<})]]:}4<.<>~...<}}}}::}}//<_~%_...-|///'///=//={.-*3...3'//}11=)1=*'%+.-|44]44:]]44)]|~.~23..3::*]]]]]}}$_.3*}1*|*}]}/}}}:!__#|$_...-*:)*]]:<.<]~.._2*4}1}}::}}///'<.<]~.._%//'//////11*1*/{..+['/}==)===))~...~24444:]]:4:*://///4}44}}]]]]]:}:}:}}111&&^$(;", "$$&&||1/[++%)~....-*1=**1)*|)|-.....<))]]]))]]))44)~.~]:~..+%]]}:}}}1}}1*3.~>%_...+%)::})})2_.,|)}}}*:}<.<>~...<}}:}1:}///<.~%_...<'/////}1111}$.~|3.._3///1=*1=1||),..#):4:::]||]))]|~_2/,..344*}:]]]:>-.+%}411**=]}}*1:/:!.+<],.._~>}):}}:<.<:~...<:}}}1}*}}///1/<_<*~...)))|~_~|]~.._%]]:1*:::}}}13.~>[_...3:*}})})]{.+%)}*4:}}4<.<>~...<::}:]1}}''<.~%_.._[//1=///1111'%_~|3...3//'/}==*=*)$_.+2)}4]:})]|]]])|~~|]~..3444*:]]]}<_.~|}}}1***|}/}*}/4|3.-|^+.._%)}4:4:<.<]~...<}:}::*]*}}'//'<.<|~...+-]3...31/////===*&-..-]::4|)4')]]])]|~~|]~..,::}11]]]:,..~|**1==/*]}/:*}*:)|,.<){..+%)*4:4}<.<]~...<*:1}}1|*}}////<.<|~...4':]]])|4)1)}:]:*:}:1}]]]*}*}:}*}1=|&^((;", "(^%&&*=//<.{/^_....-}//===)|-_.~[4]]])'')]!~.._.+<>~.~>|~.._%]]}::::}*11=3.~>[_.._%}1|))=)<.~[)::/44}44<.<]~...<}}:}*::}/'<.~%_.._%1//1}}11*1/4*~~*3...31/''/}''==<...<4}:*]*4'4)]]))]~~|>~..3}}:]]]]]%+..~|***111/*/}}*:}1*)2+-][~._%:}}444<.<|~...<}}}}::1}*}}//'<.<|~...(////1111/////>+......................._~{&4*]])))*))])]]::::]]]]]}:}:}:***1|&%$(;", "$^[&|*1}/[+-|>+....+['//''=!..+2'[,->):)2,_..__..-[~.~>|~..+%]]}}11:}*]**3_~|%_.._[))*):=|-.!44///'''}}<.<]~...<}}:}}}}}}/<.~%_..+[==/////}11/}]~~|3...3*///'=/'')-...<4}]]]1):)]]))))~~>>~..3|]]]|]]]<_._~|}]1*}}}:'/}*:/1**]{_2],._%4//'''<.<]~...<*4}}}:}}}}}///<.<|~.._>~.._%]]::::}}*||*3.~][_.._%)**}}4<._^*}/}/''''4<.<]~...<44}:}//'/'<.~%_.._[/''''///*}}1|~~|3...31/////='=$_...%/)|>):)]||])'')~~>|~..3]]]||]]:!...~]*||*}//}''/}14)|))%+,)3._[///'''<.<]~...!}}4}}}}//'////$.<*~...<'/'//}1}}1**1[+.-%|||1***11=**]]]]><3+....+$]1/'=4)]||]]]]]]|]]]]:}:}:11||*|&%$(;", "$^[&|11}::<.,:!.....-|==/*-_.,>])<__[[,....3>!..._2~_~>>~.._%]}}4}*|1}}}*,_~|[_.._[4=:)))-..3|4}}}}'''}<.<]~...<}}11}/////<.~%_.._[====/'/}}//1|~~|3...3*/'/////=,..._%)')]4''4})14'')~~>>~..3|]]]>]]/3...~|}}}*|*1}''/41=/=})),+[,._%4}}}''<_<|~.._344}:**}///////<.<}~...3=//'/1}//}1*11{..~$1/'/}}=/==))]]]4'4%{_...,])'4))|||]]]||]]|>]]}}4}1]*111*&&^$(;", "(^[&|*}}/4&+_2[+.....$}==!_.+%))42._!~...+<]&+...~%~.~>>~.._%]}4}}:**:}}}3.~)[_.._%1}*)}[+.._3|}}}/''''<.<]~...<}:**}}}//'<_~%_.._%===//'/}}//4}~~>3...3/''//1'/[+....<)'}|*4/4)1)))))~~>>-..,]]]|]]]}3.._+[}}}11*1}/4/1*}4/)))<_<3.+[}}}/''<.<]~...3}}}}**}}}'//}'<.$*~...3///'}}}}/14/1)[-.._3%///14}41*)]]4]]|>]2~..+%4)44]|||]]]]*]]]|]]}44}*|*1111|[%$(;", "$%%&&1}//}/3_,}{_....-]/%+._<]]]43.._.._,%))]{333<>~.~>]~.._%]}44}:**}}}13.~][_.._%)}))4|~..._[/}}/'/4:<.<]~...<}::*::}}//<.~%_..+%}===/}}1}}//*~~|3...3'''//}//<...._!'4]|)})})]}4):]~~>],._,]]}]]]]}3..._$4}}1=///}*****]1}})%_,-.~]/}}/'/<.<|~...3:}*}}*::}}}/''<.<]~...3=///}1}////=}=12~...+,3333333333,3-~~~-3~.._%4)))]||||]]||]*]]]]}}44}**1111|&%$(;", "(^[&||}}///2_+2[+...._<&-..{]])4[+....+!]]]))]4]]]>~.~>>~.._%]}444}}1:}}=3.~4%_.._%****)){..._[}}}/'}1]<.<|~...<}1}}1}:::'<.~%_.._%*11*/}}:*}}}}~~|3...{'/////=4#.....3))]|))}*]]])}))~~>]3..3]]:*}]]}3....,|}1=}/''}*]1*|*)]])[__..,}}}}}'}<.!|~...31}}*:}1}::}//'<.<|~...31*/}}:1:}}4/=1=}�,3,33333,~+...._%**)4])|]:]]]]]}:}]]}44}}1*:111|&&$(;", "$$[&||*}/4=]3_-4{_....~-..->])]4<....-%]]]|])4)4]]>~.~]>~.._%:}}44}}1:}}13_~}[_.._%)1*)1'>{33{>/11/'=1*<.<*~...<4}:::}*1:}<.~%_..+%*=*|1}}}*::}|~~*3...3//'//4/43.....~>)]|):})]||])))~~>]3..3]]}}4]}:3._.._$411=/''/**1)1)1*)4|~.._%-_.._%]})4))]]]*}]]]}}}]}}444}}*}}/1|&[$(;", "(^%[|***)})=>-_{|,....._.+^))]]|-..._%)]||||:)444]]~.~]>~.._%}:4}'}}:}}*1,.~)[_.._%=))*)'4'/4}/}11//1*]!.!>~...<4}}}}:1*:4<.~^_.._%)****:::}1}**~~|3...3*/'//}113......!]]|}})]||||}4]~~>]3..3}]:44]:}3.~...~%***//'/1*:=/=))}))~..+['}11//1<_!>~...3}44}}}}:1*1}}/<.<|~...,*]1}:}:*:1*4)=*='=:1/'//}====1)]]:)]]])>,.._^|):44:)]}}}}1]:}4]}}}4'//}11*1&&%$(;", "$^%&&|1**1)11^+_![-....._!)))]]|-...+[)]]>>>]])*]]>~.~]]~.._%:}4}''/}}:*|3.~][_..+%')})}''4=}///}*}/1**<_<|~...<}4}*}:*1*}<.~%_.._%)|)*111*}11*|~~>3...31////=1)3......+%)):4}]|>>>|]]~~>]3..3}]}}']::3_{~...-[||*11}/=4:/'1)*4)~._{=/}}:}/1!_<|~...3}}4}}*}:***}}/<.<|~...3***1**}1**|1)==*<-!|1/'/}**=|*)]]]]]))44[+.+%>]])}]]]]444}]:4']:}}4'''}}11|&[^$(;", "(^%[|1*1**))=)!_+2>-....+[|*])|]<_..{))]>&>>>|]]]]]~.~]]~.._%}:}4'''//1]|,.~>%_.._['1)}='=/}*1/}}====1*!.!>~...<}}}}:}**1:<_~2_.._%**1}/:*]}}*1|~~|3...3//''})*|3......_->*4)))>&&>>|[~~>]#..3}]]}']}}!.3!....~$&||]*4/*})/:*}/^_.~[1//}==/=<.!&~...3]}}}}}:}**1*:}<.<*~...,**/:*]}}**)*1)*{_..3>''/1*1|)*)]||]]):]4)-.-[>>|]]]|]]}'}}]]}']*}}}''///*||&[^((;", "$^%[||**]]1}=)>-_+2%~....3>*|>>>>~._%4)4)]>||)))|>>~.~>|~.._%}}///''/'/**3.~|%_.._%44*414'4}**}*11/}}''<.<>~...<**}1:}*:]*<.~%_.._%))=41**|*}**>~~|3...3*//}}:**3......._,%4/:4]]>]>%-_~[]!..3|]:44*:}&+-[-....+!>*)1)4:'444:4}{._<}:**11/4}<_<>~...3:}**}1:]**]*::<_<|~...3//}1****11]])1<.....-2::}*****|||>|*]])']~_<]>]))*|>]]':]]]:}4}}]/}/'/'//1*&[^$(;", "($%[|]}}*1)}4*)^~.~22+..._3%])|]>~._%}*|)|]|])4))>%~.~>>~.._[::///''4'/}:,_~>[_.._[)1}}4''4}:***==}===}!.<>~...<**::1:}1|]<.~2_.._%1:)1)*|*})}}%_~|,...3}}}}*1*|3.~~......-<|)|)|][!+_.~>]<..3*]:}}}}44{_<[~.....,%1)})}:)4}142+.,:**1*==1==<.!>~...,}***::[{[}|1}:<.<*~...,}:*]|*[{%)**}%~......_3[)|**))|]||)**|:)<.,>|]])4))|]:':]]*:}:}:}//}''/'/**&[^$!;", "$$[[||:})}*1))*]2+.~<<+..._+{>)4|~._^]]|]])])4)4]%-..+<[~.._[}}///}='4'**3.~]%_.._[4)1}4'/'4}*}11=/='/'<.<]~...#]*}:}::}1*<.~%_.._%4*))))})}):)$_~]3...~>}}1|***!_~<+.......-{!2~...._~![]]]::4:>!~._^4}:111=/}'<_<]~...~>1]*}%-_%}**}:<.<|~.._~&:1})%-_[4}}}{..~_.....~!&*==='=4)1)}*|%~+%))|)}4)]))*4*1)]:}}4}}/'}4}'//**|[^$!;", "(^[>|]*:}]<,-{&**!_._{#_.....~![>~._%|>|*1)144'|!+.....+..._[//44///)''/)3.~]%_.._%4::*4'''':}/==/'='''<.<]-...+<>2<[}}}*:<.~%_.._%*})1)}}/:}}}<.~|,..._2}%32]*:^_.,2~.........._......~>]<..3]]]*/4//=)<_{)%-......~{2>]]><-_..<4'*}/==//='<.<4-....-3!<#+._%}*:::<.<1-....-3!~...-3_......+~_._^]|||)}*)>!-_...~-....._['}1:}})=/'=)3.~]%_.._%4]]]}''/4:://4====1*2_{43.._..~_.~[}:::<.~%_..+[]})}*}/=:*::<_~>3....~{+.!]*:)3..{$+................~])<..,)]))/'4}4:*3_!/&3_......_~,,~....{]'4::///'===<.#){........_..+[}}1}}<.!}{...........+[}}}{...~[%$(;", "$$[[|**4{.....+[]{_+~..~_...........-$[>[%$!3~...._3>>3_..._[}11**}}/4'':3.~][_.._[4]]]14}4}}}//=/=1)*|>~-)[+......._%}}}4<.~2_.._%}'/*)*))1}})$._23...._.._<]*}4[~._<%-.............,+~|)!..31))''41111:|3+!**2,_....._......-|44}1}//4==}]2_-4[~..........,*:*:}}2_-][~..........,]:)>~...._3<3+......_._____....-%|*)*14444))*)])*)**''}}:***)*44'':|[^$(;", "($%[>|}43._++_-&{__<[{+............_._+~+__....._,2]])>3_.._[:*|]]*)1}'443.~)%_.._[]]]]:}4}]::4//)**/)]/<_2'%-......~[}}:4<.~%_.._[])}})||]:*::%_.,3.......~[]*144%~__!2#~_____...._{>~~>)<..3))''/4}*|]]1[-_-$&|2,_........_-[44}]::4=4:**'&~_2'&3_.......+^}}}}}/>~_$)%,_.......+2}::<_-<-._.~!$3+..............-[||)/}))::1})]]]]])4/''}}*]]|}11='//|&^$(;", "<2%[|1**!.~[%%$-_.{]]]%,_............._......._,<>]]]]]]<_._%}**||1})='/43.~]<..._%]]]]]}}]|]}==41**:||)|~~<>>3_...~24}}}4<.~2_.._[)})|||]]}/}4>~.+3_......{***)=''[,_.+-,++~+_...~<]]~~>]!..,}''''1**]||*4&,..+,!<<3-+_..._{>:}}]]]}===1*)]]$_~<%]$-~+..._{*}}}}/})$+~![|<-~+....{}:}|,_2)>$~.._~#<,............,[]||1''/}:}))]]]]]]}'''':}*||**:)4/'}|[%$!;", "(^%[|*}*2_.-])]]]44'42~_[)]1/}}]/}/=43.+!-..._%]>>|]]]]]:}:}:*]|***]'<_.+~~...+2:}}}//<.~2_.._%]4)*]||])/}}]{.._......+[****://4]!+....._..._-[)]>~~>]<._3'''''4*|1//}]/)$~.._._+~+_..~<>|]]]]]:}:4:*]|]])!_.+~~__+...-|}}}//'/:]!_.+~~___...-]=}:%_-]]**&!~..._+_.........+{|)]})*}):]]|||]]]]4'=''''}1]14=}|/4//}|&^$(;", "($^&>]}']3_...._{]:}*)||]>${~___.......~33<%>]]]]]]])''4'4[!>}}/'''/4////3._....._[]>>]]]]]]]]***)]])*)}//<+._...-^:::}}}'<._+..._%}*)||||]}:}/:%~......._<))||]14'}:)[{+..._+~32]]])>~~>]<..3''''44}//''''/'4|<-+.._.__~!&>>]]]]]]]]1**)])})])$-_.......,[::}}}}'41})$-_.......,[:://!.{*]*}*4[!3+........._~3%)***:}}:}}]]]|])]])''''''}4}1/''''/////][^$!;", "<^^[&]}'4|<333{24=/==)||>]4'>%%%<-..+{$&:::)]])]]]]]4''44)44:}}//''/////4%<<<<<<<<>]>>>>]]]]]*]]]])}*)*)'''%<<<<<>:}}:}}}/[{-+__+,>=)*||||||]4')]2,+___+,$]=)|>>|='}:]]}&$<<2[]):):]]>-~>]<..3///4/1}4/'''/}/44/:&$<<<<%>4]>>>>]]]]]|]]]]))*}*)')%<<2<<<<<<$>]]]/'3.<:}***/'})>$!!!<<<<<2>)::****)1::}]]]]]]]]4/''4'4'}}}//''//4///|&%$(;", "$$%[&|1=)|]:)])4='4)=)|>||144)):)<._2]::}}*)]]]]]]]:4''4]]4''//}1=}}/4444])]4]]):44]]>>>>]]]1)]||])])]*}='=4|]||]::/}}}}}4::]>%%%|]:*||)]|]|]=/}|]|>%%%[)/)})|>|]}})1**))]]|]}:::}]]]>~~>]<..34]]:''//1111://///:):::)])44]]>>>>|]]1)]||]]])]*4=''4***]]::4}}}}}}}}}/*|]]|)]>|]|]||]//3.<}:*14/'=4)]]|||:':]*]*}}***}}:1*)]]}]]]]14''4]]4'/'/}1/}}//}//*[^$!;", "$$%%>|)}]]]:4**:*=4))*|||]1*}*]**<.+&*}::**]]4))]])4/'4:]|}'''''1}}}//11}::4:]]]):]]]]>>]|]]}1))|||||||)=/==|)***}}}}}}}}}/4':]]]||||1*1)|||]):]|]}}**::4=)**|||]1}:***:}})**}}}**]])]~~>:<._3:]]}''''//}}///4}}::::]]]):]]|]>>]|]]}1))|||||||*===1])**11}}}}}}}}/}'}*||]|]|]])*|||]):3.!}1**)*/}))*|||]*:}***:*1|**:}:1|*])})]])4/4}}||:''''/}}}}//}}}|&^$#;", "(2%[&]]:]]:}1*}}})1)*])|]||]**1*4<..$**}**|*]:}:|]4}:**}]]:''/111}////}}1:**))]]::]]]]]]|:]]44}]]]|||||*===***}11::}}}}/}/}14)1]||]|)|))*|]*]1}]:}:}}4}11)))))|*|||11*:=/*****:**)*]4]~~>4<..~>]|}''/111}//4/}}1*}:)]]]::]|]]]]]:]]44}]]]||||||==1****1*:1}}}}////}}:1]||]|)*))|]|]]}:3.3*}*}}}))1)])|]]]]:**:=/)****:1|1|]}}}||14:1}*]]1'//111}////}**|[%$(;", "$$%[|]]::}::}}}/1]*)*)**]]|]**:/'<..{)*1***|]}}:]|]}4}:}*]1/}|||]***/}:*|]*1:)]]4:]]]]]:]]]|11*)]]]|||||====**}}}*:}}}}////}}:***|***1))*|*)]*:::1:}}}}*)*****|)]]]**1/'/*|*******|]:]~~>][___<4]1'}]|||**1}1:*]|11:}]]::]]]]]]]]]|11)1]])||)||==1=*14=}*::}}}////41:***|||*1))***)]::{.,]41/}**))*|)*||||11}/'=}|*11*1|)|])}}*|]}4:}}*]}'}]|||***/}}*]&[%$!;", "($%&||]}}}}}}/'})|*)***|||11**}/'<..3***1*|]|:}}||]}'4}44}}4'/||*}1]}}1]*|]*4:):4}**|]]:*]]]*)}1*))]|]*}=11=|}//}11*}}}////}}1**}})*)*)*|)11*]}}}:}}/'/)|*))***||*****4'4}|**11*|||]}]~+&][+..->*}}'}||141|}}*]|]|*4))}44::||]*:]]**)1)))]]||*}===1|*/'}}11}}/}}}/}}}11}}}}*)1)||1**]42_~>}/'=}||))***|*11]**4'/*|****)1|]|}}:]|]}'4:44::4'1]|1}1]}}*|]|[$$(;", "$2%[||:*||:1}/'/=)**))*)|2<)*1'''<._<***}*>}}}:]]]}/'/}1::4'}}|||**|*|||]|**}:}*:*]|||]*1*]]|]=/4)}))**)/=11|4''/*]]]}}::}/}}*1***|*******)*}:*|]**=''/=)**))*]|**}*='''}}1]|*1}*=1)4|-_%)]-...{|4'/}|||**|1||*|]**}}::**]]||]*1*]]|]=/4))))*)*}==1|)''/*]]]:}}4}/}}*****|*)***)|111*1|,.''=******%3_.,$>=//<.~|111&{~32]1|||]:'/:**}}//}1**]1*1]]]|***:}**]***||*1:/1*|*)/:})}*|*1}=1*]*//:****}}]]*}}*||*1**1*****|*}}}1*|**4/''=1*|****)1)=>${$//111111==1=1*|~.!|:!..._<}//}1]*]11***|]|**::*1***|]|*1:/:*|*)/*}}}****}})**}}/:****}}]|*}}*|**)***1****)*)}4:|2+~[''='<_._3***))=|*=///11111==111***]|||}'/}**:}//}1]]]****|]]>[^$!;", "$$%&>|*||||$~~{^|>>[2<,+...._-#%|{.+$|%!~_.._-333,333333,3$:/}}*||1**11*]1**:}**]**}**|*}/**||:1:***)|*]))**]**1111**}1|||:}*||]**|1*|*****:**]|||1=/=4)**|****|)=){.._<=///}/}1=)*1*|,.~[:[~...+[:/}}*||*:***|*1**}}|****1**|*}/1*||:}:***|*)*11*]|***1**11}*]||::]||************:*}]||{_-^4)|-..._%)*14=>**1/////}/}===1**|*|||1/}:*]*}}/}}1|**}***]||[%$(;", "$$%[|*1}11]-..._~~~~_.._......._~_.._~_...~+._.........._.~]//}:*]*41*****11/**||||**|||])}1|*}:*|**|*|*)**|||]|]*:}]**|>]1:|>|***))*1|***|}}}*111)'/))*|))*)|)1))>~..._2///}111*==*::<_.{]'2+...<}/}/:]]*}::}1**11}**|||*]*|||]:)1|*}:*|**||*|*)*|]|]|]*}:|11|>|11||>****)**|**|*141::)|-._{[2+..._[||)='|*>*}'///}*1***1111|||]|'}}1*}}}}//**]*}:1111|[^$(;", "$^%[&]}}}}]-.._-,3,3-~_.......__...._~+_.._.........._____{}}//}||}}}}}}:::*//1||||||]||**|)****|||||)***||]|]]**}*|>|||||*}*||1*111*)11*||1}//})**:/}**|*|)*|||)=>+....,:11*****11}}4],._!'/!..~&:}//}|]}}}}}}***1//)||||||]||**|***1*|||||**|*|*|]|**1:1]>|||||**|||***11**11)||1}//}:4[-..+~....->||)==**|*=/}111**1*=1))}1]|]*'/}}}}}}}//}|]*}}}111|[%$(;", "($%[>|}'=})$33$|)||||&^!~...+3$<_...{[|<3_.._~,<&||****|)|||**}:|]>|]||*})*|**)***1**)*|]|4/'4/}*)}1)*||**)||*)/=3....,1**|*|*1==*}}:[-.+{%<._<}}}}}111}}}///}4}*//**||||||||***|***||>>||*11*||||***}}]|&|]||*}}1|*1****1****|||}/'}/})&,......_<|]|*'=**1=}/=**|**|1==1}}:|*]*'/}}}}}}}}}**1}}}}}}1|&^$!;", "$^%&||}41}*]))*1))|))])*&{~3%]}!._..~-%*]2<<^]*:*||]4/4:4:::}}***}}}/}'//}**1*|1|||]||||}}*|||]||||||*1**||1*|1}}}|||||||}}*1||1****1|**1|**:}}}:1**)1*1*|*)*|**14*&!-..!//==1*|*=/:}}:]%-.__+.3]}}}}***}}}}}'//}**:1**|||*|||*1}**||]||>>|||)*)||*]]1:}*]|||||]}:*1||11****|)11]**:}}::*]}]<3~~~,$]|)*1)=1=1=/}///1*1**141}}}|||]1}1:*:}:}:*1*}}}//'}}|[%$(;", "($[[|*}**|]|**)=1*1|***}}}|*]=]-.<,...,|1*=}1*}}||||***]||]]}:|]}}/}}'///}}*||)]**)***1}}=}1||||>>|****}*|)|:1*:1}*]|*|]*}}|*]|*1*1**|**)11}}*1*]||**)=*)*|*|1)1**)|1|-_^'/'1111*1/1}}}]|%-.._+%]]]}*]]*}/}/''//}}*|||*)*1|**1*}=}*>|||>||))1}}*||****}*}||]|]*|}}]*]|*)***1|**|11}1*11|||**}*||>||*)11*1*|1=''/''/==***==*:1}||||***]]]]]}}]]*}/}/''//|&^$#;", "$$%&&||]]*1***:*1*||*****)}}|/$.+&3_{_.#11}}}}}]|>|*}}}}}11}|*|**}}/}}}}}}}:|*1*|*11)*}=4=})1*|**|**>)*==}}*]]|}}}}}:1|]|*}||)|]|*11)**||]||]]||*111*:111||)******/]}&~+|''''=1==41*}}|||][~._<}**}]||1*}}/}}}}}}41]****|)=**}=4==}**|*|***>**=//}*|]|}}/4*}*|*|1*||*||*111)**||]|]|]]*11***:*:1|])*****1=|//11//'''=1=1}/}}}*||*1}}}11*1}]]|11}}/}}}}1|[^$#;", "($%[&|]*****11}})*)|*11**|*}}%+.,)3+%!__<*1=:}1*||*}/}}}}:}}}*1:}4}}}:::::}1)*)****}**)}1:)1|**||||***)//=}1||1:}}}:|]||1}}1*|||)*))1*1|||1]||111***1}))|*|**1**|*}*4!.,==='===***=}}}*||]>~.{*:}}}111:}}}}}:::::}:|)1*|11)***}1:)***)|||*|**)'=/*1*|1:}}}}]||]**}1*|]*|***1**)||1|*|*****1*}}*])||11**|*4141*1='='/==*1*1:}}*|||:/}}}:}}1*1*::}}}}1}11|&%$(;", "$$[[>||11*}::::1*11**)1*1*}}&-.+2}3_%|3_+2**:}}|%&:}//}:}:}/}}}:*}}}11}*}}:*|*11**)1****}}*1*)**)***11::4*:1}:*:}}}}|]|]*)}:1)]]1*1*1*]]]||*]*))):*::}111**1)1*11)}1[~.{=====******:}4*||%3.->::}}}}}}:}}}}11}*}1}}||11]*1})***}}1*********11*}4})*}:1:}}:1*]|]*:})*]]]**}*1*|]]]]]]*:}}}*}::}1*1***)*1*1}111|1=====***11*:}}*|]*}//}1::}/}}}}}:}}**}*1|[^$#;", "(^%&>|1::}*}}1}***)2!#%***)>3__!1=,_%)|3.-[1}}>-+~2}'/}1*}/'//}1}:}}]*:}**1}}*****==***})=})***|****=:****1:}}}}}}:**|]||*:}:*]**1)}*||**]*]1:}}}}}1}*))1)1**)***}1],..-3333333333333333,+.+%}}*:}'//}}::}}|**1***}}}*)1*4=***})}))****|)1*=)****}:}}:}}}1*]|||]1:}}1]**1)}*|]1*]||111)**}:11)*)1*1*1**1)}}1|1===|****1**1}}}}**1}'/}:11/'}/}::}}}]]111|[%$(;", "$$%[>|1}:}:*:}}**}|~..,*1*2~._!*/1-.<*1>-.-[}}$.._{}}}}*:}/''/}}}}:}*1:::*:}///=//4=*1}=/}=}***1)*1)}1****}}/}*}}}}:11*]|***:}]]]***)*|11]||1:***::*}}**=/*111}*)}/!_.................._...<:}1}}/''//}}::}*}:1}1*}//=/==4=*}}=///}***1)*1)}1)***1}/}:}}}}*111||]***)]]]**1)||1*)]|*:}}}:}:}}*11=*1)11*)}}/1|*=/==**1=1}*1}}}}1:}}}}}*:}/''//}1:*}1:*1]|&^$(;", "(^%[>||*1]**}/=14/[+..~|*<+._!*}'^_.{1*1&,.~!%,...{}//}}}}'''''}*:}}*:}}}}4/''=/4'=/}4//4//=1*====//*:**}:*}//}:}}}}:*}1*]|1}*]]*1}}]]*]]]]]|1*1]1*}//1*'=})}}*}14$+......................,*}}}}}'''''}*}}}*:}}}}4'''=4/'/=}4///===1*=/===/*:****:}//1:}}}}:::}*||*}}]]*}}:]*]]]]|]]1**]**14=1*'/})=})}/}=111/'/==***1}}11}}}}}}}}//}}}}'''''}}:}1*1}11|&[$(;", "<^%[&|||||]**4/}}'|~...,,_.~$}1/*-..+2**=|{_.+..._24}}}}}/'''''/}**}}}''//''''41}//)1}==/==4=/4'''''//=}////}}}*1}}}}}}:*]**}***::::]]|]|||||]]||]**/'41''}:}4}}}<+.__________________...~[}}}}}/'''''/}:}}}}''}/''''=)=//:1}4////}=//'''''///////4/}}1:}}}}}}:1]1::}1***}:]]|||*||||]|||*1/'4}''}:}}}}}/'/11=//=1**1*=11*}}}}//}}}}}}}/'''''}}:}}:}'/1|&[$(;", "(^%&>||]||||*/':}'/<-___+-#>/=1/!_...~$**1:^,+_++#**}}}//''''''}}}}}:1'''/''')1}}/41**)}4:)}=/'''''''''''//}/}}}}/}}}}}}*|*}:}}1}}}1|]]|]**|]|||||]*4/1:'/*}}//|!_+!%%[[%%^%^^%%%%%[%$+.+24}}}//'''''/}}}}}:}'''/'''}}}4/41**1)4:)}'='''''''''''///}}}*}}4}}}}}*|*}1:)}}4:}|]]*]]*||]||*|]*}/1*'}*}}//}//'/11//=*=**|**111}}}}}}}:}}}//'''''/}}}}}}}''/1&&$(;", "$^%[>>||]|]||*}}}:}1|[%[>|)'///<_.....~2**|}:[[[|''':}::}/''''//4}}]}}}/4''''//=////1}*1}}//)=}/''''//}/4/4**1111=/}111==1}1:}}11}}]]]}1:]]||||]||||*}}}*}=}/*}{..<'///1|*|**|****1})!._!/':*:}//'''''/}}}]}}4/4''''}/}////111*}}/})}}/'''///4///}111}===//==1=/:}*}}}1111]]]:1*]]]>|||]|||:4}}1}=//:}/*}/////1|*||****|*1*}}/}/''}*:://'''''/4}1]:}4/}]&[$(;", "(^%[>||*||||]1}:11}/=1==4=/}/'2+.......3||*1/}::4}:}}*1*}//'}'}}}}}}:}}4}//'//4/////11/1}}}4}=='''''//}1=111}*1111=411=1=:1:1::**:*]]]]:}]]]|]*||*|*1:}*1=}/1=}{_+,{{{3{{3{33{3{33333++<1}}1}**:}/'/'}}}}}}:}141//'////////111=}}4=}=/'''''/}}1}}1***1*11/}**=1=1*:*}:**}*]]]]:}]]]]|*]|||***}11=4/1==4}=//'/=1*|**|**|*|*}}}:}}}}:}1**//'/'/}}}}}}1141|&%$(;", "<^%[|||****|**1**1/41)}'//=}//^~.......{1*1*/}**:}}:}*1*:///44}}}}}'1}}}::1}}}::}/1=///4/}1:*1/'''''/}}*}1}}=111/*1*||**}:}}}}:]11*]]]|]:]]:]]**|*|*1*1**//**='>[[[[[[[%%^%[%%%%[[[[%%%:}}::1**}}/}4}}}}4}'*:}}*:1}4}}:1=1=='/}/}}:**/'''''/}}*1)}}=11*/**1||**:}}}:1:]*1*|]|]]*]]*:]|**]|11****/4**='//}///1}11|*==**1111/:11:}}1::1**//}4}}}}4}'}}}}}|[%$(;", "(^%&||]]]|]1}***1)1=|*=''/1=14*2-....~{[1}*14*1*/''':}***:}}/4'44''']:**1]]}}}1111/1/=///}*||*=='=//}}}1):}11=11111*****|*1:::1||*1]|||]]]]}]]]|]]*:*:*1*==)*=''}1=)}*)1=))')))}4**4:)1}'''}:*1*}}}'4'44''']}1:}]]1}}*111/1//}//}*||1=='=//=}}}:1}}1=//111*******}11:}||*1:|]|]]]]}]]]|]|***:***==**=''/==}}111=*===*11111}1**/'''}1*1*11}'4'}4''4]}}}1&&^$(;", "(^%[>|]*]|]*}}1***1=*|1=/=***]|*&<<<$[)*///}1*|*/'''}:11*:}}4/'//}}:]*}:1**:}}}}////11/1}}*|||1=///}})}}}:}1}////}1*|||**]*1*)*]|||*]|>||]]]:**||]1}1**1**=||1===)**]|*}==='=**}//}1*]1/'''/}***:}}4}'}/}}}|*}:***1}}}}////1//1}:*|||1=///:1:}}}*}1/1///}**||||*******]||]*||>||]]]:**|*]*}1111**=*|1=/=***||11=1=/=|*///}**]*/'''}:*1*:}}4/'11}}}]]}:1&[%$(;", "$$%[>]**]]||}********|*=/*****]*}4}4'}***}}/**11}//}}}**1}:}}}/::**||1:}:11}///'''/'=1*1}:]|]***11***1}/}1:*////}**|*|*|*||||*|>||||||>|*]||]:}:]||}1}**|***|*==1*1****}//='1|*1}}/11**}//1}:*1*1:}}//}:1||]*:}}1::}//'''//=1*1}}||]***11:**1}/}}:*}/}/}****|**|||]|*|>||||]|>]*|]|]}}]]|]}1)**|1**|*=/*******1==='1***:}}1***}//1}}***}}}}}/}}1]||*}]}|&^$(;", "(^%[&|111111}}11*|1*1|*==1=//1]*}///'=)*||:/1}*1*]]]1}***}}}///}1]*]*}}/:**}///''''///1*/}}|*11***:}::}}}}*}/4}}}1|*|*|||||||||>>|]|||]||]||1::}1**:*}*1**11**=111==:]*4}///=)||]*/*1***]]|}}*1*}}}///}**]|*1}/:1}}//'''''///1*//}|*1****}::*}}}}*}//}}}1||||*||||||||>>|||||||*|]|*:}*11*:1**1|**1|*==1=//*]*1}///=**||}/}}}**]]]1}**1]}}/}}:*]]]*1}}1>[%$(;", "$$%[>|:}}))**1*********11//'/:*://})//)*||1':}/}1*|]'/1**:}}'''}}**1:}}/}*1*/'/'/'''/111//}}}:*1]11*}}:}:*}**=::)||||*|*)|||||)|||]]*]|*1*|]*}}}:}**=*1||****|1==/'/}1://41'/})||}'}}//1*]]'/***:}}'''}/:*1}}}41**:/'//''''/111}/}}::}1]1:}}}:}:*}**=**:|*|*||*)||]||)|||)|)|]*:|||*}}4:***111|******11//'/}**//}1//}|||:':}//1*|]'/}**}}}'''//***1}//1|[^$(;", "$$%[||:}*****11**|111*1*='/''/1*:}*|:}*)4://///111}}/}}**:/''//''/}'//}}}:}*///'''''///1}/}}}}*}''/}:}:***}:/=///=1)|*|)|||]||)||||)|)]***|**}}1*11|1111|1111**='''/}1*}]*|))1)})}}///}*111'/:*1*/''//''/}'}/}}*:1*///'''''////}/}/}*:}/'/}:}:1**}}}////}1*|*|)||>]||)|||)*]*]*1]*1*}}1*11**11*|111*1*='''//1*}}*|))})}}///}/}*}}}'}}**1}'''/''//'}}}}1|&^$(;", "(^%&>]}:11*1**1=***1=1*1/='''/:1}}1]}*)1*///::}}}}}}'/*11}}/'////}}'}}}*:}}}//'///'///|[[>/=}4/4''/}1}}}1}:}}//}/)1**|**)|]|||>>>|))||]*****}}*****1111*1*1111*'='''=*1[#||}*)=:///::}}}}}}'/11*}}}'//}/}}'}}}:}1}}*^!^//'///11}}/////4''}}}}}:1}::/=/}}=***)**))||)|>>>|])||***1|]}*1*1***11111*1=1*1=='''/:*}})]}*)=[!]/:}}}}}}}'/:**://'/}}/}}'}}}}1|&%$(;", "<^%[&|**|***111=1*1=/11}=/==/=*}}41*)==/=44/**:}}}}}/}***1}///4//1}}}}}}}}}1}//'//'/&#-++$4=//=}''/}}}}}}/=/1=/}|11))))*)*)*|||>>>|)*|**:1***1*]****1=/**1=}111=/=/'/)^-{4*111=////1*:}}}}}/}***1}/4/}}/}}/}}1}}}}|{3(~1///'//*}}/4=///''/}}}}}}///}//}}1)1)*)*|)*||||>>>|*)|***11*1**|****1=1**1//1*}//=='/}:}/}*}=/&-{//**:}}}}}/}1**1}1//}//:}/}}1}}|[^$(;", "$$[&>|*****1*1//11}/}}:=////=}}}//}}11//}///}}}*}1::}}***:}/}}/}}}}//}}}}/}1///'//&;,!-.{:}=}:4}}}}}}1}}}=4/=}}2<)1=*)****|)|))))))|***1*|*|*]**|***1/=}14/=})1=/===*2+_^=})==/4///:}11:}}*}:***:}/=4///}}///}}//}!+,-~|//////1}}}/::}4}}}}}}}}}///=141)1)=))*|***)|)))))]|***1))*|]***|*111/=11}/}}}===//=}:}//}}:)$-_%}/}}}1*1:*}}*1*:]<>}/}}}}//}11/|&%$(;", "(^%[&||**|***1}}}}4//}}====/1*:1'///11//==4//}}**11****1*}/'/}/'////'//'}/}1/////$-{&*-_2}4}**}*:::*:::::}:*=*$~2)11*******||)))*|)|**|1)**||*******141}1}//}}=1%[/=[{+~)'/1}4=44/=}}:***1*1*1**}/'//////////////[~{%<[//'////1}}}/***1}:::*1:::4)*=111*11)1****|)|*|))**)||*|*|***|*)**|**14}}}}//}}==/==11}1'///*>{+~)/}}}:1*11****1*[3,///'/}//'////1&%$(;", "$$%[&>*)|1|=*:1}1}}/4}*===11111///'41=4////1}}*******11*1}/'///////}//'///1////1!,%11[_~>///|1*}}}}}}1**}1}}1!_~>1})**|*|***1*))|)|*||*|**>**|)*|*=*:*}}}}/4}}1%~-**)2.{///*=====4}/}11*****1*11}///'[^/}}}'/'/}}<_$////////111}4/}]1*:*}11}:1*}*}}1==111)**|****1***)*)||*|||**|||*|)*|*=*:1}}}}/}}*===11*1*///'/}/&+{=4=/}**********],.<'/////}}//'/1|&%$(;", "(^[[&**=)*)=1***:}}}1111111)==1////=*=/44===:****:}****:}}//'////'////''/}}11/|{@&//}<.3}}}/|**::::}:|1*:}}}=!.{**11|****>**)1*)>|>>*||****&*)=1|)=*11*)}411|1)13-*=1{.$'/11=///==/:**]|:}****:}}///<+_^'///'''/*,+|///////1*1///=/|11}*:*|}:1*}}}}=1/1*11*********1)*>>||)**|)**||**=)*)=**1*:}}:|11111*===1////*1}<.$=1=*1]|*:}*1**1},+[/'///'11/''//|&^$(;", "$^%&&|*******11}1*1***1111/=*11////}/14==/1*1]|1*1*}}}}}}}//'//'/}///'/}}&<33--~&}/}13.[{-3^4///1**2{,-3$*}}}[<<%}:{-_2///'//}%!+~<|////|(3-3<*}4*|<2:]<,-<1}}}}}}}14*$[1=$<<%)1==*^{,-3^|*****|[$|*>$<<>1|<[1|<,-$*11}/=*11/*$3-{&,~>/=*|$3-{[*}}}}%!+~<>///&!,,$///1&&[$(;", "(^%&&*********1//11*111=}}//1}///////1}/4/}*11*}}}**}}}}}}}//////}}////1<-{^]{~~-%/}>~+[4}}1|**11%,!%2$+#)}>!+~<21$+~^!,{~.$412,~--_.-&*=[~_^$~~+_~&11//2-3&2<-+!)=}%_,<-~~_~24/=}&!~--~__<*}}2_+^//|!+>}}}''/}^,.{<|//|<--,~._3|}*#_-%33{++&::})*:}&!,{|1)#.-%)}}>3~-,~_~$**=*$,~$)*&~.3||{_3&{,{_~&=}/}/1}/2,32[3~+,:/}2{2[2~->*}}}%{_-<&}/<(%%{+|****|1|1}///11111}////}}//''/'}1}///}*]*://}}}}}}}}///}//////1///!_!1}2-[[3-%/2_-|1}}}**:4%~$]<+3_!4:)%_3**)[~.~{&>,+2)!-!&)>2~.3*=|,.,,2>2~.<*}}<~!*)[{3_,//}!.-3[}|-.3}//[,3[*}|3.+%}}:~~]}4[~!}/1/////*,+[///|;-$]1|(__<})2+_~!)[-~>}}:4}})>~->1*){.211}%,3[||[3.~&*==2+!*11|~~&**2+_-!][+-|}///}}}2-<}/'>~.-<}4],-|{.!*1}}4*}}/{~>|!~~,|)}}!.$|*11!.#))#-!*<,%||1**$_+[)=#.,||)|!.3}/[+,|1=}})~~>/},.,:///!.~]/|,!||}/'],_!/}*-~:/>-{|///////}&+-11/1{{|**1*]#.3}}*-_!*>3-<::}::*}:[,%)11|~~|))[-!))))*>,_$)1)!,*1))%+,)*11,_21>3-^11}///}%~''/<+~,}1^+#/1|&%$(;", "(^%&|*1*|1|*}}/4:**1=111}}}}}}}////':1}//'/1***}//}}///}}}}/'}}1/1///}]-_-&!-]/'/2+<-_^**}}}}*}]-_{^]>|]]]]],+[1**),~>1)]]=[-%)1)***>-.$=4,_2*1**<.!}'{_$*1=11&+~>4&++[///'%_,}/{!1***}/}$.{/}:3~|&-{:/1/1///}}$_{11'<-]}}1:*)[+~|4>~+&})||)}:]]]]]&-<1)*4%+3*})3<}}}1***!.{*)^-[=1*1<.$**)>~,****1*114///*,,}///'>~-1/'}^<{!#^<+&/}/[+,}/''|&~<'/''/,-_->*:}}/}}}){+._-<[]]]][+,])=}>+,)1*)}}{{))1*1*1*!_%=>+~>***|!.$:1-+&**11*<_{14$_{1:///2_{}^->}***//}>~{4/}!_!,{*//1//1''//3_211>-$'/}*=**},-|/2_3:}:)))1]]]]]|3->4}}/!_$)*^,]}1)1*}:2_!1&-{)11*|,+[)142_!***111***}}}$+24:}//%_!//'/%,-33~-_['/'<.4$_{1*1}1,~>})-~|&!2:[~~%}:3_21=}/:<.$}33///14//=>+==//}!_2/''2~!&44%~_['}},+[///]{-^1}}#.{11&&^$(;", "$^%&&*11****|***1***|*|]1}}:})**|*}}}}}//'''}}}4'}//'/}}}}///11////'/////|-!///1}}2__2:1}///}}*]&>]]%-.,]]}3_^]4}}{_%41*])2+^=44}})**3-}/{.$))):[~!|:4$+$3~[^-~2:}>~~|]*):|-~>|~<''}}}/'/%_2//|!.-*}1/1///'///^_3}1/3~|}}*:11:>~#4:-+[}:1*14:1]]]]3~>]:*}[+,1}|~!1}}==}}/^~[|-3=*11:$_<)1*|-~|1**1|*|]*:}[_,*]**:*,-|/'[~!]:}/',~|'/&+,://*{~&4}}'%_(/1|&^$(;", "(^[&||]*)***}1}}}1**1|||::}*)***}}}}}}11////::''11/}:}'/}}/'////////////1$~&11111*2_~>=4}1}}}:23+~{>'2_,]]>~~>}*}>-~>})*|)<_^)11*:1*&~<4|-+&***]!~[:**)<-+--~{[}::2_3|**}}^+!:&+}}'':,-*}4$_!}}'^_!}}///%_$11|&%$(;", "$^%&&|||**|**1}}/}1*]]**1:111*|}}}}}**1111//1*/'**}/}}/}}:1}//}}/////}}'/3-]*11**1<.,:}}**141[-{<~_[)%+<))%_3:}}=%_3=)=)|]{.!::*1*1]<,|:%_3]*||%~<}*/}4*{!^%%)*1}}#_$]})}|-~>*[_,*/**4'*%~$]|{3|,.<}////1/////-+[//|~+%1**}}}|-{}=<.<:*}::]*}:})42_3):}/}3+%)=%+,**1}1*1%~2]!_%4111>~-]|)1!_|||*|1*}///4}***1***1)})***:}}}}}}1/11:*|}/**}}}::::}:1/1///1/1//'/*-{=/1*1}*3.<}}}:*11]{!)[~3]]!-|})<.$*}/:!_<)=)||]<.~[11*]|2-%|*!.<1|||,3]1}/}[,~3,!2)**)>~+[**14{+<}}>+_$**]}/|,!:){-|:$.,}///}//1/'%+-*//13.#*1}*|4{{|*|,_%}}:}}1]]:):)<.3}}/:2+-|=)[+_$}::*1[-!|],_<*1*|!_3***|,+&}4}1*1**1**:<.-|*:4^~_%}1<_,**|4]3.$}}|~-]:}>~_2/}}/2+~1//&&^((;", "$$%&&|*|**1*/}}/1**||}1**1}=)**1:}}}//}}11=1]|:}}}}}}}}}}}:*1//}/1/}////&+!3^)*|-+%}1|!32&1}/$~,<2!,+3|:|!.~>))|!+<:/}},.~$&||23<:}!~%:}&+~[}///}/}1/<.!11=/^+_![|>2{{)=*[+-|:1:]]})})}}:2_~%/|<~.{)))],.~$|*|$-<]*1#.,[][{~.-|1*[~-1/1**|*}:1}1}%_.{[><,+_$:/$_+!&&23~_%:}%_,*}}]-_-%*&!-.,1//1&%$(;", "($%&|*****]|4//}}*|||*4//:::)**]}}}}/}}11*11|1}}}}}:}}:}}/}}111///11*1==2+%}/1*|[{++%]}/1**|]<-<%%%{,%::)43.{*=/2+~&*)*||})2+.+-,-,[:}:<+~[)4<+~~[|=/%2|1]||,_-.+,-,,_$)))|[-._~3~-<|*})%+.~,-{$_-&*|3_,1}}*|||*//}:)]3__++-23_$/}]-._+++!-_%4}[_+%}}*$_.+~+-3_,1==&&%$(;", "$$%&&]1)1*1|}=}:11||||}=/=}**||*:}//'//}}11}]**:}}1}}}}/}/}}1}/1111*|***<_[/'/1/&2%<[]|**1)*]><{3{32]4::*}${[44*^[$[))*|))}1%{3,32|=*/]$2$[}122$!)]*>|4**||]!.{')!%[333{[}}//}}4[!333!>:}[~~#]/}[$^$|1}1111*%+,*/}///]<333#%|]**[2%<>41]}}4'}1::)*2333$>~->**||][!333<&))*=:1<3,32)>{%))&$%2|)*1|||]:///:}|!33![4%^4}}/>#33!2>22&:}|{<4}}}*233{<|%$$*111&%$(;", "($%&||*14/)1:**1**1*|]*)//}})**|*}/}////}1=}*}:1}}]:*}}//}}}}11111111***3_*11||!_<='=4))])}:}/'//}141}*4}*}4{3%4}}/:4}:11111=1*<+211//'//''''']]]|1144'4]]*::/=/:})}:::)'4$_!]**))14})]))****1}1**}}/)}4:4/))}**11**|]|*}=//))]|]*4/'/}/}}4}}*}:*:4]}:}}//}}}}*}1*1111*1|11&%$(;", "$^%&||**}//}11***1*1||]])=/=}]||*}//////////*}**}*]1]*//}}}}}}11*1*1****,.-['/}/''/]]]***}=4'44])4)=):*}}}4})*/'/=**|)***=}*)|******11)1*1}1)1*}//2~{,&*1**%++%)4=/))||*}///'////}/*}*1}*<>]}/}}}:}}}11***1|-,|*=//////''4]||***==4/}:]}4444}:1)}}/:*/4,~&*|**|1}**|*|*|*)*}}***1}**11}//}1=*::=1*|||]:/=/1]||*}//'//}////*}*1}1]1]}}}}}:}}}11*1*1***|1&&%$(;", "(^[&||**}/}1}===411*)1==/}4=}=**1:}}}}*}}}1*11*}*1]|}}}}}}}}1}}*1*11///*~-$*//}}:1}}]*:*}=/=44))])4'//}:::}/}1*11*)**11*}}**)==*=1*=1==11**)1|*4/4!,/*=4}=[-_<4=}//==**1}}}}1}}/}=*1**:*:]|}}'//}//*}1***1|#~^}/}/}}/}}}114]}:)}///44}}]*4/}}1:*:][%*}<+<)|)**})}}1)=====*11=1=***11|*}/}1}1==}}11*}/=/:/)4=**1}}}}11}}/}****:**||}}//////}11*1*11=1==1|&%$(;", "$$%&>*11}}}11111}=11=4//41)}'=*]1}}}}}}//}=1***}}}||}}///}}}}:}*1::111=|$>}:}1}}**:}}}}:}//=4))]]}4'4)44///):********)}=4=}**)=*==)=*==*=1=1111}/4<-%|11>$~~!=/=::}'})|*:}}/}}//}11*1*}}:]|}}//'}}}}:}1}*$~+!-!)1|1}1===}}))1=1===*=1=1=1}1*14}}1=1*1}=*1=4///}}1'=*|*:}}/}}//}/=1**}}}||}}///}}}}:}*1::1///1=1&^$(;", "(^[&||**}//1//}}}1**'/'/1)})'4)1*:}}////}}1}*1*:***]}/}/}}}*}}}}}}}:}::1*:*}}}**}}}}:]]})4/:/}]]]))::4::=4//)}))}11**1}4///}}1=====**1==1=}}1*1}}}1<--3,--!|''4:}})'=*}1}:}}/}}}:=11*1:}1||}}}}}}}*}}}:1:<-<::1*}:}}}**}14})]])}4/}/1]]]4)4:}4)/4!_~~3^1**}**4/}4}1*==*==***1===1/}11*}//1///}}1}*'/'/))14=4)}*}}}////}}1:*11:}:]|}/}/}::*}}}}:}1:1*1*1&&^$(;", "$^%&|*11}}/=///}1}*:'}4=}**|==):}:}}//'/:**=***1}*1*}}::}:}*}/}}}}}}}}***11*:*]]:}}4:]]]14=**})]]]44]}4:4}/=41}):*}}4===/}}}1*=1*=***)==/==}111}///}>[[[[)*'/=/:**|4)}):}}}}/'/1**1**1*:}1*}:}*::}*///}}}>>}}**|1:1:*|]:114:]]]14)*)::]]]*4]:}44/|[[[))41}}==//=}}}*1=1*=***)===}=}111}4/1///}1*::'44=}**]=))}*:}}}//}:**1****}11*::::}}}*//}}}}}}}*1**|&^$#;", "$^%&|**}/}}14//111/}}}1)***]*):}}}}/}}/}11*1***::}***:}}*}:1''/}//}}}**|*]:}1*||}:4:4)]))=)]}:)})4::*::4=4)}=::11}}=}///4}}=)======**='=}1*=}*}/}/1==41*11}}}}:}*)|*}):}}}/}//1***=**|*}}}|*}:}}}:}''/}/}}}::****}:1**]})4:4)]])=})}1))*}4:)}:)=4))4:)}*)}=4/4//}}/}======*1=/4}=*=}1}/}}/}//*11=}}11}*)*|*)1:}}/}}//=111=***:*::*1}}}:::}''//}}}}11*|1&&%$(;", "$^%&&11}}}}111=1**}/}**1***|)**}}}/}}*1****==**}:/*:*]:}:}:}///}}}}/}******:11**}:]]::])})1]))]]*}44}}://}))**)):}414}4=//4=1*1=*=**11===**11}}}41}==111*}=:*1****|]*1/}}//}1111**=1)**)}})]*:}:/::////////}***|*1:1***}:]]:4])}))])1*]::44:}444):))*))1}4*}}///4/=)*====***1==1***1}}}}}}}1/1**}/}**1*|1|)*1/}}//:}1****=1**::/::]]:/}/:://///}}}*****&&^$#;", "(^%&||1}1111==**|*4//}1|***||*/'/}}/11***11****|}4/*:1}//}:*}}}}}}}}**1|*****:}:]]]]44)}))*)}})*4:4':)/'::]|}1*)}**:1/'//4/')==1=1=1*=4}11*1==}1111111*|14//}*****|*)/'}}//*11|*1*)1**)4==11)///:*}}}}}}}}}****1****:1:]]]]4)1))1*)))))14'/::}=4}]|}}*}::*}4='////'1=*11*=*1=/==1*=1=}11*1/=1***}//}*|*)||*)4'/}//1***********=}=)1}=}}::}}}}}}}}}1*1|1|[%$(;", "$^^&|*1==1*1*111**/''/1***)*)1/''}}}11||*****|)**4=}4=4}}}:|:*1}}}:}]:}11:}]1:}:]]]])4)})]*|))}}=/}'}4}4}}]|)*}*}}}:}//'////:*1**1)**===1*=11=111*11111|*/''/*******)/''}}}**||***|1|]*)44)=4)}}}*]*::}}}}}]:::1:}]1:}:]]]]4)4})]|**::41}4/4//41}*|)*)*1}**}}/'/4}'*11*111*)1}11*1=11===****1***/'''1|1****=='/}}}1*||*1**)|)*)4=})4==}1*****}}}1*]*1**|[^$(;", "(^[&>*=1}//}}}**1}}/}})|||||1=/=***11******1=)1*)=4==4===}/}1]]||]]]]}}444]]}*||**)]|])}=))}==))]*)}|11}}}14:*|*)}}}}}}}'//411*1111*=1=1==1*=1==//}}}}*=}//}:*|||*|1=/=*]*/=*1***1=))1))========}41*]|]]]]]]1}444]]}*||*))]|)})=1)1/=1*)*1}|***:}}4:*|1:}4}4}}/'//}})*1)}**1======*==1}//}11*11}//}1*)||*|*1/=]**//****|*=1}*))=)===)4=}4**]]]||]]]1}}1|&$$(;", "$^^&&*===}:=1}1:}}}/:1*||**|*===**1=*=*|**=1=4=))1))=)=)=4=:1*1]]]:}]}:::]]]**}}))/4*)}))|*)41==1=}/|)**1=1}1]|]}4}}}}}/}//}}1*)})1*=1=1*1**=1}=):=**}:14//11*|*|||11==1**1*1*|*|===)=)))=)4=4)==4111*|]]:1]11*:]]]**}}))/)))})])|)4)=*=)=/)*1111111]|]}}}1}}4=///}}1*1)}11)=111***1==1}}/}}*:}}}/:1*|*|||1)==***11=****1=)=41)}=)='=)==/411*]]]}1]1}}}>&^$#;", "(^%&|*11****:}:}*}}/})11*]|1*1111******1**}===4}))})*))4)=41:}:1*}}}]]]]]]]]*}4'=*4=)1))|||)==}====/1**)***}*]*}}}}}}}}//}/}})***1:******|*11==)11*}4:1:}}/})11|])**=11*|*111*1*1==/==1)))))]*4)4=::}*}*:}}]]]]]]]]*)4'=)=/*)))||))======//*1*)1**}*]]}}}}}}}}}//}}})**1})*1*****|1=11****:}}}*}}/})*1|])11==1*|******1*=/===))))))*))4)4*:}*1}:}}]]]]]>[^$(;", "$$%&&*=11}**:}*}}}4=}}:****1}==1***=*1**==//'=))})1))||)|1)}*}:}*}}}}1]]]]]]''''=))*))=)))*))=4=//'=1*11***:1:::}}:}/}}/''/}/1**:}/=/11*****1111***11:}*}4/}})***1**===1**1***11=/''')}}))**)|)*)=}:}:}}1}}}:]]]]]]''''=)))1=))])*)}1=//4/=****1*:}11):}}}}}}/}''/}/1***}/==1)**1**===11*1*::}:}}/}}:1****11==1*11*11*==//'')}):}*|))|*1=}*}::}:}}}:]]]>[^$(;", "(^%&>||||||]||||||||]||||||||||||&||>|>||*|))*)>>|||&>>&|||||||||>||*]]>>|||1*1*)|>&>|]||||||||]||>>>>|>|||||]||||||]]*111||]|||||]]]|>||>|&|>||]||||||||||]|||>||||||||&>|>|>||||*)]]>>|>]&&>&>||||||>|>||*]]>>|||=11**|>&>|||||||||]]]>|>||>|>||>|]||]|>|]|]111*|]||>||]]|*||>>|&>|||||]||||||]|]|||>|||||*||&>||&|||||)*)||||||>&&|>>||||||||||*]]>>]&%^(;", "$^%&|&&[&&&>&&&[&&&&&&[[&&[&&&&&&[&&[&&&[&&&>&&&[[&&&[[[[&&&[&[[&[&[>&>&>>>>>&&&>&&[[[&>&&&&>&&[[[[[&[&[[[[[&&|>&[[[&&&&&&[&&&[&&&&&&&&&&&&&[&[&&&>&&[&[&&&&&&&&[&&&&&&&&&&&&&&&&&&>&&&[&&&&[[[[[&&[&&[[[&&>>>&>>>>>&&&>>&[[&&>&&&&>&&&[[[%[&&[[[[[&&|>&[[[&&&&&&&&&&&&&&[&&&&&&&&&[[&[&&|&&&&&[&&&&[&&&&[&&&&&&&&&[&[&&&&&&[[[[&&[&[[[[&&[&[[[[&[>>>&&>>%$(;", "$$[&&%^[^[[[%%^%%%%[%%%%%^[%%%[%%%^%[%^^%%%%[%%^%%%%%%%^^%%%%^%^^%%%[[[%%%%%%%%^[%^%%%%%%%%[%%%%%%%^%%%^^%^^^%%[%%%%%%%%%[%^^%%^%^^%%[%%^^%^%^[^[[[%^%%%%%[%%^%^%%%%%%%^%^%%^^%^%%%[%^^%%^%%%%^%%%%%^^%%%^%[[[%%%%%%%^%%%^^^%%%%%%%[%%%%%%%%^%^^%^^^%%[%%%%%%%[^%^^^%^%^%%%%%%^^^%^%%%%[[%^%^^^[%[%%%^^^%[%%%%%^^%%%^%%%%%[[%%%%%%%%^^%%%%[^%%%%%%[[%%%%%%$(;", "$^%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$^$$$$$$$$$$$2$$$$$$$$$$$$$$$$$$$$$$$2$$$$$<$$$$$$$$$$$2$$$$$$$$$<$$<$<$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$^$^$$$$$$$$$$$$^$$$$$$2$$$$$$$$$$$$$$$$$$$$$$$$$2$$$$$$$$$$$$$$$$$$$$$$$$$$<$$$<$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$^$$$$$$$$$$$$$$$$$^$$$$$$$$^$$$$$$$$$$$$2$$$$$$$$$$$$$$$$$$$$2$$$$(;", "(^$((((((((((((((((((((((((((($(((((((((((((((((((((((((((((($((((((((((((((((((#((((((#(!((((!(!(((!(((!((((!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((($((((((((((((((((((((((((((((((((((((<((((((#!((((((!((((((!(!(((!((!(!!(!((((((((((((((((((((((((((((((((((((((((((((((((((((((($(((((((((((((((((((((((((((((((((((((((((((((((;", "$(;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;##;;;;;;;;;{;;;;;;;;;;##;;;#;;;;;;;;;#;;;;;;;;;;#;;;;;;;;#;;;;;;;;{;;{{;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;#;#;;#;;;;;;;;;;;;;;;;;;;;;;;;######;;;;;;;;;;;;;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;##;;;;;;;;;;{;;;;;;;;;;#;#;#;;;;;#;;;;;##;;;", ";@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" }; //based on an icon of the GNOME project, by Jimmac const char * wait_xpm[82] = { "48 48 33 1", " c None", ". c #020202", "+ c #4C4236", "@ c #949494", "# c #B8B8B8", "$ c #654E30", "% c #CACACA", "& c #8B5216", "* c #DCD9D5", "= c #8D6C42", "- c #351A0B", "; c #BD9056", "> c #ECE4D9", ", c #8D8275", "' c #AAAAA9", ") c #9E9E9E", "! c #DBB385", "~ c #EEEEEE", "{ c #AE7634", "] c #7E7D7D", "^ c #A68253", "/ c #C4C4C4", "( c #C59B64", "_ c #D1A876", ": c #F8F8F8", "< c #E4CDAF", "[ c #5C5B59", "} c #4C321A", "| c #A66823", "1 c #726351", "2 c #E2C098", "3 c #342E27", "4 c #B88342", " ", " ", " ", " ", " ....... ", " ..)%*~*/@.. ", " .#~~:~~>>>*). ", " .[>:~~>>>>*>**#+. ", " .,~~~>*%//%****%#[. ", " [~~~*#[....]/*>*//+ ", " .>:>*@.. .)***##. ", " #~~*,. .@**%#@. ", " .~~*/. .'~*##. ", " .~~%]. .*~*']. ", " %~*/3 ]~*#). ", " .>~%/. -~>#'. ", " .~~%#. .~>/'. ", " .*~%'. .*>%'. ", " ---&{||---------------|{{&---- ", " -(>>><<<<<<<<22<222<222222!2!_|- ", " -><<22!!______((__(_(((;;;44{|&- ", " -><22!!___((4==1==;;((;;;444{|&- ", " -><<2!!!__(1+]-.[[+=4(;;;44{{|&- ", " -><<2____{+@*~~,~~*1+^;;;;44{|&- ", " -><<2!!!;+)~/~~:~~%>@}^;44444|&- ", " -><22__($#~:::::::~%~]$4;;44{|&- ", " -><<2!_]1~~::::::~@'~*+=44444|&- ", " -><:::::~@#~%~,${44{||&- ", " -><<2__+%~:::::~@#~~~~/}={44{|&- ", " -><<2!_.1~::::'[#~:~~*3-|{4{{|&- ", " -><22_(.1:::::'3)::~~*33=4{4{|&- ", " -><<<2!_['**~::~~~,'~/~,+={4{{4&- ", " -><~~%+&{44{{4&- ", " ->2<2!__(,+'~/~~~~~/*,31|44{{|(&- ", " -><>*131=44444{(&- ", " -><<2___((^++13.[[3$={4;44{44(&- ", " ->2<22!___(((;;;;;;;;(__(__!__4{&- ", " -{((;{4{{{{{{|{|{|{{|||||||&|&}- ", " ------------------------------ ", " ", " ", " ", " ", " "}; const char * clip_xpm[17] = { "7 13 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ... ", ". . .", ". . . .", ". . . .", ". . . .", ". . . .", ". . . .", ". . . .", ". . . .", ". . .", ". .", " . . ", " ... "}; gringotts-1.2.10/src/grg_pix.h000066400000000000000000000022171201055014300162030ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_pix.h - header file for grg_pix.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_PIX_H #define GRG_PIX_H const char *red_xpm[58]; const char *yellow_xpm[58]; const char *green_xpm[58]; const char *optimal_xpm[94]; const char *splash_xpm[180]; const char *wait_xpm[82]; const char *clip_xpm[17]; #endif gringotts-1.2.10/src/grg_popt.c000066400000000000000000000205421201055014300163610ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_popt.c - commandline argument parsing & console-related functionalities * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include "grg_defs.h" #include "gringotts.h" #include "grg_pwd.h" #include "grg_popt.h" #include "grg_safe.h" #include "grg_entries.h" #include "grg_widgets.h" #include #ifdef HAVE_TCGETATTR #include #endif static void dump_content (gchar * fname, gint ennum, gchar * enpage) { GRG_KEY key; glong len; gint err, fd; gchar *txt; #ifndef HAVE_TCGETATTR fprintf (stderr, "%s: %s\n", _("Warning"), _ ("it isn't possible to hide password typing; be extremely careful!")); #endif fd = grg_safe_open (fname); if (fd < 3) report_err (_("The selected file doesn't exists"), 0, 1, NULL); if (fd == GRG_OPEN_FILE_IRREGULAR) report_err (_("You've selected a directory or a symlink"), 0, 1, NULL); err = grg_validate_file_direct (gctx, fd); switch (err) { case GRG_OK: break; case GRG_MEM_ALLOCATION_ERR: report_err ("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly...", 0, 1, NULL); case GRG_ARGUMENT_ERR: report_err (_ ("Gringotts internal error. Cannot finish operation."), 0, 1, NULL); case GRG_READ_MAGIC_ERR: case GRG_READ_UNSUPPORTED_VERSION: report_err (_ ("This file doesn't seem to be a valid Gringotts one!"), 0, 1, NULL); case GRG_READ_FILE_ERR: report_err (_("Uh-oh! I can't read from the file!"), 0, 1, NULL); case GRG_READ_CRC_ERR: case GRG_READ_COMP_ERR: report_err (_("The file appears to be corrupted!"), 0, 1, NULL); #ifdef GRG_READ_TOO_BIG_ERR case GRG_READ_TOO_BIG_ERR: report_err (_("File is too big"), 0, 1, NULL); #endif default: if (err < 0) report_err (_ ("Gringotts internal error. Cannot finish operation."), 0, 1, NULL); } while (TRUE) { key = grg_get_cmdline_key (); if (!key) { report_err (_("You must enter a valid password!"), 0, 0, NULL); continue; } { guchar *unsigned_txt; err = grg_decrypt_file_direct (gctx, key, fd, &unsigned_txt, &len); txt = (gchar*)unsigned_txt; } grg_key_free (gctx, key); switch (err) { case GRG_OK: break; case GRG_MEM_ALLOCATION_ERR: report_err ("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly...", 0, 1, NULL); case GRG_ARGUMENT_ERR: report_err (_("Gringotts internal error. Cannot finish operation."), 0, 1, NULL); case GRG_READ_PWD_ERR: report_err (_("Wrong password! Re-enter it"), 0, 0, NULL); continue; case GRG_READ_ENC_INIT_ERR: report_err (_ ("Problem with libmcrypt, probably a faulty installation"), 0, 1, NULL); /*just to be sure... */ default: if (err < 0) report_err (_("Gringotts internal error. Cannot finish operation."), 0, 1, NULL); } if (!g_utf8_validate (txt, len, NULL)) { GRGFREE (txt, len); report_err (_ ("Saved data contain invalid UTF-8 chars"), 0, 1, NULL); } break; } close (fd); grg_entries_load_from_string (txt, NULL, FALSE); GRGFREE (txt, len); grg_entries_print (ennum, enpage); grg_entries_free (); } static void exit_freeing_ctx (gint code) { grg_context_free (gctx); exit (code); } void grg_parse_argv (gint argc, gchar * argv[], gchar ** filename, gboolean * rootCheck) { poptContext optCon; gchar *wipe, *etit; gint passes, ennum; gboolean dump, help, strongRnd; struct poptOption optionsTable[] = { {"help", 'h', POPT_ARG_NONE, &help, 1, _("shows the help"), NULL}, {"input-file", 'f', POPT_ARG_STRING, filename, 0, _("specify the input file to open"), _("FILE")}, #ifndef ROOT_FILTER {"allow-root", 's', POPT_ARG_NONE, rootCheck, 1, _("allow usage as root -- DANGEROUS"), NULL}, #endif {"strong-random", 'R', POPT_ARG_NONE, &strongRnd, 0, _("force use of /dev/random -- slower"), NULL}, {"dump", 'd', POPT_ARG_NONE, &dump, 0, _("dump the content of a file"), NULL}, {"entry-num", 0, POPT_ARG_INT, &ennum, 0, _("index of the entry to dump"), _("NUM")}, {"entry-title", 0, POPT_ARG_STRING, &etit, 0, _("title of the entry to dump"), _("TXT")}, {"wipe-file", 'w', POPT_ARG_STRING, &wipe, 0, _("securely wipe a file"), _("FILE")}, {"wipe-passes", 0, POPT_ARG_INT, &passes, 0, _("passes in file wiping"), _("NUM")}, {NULL, 0, 0, NULL, 0} }; *filename = NULL; wipe = NULL; etit = NULL; passes = 0; ennum = -1; *rootCheck = FALSE; strongRnd = FALSE; dump = FALSE; help = FALSE; optCon = poptGetContext (NULL, argc, (const char **) argv, optionsTable, 0); while (poptGetNextOpt (optCon) >= 0) ; if (help) { poptPrintHelp (optCon, stdout, 0); poptFreeContext (optCon); exit_freeing_ctx (1); } poptFreeContext (optCon); if (strongRnd) grg_ctx_set_security_lvl (gctx, GRG_SEC_PARANOIA); /*quite cerebrotic, I know. The idea is: to ensure that stdin isn't exploitable, the best way is to close and reopen it, so that any "abnormal" setting is wasted. Since it isn't possible to do this atomically, I check that the former file descriptor hasn't been opened in the while by someone that could pretend to "be" stdin.*/ if (!(wipe || dump)) { int canary; close (STDIN); canary = open ("/dev/null", O_RDONLY); if (canary != STDIN) exit_freeing_ctx (1); return; } /*wipe and dump operations are processed without returning to main() */ /*FIXME this should be in grg_safe.c */ #ifdef HAVE_ISATTY if (!isatty (STDIN)) { g_critical ("%s", _ ("It isn't possible to redirect data to stdin, as it is a potential security flaw.")); exit_freeing_ctx (1); } #endif if (!grg_security_filter (*rootCheck)) exit_freeing_ctx (1); if (wipe) { gint res; gchar c; if (!g_file_test (wipe, G_FILE_TEST_IS_REGULAR)) report_err (_("The file does not exist"), 0, 1, NULL); printf ("%s (y/n)", _("Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible.")); if (passes < 0 || passes > 32) passes = 8; c = getchar (); if (c != 'y' && c != 'Y') exit_freeing_ctx (0); res = grg_file_shred (wipe, passes); if (res < 0) report_err (_("File wiping failed"), 0, 1, NULL); exit_freeing_ctx (0); } if (dump) { if (!*filename) report_err (_ ("You must specify a file to dump (with the -f switch)"), 0, 1, NULL); dump_content (*filename, ennum, etit); exit_freeing_ctx (0); } } /* the following code locks and unlocks the console, to hide typed chars. The code is taken by GnuPG utils/ttyio.c; in this simple implementation, it's important not to nest them. The code has been adapted from the GnuPG sources. Copyright (C) 2002 Free Software Foundation, Inc. Thanks to them, and thanks to Free Software! :) */ #ifdef HAVE_TCGETATTR static struct termios termsave; int outty, fd; #endif void block_term (void) { #ifdef HAVE_TCGETATTR struct termios term; #ifdef HAVE_ISATTY outty = isatty (STDOUT); #else outty = 0; #endif if (!outty) fd = open ("/dev/tty", O_RDWR); else fd = STDOUT; tcgetattr (fd, &termsave); term = termsave; term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL); tcsetattr (fd, TCSAFLUSH, &term); #endif } void unblock_term (void) { #ifdef HAVE_TCGETATTR tcsetattr (fd, TCSAFLUSH, &termsave); if (!outty) close (fd); #endif } gringotts-1.2.10/src/grg_popt.h000066400000000000000000000021501201055014300163610ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_popt.h - header file for grg_popt.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_POPT_H #define GRG_POPT_H void grg_parse_argv (gint argc, gchar * argv[], gchar ** filename, gboolean * rootCheck); void block_term (void); void unblock_term (void); #endif gringotts-1.2.10/src/grg_prefs.c000066400000000000000000000576411201055014300165300ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_prefs.c - preferences "bean" and dialog * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include "grg_defs.h" #include "grg_prefs_io.h" #include "gringotts.h" #include "grg_widgets.h" #include "grg_prefs.h" #define NEW_RADIO_BUTTON(widget, list, call, value, label, box) \ widget = gtk_radio_button_new_with_label(list, label); \ g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (call), GUINT_TO_POINTER(value)); \ gtk_box_pack_start(GTK_BOX(box), widget, FALSE, FALSE, GRG_PAD); #define NEW_LABEL(widget, box, text) \ widget = gtk_label_new(text); \ gtk_misc_set_alignment(GTK_MISC(widget), 0, 0); \ gtk_box_pack_start(GTK_BOX(box), widget, FALSE, FALSE, GRG_PAD); #define NEW_ROW_SEPARATOR(box) \ gtk_box_pack_start(GTK_BOX(box), gtk_hseparator_new(), FALSE, FALSE, 0); static gchar *grg_pref_file = NULL; static gchar *grg_prefs_editor_font = NULL; static guchar tmp_pref_crypto; static guchar tmp_pref_hash; static guchar tmp_pref_comp; static guchar tmp_pref_ratio; static GtkWidget *file_entry; static gboolean active_flag = FALSE; /*radio buttons & other things to update */ static GtkWidget *rij1_but, *ser_but, *twof_but, *cast_but, *safer_but; static GtkWidget *rij2_but, *tdes_but, *loki_but, *sha_but, *ripe_but; static GtkWidget *zlib_but, *bz_but, *r0_but, *r3_but, *r6_but, *r9_but; static GtkWidget *crypto_key_lbl, *crypto_block_lbl; static GtkWidget *bak_check, *over_check, *splash_check, *tray_check, *xpire_check; static GtkWidget *xpire_spin, *passes_spin, *but_font; static GtkWidget *cclip_check, *qclip_check; gboolean grg_prefs_warn4overwrite = TRUE; gboolean grg_prefs_bak_files = TRUE; gboolean grg_prefs_splash = TRUE; gboolean grg_prefs_tray = TRUE; gboolean grg_prefs_clip_clear_on_close = FALSE; gboolean grg_prefs_clip_clear_on_quit = TRUE; gint grg_prefs_xpire = EXP_TIME_DEF; /*abs(x)= num of days; < 0 = never */ gint grg_prefs_wipe_passes = WIPE_PASSES_DEF; gint grg_prefs_mainwin_width = -1, grg_prefs_mainwin_height = -1; gchar * get_pref_file (void) { if (grg_pref_file) return g_strdup (grg_pref_file); return NULL; } void set_pref_file (const gchar * newval) { g_free (grg_pref_file); grg_pref_file = g_strdup (newval); } gchar * get_pref_font_string (void) { if (grg_prefs_editor_font) return g_strdup (grg_prefs_editor_font); return NULL; } void set_pref_font_string (const gchar * newval) { g_free (grg_prefs_editor_font); grg_prefs_editor_font = g_strdup (newval); } void set_pref_font_string_from_editor (void) { gchar *newval = get_editor_font (); set_pref_font_string (newval); g_free (newval); } static void update_buttons (void); void grg_prefs_reset_defaults (void) { grg_ctx_set_crypt_algo (gctx, GRG_SERPENT); grg_ctx_set_hash_algo (gctx, GRG_RIPEMD_160); grg_ctx_set_comp_algo (gctx, GRG_ZLIB); grg_ctx_set_comp_ratio (gctx, GRG_LVL_BEST); set_pref_file (NULL); } static void update_entry (void) { if (!active_flag) return; if (!grg_pref_file) gtk_entry_set_text (GTK_ENTRY (file_entry), ""); else gtk_entry_set_text (GTK_ENTRY (file_entry), grg_pref_file); } void grg_prefs_update (void) { update_buttons (); update_entry (); } static void reset_values (GtkWidget * parent) { if (grg_load_prefs () != GRG_OK) { gchar *msg = _("Invalid preferences file. Resetting to defaults."); grg_msg (msg, GTK_MESSAGE_WARNING, parent); grg_prefs_reset_defaults (); grg_save_prefs (); }; tmp_pref_crypto = grg_ctx_get_crypt_algo (gctx); tmp_pref_hash = grg_ctx_get_hash_algo (gctx); tmp_pref_comp = grg_ctx_get_comp_algo (gctx); tmp_pref_ratio = grg_ctx_get_comp_ratio (gctx); grg_prefs_update (); } static void apply_values (void) { gchar *utf; gboolean dirty = FALSE; if (grg_ctx_get_crypt_algo(gctx) != tmp_pref_crypto) { dirty = TRUE; grg_ctx_set_crypt_algo (gctx, tmp_pref_crypto); } if (grg_ctx_get_hash_algo(gctx) != tmp_pref_hash) { dirty = TRUE; grg_ctx_set_hash_algo (gctx, tmp_pref_hash); } if (grg_ctx_get_comp_algo(gctx) != tmp_pref_comp) { dirty = TRUE; grg_ctx_set_comp_algo (gctx, tmp_pref_comp); } if (grg_ctx_get_comp_ratio(gctx) != tmp_pref_ratio) { dirty = TRUE; grg_ctx_set_comp_ratio (gctx, tmp_pref_ratio); } set_pref_file (gtk_entry_get_text (GTK_ENTRY (file_entry))); utf = g_filename_from_utf8 (grg_pref_file, -1, NULL, NULL, NULL); if (!g_file_test (utf, G_FILE_TEST_IS_REGULAR)) { grg_prefs_free (); gtk_entry_set_text (GTK_ENTRY (file_entry), ""); } g_free (utf); set_pref_font_string (pango_font_description_to_string (pango_context_get_font_description (gtk_widget_get_pango_context (gtk_bin_get_child (GTK_BIN (but_font)))))); set_editor_font (grg_prefs_editor_font); if (dirty) update_saveable (GRG_SAVE_ACTIVE); /* unconditionally save prefs */ grg_save_prefs (); } static void update_crypto_label (void) { gchar *lbltxt; guint key, block; block = grg_get_block_size_static (tmp_pref_crypto); key = grg_get_key_size_static (tmp_pref_crypto); lbltxt = g_strdup_printf (_(" Block size: %d bits"), block * 8); gtk_label_set_text (GTK_LABEL (crypto_block_lbl), lbltxt); g_free (lbltxt); lbltxt = g_strdup_printf (_(" Key length: %d bits"), key * 8); gtk_label_set_text (GTK_LABEL (crypto_key_lbl), lbltxt); g_free (lbltxt); } void grg_prefs_free (void) { g_free (grg_pref_file); grg_pref_file = NULL; } static void modify_crypto (GtkWidget * data, gpointer value) { if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))) return; tmp_pref_crypto = GPOINTER_TO_UINT (value); update_crypto_label (); } static void modify_hash (GtkWidget * data, gpointer value) { if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))) return; tmp_pref_hash = GPOINTER_TO_UINT (value); } static void modify_comp (GtkWidget * data, gpointer value) { if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))) return; tmp_pref_comp = GPOINTER_TO_UINT (value); } static void modify_ratio (GtkWidget * data, gpointer value) { if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))) return; tmp_pref_ratio = GPOINTER_TO_UINT (value); } static void modify_over (GtkWidget * data, gpointer value) { grg_prefs_warn4overwrite = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data)); } static void modify_bak (GtkWidget * data, gpointer value) { grg_prefs_bak_files = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data)); } static void modify_splash (GtkWidget * data, gpointer value) { grg_prefs_splash = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data)); } static void modify_tray (GtkWidget * data, gpointer value) { grg_prefs_tray = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data)); } static void modify_cclip (GtkWidget * data, gpointer value) { grg_prefs_clip_clear_on_close = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data)); gtk_widget_set_sensitive (qclip_check, !grg_prefs_clip_clear_on_close); } static void modify_qclip (GtkWidget * data, gpointer value) { grg_prefs_clip_clear_on_quit = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data)); } static void modify_xpire (GtkWidget * data, gpointer value) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))) grg_prefs_xpire = abs (grg_prefs_xpire); else grg_prefs_xpire = 0 - abs (grg_prefs_xpire); gtk_widget_set_sensitive (GTK_WIDGET (value), gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))); } static void modify_xpin (GtkWidget * data, gpointer value) { if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (value))) grg_prefs_xpire = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (data)); else grg_prefs_xpire = 0 - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (data)); gtk_widget_set_sensitive (GTK_WIDGET (data), gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (value))); } static void modify_passes (GtkWidget * data, gpointer value) { grg_prefs_wipe_passes = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (data)); } static void modify_font (GtkWidget * data, gpointer value) { GtkWidget *font_selector; #if 0 GtkWidget *wait; #endif gint response; #if 0 gchar *selection = NULL; #endif PangoFontDescription *pfd; font_selector = gtk_font_selection_dialog_new ("Select a font..."); gtk_window_set_transient_for (GTK_WINDOW (font_selector), GTK_WINDOW (value)); gtk_font_selection_dialog_set_font_name (GTK_FONT_SELECTION_DIALOG (font_selector), grg_prefs_editor_font); gtk_widget_show (font_selector); response = gtk_dialog_run (GTK_DIALOG (font_selector)); if (response == GTK_RESPONSE_OK) { pfd = pango_font_description_from_string (gtk_font_selection_dialog_get_font_name (GTK_FONT_SELECTION_DIALOG (font_selector))); gtk_widget_modify_font (gtk_bin_get_child (GTK_BIN (but_font)), pfd); pango_font_description_free (pfd); } gtk_widget_destroy (font_selector); } static void meta_open_startup_file (GtkWidget * wid, gpointer value) { GtkWidget *file_chooser; gint response; file_chooser = gtk_file_chooser_dialog_new (_("Select file..."), GTK_WINDOW(value), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); response = gtk_dialog_run (GTK_DIALOG (file_chooser)); if (response == GTK_RESPONSE_ACCEPT) { gchar * filename; filename = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER (file_chooser) ); gchar *utf = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL); g_free (filename); gtk_entry_set_text (GTK_ENTRY (file_entry), utf); g_free (utf); } gtk_widget_destroy (file_chooser); } static void clear_file (void) { gtk_entry_set_text (GTK_ENTRY (file_entry), ""); } void grg_pref_dialog (GtkWidget * parent) { GtkWidget *prefs, *notebook, *tab1, *tab2, *tab3; GtkWidget *frame1, *frame2, *frame3; GtkWidget *crypt_box, *hash_box, *comp_box; GtkWidget *frame_font; GtkWidget *frame_file, *but_file, *box_file, *but_file_clear; GtkWidget *frame_save, *box_save; GtkWidget *frame_misc, *box_misc; GtkWidget *frame_xpire, *box_xpire, *xpire_lbl; GtkWidget *frame_passes, *box_passes, *lbl_passes; GtkWidget *frame_clip, *box_clip; PangoFontDescription *fdesc; if (active_flag) return; prefs = gtk_dialog_new_with_buttons (_("Preferences"), GTK_WINDOW (parent), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_APPLY, GTK_RESPONSE_APPLY, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); /*first page: algorithms */ tab1 = gtk_table_new (3, 2, FALSE); frame1 = gtk_frame_new (_("Encryption")); gtk_table_attach_defaults (GTK_TABLE (tab1), frame1, 0, 1, 0, 3); crypt_box = gtk_vbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame1), crypt_box); NEW_RADIO_BUTTON (rij1_but, NULL, modify_crypto, GRG_AES, "AES (Rijndael 128)", crypt_box); NEW_RADIO_BUTTON (ser_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (rij1_but)), modify_crypto, GRG_SERPENT, "Serpent", crypt_box); NEW_RADIO_BUTTON (twof_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (rij1_but)), modify_crypto, GRG_TWOFISH, "Twofish", crypt_box); NEW_RADIO_BUTTON (cast_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (rij1_but)), modify_crypto, GRG_CAST_256, "Cast 256", crypt_box); NEW_RADIO_BUTTON (safer_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (rij1_but)), modify_crypto, GRG_SAFERPLUS, "Safer+", crypt_box); NEW_RADIO_BUTTON (loki_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (rij1_but)), modify_crypto, GRG_LOKI97, "Loki97", crypt_box); NEW_RADIO_BUTTON (tdes_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (rij1_but)), modify_crypto, GRG_3DES, "3-DES", crypt_box); NEW_RADIO_BUTTON (rij2_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (rij1_but)), modify_crypto, GRG_RIJNDAEL_256, "Rijndael 256", crypt_box); NEW_ROW_SEPARATOR (crypt_box); NEW_LABEL (crypto_block_lbl, crypt_box, ""); NEW_LABEL (crypto_key_lbl, crypt_box, ""); update_crypto_label (); frame2 = gtk_frame_new (_("Hashing")); gtk_table_attach_defaults (GTK_TABLE (tab1), frame2, 1, 2, 0, 1); hash_box = gtk_vbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame2), hash_box); NEW_RADIO_BUTTON (sha_but, NULL, modify_hash, GRG_SHA1, "SHA1", hash_box); NEW_RADIO_BUTTON (ripe_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (sha_but)), modify_hash, GRG_RIPEMD_160, "RIPEMD 160", hash_box); frame3 = gtk_frame_new (_("Compression")); gtk_table_attach_defaults (GTK_TABLE (tab1), frame3, 1, 2, 1, 2); comp_box = gtk_vbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame3), comp_box); NEW_RADIO_BUTTON (zlib_but, NULL, modify_comp, GRG_ZLIB, "ZLib", comp_box); NEW_RADIO_BUTTON (bz_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (zlib_but)), modify_comp, GRG_BZIP, "BZip2", comp_box); NEW_ROW_SEPARATOR (comp_box); NEW_RADIO_BUTTON (r0_but, NULL, modify_ratio, GRG_LVL_NONE, _("None"), comp_box); NEW_RADIO_BUTTON (r3_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (r0_but)), modify_ratio, GRG_LVL_FAST, _("Fast"), comp_box); NEW_RADIO_BUTTON (r6_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (r0_but)), modify_ratio, GRG_LVL_GOOD, _("Good"), comp_box); NEW_RADIO_BUTTON (r9_but, gtk_radio_button_get_group (GTK_RADIO_BUTTON (r0_but)), modify_ratio, GRG_LVL_BEST, _("Best"), comp_box); notebook = gtk_notebook_new (); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), tab1, gtk_label_new (_("Algorithms"))); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (prefs)->vbox), notebook, TRUE, TRUE, GRG_PAD); /*second page: General options */ tab2 = gtk_vbox_new (FALSE, GRG_PAD); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), tab2, gtk_label_new (_("General options"))); frame_font = gtk_frame_new (_("Editor font")); gtk_box_pack_start (GTK_BOX (tab2), frame_font, FALSE, TRUE, 1); but_font = gtk_button_new_with_label (_ ("Click to change the editor font")); gtk_container_add (GTK_CONTAINER (frame_font), but_font); fdesc = pango_font_description_from_string (grg_prefs_editor_font); gtk_widget_modify_font (but_font, fdesc); pango_font_description_free (fdesc); g_signal_connect (G_OBJECT (but_font), "clicked", G_CALLBACK (modify_font), prefs); frame_misc = gtk_frame_new (_("Decorations")); gtk_box_pack_start (GTK_BOX (tab2), frame_misc, FALSE, TRUE, 1); box_misc = gtk_vbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame_misc), box_misc); NEW_ROW_SEPARATOR (tab2); splash_check = gtk_check_button_new_with_label (_("Splash screen")); g_signal_connect (G_OBJECT (splash_check), "toggled", G_CALLBACK (modify_splash), NULL); gtk_box_pack_start (GTK_BOX (box_misc), splash_check, FALSE, TRUE, 1); NEW_ROW_SEPARATOR (tab2); tray_check = gtk_check_button_new_with_label (_("Tray-Icon (Needs Gringotts restart to take affect)")); g_signal_connect (G_OBJECT (tray_check), "toggled", G_CALLBACK (modify_tray), NULL); gtk_box_pack_start (GTK_BOX (box_misc), tray_check, FALSE, TRUE, 1); frame_file = gtk_frame_new (_("File to open at startup")); gtk_box_pack_start (GTK_BOX (tab2), frame_file, FALSE, TRUE, 1); box_file = gtk_hbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame_file), box_file); file_entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (box_file), file_entry, FALSE, TRUE, 1); but_file = gtk_button_new_from_stock (GTK_STOCK_OPEN); gtk_box_pack_start (GTK_BOX (box_file), but_file, FALSE, TRUE, 1); g_signal_connect (G_OBJECT (but_file), "clicked", G_CALLBACK (meta_open_startup_file), (gpointer) prefs); but_file_clear = gtk_button_new_from_stock (GTK_STOCK_CLEAR); gtk_box_pack_start (GTK_BOX (box_file), but_file_clear, FALSE, TRUE, 1); g_signal_connect (G_OBJECT (but_file_clear), "clicked", G_CALLBACK (clear_file), NULL); frame_save = gtk_frame_new (_("File saving")); gtk_box_pack_start (GTK_BOX (tab2), frame_save, FALSE, TRUE, 1); box_save = gtk_vbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame_save), box_save); bak_check = gtk_check_button_new_with_label (_("Make backups of files")); g_signal_connect (G_OBJECT (bak_check), "toggled", G_CALLBACK (modify_bak), NULL); gtk_box_pack_start (GTK_BOX (box_save), bak_check, FALSE, TRUE, 1); over_check = gtk_check_button_new_with_label (_ ("Ask when overwriting files")); g_signal_connect (G_OBJECT (over_check), "toggled", G_CALLBACK (modify_over), NULL); gtk_box_pack_start (GTK_BOX (box_save), over_check, FALSE, TRUE, 1); /*third page: Security */ tab3 = gtk_vbox_new (FALSE, GRG_PAD); gtk_notebook_append_page (GTK_NOTEBOOK (notebook), tab3, gtk_label_new (_("Security"))); frame_xpire = gtk_frame_new (_("Password expiration")); gtk_box_pack_start (GTK_BOX (tab3), frame_xpire, FALSE, TRUE, 1); box_xpire = gtk_hbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame_xpire), box_xpire); xpire_check = gtk_check_button_new_with_label (_("Password expires in")); xpire_spin = gtk_spin_button_new_with_range (EXP_TIME_MIN, EXP_TIME_MAX, 1); xpire_lbl = gtk_label_new (_("days")); g_signal_connect (G_OBJECT (xpire_check), "toggled", G_CALLBACK (modify_xpire), xpire_spin); g_signal_connect (G_OBJECT (xpire_spin), "value-changed", G_CALLBACK (modify_xpin), xpire_check); gtk_box_pack_start (GTK_BOX (box_xpire), xpire_check, FALSE, TRUE, 1); gtk_box_pack_start (GTK_BOX (box_xpire), xpire_spin, FALSE, TRUE, 1); gtk_box_pack_start (GTK_BOX (box_xpire), xpire_lbl, FALSE, TRUE, 1); /*this means "passes in wiping a file", not "wipe the passes" :) */ frame_passes = gtk_frame_new (_("Wipe passes")); gtk_box_pack_start (GTK_BOX (tab3), frame_passes, FALSE, TRUE, 1); box_passes = gtk_hbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame_passes), box_passes); lbl_passes = gtk_label_new (_("Number of overwritings with random\n" "data, when wiping a file:")); gtk_box_pack_start (GTK_BOX (box_passes), lbl_passes, FALSE, TRUE, 1); passes_spin = gtk_spin_button_new_with_range (WIPE_PASSES_MIN, WIPE_PASSES_MAX, 1); gtk_box_pack_start (GTK_BOX (box_passes), passes_spin, FALSE, TRUE, 1); g_signal_connect (G_OBJECT (passes_spin), "value-changed", G_CALLBACK (modify_passes), NULL); frame_clip = gtk_frame_new (_("Clipboard")); gtk_box_pack_start (GTK_BOX (tab3), frame_clip, FALSE, TRUE, 1); box_clip = gtk_vbox_new (FALSE, GRG_PAD); gtk_container_add (GTK_CONTAINER (frame_clip), box_clip); cclip_check = gtk_check_button_new_with_label (_ ("Clear clipboard on closing file")); g_signal_connect (G_OBJECT (cclip_check), "toggled", G_CALLBACK (modify_cclip), NULL); gtk_box_pack_start (GTK_BOX (box_clip), cclip_check, FALSE, TRUE, 1); qclip_check = gtk_check_button_new_with_label (_ ("Clear clipboard on exit")); g_signal_connect (G_OBJECT (qclip_check), "toggled", G_CALLBACK (modify_qclip), NULL); gtk_box_pack_start (GTK_BOX (box_clip), qclip_check, FALSE, TRUE, 1); /*end of last tab */ active_flag = TRUE; reset_values (prefs); update_buttons (); gtk_widget_show_all (prefs); while (TRUE) { gboolean exit = TRUE; gint response = gtk_dialog_run (GTK_DIALOG (prefs)); switch (response) { case GTK_RESPONSE_OK: apply_values (); break; case GTK_RESPONSE_APPLY: apply_values (); exit = FALSE; break; default: break; } if (exit) { gtk_widget_destroy (prefs); active_flag = FALSE; break; } } } static void update_buttons (void) { PangoFontDescription *pfd; if (!active_flag) return; switch (tmp_pref_crypto) { case GRG_AES: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rij1_but), TRUE); break; case GRG_SERPENT: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ser_but), TRUE); break; case GRG_TWOFISH: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (twof_but), TRUE); break; case GRG_CAST_256: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cast_but), TRUE); break; case GRG_SAFERPLUS: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (safer_but), TRUE); break; case GRG_LOKI97: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (loki_but), TRUE); break; case GRG_3DES: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tdes_but), TRUE); break; case GRG_RIJNDAEL_256: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rij2_but), TRUE); break; default: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ser_but), TRUE); tmp_pref_crypto = GRG_SERPENT; } update_crypto_label (); switch (tmp_pref_hash) { case GRG_SHA1: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sha_but), TRUE); break; case GRG_RIPEMD_160: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ripe_but), TRUE); break; default: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ripe_but), TRUE); tmp_pref_hash = GRG_RIPEMD_160; } switch (tmp_pref_comp) { case GRG_ZLIB: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (zlib_but), TRUE); break; case GRG_BZIP: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bz_but), TRUE); break; default: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (zlib_but), TRUE); tmp_pref_comp = GRG_ZLIB; } switch (tmp_pref_ratio) { case GRG_LVL_NONE: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (r0_but), TRUE); break; case GRG_LVL_FAST: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (r3_but), TRUE); break; case GRG_LVL_GOOD: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (r6_but), TRUE); break; case GRG_LVL_BEST: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (r9_but), TRUE); break; default: gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (r9_but), TRUE); tmp_pref_ratio = GRG_LVL_BEST; } gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (xpire_check), grg_prefs_xpire > 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (xpire_spin), abs (grg_prefs_xpire)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bak_check), grg_prefs_bak_files); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (over_check), grg_prefs_warn4overwrite); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (splash_check), grg_prefs_splash); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tray_check), grg_prefs_tray); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cclip_check), grg_prefs_clip_clear_on_close); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (qclip_check), grg_prefs_clip_clear_on_quit); gtk_spin_button_set_value (GTK_SPIN_BUTTON (passes_spin), abs (grg_prefs_wipe_passes)); gtk_widget_set_sensitive (qclip_check, !grg_prefs_clip_clear_on_close); pfd = pango_font_description_from_string (grg_prefs_editor_font); gtk_widget_modify_font (gtk_bin_get_child (GTK_BIN (but_font)), pfd); pango_font_description_free (pfd); } gringotts-1.2.10/src/grg_prefs.h000066400000000000000000000031641201055014300165240ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_prefs.h - header file for grg_prefs.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_PREFS_H #define GRG_PREFS_H #include gboolean grg_prefs_warn4overwrite; gboolean grg_prefs_bak_files; gboolean grg_prefs_splash; gboolean grg_prefs_tray; gboolean grg_prefs_clip_clear_on_close; gboolean grg_prefs_clip_clear_on_quit; gint grg_prefs_xpire; gint grg_prefs_wipe_passes; gint grg_prefs_mainwin_width, grg_prefs_mainwin_height; gchar *get_pref_file (void); void set_pref_file (const gchar * newval); gchar *get_pref_font_string (void); void set_pref_font_string (const gchar * newval); void set_pref_font_string_from_editor (void); void grg_pref_dialog (GtkWidget * parent); void grg_prefs_update (void); void grg_prefs_free (void); void grg_prefs_reset_defaults (void); #endif gringotts-1.2.10/src/grg_prefs_io.c000066400000000000000000000273701201055014300172130ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_prefs_io.c - preferences load/saving * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include #include "grg_prefs.h" #include "grg_prefs_io.h" #include "grg_defs.h" #include "gringotts.h" #include "grg_safe.h" #define PREFS_TAG_ALGO "algo_code" #define PREFS_TAG_STARTUP_FILE "startup_file" #define PREFS_TAG_OVERWRITE_WARN "overwrite_warn" #define PREFS_TAG_BACKUP_FILES "bak_files" #define PREFS_TAG_DISPLAY_SPLASH_SCREEN "display_splash_screen" #define PREFS_TAG_Trayicon "enable_trayicon" #define PREFS_TAG_PASSWORD_EXPIRATION_TIME "xpiration_time" #define PREFS_TAG_WIPE_PASSES "wipe_passes" #define PREFS_TAG_EDITOR_FONT "font_for_editor" #define PREFS_TAG_CLIPBOARD_CLEARING_POLICY "clipboard_clearing_policy" #define PREFS_TAG_MAINWIN_WIDTH "Width_of_main_window" #define PREFS_TAG_MAINWIN_HEIGHT "Height_of_main_window" gint grg_save_prefs (void) { gchar *path, *row, algo, *grg_pref_file_local, *grg_pref_font_string_local; gint fd; path = g_build_filename (g_get_home_dir (), ".gringotts.conf", NULL); fd = open (path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR); g_free (path); if (fd < 3) { close (fd); return GRG_PREFS_IO_ERROR; } algo = (guchar) (grg_ctx_get_crypt_algo (gctx) | grg_ctx_get_hash_algo (gctx) | grg_ctx_get_comp_algo (gctx) | grg_ctx_get_comp_ratio (gctx)); /*saves the algorithm */ row = g_strdup_printf ("\n\n" "\n" "<" PREFS_TAG_ALGO ">\n" "%02x\n" "\n\n", algo); write (fd, row, strlen (row)); g_free (row); /*saves the startup file */ grg_pref_file_local = get_pref_file (); if (grg_pref_file_local) { row = g_strdup_printf ("\n" "<" PREFS_TAG_STARTUP_FILE ">\n" "%s\n" "\n\n", grg_pref_file_local); g_free (grg_pref_file_local); write (fd, row, strlen (row)); g_free (row); } /*saves the backup files preference */ row = g_strdup_printf ("\n" "<" PREFS_TAG_BACKUP_FILES ">\n" "%c\n" "\n\n", grg_prefs_bak_files ? '1' : '0'); write (fd, row, strlen (row)); g_free (row); /*saves the file overwriting warning preference */ row = g_strdup_printf ("\n" "<" PREFS_TAG_OVERWRITE_WARN ">\n" "%c\n" "\n\n", grg_prefs_warn4overwrite ? '1' : '0'); write (fd, row, strlen (row)); g_free (row); /*saves the splash screen preference */ row = g_strdup_printf ("\n" "<" PREFS_TAG_DISPLAY_SPLASH_SCREEN ">\n" "%c\n" "\n\n", grg_prefs_splash ? '1' : '0'); write (fd, row, strlen (row)); g_free (row); /*saves the tray-icon preference */ row = g_strdup_printf ("\n" "<" PREFS_TAG_Trayicon ">\n" "%c\n" "\n\n", grg_prefs_tray ? '1' : '0'); write (fd, row, strlen (row)); g_free (row); /*saves the password expiration time preference */ row = g_strdup_printf ("\n" "<" PREFS_TAG_PASSWORD_EXPIRATION_TIME ">\n" "%d\n" "\n\n", EXP_TIME_MIN, EXP_TIME_MAX, grg_prefs_xpire); write (fd, row, strlen (row)); g_free (row); /*saves the wipe passes preference */ row = g_strdup_printf ("\n" "<" PREFS_TAG_WIPE_PASSES ">\n" "%d\n" "\n\n", WIPE_PASSES_MIN, WIPE_PASSES_MAX, grg_prefs_wipe_passes); write (fd, row, strlen (row)); g_free (row); /*saves the font for the editor */ grg_pref_font_string_local = get_pref_font_string (); if (grg_pref_font_string_local) { row = g_strdup_printf ("\n" "<" PREFS_TAG_EDITOR_FONT ">\n" "%s\n" "\n\n", grg_pref_font_string_local); g_free (grg_pref_font_string_local); write (fd, row, strlen (row)); g_free (row); } /*saves the main window size preference */ row = g_strdup_printf ("\n" "<" PREFS_TAG_MAINWIN_WIDTH ">\n" "%d\n" "\n\n", grg_prefs_mainwin_width); write (fd, row, strlen (row)); g_free (row); row = g_strdup_printf ("\n" "<" PREFS_TAG_MAINWIN_HEIGHT ">\n" "%d\n" "\n\n", grg_prefs_mainwin_height); write (fd, row, strlen (row)); g_free (row); /*saves the clipboard clearing pref */ { char policy = grg_prefs_clip_clear_on_close ? '2' : (grg_prefs_clip_clear_on_quit ? '1' : '0'); row = g_strdup_printf ("\n" "<" PREFS_TAG_CLIPBOARD_CLEARING_POLICY ">\n" "%c\n" "", policy); write (fd, row, strlen (row)); g_free (row); } close (fd); return GRG_OK; } static void introduce_pref (GMarkupParseContext * context, const gchar * element_name, const gchar ** attribute_names, const gchar ** attribute_values, gpointer user_data, GError ** error) { if (user_data) *(gchar**) user_data = g_strdup(element_name); } static void endup_pref (GMarkupParseContext * context, const gchar * element_name, gpointer user_data, GError ** error) { if (user_data && *(gchar**) user_data) { g_free(*(gchar**) user_data); *(gchar**) user_data = NULL; } } static void collect_pref (GMarkupParseContext * context, const gchar * text, gsize text_len, gpointer user_data, GError ** error) { if (strcmp(*(gchar **) user_data, PREFS_TAG_ALGO)==0) { gchar algo1 = 0, algo2 = 0, algo; gint i, pos = 0; for (i = 0; i < text_len; i++) /*strips whitespaces*/ if ((text[i] != ' ') && (text[i] != '\t') && (text[i] != '\n')) { if (!pos) /*pos=0*/ algo1 = text[i]; else algo2 = text[i]; pos++; } if ((((algo1 >= '0') && (algo1 <= '9')) || ((algo1 >= 'a') && (algo1 <= 'f'))) || !(((algo2 >= '0') && (algo2 <= '9')) || ((algo2 >= 'a') && (algo2 <= 'f')))) { /*form the algo byte and setup values*/ if (algo1 < 'a') algo1 -= '0'; else algo1 -= 'W'; /*'a'-10*/ if (algo2 < 'a') algo2 -= '0'; else algo2 -= 'W'; /*'a'-10*/ algo = 0; algo |= (guchar) ((algo1 << 4) & 0xf0); algo |= (guchar) (algo2 & 0x0f); grg_ctx_set_crypt_algo (gctx, (grg_crypt_algo) (algo & 0x70 /* 01110000 */ )); grg_ctx_set_hash_algo (gctx, (grg_hash_algo) (algo & 0x08 /* 00001000 */ )); grg_ctx_set_comp_algo (gctx, (grg_comp_algo) (algo & 0x04 /* 00000100 */ )); grg_ctx_set_comp_ratio (gctx, (grg_comp_ratio) (algo & 0x03 /* 00000011 */ )); } } else if (strcmp(*(gchar **) user_data, PREFS_TAG_STARTUP_FILE)==0) { if (text_len == 0) set_pref_file (NULL); else { gchar *file = g_strstrip (g_strndup (text, text_len)); gchar *utf = g_filename_from_utf8 (file, -1, NULL, NULL, NULL); gint fdt = open (utf, O_RDONLY); if (fdt < 3) set_pref_file (NULL); else set_pref_file (file); close (fdt); g_free (file); g_free (utf); } } else if (strcmp(*(gchar **) user_data, PREFS_TAG_OVERWRITE_WARN)==0) { int i = 0; while (text[i] == 10 || text[i] == ' ' || text[i] == '\t' || text[i] == 13) i++; grg_prefs_warn4overwrite = !(text[i] == '0'); } else if (strcmp(*(gchar **) user_data, PREFS_TAG_BACKUP_FILES)==0) { int i = 0; while (text[i] == 10 || text[i] == ' ' || text[i] == '\t' || text[i] == 13) i++; grg_prefs_bak_files = !(text[i] == '0'); } else if (strcmp(*(gchar **) user_data, PREFS_TAG_DISPLAY_SPLASH_SCREEN)==0) { int i = 0; while (text[i] == 10 || text[i] == ' ' || text[i] == '\t' || text[i] == 13) i++; grg_prefs_splash = !(text[i] == '0'); } else if (strcmp(*(gchar **) user_data, PREFS_TAG_Trayicon)==0) { int i = 0; while (text[i] == 10 || text[i] == ' ' || text[i] == '\t' || text[i] == 13) i++; grg_prefs_tray = !(text[i] == '0'); } else if (strcmp(*(gchar **) user_data, PREFS_TAG_PASSWORD_EXPIRATION_TIME)==0) { int i = 0, grgabs; while ((text[i] < '1' || text[i] > '9') && text[i] != '-') i++; grg_prefs_xpire = atoi (text + i); grgabs = abs (grg_prefs_xpire); if (grgabs < EXP_TIME_MIN || grgabs > EXP_TIME_MAX) grg_prefs_xpire = EXP_TIME_DEF; } else if (strcmp(*(gchar **) user_data, PREFS_TAG_WIPE_PASSES)==0) { int i = 0; while (text[i] < '1' || text[i] > '9') i++; grg_prefs_wipe_passes = atoi (text + i); if (grg_prefs_wipe_passes < WIPE_PASSES_MIN || grg_prefs_wipe_passes > WIPE_PASSES_MAX) grg_prefs_wipe_passes = WIPE_PASSES_DEF; } else if (strcmp(*(gchar **) user_data, PREFS_TAG_EDITOR_FONT)==0) { if (text_len == 0) set_pref_font_string (NULL); else { gchar *font = g_strstrip (g_strndup (text, text_len)); set_pref_font_string (font); g_free (font); } } else if (strcmp(*(gchar **) user_data, PREFS_TAG_CLIPBOARD_CLEARING_POLICY)==0) { int i = 0; while (text[i] < '0' || text[i] > '2') i++; grg_prefs_clip_clear_on_close = (text[i] == '2'); grg_prefs_clip_clear_on_quit = !(text[i] == '0'); } else if (strcmp(*(gchar **) user_data, PREFS_TAG_MAINWIN_WIDTH)==0) { int i = 0; while ((text[i] < '1' || text[i] > '9') && text[i] != '-') i++; grg_prefs_mainwin_width = atoi (text + i); if (grg_prefs_mainwin_width < -1) grg_prefs_mainwin_width = -1; } else if (strcmp(*(gchar **) user_data, PREFS_TAG_MAINWIN_HEIGHT)==0) { int i = 0; while ((text[i] < '1' || text[i] > '9') && text[i] != '-') i++; grg_prefs_mainwin_height = atoi (text + i); if (grg_prefs_mainwin_height < -1) grg_prefs_mainwin_height = -1; } else fprintf(stderr, "prefs parsing error: unexpected tag '%s'\n", (gchar *) user_data); } gint grg_load_prefs (void) { gchar *path, *content, *active_opt = NULL; gint fd, end; GMarkupParser *context = (GMarkupParser *) grg_malloc (sizeof (GMarkupParser)); GMarkupParseContext *parser; GError *err = NULL; path = g_build_filename (g_get_home_dir (), ".gringotts.conf", NULL); fd = open (path, O_RDONLY); g_free (path); if (fd < 3) { close (fd); return GRG_PREFS_IO_ERROR; } end = lseek (fd, 0, SEEK_END); lseek (fd, 0, SEEK_SET); context->start_element = introduce_pref; context->end_element = endup_pref; context->text = collect_pref; context->passthrough = NULL; context->error = NULL; parser = g_markup_parse_context_new (context, 0, &active_opt, NULL); content = (gchar *) mmap (NULL, end, PROT_READ, MAP_PRIVATE, fd, 0); g_markup_parse_context_parse (parser, content, end, &err); if (!err) g_markup_parse_context_end_parse (parser, &err); g_markup_parse_context_free (parser); if (err) g_error_free (err); g_free (context); munmap (content, end); close (fd); return GRG_OK; } gringotts-1.2.10/src/grg_prefs_io.h000066400000000000000000000021651201055014300172130ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_prefs_io.h - header file for grg_prefs_io.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_PREFS_IO_H #define GRG_PREFS_IO_H #define GRG_PREFS_IO_ERROR -1 #define GRG_PREFS_NO_FILE -2 #define GRG_PREFS_INVALID -3 gint grg_save_prefs (void); gint grg_load_prefs (void); #endif gringotts-1.2.10/src/grg_pwd.c000066400000000000000000000451351201055014300161760ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_pwd.c - widgets used to get passwords * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include "grg_defs.h" #include "grg_pwd.h" #include "grg_widgets.h" #include "grg_popt.h" #include "grg_safe.h" #include "gringotts.h" #if defined(BLOCK_DEV_IS_FLOPPY) && defined(HAVE_LINUX_FD_H) #include #endif #define TYPE_PWD 0 #define TYPE_FILE 1 #define TYPE_DISK 2 #define NEW_RADIO_BUTTON(widget, list, call, value, label, box) \ widget = gtk_radio_button_new_with_label(list, label); \ g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (call), GINT_TO_POINTER(value)); \ gtk_box_pack_start(GTK_BOX(box), widget, FALSE, FALSE, GRG_PAD); #define NEW_LABEL(box, text) \ { \ GtkWidget *new_lbl; \ new_lbl = gtk_label_new(text); \ gtk_misc_set_alignment(GTK_MISC(new_lbl), 0, 0); \ gtk_box_pack_start(GTK_BOX(box), new_lbl, FALSE, FALSE, GRG_PAD); \ } #define SWAP_BUTTONS(widget, stock, block, unblock) \ gtk_button_set_label (GTK_BUTTON(widget), stock); \ g_signal_handler_block (widget, block); \ g_signal_handler_unblock (widget, unblock); #define NEW_SEPARATOR(box) \ gtk_box_pack_start (GTK_BOX (box), gtk_hseparator_new (), FALSE, FALSE, GRG_PAD); static void meta_browse (GtkWidget * data, GtkWidget * entry) { GtkWidget *file_chooser; gint response; GtkWidget *dlg = GTK_WIDGET (GTK_WIDGET ((GTK_WIDGET (data->parent))->parent)-> parent); file_chooser = gtk_file_chooser_dialog_new (_("Open..."), GTK_WINDOW (dlg), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); response = gtk_dialog_run (GTK_DIALOG (file_chooser)); if (response == GTK_RESPONSE_ACCEPT) { gchar *filename; filename = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER (file_chooser) ); gchar *ufile = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL); g_free(filename); gtk_entry_set_text (GTK_ENTRY (entry), ufile); g_free (ufile); } gtk_widget_destroy (file_chooser); } static GRG_KEY read_pwd_file (const gchar * path, GtkWidget * dlg, gboolean X) { GtkWidget *wait = NULL; gint fd, len; gchar *upath; guchar *pwd; GRG_KEY key; struct stat buf; upath = g_filename_from_utf8 (path, -1, NULL, NULL, NULL); fd = grg_safe_open (upath); g_free (upath); if (fd < 3) { report_err (_("The file does not exist"), X, 0, dlg); return NULL; } if (fd == GRG_OPEN_FILE_IRREGULAR) { report_err (_("You must specify a regular file"), X, 0, dlg); close (fd); return NULL; } fstat (fd, &buf); len = buf.st_size; if (X) wait = grg_wait_msg (_("reading file"), dlg); pwd = mmap (NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); key = grg_key_gen (pwd, len); munmap (pwd, len); close (fd); if (X) gtk_widget_destroy (wait); return key; } static GRG_KEY read_pwd_disk (GtkWidget * dlg, gboolean X) { GtkWidget *wait = NULL; gint fd, len; guchar *file; GRG_KEY key = NULL; #if defined(BLOCK_DEV_IS_FLOPPY) && defined(HAVE_LINUX_FD_H) struct floppy_drive_struct fstruct; #endif fd = open (BLOCK_DEV, O_RDONLY); /*check 4 disk presence*/ if (fd < 0) { report_err (_ ("Please insert a disk in the first floppy drive"), X, 0, dlg); return NULL; } #if defined(BLOCK_DEV_IS_FLOPPY) && defined(HAVE_LINUX_FD_H) /*check for write protection*/ ioctl (fd, FDGETDRVSTAT, &fstruct); if ((fstruct.flags >> FD_DISK_WRITABLE_BIT) & 1) { report_err (_ ("The disk is not write protected. For security reasons, I'll not use it."), X, 0, dlg); close (fd); return NULL; } #endif len = lseek (fd, 0, SEEK_END); if (X) wait = grg_wait_msg (_("reading floppy"), dlg); file = mmap (NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); key = grg_key_gen (file, len); munmap (file, len); close (fd); if (X) gtk_widget_destroy (wait); return key; } /******************* * CHANGE PWD DIALOG * *******************/ static GtkWidget *label, *hbox_file, *vbox_pwd; static GtkWidget *file_entry, *question, *question2, *quality; static int curr_type_pwd_chg = TYPE_PWD; static void toggle_pwd_chg_file (GtkWidget * data, gpointer value) { if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))) return; curr_type_pwd_chg = GPOINTER_TO_INT (value); switch (curr_type_pwd_chg) { case TYPE_PWD: gtk_label_set_text (GTK_LABEL (label), _("Enter new password")); gtk_entry_set_text (GTK_ENTRY (question), ""); gtk_entry_set_text (GTK_ENTRY (question2), ""); gtk_widget_hide (hbox_file); gtk_widget_show_all (vbox_pwd); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (quality), 0); break; case TYPE_FILE: gtk_label_set_text (GTK_LABEL (label), _("Choose file")); gtk_entry_set_text (GTK_ENTRY (file_entry), ""); gtk_widget_hide (vbox_pwd); gtk_widget_show_all (hbox_file); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (quality), 0); break; case TYPE_DISK: gtk_label_set_text (GTK_LABEL (label), _("Insert a disk and press Ok")); gtk_widget_hide (vbox_pwd); gtk_widget_hide (hbox_file); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (quality), 1); break; } return; } static void vis_quality (gpointer ignore, gpointer type) { switch (GPOINTER_TO_INT (type)) { case TYPE_PWD: { gsize bout; gchar *sq = NULL; if (!mapIsUTF) sq = g_locale_from_utf8 (gtk_entry_get_text (GTK_ENTRY (question)), -1, NULL, &bout, NULL); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (quality), grg_ascii_pwd_quality ((guchar*)(mapIsUTF ? gtk_entry_get_text (GTK_ENTRY (question)) : sq), g_utf8_strlen (gtk_entry_get_text (GTK_ENTRY (question)), -1))); if (!mapIsUTF) GRGFREE (sq, bout); } break; case TYPE_FILE: { gchar *upath = g_filename_from_utf8 ( gtk_entry_get_text (GTK_ENTRY (file_entry)), -1, NULL, NULL, NULL); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (quality), grg_file_pwd_quality ((guchar*)upath)); g_free (upath); } break; case TYPE_DISK: gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (quality), 1); break; } } /** * grg_new_pwd_dialog: * @parent: the parent of the dialog to create. * * Asks for a new password, validating it (>4 chars). * * Returns: the new password, or NULL if user Cancel-ed */ GRG_KEY grg_new_pwd_dialog (GtkWidget * parent, gboolean * cancelled) { GtkWidget *dialog, *label2; GtkWidget *chk_file, *chk_pwd, *chk_disk; GtkWidget *browse; GRG_KEY key = NULL; curr_type_pwd_chg = TYPE_PWD; dialog = gtk_dialog_new_with_buttons (_("New password"), GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gtk_container_set_border_width (GTK_CONTAINER (dialog), 3); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 3); gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); NEW_LABEL (GTK_DIALOG (dialog)->vbox, _("Choose password type:")); NEW_RADIO_BUTTON (chk_pwd, NULL, toggle_pwd_chg_file, TYPE_PWD, _("String"), GTK_DIALOG (dialog)->vbox); NEW_RADIO_BUTTON (chk_file, gtk_radio_button_get_group (GTK_RADIO_BUTTON (chk_pwd)), toggle_pwd_chg_file, TYPE_FILE, _("File"), GTK_DIALOG (dialog)->vbox); NEW_RADIO_BUTTON (chk_disk, gtk_radio_button_get_group (GTK_RADIO_BUTTON (chk_pwd)), toggle_pwd_chg_file, TYPE_DISK, _("Disk"), GTK_DIALOG (dialog)->vbox); NEW_SEPARATOR (GTK_DIALOG (dialog)->vbox); label = gtk_label_new (_("Enter new password:")); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), label); vbox_pwd = gtk_vbox_new (FALSE, GRG_PAD); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox_pwd); label2 = gtk_label_new (_("Enter it again for confirmation:")); question = gtk_entry_new (); g_signal_connect (G_OBJECT (question), "key-press-event", G_CALLBACK (return_submit), (gpointer) dialog); gtk_entry_set_visibility (GTK_ENTRY (question), FALSE); g_signal_connect (G_OBJECT (question), "changed", G_CALLBACK (vis_quality), GINT_TO_POINTER (TYPE_PWD)); question2 = gtk_entry_new (); g_signal_connect (G_OBJECT (question2), "key-press-event", G_CALLBACK (return_submit), (gpointer) dialog); gtk_entry_set_visibility (GTK_ENTRY (question2), FALSE); gtk_box_pack_start_defaults (GTK_BOX (vbox_pwd), question); gtk_box_pack_start_defaults (GTK_BOX (vbox_pwd), label2); gtk_box_pack_start_defaults (GTK_BOX (vbox_pwd), question2); hbox_file = gtk_hbox_new (FALSE, GRG_PAD); file_entry = gtk_entry_new (); g_signal_connect (G_OBJECT (file_entry), "key-press-event", G_CALLBACK (return_submit), (gpointer) dialog); g_signal_connect (G_OBJECT (file_entry), "changed", G_CALLBACK (vis_quality), GINT_TO_POINTER (TYPE_FILE)); browse = gtk_button_new_from_stock (GTK_STOCK_OPEN); g_signal_connect (G_OBJECT (browse), "clicked", G_CALLBACK (meta_browse), (gpointer) file_entry); gtk_box_pack_start_defaults (GTK_BOX (hbox_file), file_entry); gtk_box_pack_start_defaults (GTK_BOX (hbox_file), browse); NEW_SEPARATOR (GTK_DIALOG (dialog)->vbox); quality = gtk_progress_bar_new (); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (quality), _("password quality")); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (quality), 0.0); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), quality); /*show all...*/ gtk_widget_grab_focus (question); gtk_widget_show_all (GTK_DIALOG (dialog)->vbox); /*...but the file selection part*/ gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox_file); gtk_box_reorder_child (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox_file, 7); while (TRUE) { gint res = gtk_dialog_run (GTK_DIALOG (dialog)); gboolean exit = FALSE; grg_key_free (gctx, key); key = NULL; if (res != GTK_RESPONSE_OK) { if (cancelled) *cancelled = TRUE; break; } switch (curr_type_pwd_chg) { case TYPE_PWD: { gchar *ret1 = (gchar *) gtk_entry_get_text (GTK_ENTRY (question)); gchar *ret2 = (gchar *) gtk_entry_get_text (GTK_ENTRY (question2)); gint pwd_len = strlen (ret1); if (g_utf8_strlen (ret1, -1) < 4) { report_err (_ ("The password is too short, it must be at least 4 chars"), 1, 0, dialog); gtk_entry_set_text (GTK_ENTRY (question), ""); gtk_entry_set_text (GTK_ENTRY (question2), ""); break; } if (!STR_EQ (ret1, ret2)) { report_err (_ ("The two passwords are different"), 1, 0, dialog); gtk_entry_set_text (GTK_ENTRY (question), ""); gtk_entry_set_text (GTK_ENTRY (question2), ""); break; } key = grg_key_gen ((guchar*)ret1, pwd_len); exit = TRUE; break; } case TYPE_FILE: { const gchar *path = gtk_entry_get_text (GTK_ENTRY (file_entry)); key = read_pwd_file (path, dialog, TRUE); if (key) exit = TRUE; break; } case TYPE_DISK: { key = read_pwd_disk (dialog, TRUE); if (key) exit = TRUE; break; } } if (exit) break; } gtk_widget_destroy (dialog); return key; } /**************** * ASK PWD DIALOG * ****************/ static GtkWidget *util_button, *entry, *hbox, *dlabel; static guint sigclear, sigbrowse, curr_type_pwd_req = TYPE_PWD; static gboolean sigbrowse_blocked; static void clear_entry (GtkWidget * data, GtkWidget * dentry) { gtk_entry_set_text (GTK_ENTRY (dentry), ""); } static void toggle_pwd_file (GtkWidget * data, gpointer value) { if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (data))) return; curr_type_pwd_req = GPOINTER_TO_INT (value); switch (curr_type_pwd_req) { case TYPE_PWD: { if (!sigbrowse_blocked) { SWAP_BUTTONS (util_button, GTK_STOCK_CLEAR, sigbrowse, sigclear); sigbrowse_blocked = TRUE; } gtk_entry_set_text (GTK_ENTRY (entry), ""); gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE); gtk_widget_hide (dlabel); gtk_widget_show_all (hbox); } break; case TYPE_FILE: { if (sigbrowse_blocked) { SWAP_BUTTONS (util_button, GTK_STOCK_OPEN, sigclear, sigbrowse); sigbrowse_blocked = FALSE; } gtk_entry_set_text (GTK_ENTRY (entry), ""); gtk_entry_set_visibility (GTK_ENTRY (entry), TRUE); gtk_widget_show_all (hbox); gtk_widget_hide (dlabel); } break; case TYPE_DISK: { gtk_widget_hide (hbox); gtk_widget_show (dlabel); } break; } } GRG_KEY grg_ask_pwd_dialog (GtkWidget * parent, gboolean * cancelled) { GtkWidget *dlg; GtkWidget *chk_file, *chk_pwd, *chk_disk; GRG_KEY key = NULL; curr_type_pwd_req = TYPE_PWD; dlg = gtk_dialog_new_with_buttons (_("Enter password"), GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dlg), GTK_RESPONSE_CANCEL); gtk_container_set_border_width (GTK_CONTAINER (dlg), 3); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->vbox), 3); gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE); NEW_LABEL (GTK_DIALOG (dlg)->vbox, _("Choose password type:")); NEW_RADIO_BUTTON (chk_pwd, NULL, toggle_pwd_file, TYPE_PWD, _("String"), GTK_DIALOG (dlg)->vbox); NEW_RADIO_BUTTON (chk_file, gtk_radio_button_get_group (GTK_RADIO_BUTTON (chk_pwd)), toggle_pwd_file, TYPE_FILE, _("File"), GTK_DIALOG (dlg)->vbox); NEW_RADIO_BUTTON (chk_disk, gtk_radio_button_get_group (GTK_RADIO_BUTTON (chk_pwd)), toggle_pwd_file, TYPE_DISK, _("Disk"), GTK_DIALOG (dlg)->vbox); NEW_SEPARATOR (GTK_DIALOG (dlg)->vbox); hbox = gtk_hbox_new (FALSE, GRG_PAD); entry = gtk_entry_new (); gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE); g_signal_connect (G_OBJECT (entry), "key-press-event", G_CALLBACK (return_submit), (gpointer) dlg); gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); util_button = gtk_button_new_from_stock (GTK_STOCK_CLEAR); gtk_button_set_use_stock (GTK_BUTTON (util_button), TRUE); sigclear = g_signal_connect (G_OBJECT (util_button), "clicked", G_CALLBACK (clear_entry), (gpointer) entry); sigbrowse = g_signal_connect (G_OBJECT (util_button), "clicked", G_CALLBACK (meta_browse), (gpointer) entry); g_signal_handler_block (util_button, sigbrowse); sigbrowse_blocked = TRUE; gtk_box_pack_start (GTK_BOX (hbox), util_button, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox, FALSE, FALSE, 0); dlabel = gtk_label_new (_("Insert a disk and press Ok")); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), dlabel, FALSE, FALSE, 0); gtk_widget_grab_focus (entry); gtk_widget_show_all (dlg); gtk_widget_hide (dlabel); while (TRUE) { gboolean exit; gint response; clear_entry (NULL, entry); response = gtk_dialog_run (GTK_DIALOG (dlg)); exit = FALSE; grg_key_free (gctx, key); key = NULL; if (response != GTK_RESPONSE_OK) { if (cancelled) *cancelled = TRUE; break; } switch (curr_type_pwd_req) { case TYPE_PWD: key = grg_key_gen ((guchar*)gtk_entry_get_text (GTK_ENTRY (entry)), -1); exit = TRUE; break; case TYPE_FILE: { const gchar *path = gtk_entry_get_text (GTK_ENTRY (entry)); key = read_pwd_file (path, dlg, TRUE); if (key) exit = TRUE; break; } case TYPE_DISK: key = read_pwd_disk (dlg, TRUE); if (key) exit = TRUE; break; } if (exit) break; } gtk_widget_destroy (dlg); return key; } static gchar * get_cmdln_string (gchar * prompt, gint max_len, gboolean hidden) { gchar *answ = (gchar *) grg_malloc (max_len), *ret; gint i = 0; gchar c; fprintf (stderr, "%s: ", prompt); if (hidden) block_term (); c = getchar (); if (c != '\n' && c != '\r') { answ[i] = c; i++; } while (TRUE) { if (i >= max_len) break; c = getchar (); if (c == '\n' || c == '\r') break; answ[i] = c; i++; } if (hidden) unblock_term (); ret = g_strndup (answ, i); GRGFREE (answ, max_len); return ret; } GRG_KEY grg_get_cmdline_key (void) { gchar *prompt, *choice; GRG_KEY ret = NULL; prompt = g_strdup_printf ("%s \n 0 - %s\n 1 - %s\n 2 - %s\n 3 - %s", _("Choose password type:"), _("String"), _("File"), _("Disk"), _("Quit")); fprintf (stderr, "%s\n", prompt); g_free (prompt); choice = get_cmdln_string (_("Choice"), 1, FALSE); fprintf (stderr, "\n"); if (choice[0] < '0' || choice[0] > '3') choice[0] = '0'; switch (choice[0]) { case '0': { gchar *pwd; pwd = get_cmdln_string (_("Enter password"), 32, TRUE); if (!mapIsUTF) { gchar *UTF8d; gsize ulen; UTF8d = g_locale_to_utf8 (pwd, -1, NULL, &ulen, NULL); ret = grg_key_gen ((guchar*)UTF8d, ulen); GRGFREE (UTF8d, ulen); ulen = 0; } else ret = grg_key_gen ((guchar*)pwd, -1); GRGAFREE (pwd); } break; case '1': { gchar *pwd = get_cmdln_string (_("Choose file"), 256, TRUE); if (!mapIsUTF) { gchar *UTF8d; gsize ulen; UTF8d = g_locale_to_utf8 (pwd, -1, NULL, &ulen, NULL); ret = read_pwd_file (UTF8d, NULL, FALSE); GRGFREE (UTF8d, ulen); ulen = 0; } else ret = read_pwd_file (pwd, NULL, FALSE); GRGAFREE (pwd); } break; case '2': ret = read_pwd_disk (NULL, FALSE); break; case '3': printf ("%s :)\n", _("Bye, then!")); quit (0); break; } fprintf (stderr, "\n"); g_free (choice); return ret; } gringotts-1.2.10/src/grg_pwd.h000066400000000000000000000023031201055014300161710ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_pwd.h - header file for grg_pwd.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_PWD_H #define GRG_PWD_H #include /*Asks for a new password, validating it.*/ GRG_KEY grg_new_pwd_dialog (GtkWidget * parent, gboolean *cancelled); GRG_KEY grg_ask_pwd_dialog (GtkWidget * parent, gboolean *cancelled); GRG_KEY grg_get_cmdline_key (void); #endif gringotts-1.2.10/src/grg_recent_dox.c000066400000000000000000000076241201055014300175370ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_recent_dox.c - manages the recently-opened-docs list * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include "grg_recent_dox.h" #include "grg_menus.h" #include "grg_defs.h" #include "grg_safe.h" GSList *grg_recent_dox = NULL; static void gather_paths (GMarkupParseContext * context, const gchar * text, gsize text_len, gpointer user_data, GError ** error) { gchar *sfile = g_strstrip (g_strndup (text, text_len)); gchar *ufile = g_filename_from_utf8 (sfile, -1, NULL, NULL, NULL); g_free (sfile); if ((g_file_test (ufile, G_FILE_TEST_IS_REGULAR)) && (g_slist_length (grg_recent_dox) < GRG_RECENT_LIMIT)) grg_recent_dox = g_slist_append (grg_recent_dox, ufile); else g_free (ufile); } void grg_recent_dox_init (void) { gchar *path, *content; int fd, end; GMarkupParser *context = (GMarkupParser *) grg_malloc (sizeof (GMarkupParser)); GMarkupParseContext *parser; GError *err = NULL; path = g_build_filename (g_get_home_dir (), ".gringotts.recent", NULL); fd = open (path, O_RDONLY); g_free (path); if (fd < 3) { close (fd); return; } end = lseek (fd, 0, SEEK_END); lseek (fd, 0, SEEK_SET); context->start_element = NULL; context->end_element = NULL; context->text = gather_paths; context->passthrough = NULL; context->error = NULL; parser = g_markup_parse_context_new (context, 0, NULL, NULL); content = (gchar *) mmap (NULL, end, PROT_READ, MAP_PRIVATE, fd, 0); g_markup_parse_context_parse (parser, content, end, &err); if (!err) g_markup_parse_context_end_parse (parser, &err); g_markup_parse_context_free (parser); if (err) g_error_free (err); g_free (context); munmap (content, end); close (fd); } void grg_recent_dox_deinit (void) { g_slist_foreach (grg_recent_dox, (GFunc) g_free, NULL); g_slist_free (grg_recent_dox); } static void recent_dox_save (void) { gchar *path, i = 1; GSList *cur; gint fd; path = g_build_filename (g_get_home_dir (), ".gringotts.recent", NULL); fd = open (path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR); g_free (path); if (fd < 3) { close (fd); return; } cur = grg_recent_dox; while (cur && (i <= GRG_RECENT_LIMIT)) { gchar *row, *urow; row = g_strdup_printf ("\n%s\n\n", i, (guchar *) cur->data); urow = g_locale_to_utf8 (row, -1, NULL, NULL, NULL); g_free (row); write (fd, urow, strlen (urow)); g_free (urow); cur = cur->next; i++; } close (fd); return; } void grg_recent_dox_push (const gchar * file) { GSList *cur, *tmp; if (file == NULL) return; tmp = grg_recent_dox; while (tmp) { cur = tmp; tmp = tmp->next; if (STR_EQ (cur->data, file) || (g_slist_position (grg_recent_dox, cur) >= GRG_RECENT_LIMIT - 1)) { grg_recent_dox = g_slist_remove_link (grg_recent_dox, cur); g_free (cur->data); g_slist_free_1 (cur); } } grg_recent_dox = g_slist_prepend (grg_recent_dox, g_strdup (file)); recent_dox_save (); grg_menu_update (); } gringotts-1.2.10/src/grg_recent_dox.h000066400000000000000000000022211201055014300175300ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_recent_dox.h - header file for grg_recent.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_RECENT_DOX_H #define GRG_RECENT_DOX_H #define GRG_RECENT_LIMIT 6 GSList *grg_recent_dox; void grg_recent_dox_init (void); void grg_recent_dox_deinit (void); void grg_recent_dox_push (const gchar * file); #endif gringotts-1.2.10/src/grg_safe.c000066400000000000000000000366621201055014300163270ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_safe.c - security management * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define __USE_GNU /* to use the global variable "environ" in stdlib.h*/ #include #include #include #include "grg_defs.h" #include "gringotts.h" #include "grg_safe.h" #include "grg_widgets.h" #include "grg_pix.h" #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_FSUID_H #include #endif #include #include #include #ifdef linux #include #endif #include #include #define GRG_SAFE 0 #define GRG_SLIGHTLY_UNSAFE 1 #define GRG_UNSAFE 2 static gboolean mem_safe = FALSE, ptrace_safe = FALSE; static gint safety_level = GRG_SAFE; #ifdef linux /* check if current kernel release X.Y.Z is greater or equal than a.b.c */ static gboolean grg_kver_ge (int a, int b, int c) { struct utsname uval; char *s1, *s2, *s3; char* release; int X, Y, Z; uname(&uval); release = uval.release; s1 = strsep(&release, "."); s2 = strsep(&release, "."); s3 = strsep(&release, "."); if (s1==NULL || s2==NULL || s3==NULL) { /* unknown kernel version, assume FALSE */ return FALSE; } X = atoi(s1); Y = atoi(s2); Z = atoi(s3); return ((X > a) || ( (X ==a) && ( (Y > b) || ((Y == b) && (Z >= c)) ) ) ); } #endif gboolean grg_mlockall_and_drop_root_privileges(void) { /* drop eventual group root privileges */ setgid(getgid()); setgid(getgid()); /* twice for counter "saved IDs", cfr. */ /* Secure Programming HowTo */ #ifdef HAVE_SYS_FSUID_H setfsgid(getgid()); setfsgid(getgid()); #endif if (!geteuid()) /* the process is (ev. SUID) root. I can mlockall() the memory in */ /* order to avoid swapping. */ { #ifdef HAVE_MLOCKALL #ifdef linux if (grg_kver_ge(2, 6, 9)) { /* since Linux 2.6.9, the memlock amount of unprivileged processes */ /* is limited to the soft limit of RLIMIT_MEMLOCK */ /* Check if there is at least 50000 KB available (which should be */ /* ok for most usages). Else there can be nasty segmentation */ /* faults due to failing malloc() calls and missing NULL checks in */ /* unrelated libraries (eg. libX11 functions). */ struct rlimit rl; gint res = getrlimit(RLIMIT_MEMLOCK, &rl); gint minbytes = 50000*1024; if (res) { g_critical(_("Cannot get MEMLOCK resource limit: %s"), strerror(errno)); return FALSE; } if (rl.rlim_cur < minbytes) { g_critical(_("Increase the memory locking limit to at least " "%d bytes. Current limit: %d bytes.\n" "See /usr/share/doc/gringotts/README for \n" "directions or alternatively make gringotts\n" "non-SUID-root\n"), minbytes, (int)rl.rlim_cur); return FALSE; } } #endif gint res = mlockall(MCL_CURRENT | MCL_FUTURE); if (res) { g_critical("%s", _ ("The process is setuid root, but I can't lock memory paging")); return FALSE; } else mem_safe = TRUE; #endif /* drop root privileges */ setuid(getuid()); setuid(getuid()); #ifdef HAVE_SYS_FSUID_H setfsuid(getuid()); setfsuid(getuid()); #endif #ifdef HAVE_SYS_FSUID_H if (getuid() && (!setuid(0) || !setfsuid(0))) #else if (getuid() && !setuid(0)) #endif { g_critical("%s", _ ("Cannot drop root user privileges. Someone is hacking this process. I cannot go on")); return FALSE; } ptrace_safe = TRUE; } #ifdef HAVE_SYS_FSUID_H if (getgid() && (!setgid(0) || !setfsgid(0))) #else if (getgid() && !setgid(0)) #endif { g_critical("%s", _ ("Cannot drop root group privileges. Someone is hacking this process. I cannot go on")); return FALSE; } return TRUE; } static void change_sec_level(gint newval) { if (safety_level < newval) safety_level = newval; } static void grg_compile_re (regex_t* regex, const char* pat, int cflags) { int err = regcomp(regex, pat, cflags); if (err) { char errbuf[1024]; regerror(err, regex, errbuf, 1024); g_critical("pattern `%s': %s", pat, errbuf); emergency_quit(); } } gboolean grg_security_filter(gboolean rootCheck) { gint canary; struct rlimit *rl; #ifdef ENV_CHECK regex_t regexp; gchar *display, *xauth; #endif gchar *lang; gchar *htab; if (!rootCheck && (!getuid() || !geteuid())) /* forbid usage as root user */ { #ifdef ROOT_FILTER g_critical("%s %s", _ ("For security reasons, you cannot run Gringotts as root user."), _ ("Try to compile with --disable-root-filter in ./configure")); #else g_critical("%s %s", _ ("For security reasons, you cannot run Gringotts as root user."), _("Try using -s")); #endif return FALSE; } /* set and check core dump generation */ rl = (struct rlimit *) grg_malloc(sizeof(struct rlimit)); rl->rlim_cur = rl->rlim_max = 0; setrlimit(RLIMIT_CORE, rl); getrlimit(RLIMIT_CORE, rl); if (rl->rlim_cur || rl->rlim_max) /* no need to give any message, it */ /* should be impossible */ return FALSE; g_free(rl); /* checks that stderr, stdin & stdout are opened */ canary = open("/dev/null", O_RDONLY); if (canary < 3) { g_critical("%s", _ ("stdin, stdout and/or stderr are invalid. Cannot continue.")); close(canary); return FALSE; } close(canary); /* extract needed environmental vars, validate, erase environment, */ /* and re-set them (see Secure Programming HowTo, sect.4.2) */ /* extract */ lang = getenv("LANG"); htab = getenv("HTAB"); #ifdef ENV_CHECK /* validate */ if (lang) { grg_compile_re(®exp, "^[[:alpha:]][-[:alnum:]_,+@.=]*$", REG_EXTENDED|REG_NOSUB); if (regexec(®exp, lang, 0, NULL, 0)) { g_critical("%s `%s'", _("Invalid LANG environment variable:"), lang); return FALSE; } } xauth = getenv("XAUTHORITY"); if (xauth && !g_file_test(xauth, G_FILE_TEST_EXISTS)) { g_critical("%s `%s'", _("Invalid XAUTHORITY environment variable:"), xauth); return FALSE; } display = getenv("DISPLAY"); if (display) { grg_compile_re(®exp, ":[[:digit:]]+(\\.[[:digit:]]+)?$", REG_EXTENDED|REG_NOSUB); if (regexec(®exp, display, 0, NULL, 0)) { g_critical("%s `%s'", _("Invalid DISPLAY environment variable:"), display); return FALSE; } } #endif /* don't know why, but it seems necessary */ setlocale(LC_ALL, lang); mapIsUTF = g_get_charset(NULL); #ifdef ENV_CHECK /* erase */ #ifdef HAVE_CLEARENV clearenv(); #else #ifdef HAVE_ENVIRON { extern char **environ; environ = NULL; } #endif #endif /* re-set (warning: don't free() the g_strconcat'ed strings) */ if (lang != NULL) putenv(g_strconcat("LANG=", lang, NULL)); if (display != NULL) putenv(g_strconcat("DISPLAY=", display, NULL)); if (htab != NULL) putenv(g_strconcat("HTAB=", htab, NULL)); putenv(g_strconcat("DISPLAY=", display, NULL)); if (xauth != NULL) putenv(g_strconcat("XAUTHORITY=", xauth, NULL)); putenv(g_strconcat("HOME=", g_get_home_dir(), NULL)); #endif /* necessary to handle files correctly */ if (!mapIsUTF) putenv("G_BROKEN_FILENAMES=1"); /* this enables a stronger check on malloc() routines */ #ifdef MAINTAINER_MODE putenv("MALLOC_CHECK_=2"); #else putenv("MALLOC_CHECK_=0"); #endif /* initializes the security level indicator */ if (!(geteuid() && getegid() && getuid() && getgid())) change_sec_level(GRG_UNSAFE); #ifdef HAVE_MLOCKALL if (!mem_safe) change_sec_level(GRG_UNSAFE); #endif if (!ptrace_safe) change_sec_level(GRG_UNSAFE); #ifndef ENV_CHECK change_sec_level(GRG_UNSAFE); #endif if (grg_ctx_get_security_lvl(gctx) != GRG_SEC_PARANOIA) change_sec_level(GRG_SLIGHTLY_UNSAFE); #ifndef ROOT_FILTER if (safety_level == GRG_SAFE) change_sec_level(GRG_SLIGHTLY_UNSAFE); #endif return TRUE; } GtkWidget * grg_get_security_button(void) { GdkPixbuf *pix; GtkWidget *img; switch (safety_level) { case GRG_SAFE: pix = gdk_pixbuf_new_from_xpm_data(optimal_xpm); break; case GRG_SLIGHTLY_UNSAFE: pix = gdk_pixbuf_new_from_xpm_data(green_xpm); break; case GRG_UNSAFE: default: pix = gdk_pixbuf_new_from_xpm_data(red_xpm); break; } img = gtk_image_new_from_pixbuf(pix); gtk_misc_set_alignment(GTK_MISC(img), 0.5f, 0.0f); g_object_unref(G_OBJECT(pix)); return img; } gchar * grg_get_security_text(gchar * pattern) { switch (safety_level) { case GRG_SAFE: return g_strdup_printf(pattern, _("optimal")); case GRG_SLIGHTLY_UNSAFE: return g_strdup_printf(pattern, _("good")); case GRG_UNSAFE: default: return g_strdup_printf(pattern, _("low")); } } #define ADD_INDICATOR(box, text, pixbuf) \ { \ GtkWidget *new_lbl, *img, *hbox; \ new_lbl = gtk_label_new(text); \ gtk_misc_set_alignment(GTK_MISC(new_lbl), 0, 0.5); \ img = gtk_image_new_from_pixbuf (pixbuf); \ hbox = gtk_hbox_new (FALSE, GRG_PAD); \ gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, GRG_PAD); \ gtk_box_pack_start(GTK_BOX(hbox), new_lbl, FALSE, FALSE, GRG_PAD); \ gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, GRG_PAD); \ } void grg_security_monitor(void) { GtkWidget *dialog = gtk_dialog_new_with_buttons(_("Security monitor"), NULL, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); GdkPixbuf *red = gdk_pixbuf_new_from_xpm_data(red_xpm); GdkPixbuf *yellow = gdk_pixbuf_new_from_xpm_data(yellow_xpm); GdkPixbuf *green = gdk_pixbuf_new_from_xpm_data(green_xpm); struct rlimit *rl = (struct rlimit *) grg_malloc(sizeof(struct rlimit)); if (!geteuid() || !getegid()) { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Running without root privileges"), red); } else { if (!getuid() || !getgid()) { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Running without root privileges"), yellow); } else { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Running without root privileges"), green); } } getrlimit(RLIMIT_CORE, rl); if (rl->rlim_cur || rl->rlim_max) { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Memory protection from core dumps"), red); } else { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Memory protection from core dumps"), green); } g_free(rl); #ifdef HAVE_MLOCKALL /* the pwd isn't stored in cleartext anyway */ if (mem_safe) { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Memory protection from swap writings"), green); } else { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Memory protection from swap writings"), yellow); } #endif if (ptrace_safe) { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Memory protection from ptrace spying"), green); } else { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Memory protection from ptrace spying"), red); } #if defined(ENV_CHECK) && (defined(HAVE_CLEARENV) || defined(HAVE_ENVIRON)) ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Environmental variables validation"), green) #else ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Environmental variables validation"), red) #endif ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("stdout/stdin/stderr validation"), green) if (grg_ctx_get_security_lvl(gctx) == GRG_SEC_PARANOIA) { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Enforced use of /dev/random"), green); } else { ADD_INDICATOR(GTK_DIALOG(dialog)->vbox, _("Enforced use of /dev/random"), yellow); } #ifdef ROOT_FILTER ADD_INDICATOR(GTK_DIALOG(dialog)-> vbox, _("Strict prohibition to root user"), green) #else ADD_INDICATOR(GTK_DIALOG(dialog)-> vbox, _("Strict prohibition to root user"), yellow) #endif gtk_widget_show_all(dialog); gtk_dialog_run(GTK_DIALOG(dialog)); g_object_unref(G_OBJECT(red)); g_object_unref(G_OBJECT(yellow)); g_object_unref(G_OBJECT(green)); gtk_widget_destroy(dialog); } /* * Opens a file, only if it is regular and existent */ gint grg_safe_open(gchar * path) { struct stat buf1, buf2; gint res1, res2, fd; res1 = lstat(path, &buf1); if (res1) return GRG_OPEN_FILE_NOT_FOUND; if (!S_ISREG(buf1.st_mode)) return GRG_OPEN_FILE_IRREGULAR; fd = open(path, O_RDONLY); if (fd < 3) { close(fd); return GRG_OPEN_FILE_NOT_FOUND; } res2 = fstat(fd, &buf2); if ((res1 != res2) || (buf1.st_dev != buf2.st_dev) || (buf1.st_ino != buf2.st_ino) || (buf1.st_uid != buf2.st_uid) || (buf1.st_gid != buf2.st_gid) || (buf1.st_size != buf2.st_size) || (buf1.st_blksize != buf2.st_blksize) || (buf1.st_mtime != buf2.st_mtime) || (buf1.st_ctime != buf2.st_ctime) || (buf1.st_mode != buf2.st_mode)) { close(fd); return GRG_OPEN_SECURITY_FAULT; } return fd; } /* * Check that all mallocs return no errors */ gpointer grg_malloc(gulong length) { gpointer ret = g_try_malloc(length); #ifdef MAINTAINER_MODE /* warn if a malloc(0) is attempted */ if (!length) g_warning("zero-length malloc() requested!"); #endif if (ret) return ret; printf("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly..."); emergency_quit(); /* never really reached ;-) */ return NULL; } /* * Check that all reallocs return no errors */ gpointer grg_realloc(gpointer ptr, gulong length) { gpointer ret = g_try_realloc(ptr, length); #ifdef MAINTAINER_MODE /* warn if a realloc(0) is attempted */ if (!length) g_warning("zero-length realloc() requested!"); #endif if (ret) return ret; printf("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly..."); emergency_quit(); return ret; } gringotts-1.2.10/src/grg_safe.h000066400000000000000000000024721201055014300163240ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_safe.h - header file for grg_safe.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_SAFE_H #define GRG_SAFE_H gboolean grg_mlockall_and_drop_root_privileges (void); gboolean grg_security_filter (gboolean rootCheck); void grg_security_monitor (void); GtkWidget *grg_get_security_button (void); gchar *grg_get_security_text (gchar * pattern); gint grg_safe_open (gchar * path); gpointer grg_malloc (gulong length); gpointer grg_realloc (gpointer ptr, gulong length); #endif gringotts-1.2.10/src/grg_widgets.c000066400000000000000000000265331201055014300170530ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_widgets.c - various "custom" widgets used in Gringotts * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include "grg_defs.h" #include "grg_pix.h" #include "gringotts.h" #include "grg_widgets.h" gboolean mapIsUTF = FALSE; /** * grg_msg: * @text: the text of the message to display * @msgt: the GtkMessageType of the message * @parent: the parent of the dialog to create * * Displays a dialog that shows a message. */ void grg_msg (gchar * text, GtkMessageType msgt, GtkWidget * parent) { GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (parent), GTK_DIALOG_MODAL, msgt, GTK_BUTTONS_OK, text); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } void report_err (gchar * msg, gboolean X, gboolean doquit, GtkWidget * parent) { if (X) grg_msg (msg, GTK_MESSAGE_ERROR, parent); else { fprintf (stderr, "%s: %s\n", _("Error"), msg); if (doquit) emergency_quit (); /*should suffice quit(1), but just in case... ;-) */ } } gboolean return_submit (GtkWidget * w, GdkEventKey * ev, GtkWidget * w2) { if (ev->keyval == 65293 || ev->keyval == 65421) { gtk_dialog_response (GTK_DIALOG (w2), GTK_RESPONSE_OK); return TRUE; } return FALSE; } /** * grg_input_dialog: * @title: the title of the input dialog * @qtext: the question to ask * @preset: the predefined answer, NULL if none * @is_pass: tells if the requested string is a password, to be obfuscated * @parent: the parent of the dialog to create * * Shows and manages a dialog that asks for a string. * * Returns: the answer string, or NULL if user pressed Cancel. */ gchar * grg_input_dialog (gchar * title, gchar * qtext, gchar * preset, gboolean is_pass, GtkWidget * parent) { GtkWidget *dialog, *question, *label; gchar *ret = NULL; gint res; dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (parent), GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gtk_container_set_border_width (GTK_CONTAINER (dialog), GRG_PAD); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), GRG_PAD); label = gtk_label_new (qtext); question = gtk_entry_new (); g_signal_connect (G_OBJECT (question), "key-press-event", G_CALLBACK (return_submit), (gpointer) dialog); gtk_entry_set_max_length (GTK_ENTRY (question), 32); if (preset != NULL) gtk_entry_set_text (GTK_ENTRY (question), preset); gtk_entry_set_visibility (GTK_ENTRY (question), !is_pass); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), label); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), question); gtk_widget_grab_focus (question); gtk_widget_show_all (dialog); res = gtk_dialog_run (GTK_DIALOG (dialog)); if (res == GTK_RESPONSE_OK) ret = g_strdup ((gchar *) gtk_entry_get_text (GTK_ENTRY (question))); gtk_widget_destroy (dialog); return ret; } /** * grg_ask_dialog: * @title: the title of the dialog * @question: the question to ask * @allowcanc: if the dialog allows a cancel button or not * @parent: the parent of the dialog to create. * * Asks a question for a boolean answer. * * Returns: GRG_YES if yes, GRG_NO if no, GRG_CANCEL if user canceled */ grg_response grg_ask_dialog (gchar * title, gchar * question, gboolean allowcanc, GtkWidget * parent) { GtkWidget *dialog, *label; gint res; if (!allowcanc) dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (parent), GTK_DIALOG_MODAL, GTK_STOCK_YES, GTK_RESPONSE_YES, GTK_STOCK_NO, GTK_RESPONSE_NO, NULL); else dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (parent), GTK_DIALOG_MODAL, GTK_STOCK_YES, GTK_RESPONSE_YES, GTK_STOCK_NO, GTK_RESPONSE_NO, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gtk_container_set_border_width (GTK_CONTAINER (dialog), GRG_PAD); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), GRG_PAD); label = gtk_label_new (question); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), label); gtk_widget_show_all (dialog); res = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); switch (res) { case GTK_RESPONSE_YES: return GRG_YES; case GTK_RESPONSE_NO: return GRG_NO; case GTK_RESPONSE_CANCEL: default: return GRG_CANCEL; } } /** * grg_window_set_icon: * @w: the window to set the icon to * * Associates the Gringotts icon with the given window. */ void grg_window_set_icon (GtkWindow * w) { GdkPixbuf *gp = gdk_pixbuf_new_from_xpm_data (gringotts_xpm); GList *gl = NULL; gl = g_list_append (gl, gp); gtk_window_set_icon (w, gp); gtk_window_set_default_icon_list (gl); g_list_free (gl); g_object_unref (G_OBJECT (gp)); } /** * grg_find_dialog: */ gboolean grg_find_dialog (gchar ** needle, gboolean * only_current, gboolean * case_sens, GtkWindow * parent) { GtkWidget *dialog, *question, *label, *chk1, *chk2; gint res; dialog = gtk_dialog_new_with_buttons (_("Find a string"), GTK_WINDOW (parent), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gtk_container_set_border_width (GTK_CONTAINER (dialog), 3); gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 3); label = gtk_label_new (_("Enter the string to find:")); question = gtk_entry_new (); g_signal_connect (G_OBJECT (question), "key-press-event", G_CALLBACK (return_submit), (gpointer) dialog); gtk_entry_set_max_length (GTK_ENTRY (question), 32); if (*needle) gtk_entry_set_text (GTK_ENTRY (question), *needle); chk1 = gtk_check_button_new_with_label (_ ("Search only in this entry")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chk1), *only_current); chk2 = gtk_check_button_new_with_label (_("Case sensitive")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chk2), *case_sens); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), label); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), question); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), chk1); gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), chk2); gtk_widget_grab_focus (question); gtk_widget_show_all (dialog); res = gtk_dialog_run (GTK_DIALOG (dialog)); if (res != GTK_RESPONSE_OK) { gtk_widget_destroy (dialog); return FALSE; } g_free (*needle); *needle = g_strdup (gtk_entry_get_text (GTK_ENTRY (question))); *only_current = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chk1)); *case_sens = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chk2)); gtk_widget_destroy (dialog); return TRUE; } static gboolean exit_wait_timed (gpointer void_w) { GtkWidget * w = (GtkWidget *)void_w; gtk_dialog_response (GTK_DIALOG (w), GTK_RESPONSE_DELETE_EVENT); return FALSE; } GtkWidget * grg_wait_msg (gchar * reason, GtkWidget * parent) { GtkWidget *wait, *lbl_wait, *hbox_wait, *img_wait; GdkPixbuf *pix; gchar *msg = g_strdup_printf ("%s,\n%s...", _("Please wait"), reason); wait = gtk_dialog_new_with_buttons (_("Please wait"), GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, NULL); gtk_widget_show_all (wait); gtk_dialog_set_has_separator (GTK_DIALOG (wait), FALSE); gtk_container_set_border_width (GTK_CONTAINER (wait), GRG_PAD); hbox_wait = gtk_hbox_new (FALSE, GRG_PAD * 2); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (wait)->vbox), hbox_wait, FALSE, FALSE, 0); pix = gdk_pixbuf_new_from_xpm_data (wait_xpm); img_wait = gtk_image_new_from_pixbuf (pix); gtk_misc_set_alignment (GTK_MISC (img_wait), (gfloat) 0.5, (gfloat) 0.0); g_object_unref (G_OBJECT (pix)); gtk_box_pack_start (GTK_BOX (hbox_wait), img_wait, FALSE, FALSE, 0); lbl_wait = gtk_label_new (msg); g_free (msg); gtk_box_pack_start (GTK_BOX (hbox_wait), lbl_wait, FALSE, FALSE, 0); gtk_widget_show_all (wait); g_timeout_add (GRG_VISUAL_LATENCY, exit_wait_timed, wait); gtk_dialog_run (GTK_DIALOG (wait)); return wait; } void grg_wait_message_change_reason (GtkWidget * wait, gchar * reason) { GList *child1, *child2; gchar *msg = g_strdup_printf ("%s,\n%s...", _("Please wait"), reason); child1 = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (wait)->vbox)); child2 = gtk_container_get_children (GTK_CONTAINER (child1->data)); gtk_label_set_text (GTK_LABEL (child2->next->data), msg); g_free (msg); g_list_free (child1); g_list_free (child2); g_timeout_add (GRG_VISUAL_LATENCY, exit_wait_timed, wait); gtk_dialog_run (GTK_DIALOG (wait)); } void grg_display_file (gchar * file) { static const gchar *commands[] = { "htmlview %s &>/dev/null", "galeon %s &>/dev/null", "mozilla %s &>/dev/null", "netscape %s &>/dev/null", "konqueror --mimetype \"text/plain\" %s &>/dev/null", "gnome-terminal --hide-menubar -x less %s &>/dev/null", "gnome-terminal -x less %s &>/dev/null", "konsole -e less %s &>/dev/null", "gless --geometry=500x400+50+50 %s &>/dev/null", "xterm -e less %s &>/dev/null", "/usr/X11R6/bin/xterm -e less %s &>/dev/null", NULL }; /*add eterm, opera */ gchar *command = NULL; gint resp = -1, i = 0; if (!g_file_test (file, G_FILE_TEST_EXISTS)) { report_err (_("The file does not exist"), TRUE, FALSE, NULL); return; } /*iterates on the available visualizers list until it finds stng useable */ while (resp && commands[i]) { gchar *quote = g_shell_quote (file); command = g_strdup_printf (commands[i], quote); g_free (quote); resp = system (command); g_free (command); i++; } } GtkWidget * grg_toolbar_insert_stock(GtkToolbar *toolbar, const gchar *stock_id, const char *tooltip_text, GtkSignalFunc callback, gpointer user_data, gint position) { GtkToolItem * item; item = gtk_tool_button_new_from_stock(stock_id); gtk_tool_item_set_tooltip_text (item, tooltip_text); g_signal_connect (item, "clicked", callback, user_data); gtk_toolbar_insert (toolbar, item, position); return GTK_WIDGET (item); } gringotts-1.2.10/src/grg_widgets.h000066400000000000000000000046521201055014300170560ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * grg_widgets.h - header file for grg_widgets.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRG_WIDGETS_H #define GRG_WIDGETS_H #include "grg_defs.h" #include gboolean mapIsUTF; /* Shows and manages a dialog that asks for a string. */ gchar *grg_input_dialog (gchar * title, gchar * qtext, gchar * preset, gboolean is_pass, GtkWidget * parent); /* Displays a dialog that shows a message. */ void grg_msg (gchar * text, GtkMessageType msgt, GtkWidget * parent); /* transparent X and non-X error reporting */ void report_err (gchar * msg, gboolean X, gboolean doquit, GtkWidget * parent); /* Asks a question for a boolean answer. */ grg_response grg_ask_dialog (gchar * title, gchar * question, gboolean allowcanc, GtkWidget * parent); /* Associates the Gringotts icon with the given window. */ void grg_window_set_icon (GtkWindow * w); gboolean grg_find_dialog (gchar ** needle, gboolean * only_current, gboolean * case_sens, GtkWindow * parent); /* displays a "Wait..." window, to be destroyed at the end of waiting */ GtkWidget *grg_wait_msg (gchar * reason, GtkWidget * parent); void grg_wait_message_change_reason (GtkWidget * wait, gchar * reason); /* calls an external application to display a text file */ void grg_display_file (gchar * file); /* callback to submit a form when enter is pressed */ gboolean return_submit (GtkWidget * w, GdkEventKey * ev, GtkWidget * w2); GtkWidget * grg_toolbar_insert_stock(GtkToolbar *toolbar, const gchar *stock_id, const char *tooltip_text, GtkSignalFunc callback, gpointer user_data, gint position); #endif gringotts-1.2.10/src/grg_xpm.c000066400000000000000000000000731201055014300162000ustar00rootroot00000000000000#include "gringotts.h" #include "../pixmaps/gringotts.xpm" gringotts-1.2.10/src/gringotts.c000066400000000000000000001346621201055014300165710ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * gringotts.c - main program and interface * Authors: Germano Rizzo, Nicholas Pouillon * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #include #include #include #include #include #include #include #include "grg_defs.h" #include "grg_pix.h" #include "grg_entries.h" #include "grg_entries_vis.h" #include "grg_widgets.h" #include "grg_list.h" #include "grg_menus.h" #include "grg_prefs.h" #include "grg_prefs_io.h" #include "grg_pwd.h" #include "grg_safe.h" #include "grg_recent_dox.h" #include "grg_popt.h" #include "grg_attachs.h" #include #include "gringotts.h" /* appends a stock item to a toolbar */ #define TOOLBAR_INS_STOCK(tbar, stock, callback, tooltip) \ grg_toolbar_insert_stock (GTK_TOOLBAR (tbar), stock, tooltip, \ (GtkSignalFunc) callback, NULL, -1) /* appends a stock item to a toolbar, assigning it to a widget */ #define TOOLBAR_INS_STOCK_WIDGET(tbar, stock, callback, tooltip, wid) \ wid = grg_toolbar_insert_stock (GTK_TOOLBAR (tbar), stock, tooltip, \ (GtkSignalFunc) callback, NULL, -1) /* appends a stock item to a toolbar, assigning it to a widget and passing a value to the callback */ #define TOOLBAR_INS_STOCK_WIDGET_SIGNAL(tbar, stock, callback, tooltip, signal, wid) \ wid = grg_toolbar_insert_stock (GTK_TOOLBAR (tbar), stock, tooltip, \ (GtkSignalFunc) callback, GINT_TO_POINTER (signal), -1) /* appends a space to a toolbar */ #define TOOLBAR_INS_SPACE(tbar) \ my_toolbar_append_space (GTK_TOOLBAR (tbar)) /* - some menu buttons are never deactivated (i.e. Quit), so their widgets aren't really needed */ /* general */ static GtkWidget *title, *win1, *edit, *lbl; /* toolbar Navigation */ static GtkWidget *bfirst, *bback, *bfor, *blast, *bind; /* others */ static GtkWidget *btitle; /* main toolbar */ static GtkWidget *tnew, *topen, *tsave, *tclose; static GtkWidget *tadd, *trem, *tcut, *tcopy, *tpast, *tfind, *tpref; static GtkWidget *batadd, *batrem, *batsav, *batinf, *batchco; static GtkComboBox *combo_attach; static GtkListStore * combo_attach_list_store; static gchar *grgfile = NULL, *caption = NULL; static gboolean started = FALSE, gtk_loop_started = FALSE; static gboolean created = FALSE; static guint tout; static GRG_KEY key; GList *garbage = NULL; GRG_CTX gctx = NULL; glong pwdbirth = 0; static void my_toolbar_append_space (GtkToolbar * toolbar) { GtkToolItem * separator; separator = gtk_separator_tool_item_new(); gtk_toolbar_insert (toolbar, separator, -1); } /* * nyi: * * Displays a "not yet implemented" message box * void nyi (void) { grg_msg (_("Sorry, this function hasn't been implemented yet"), GTK_MESSAGE_ERROR, win1); }*/ static void garbage_collect (gpointer att, gpointer user_data) { GRGAFREE (att); } /** * about: * * Displays the `About' box. */ void about (void) { gchar *info = g_strconcat (GRG_CAP_NAME, _(" version "), GRG_VERSION, "\n", _("(c)"), " 2002 Germano Rizzo \n\n", _("Authors"), ":\n" " Germano Rizzo \n", " Nicolas Pouillon \n" "\n", _ ("Gringotts is a small but (hopely ;) useful utility that stores " "sensitive data (passwords, credit card numbers, friends' " "addresses) in an organized and most of all very secure form.\n" "It uses libmcrypt and libmhash to provide a strong level of " "encryption, just trying to be as trustworthy as possible.\n\n" "This program is released under the GNU GPL, v.2 or later\n" "See COPYING or go to http://www.gnu.org/copyleft/gpl.html"), "\n\n" "libmcrypt ", _("(c)"), " 1998,1999 Nikos Mavroyanopoulos\n" "libmhash ", _("(c)"), " 2001 Nikos Mavroyanopoulos\n", _("the name"), " \"Gringotts\" ", _("(c)"), " 1998 Joanne K. Rowling", NULL); grg_msg (info, GTK_MESSAGE_INFO, win1); g_free (info); } /* void attach_warn (void) { grg_msg (_ ("This is a relatively new feature, so it's still under heavy" "development... and may have some problem. In this case," "the stability and data safety should be good, but it lacks" "quite much in speed. If you attach larger files, you may" "have to wait a pretty huge deal of time. It depends from" "case to case anyway; the best thing is to try it yourself. In" "future releases of Gringotts we'll work also on this aspect."), GTK_MESSAGE_WARNING, win1); } */ /** * prefs: * * Displays the preferences window. */ void launch_prefs (void) { grg_pref_dialog (win1); } /** * quit: * * Exits the main application cycle, releasing the resources. */ void quit (gint code) { grg_key_free (gctx, key); key = NULL; g_free (grgfile); grgfile = NULL; g_free (caption); caption = NULL; if (gtk_loop_started) gtk_main_quit (); g_list_foreach (garbage, garbage_collect, NULL); g_list_free (garbage); grg_prefs_free (); grg_recent_dox_deinit (); entries_vis_deinit (); grg_context_free (gctx); exit (code); } /** * `Ungracefully' quits, shutting down all resources in a safe way */ void emergency_quit (void) { del_needle (); grg_entries_free (); quit(1); } /** * update_saveable: * @mode: the operation to perform: * GRG_SAVE_ACTIVE -> activates all the save widgets. * GRG_SAVE_INACTIVE -> deactivates all the save widgets. * GRG_SAVE_QUERY -> query for saveability state. * * Performs an action about saveability. * * Returns: if GRG_SAVE_QUERY, the saveability state. */ gboolean update_saveable (grg_saveable mode) { static gboolean saveable = TRUE; gboolean nsaveable; if (mode == GRG_SAVE_QUERY) return saveable; if (started && grgfile) { gchar *ugrg = g_filename_to_utf8 (grgfile, -1, NULL, NULL, NULL); g_free (caption); if (mode == GRG_SAVE_ACTIVE) { caption = g_strconcat (ugrg, " *", NULL); g_free (ugrg); } else caption = ugrg; gtk_window_set_title (GTK_WINDOW (win1), caption); } nsaveable = (mode == GRG_SAVE_ACTIVE) && !grg_entries_is_empty (); if (nsaveable ^ saveable) { saveable = nsaveable; gtk_widget_set_sensitive (bsave, saveable); gtk_widget_set_sensitive (tsave, saveable); gtk_widget_set_sensitive (brev, saveable && grgfile && !STR_EQ (grgfile, _("New file"))); } return saveable; } static gboolean backup_file (gchar * filename) { gchar *bak_name; struct stat s; gint res; res = lstat (filename, &s); if ((res < 0) || !S_ISREG (s.st_mode)) /*file non-existent or non-regular */ return TRUE; bak_name = g_strconcat (filename, BACKUP_SUFFIX, NULL); res = lstat (bak_name, &s); if (((res == 0) && !S_ISREG (s.st_mode)) || rename (filename, bak_name)) { g_free (bak_name); return FALSE; } g_free (bak_name); return TRUE; } /** * meta_saveable: * @data: unused * @user_data: a gpointer to the mode to pass to update_saveable(). * * Controls if update_saveable() can be called, and if so calls it. */ void meta_saveable (gpointer data, gpointer user_data) { if (started) update_saveable ((grg_saveable) GPOINTER_TO_INT (user_data)); } static void update_combo_attach (void) { grg_attachment_fill_combo_box (combo_attach); } /** * update: * * Updates various widgets (title of the window, button sensitivity...) */ /* FIXME: should be "static void" but it's (mis)called elsewhere */ void update (void) { static gchar *tlbl; gboolean isStuffed = !grg_entries_is_empty (); gboolean isAttachSelected; gboolean notFirst = !grg_entries_is_first (); gboolean notLast = !grg_entries_is_last (); gboolean moreThan1 = grg_entries_n_el () > 1; update_combo_attach (); /*current_attach_ID gets aligned only after grg_attach_get_menu */ isAttachSelected = current_attach_ID > -1; gtk_widget_set_sensitive (btitle, isStuffed); gtk_widget_set_sensitive (bind, isStuffed); gtk_widget_set_sensitive (bsas, isStuffed); gtk_widget_set_sensitive (badd, isStuffed); gtk_widget_set_sensitive (tadd, isStuffed); gtk_widget_set_sensitive (bmind, isStuffed); gtk_widget_set_sensitive (bpwd, isStuffed); gtk_widget_set_sensitive (tclose, isStuffed); gtk_widget_set_sensitive (bclose, isStuffed); gtk_widget_set_sensitive (edit, isStuffed); gtk_widget_set_sensitive (bcut, isStuffed); gtk_widget_set_sensitive (tcut, isStuffed); gtk_widget_set_sensitive (bcop, isStuffed); gtk_widget_set_sensitive (tcopy, isStuffed); gtk_widget_set_sensitive (bpaste, isStuffed); gtk_widget_set_sensitive (tpast, isStuffed); gtk_widget_set_sensitive (bfind, isStuffed); gtk_widget_set_sensitive (tfind, isStuffed); gtk_widget_set_sensitive (bpwd, isStuffed); gtk_widget_set_sensitive (batadd, isStuffed); gtk_widget_set_sensitive (batrem, isAttachSelected); gtk_widget_set_sensitive (batsav, isAttachSelected); gtk_widget_set_sensitive (batinf, isAttachSelected); gtk_widget_set_sensitive (batchco, isAttachSelected); gtk_widget_set_sensitive (GTK_WIDGET (combo_attach), isAttachSelected); gtk_label_set_text (GTK_LABEL (title), isStuffed ? grg_entries_get_ID () : GRG_CAP_NAME " " GRG_VERSION); gtk_widget_hide(edit); edit=get_updated_sheet(isStuffed); gtk_widget_show(edit); gtk_widget_set_sensitive (bfor, notLast); gtk_widget_set_sensitive (blast, notLast); gtk_widget_set_sensitive (bmfor, notLast); gtk_widget_set_sensitive (bmlast, notLast); gtk_widget_set_sensitive (bback, notFirst); gtk_widget_set_sensitive (bfirst, notFirst); gtk_widget_set_sensitive (bmback, notFirst); gtk_widget_set_sensitive (bmfirst, notFirst); gtk_widget_set_sensitive (brem, moreThan1); gtk_widget_set_sensitive (trem, moreThan1); gtk_widget_set_sensitive (bfinda, has_needle ()); tlbl = g_strdup_printf ("%d/%d", grg_entries_position () + 1, grg_entries_n_el ()); gtk_label_set_text (GTK_LABEL (lbl), tlbl); g_free (tlbl); gtk_window_set_title (GTK_WINDOW (win1), caption); } void save (void); /** * file_close: * * Closes the opened document. * * Returns: GRG_YES if all has gone well, GRG_NO if error, GRG_CANCEL if user canceled */ grg_response file_close (void) { if (grg_entries_is_empty ()) return GRG_NO; if (update_saveable (GRG_SAVE_QUERY)) { grg_response resp = grg_ask_dialog (_("Save?"), _ ("Some changes have not been saved.\nDo you wish to save them now?"), TRUE, win1); switch (resp) { case GRG_CANCEL: return resp; case GRG_YES: save (); case GRG_NO: default: if (grg_prefs_clip_clear_on_close) clear_clipboard (); } } grg_entries_free (); del_needle (); grg_key_free (gctx, key); key = NULL; g_free (grgfile); grgfile = NULL; g_free (caption); caption = g_strconcat (GRG_CAP_NAME, " ", GRG_VERSION, NULL); update_saveable (GRG_SAVE_INACTIVE); update (); return GRG_YES; } /** * meta_quit: * * Asks for save if not saved, and then exits. */ void meta_quit (void) { if (file_close () == GRG_CANCEL) return; grg_save_prefs(); quit (0); } /** * revert: * * Reverts to last saved version. */ void revert (void) { if (update_saveable (GRG_SAVE_QUERY) && (grg_ask_dialog (_("Confirm"), _("You'll lose all the changes from\nlast save! Are you sure?"), FALSE, win1) == GRG_YES)) { gchar *tmp = NULL; GtkWidget *wait = grg_wait_msg (_("loading"), win1); gint err, fd; fd = grg_safe_open (grgfile); if (fd == GRG_OPEN_FILE_IRREGULAR) { grg_msg (_ ("You've selected a directory or a symlink"), GTK_MESSAGE_ERROR, win1); return; } if (fd < 3) { grg_msg (_("The selected file doesn't exists"), GTK_MESSAGE_ERROR, win1); return; } err = grg_load_wrapper (&tmp, key, fd, grgfile); close (fd); if (err) gtk_widget_destroy (wait); switch (err) { case GRG_OK: { grg_wait_message_change_reason (wait, _("assembling data")); grg_entries_load_from_string (tmp, win1, TRUE); grg_wait_message_change_reason (wait, _("cleaning up")); gtk_widget_destroy (wait); update_saveable (GRG_SAVE_INACTIVE); update (); break; } case GRG_MEM_ALLOCATION_ERR: { printf("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly..."); emergency_quit(); } case GRG_ARGUMENT_ERR: { grg_msg (_ ("Gringotts internal error. Cannot finish operation."), GTK_MESSAGE_ERROR, win1); break; } case GRG_READ_MAGIC_ERR: case GRG_READ_UNSUPPORTED_VERSION: case GRG_READ_CRC_ERR: case GRG_READ_PWD_ERR: case GRG_READ_COMP_ERR: case GRG_READ_INVALID_CHARSET_ERR: { grg_msg (_("The file appears to be corrupted!"), GTK_MESSAGE_ERROR, win1); break; } #ifdef GRG_READ_TOO_BIG_ERR case GRG_READ_TOO_BIG_ERR: { grg_msg (_("File is too big"), GTK_MESSAGE_ERROR, win1); break; } #endif case GRG_READ_FILE_ERR: { grg_msg (_("Uh-oh! I can't read from the file!"), GTK_MESSAGE_ERROR, win1); break; } case GRG_READ_ENC_INIT_ERR: { grg_msg (_ ("Problem with libmcrypt, probably a faulty installation"), GTK_MESSAGE_ERROR, win1); break; } default: #ifdef MAINTAINER_MODE g_assert_not_reached (); #else grg_msg (_ ("Gringotts internal error. Cannot finish operation."), GTK_MESSAGE_ERROR, win1); #endif break; } GRGAFREE (tmp); tmp = NULL; } if ((grg_prefs_xpire > 0) && pwdbirth && (grg_prefs_xpire * 86400L < time (NULL) - pwdbirth)) grg_msg (_ ("The current password is expired.\nYou should change it, or modify this " "setting in the preferences"), GTK_MESSAGE_WARNING, win1); } /** * load_file: * @filename: a filename (in the local encoding). * * Loads a gringotts file. */ static void load_file (gchar * input_filename) { GtkWidget *wait; GRG_KEY tmpkey; gint err, fd; gchar *res; struct stat buf1, buf2; gchar * abs_filename = NULL; if (!input_filename || !*input_filename) goto cleanup; fd = grg_safe_open (input_filename); if (fd == GRG_OPEN_FILE_IRREGULAR) { grg_msg (_("You've selected a directory or a symlink"), GTK_MESSAGE_ERROR, win1); goto cleanup; } if (fd < 3) { grg_msg (_("The selected file doesn't exists"), GTK_MESSAGE_ERROR, win1); goto cleanup; } /* if this and the opened one are the very same file, fall back on revert() */ if (grgfile && !STR_EQ (grgfile, _("New file")) && (lstat (grgfile, &buf1) == 0) && (fstat (fd, &buf2) == 0) && (buf1.st_dev == buf2.st_dev) && (buf1.st_ino == buf2.st_ino)) { close (fd); revert (); goto cleanup; } if (g_path_is_absolute (input_filename)) { abs_filename = g_strdup(input_filename); } else { abs_filename = (gchar *) grg_malloc (PATH_MAX); realpath (input_filename, abs_filename); } if (file_close () == GRG_CANCEL) goto cleanup; err = grg_validate_file_direct (gctx, fd); switch (err) { case GRG_OK: break; case GRG_READ_MAGIC_ERR: case GRG_READ_UNSUPPORTED_VERSION: { close (fd); grg_msg (_ ("This file doesn't seem to be a valid Gringotts one!"), GTK_MESSAGE_ERROR, win1); goto cleanup; } case GRG_MEM_ALLOCATION_ERR: { close (fd); printf("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly..."); emergency_quit(); } case GRG_ARGUMENT_ERR: { close (fd); grg_msg (_ ("Gringotts internal error. Cannot finish operation."), GTK_MESSAGE_ERROR, win1); goto cleanup; } case GRG_READ_FILE_ERR: { close (fd); grg_msg (_("Uh-oh! I can't read from the file!"), GTK_MESSAGE_ERROR, win1); goto cleanup; } case GRG_READ_CRC_ERR: case GRG_READ_COMP_ERR: { close (fd); grg_msg (_("The file appears to be corrupted!"), GTK_MESSAGE_ERROR, win1); goto cleanup; } #ifdef GRG_READ_TOO_BIG_ERR case GRG_READ_TOO_BIG_ERR: { close (fd); grg_msg (_("File is too big"), GTK_MESSAGE_ERROR, win1); goto cleanup; } #endif default: { if (err < 0) { close (fd); grg_msg (_ ("Gringotts internal error. Cannot finish operation."), GTK_MESSAGE_ERROR, win1); goto cleanup; } } } while (TRUE) { gboolean doret = FALSE, exit = FALSE; gboolean cancelled = FALSE; gchar *msg = NULL; tmpkey = grg_ask_pwd_dialog (win1, &cancelled); if (!tmpkey || cancelled) { close (fd); goto cleanup; } wait = grg_wait_msg (_("loading"), win1); err = grg_load_wrapper (&res, tmpkey, fd, abs_filename); if (err < 0) gtk_widget_destroy (wait); switch (err) { case GRG_OK: { grg_wait_message_change_reason (wait, _("assembling data")); grg_entries_load_from_string (res, win1, TRUE); grg_wait_message_change_reason (wait, _("cleaning up")); GRGAFREE (res); gtk_widget_destroy (wait); res = NULL; exit = TRUE; } break; case GRG_MEM_ALLOCATION_ERR: { printf("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly..."); emergency_quit(); } case GRG_ARGUMENT_ERR: { msg = _("Gringotts internal error. Cannot finish operation."); doret = TRUE; break; } case GRG_READ_PWD_ERR: { msg = _("Wrong password! Re-enter it"); } break; case GRG_READ_ENC_INIT_ERR: { msg = _("Problem with libmcrypt, probably a faulty installation"); doret = TRUE; } break; case GRG_READ_INVALID_CHARSET_ERR: { msg = _("Saved data contain invalid UTF-8 chars"); doret = TRUE; } break; /* just to be sure... */ default: { if (err < 0) { msg = _("Gringotts internal error. Cannot finish operation."); doret = TRUE; } } } if (msg) grg_msg (msg, GTK_MESSAGE_ERROR, win1); if (doret) { close (fd); grg_key_free (gctx, tmpkey); goto cleanup; } if (exit) break; } close (fd); g_free (grgfile); grgfile = NULL; grgfile = g_strdup (abs_filename); grg_key_free (gctx, key); key = grg_key_clone (tmpkey); grg_key_free (gctx, tmpkey); tmpkey = NULL; update (); update_saveable (GRG_SAVE_INACTIVE); if ((grg_prefs_xpire > 0) && pwdbirth && (grg_prefs_xpire * 86400L < time (NULL) - pwdbirth)) grg_msg (_ ("The current password is expired.\nYou should change it, or modify this " "setting in the preferences"), GTK_MESSAGE_WARNING, win1); cleanup: if (abs_filename) { g_free (abs_filename); } return; } /** * meta_load: * * Displays a file loading dialog, then calls load_file(). */ void meta_load (void) { GtkWidget *file_chooser; gint response; file_chooser = gtk_file_chooser_dialog_new (_("Open..."), GTK_WINDOW(win1), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); response = gtk_dialog_run (GTK_DIALOG (file_chooser)); if (response == GTK_RESPONSE_ACCEPT) { /* * It may appear a stupid duplication, but it's very important * to avoid two file selectors at the same time, so one should * be destroyed *before* calling load_file * */ char *fname; fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); gtk_widget_destroy (file_chooser); load_file (fname); g_free (fname); } else { gtk_widget_destroy (file_chooser); } } /** * meta_load_file: * * Calls load_file() with the specified file arg. * used by the recent files menu. */ void meta_load_file (gpointer callback_data, gchar * callback_action) { load_file (callback_action); } /** * move_around: * * Displays the entry in the specified direction. */ void move_around (gpointer callback_data, guint callback_action) { sync_entry (); switch (callback_action) { case GRG_MV_NEXT: grg_entries_next (); break; case GRG_MV_PREV: grg_entries_prev (); break; case GRG_MV_FIRST: grg_entries_first (); break; case GRG_MV_LAST: grg_entries_last (); break; } update (); } /** * do_new: * * Creates a new document. */ void do_new (void) { GRG_KEY tmpkey; gboolean cancelled = FALSE; if (file_close () == GRG_CANCEL) return; g_assert (GTK_IS_WIDGET (win1)); tmpkey = grg_new_pwd_dialog (GTK_WIDGET (win1), &cancelled); if (!tmpkey) { if (!cancelled) grg_msg (_("You must enter a valid password!"), GTK_MESSAGE_ERROR, win1); return; } grg_key_free (gctx, key); g_free (grgfile); grgfile = g_strdup (_("New file")); if (!grg_entries_is_empty ()) grg_entries_free (); key = grg_key_clone (tmpkey); grg_key_free (gctx, tmpkey); tmpkey = NULL; grg_entries_append (); grg_entries_set_ID (_("My first page")); grg_entries_first (); pwdbirth = time (NULL); update_saveable (GRG_SAVE_ACTIVE); update (); } /** * retitle: * * Gives the entry another title. */ static void retitle (void) { gchar *new = grg_input_dialog (_("New title..."), _("New title for this entry:"), grg_entries_get_ID (), FALSE, win1); if (new) { sync_entry (); grg_entries_set_ID (new); GRGAFREE (new); new = NULL; update_saveable (GRG_SAVE_ACTIVE); update (); } } /** * save_as: * @fpath: the path to save to * @overwrite_confirm: specifies whether to ask for overwriting or not * * Saves a file with another name. */ static void save_as (const gchar * fpath) { #if 0 GtkWidget *wait; #endif gchar *tmpfile; gint err, fd; gboolean is_current = STR_EQ (fpath, grgfile); /*Am I saving the current file? */ tmpfile = g_strdup (fpath); if (!is_current) { if (memcmp (fpath + strlen (fpath) - SUFFIX_LEN, SUFFIX, SUFFIX_LEN) != 0) { gchar *tmp = g_strconcat (tmpfile, SUFFIX, NULL); g_free (tmpfile); tmpfile = g_strdup (tmp); g_free (tmp); } fd = grg_safe_open (tmpfile); if (fd == GRG_OPEN_FILE_IRREGULAR) { if (fd > 0) close (fd); grg_msg (_ ("I can't overwrite a directory or a symlink"), GTK_MESSAGE_ERROR, win1); g_free (tmpfile); return; } if (grg_prefs_warn4overwrite && (fd != GRG_OPEN_FILE_NOT_FOUND) && (grg_ask_dialog (_("Overwrite?"), _ ("Do you want to overwrite the existing file?"), FALSE, win1) != GRG_YES)) { if (fd > 0) close (fd); g_free (tmpfile); return; } if (fd > 0) close (fd); } if (grg_prefs_bak_files && !backup_file (tmpfile)) grg_msg (_("Couldn't backup old file"), GTK_MESSAGE_WARNING, win1); sync_entry (); err = grg_entries_save (tmpfile, key, win1); switch (err) { case GRG_OK: { if (!is_current) { if (grgfile) g_free (grgfile); grgfile = g_strdup (tmpfile); } update_saveable (GRG_SAVE_INACTIVE); break; } case GRG_MEM_ALLOCATION_ERR: { g_free (tmpfile); printf("error: malloc failed. Probably this indicates a memory " "problem, such as resource exhaustion. Attempting " "to exit cleanly..."); emergency_quit(); } case GRG_ARGUMENT_ERR: { grg_msg (_ ("Gringotts internal error. Cannot finish operation."), GTK_MESSAGE_ERROR, win1); g_free (tmpfile); break; } case GRG_WRITE_COMP_ERR: { grg_msg (_("Error in compression! Probably a zlib problem"), GTK_MESSAGE_ERROR, win1); g_free (tmpfile); break; } case GRG_WRITE_FILE_ERR: { grg_msg (_("Uh-oh! I can't write to the file!"), GTK_MESSAGE_ERROR, win1); g_free (tmpfile); break; } case GRG_WRITE_ENC_INIT_ERR: { grg_msg (_ ("Problem with libmcrypt, probably a faulty installation"), GTK_MESSAGE_ERROR, win1); g_free (tmpfile); break; } #ifdef GRG_WRITE_TOO_BIG_ERR case GRG_WRITE_TOO_BIG_ERR: { grg_msg (_("Too many data to write"), GTK_MESSAGE_ERROR, win1); g_free (tmpfile); break; } #endif default: #ifdef MAINTAINER_MODE g_assert_not_reached (); #else grg_msg (_("Gringotts internal error. Cannot finish operation."), GTK_MESSAGE_ERROR, win1); #endif break; } g_free (tmpfile); } /** * meta_save_as: * * Displays the Save As dialog, then calls save_as(). */ void meta_save_as (void) { GtkWidget *file_chooser; gint response; file_chooser = gtk_file_chooser_dialog_new (_("Save as...."), GTK_WINDOW(win1), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (file_chooser), TRUE); response = gtk_dialog_run (GTK_DIALOG (file_chooser)); if (response == GTK_RESPONSE_ACCEPT) { char * filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); save_as (filename); g_free(filename); } gtk_widget_destroy (file_chooser); } /** * save: * * Saves the current version of the opened document, if any. */ void save (void) { if ((!grgfile) || STR_EQ (grgfile, _("New file"))) meta_save_as (); else save_as (grgfile); } /** * insert: * * Appends a new entry. */ void insert (void) { gchar *new = grg_input_dialog (_("Title..."), _("Title for the new entry:"), _("New"), FALSE, win1); sync_entry (); if (new) { grg_entries_append (); grg_entries_set_ID (new); GRGAFREE (new); update_saveable (GRG_SAVE_ACTIVE); update (); } } /** * del: * * Deletes the current entry. */ void del (void) { if (grg_ask_dialog (_("Confirm..."), _("Are you sure you want to remove this entry?"), FALSE, win1) == GRG_YES) { grg_entries_remove (); update_saveable (GRG_SAVE_ACTIVE); update (); } } /** * chpwd: * * Calls the change password dialog. */ void chpwd (void) { GRG_KEY tmpkey, verkey; gboolean cancelled = FALSE; verkey = grg_ask_pwd_dialog (win1, &cancelled); if (cancelled) return; if (!verkey || !grg_key_compare (verkey, key)) { grg_msg (_("Wrong password"), GTK_MESSAGE_ERROR, win1); if (verkey) { grg_key_free (gctx, verkey); verkey = NULL; } return; } grg_key_free (gctx, verkey); verkey = NULL; tmpkey = grg_new_pwd_dialog (win1, NULL); if (tmpkey) { grg_key_free (gctx, key); key = grg_key_clone (tmpkey); grg_key_free (gctx, tmpkey); tmpkey = NULL; grg_msg (_("Password successfully changed"), GTK_MESSAGE_INFO, win1); pwdbirth = time (NULL); update_saveable (GRG_SAVE_ACTIVE); } } /** * meta_list: * * Calls the list window. */ void meta_list (void) { sync_entry (); grg_list_run (); update (); } static void destroy_splash (GtkWidget * w, GdkEvent * ev, GtkWidget * w2) { gtk_widget_destroy (w2); g_source_remove (tout); } static gboolean destroy_splash_timed (gpointer void_w) { GtkWidget * w; w = (GtkWidget *)void_w; gtk_widget_destroy (w); return FALSE; } /** * grg_splash: * @parent: The parent window to put this into * * Builds a splash screen */ static GtkWidget * grg_splash (GtkWidget * parent) { GtkWidget *spwin, *spimg, *spebox; GdkPixbuf *spix; spwin = gtk_window_new (GTK_WINDOW_POPUP); gtk_window_set_transient_for (GTK_WINDOW (spwin), GTK_WINDOW (parent)); gtk_window_set_position (GTK_WINDOW (spwin), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (spwin), TRUE); spebox = gtk_event_box_new (); spix = gdk_pixbuf_new_from_xpm_data (splash_xpm); spimg = gtk_image_new_from_pixbuf (spix); g_object_unref (G_OBJECT (spix)); gtk_widget_grab_focus (spimg); gtk_container_add (GTK_CONTAINER (spebox), spimg); gtk_container_add (GTK_CONTAINER (spwin), spebox); g_signal_connect (G_OBJECT (spebox), "button-press-event", G_CALLBACK (destroy_splash), spwin); tout = g_timeout_add (GRG_SPLASH_TIMEOUT, (GSourceFunc) destroy_splash_timed, spwin); return spwin; } static void attach_file (void) { GtkWidget *file_chooser; gint response; gchar *selection = NULL; sync_entry (); file_chooser = gtk_file_chooser_dialog_new (_("Select file..."), GTK_WINDOW(win1), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); response = gtk_dialog_run (GTK_DIALOG (file_chooser)); if (response == GTK_RESPONSE_ACCEPT) { /* * It may appear a stupid duplication, but it's very important * to avoid two file selectors at the same time, so one should * be destroyed *before* calling load_file * */ selection = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); } gtk_widget_destroy (file_chooser); if (response != GTK_RESPONSE_ACCEPT) return; response = grg_attach_file (selection, win1); GRGAFREE (selection); if (response < 0) /*didn't change anything */ return; update_saveable (GRG_SAVE_ACTIVE); update (); } static void detach_file (void) { if (grg_ask_dialog (_("Confirm"), _ ("After this, there's no way to\nrecover the file. Are you sure?"), FALSE, win1) == GRG_NO) return; sync_entry (); grg_remove_attachment (); update_saveable (GRG_SAVE_ACTIVE); update (); } static void save_attached_file (void) { GtkWidget *file_chooser; gint response; gchar *selection = NULL; file_chooser = gtk_file_chooser_dialog_new (_("Save as...."), GTK_WINDOW(win1), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); response = gtk_dialog_run (GTK_DIALOG (file_chooser)); if (response == GTK_RESPONSE_ACCEPT) { selection = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); } gtk_widget_destroy (file_chooser); if (response != GTK_RESPONSE_ACCEPT) { return; } grg_save_attachment (selection, win1); GRGAFREE (selection); } void wipe_file (void) { GtkWidget *file_chooser, *wait; gint response; gchar *selection = NULL; file_chooser = gtk_file_chooser_dialog_new (_("File to wipe"), GTK_WINDOW(win1), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); response = gtk_dialog_run (GTK_DIALOG (file_chooser)); if (response == GTK_RESPONSE_ACCEPT) { selection = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER (file_chooser) ); } gtk_widget_destroy (file_chooser); if (response != GTK_RESPONSE_ACCEPT) { return; } if (!g_file_test (selection, G_FILE_TEST_IS_REGULAR)) { g_free (selection); grg_msg (_("The file does not exist"), GTK_MESSAGE_ERROR, win1); } if (grg_ask_dialog (_("Confirm..."), _("Are you sure you want to wipe this file?\n" "Its content will be securely erased, so no\n" "recover is possible."), FALSE, win1) != GRG_YES) { g_free (selection); return; } wait = grg_wait_msg (_("wiping file"), win1); response = grg_file_shred (selection, grg_prefs_wipe_passes); gtk_widget_destroy (wait); g_free (selection); if (response < 0) grg_msg (_("File wiping failed"), GTK_MESSAGE_ERROR, win1); } static void info_attached_file (void) { grg_info_attachment (win1); } static void change_attach_comment (void) { sync_entry (); if (grg_attachment_change_comment (win1)) update_saveable (GRG_SAVE_ACTIVE); } gchar * get_editor_font (void) { PangoContext *editorFont = gtk_widget_get_pango_context (edit); PangoFontDescription *fdesc = pango_context_get_font_description (editorFont); return pango_font_description_to_string (fdesc); } void set_editor_font (const gchar * font_desc) { PangoFontDescription *fdesc = pango_font_description_from_string (font_desc); gtk_widget_modify_font (edit, fdesc); pango_font_description_free (fdesc); } static void mainwin_resize (GtkWidget *widget, GtkAllocation *allocation) { g_return_if_fail(allocation != NULL); grg_prefs_mainwin_width = allocation->width; grg_prefs_mainwin_height = allocation->height; } /** * grg_interface: * * Builds and "activates" the Gringotts main interface. */ static void grg_interface (void) { GtkWidget *vbox, *hbox, *scrollbox, *scroll, *menu; GtkWidget *tbar_nav, *handle_nav, *tbar_main, *handle_main; GtkWidget *tbar_attach, *handle_attach; GtkSizeGroup *resizer; gchar *str, *fdesc; PangoFontDescription *pfd; GtkCellRenderer *cell; GdkGeometry geometry; /* window */ win1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); grg_window_set_icon (GTK_WINDOW (win1)); caption = g_strconcat (GRG_CAP_NAME, " ", GRG_VERSION, NULL); gtk_container_set_border_width (GTK_CONTAINER (win1), GRG_PAD); g_signal_connect (G_OBJECT (win1), "destroy-event", G_CALLBACK (meta_quit), NULL); g_signal_connect (G_OBJECT (win1), "delete-event", G_CALLBACK (meta_quit), NULL); g_signal_connect (G_OBJECT (win1), "destroy", G_CALLBACK (meta_quit), NULL); /* the multi-line text widget */ scroll = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); edit = get_updated_sheet (FALSE); gtk_container_add (GTK_CONTAINER (scroll), edit); /* the title widget */ title = gtk_label_new (""); gtk_misc_set_alignment (GTK_MISC (title), 0.1, 0.5); btitle = gtk_button_new_with_mnemonic (_("E_dit...")); g_signal_connect (G_OBJECT (btitle), "clicked", G_CALLBACK (retitle), NULL); pfd = pango_font_description_new (); pango_font_description_set_weight (pfd, PANGO_WEIGHT_BOLD); gtk_widget_modify_font (title, pfd); pango_font_description_free (pfd); lbl = gtk_label_new (""); /* the "navigation" lateral toolbar */ tbar_nav = gtk_toolbar_new (); gtk_toolbar_set_style (GTK_TOOLBAR (tbar_nav), GTK_TOOLBAR_ICONS); gtk_toolbar_set_orientation (GTK_TOOLBAR (tbar_nav), GTK_ORIENTATION_VERTICAL); handle_nav = gtk_handle_box_new (); gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (handle_nav), GTK_POS_TOP); gtk_container_add (GTK_CONTAINER (handle_nav), tbar_nav); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_nav, GTK_STOCK_GOTO_LAST, move_around, _("Go to last entry"), GRG_MV_LAST, blast); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_nav, GTK_STOCK_GO_FORWARD, move_around, _("Go to next entry"), GRG_MV_NEXT, bfor); TOOLBAR_INS_SPACE (tbar_nav); TOOLBAR_INS_STOCK_WIDGET (tbar_nav, GTK_STOCK_INDEX, meta_list, _("View index"), bind); TOOLBAR_INS_SPACE (tbar_nav); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_nav, GTK_STOCK_GO_BACK, move_around, _("Go to previous entry"), GRG_MV_PREV, bback); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_nav, GTK_STOCK_GOTO_FIRST, move_around, _("Go to first entry"), GRG_MV_FIRST, bfirst); /* size group for "left column" */ resizer = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); gtk_size_group_add_widget (resizer, btitle); gtk_size_group_add_widget (resizer, tbar_nav); /*the "main" toolbar */ tbar_main = gtk_toolbar_new (); gtk_toolbar_set_style (GTK_TOOLBAR (tbar_main), GTK_TOOLBAR_ICONS); handle_main = gtk_handle_box_new (); gtk_container_add (GTK_CONTAINER (handle_main), tbar_main); str = grg_get_security_text (_("Security level: %s")); { GtkToolItem * button; button = gtk_tool_button_new (grg_get_security_button(), _("Security")); gtk_tool_item_set_tooltip_text (button, str); g_signal_connect (button, "clicked", grg_security_monitor, NULL); gtk_toolbar_insert (GTK_TOOLBAR (tbar_main), button, -1); } g_free (str); TOOLBAR_INS_SPACE (tbar_main); TOOLBAR_INS_STOCK_WIDGET (tbar_main, GTK_STOCK_NEW, do_new, _("New document"), tnew); TOOLBAR_INS_SPACE (tbar_main); TOOLBAR_INS_STOCK_WIDGET (tbar_main, GTK_STOCK_OPEN, meta_load, _("Open document"), topen); TOOLBAR_INS_STOCK_WIDGET (tbar_main, GTK_STOCK_SAVE, save, _("Save document"), tsave); TOOLBAR_INS_STOCK_WIDGET (tbar_main, GTK_STOCK_CLOSE, file_close, _("Close document"), tclose); TOOLBAR_INS_SPACE (tbar_main); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_main, GTK_STOCK_CUT, cucopa, _("Cut selection"), GRG_CUT, tcut); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_main, GTK_STOCK_COPY, cucopa, _("Copy selection"), GRG_COPY, tcopy); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_main, GTK_STOCK_PASTE, cucopa, _("Paste selection"), GRG_PASTE, tpast); TOOLBAR_INS_SPACE (tbar_main); TOOLBAR_INS_STOCK_WIDGET_SIGNAL (tbar_main, GTK_STOCK_FIND, find, _("Search for text"), FALSE, tfind); TOOLBAR_INS_SPACE (tbar_main); TOOLBAR_INS_STOCK_WIDGET (tbar_main, GTK_STOCK_ADD, insert, _("Add an entry"), tadd); TOOLBAR_INS_STOCK_WIDGET (tbar_main, GTK_STOCK_REMOVE, del, _("Remove this entry"), trem); TOOLBAR_INS_SPACE (tbar_main); TOOLBAR_INS_STOCK_WIDGET (tbar_main, GTK_STOCK_PREFERENCES, launch_prefs, _("Preferences"), tpref); TOOLBAR_INS_SPACE (tbar_main); TOOLBAR_INS_STOCK (tbar_main, GTK_STOCK_QUIT, meta_quit, _("Quit Gringotts")); /*attachment handling toolbar */ tbar_attach = gtk_toolbar_new (); gtk_toolbar_set_style (GTK_TOOLBAR (tbar_attach), GTK_TOOLBAR_ICONS); handle_attach = gtk_handle_box_new (); gtk_container_add (GTK_CONTAINER (handle_attach), tbar_attach); scrollbox = gtk_vbox_new (FALSE, GRG_PAD); gtk_box_pack_start (GTK_BOX (scrollbox), handle_attach, FALSE, FALSE, 1); gtk_box_pack_start (GTK_BOX (scrollbox), scroll, TRUE, TRUE, 1); { GtkToolItem * button; button = gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (button), gtk_label_new (_("Attached files"))); gtk_tool_item_set_tooltip_text (button, ""); gtk_toolbar_insert (GTK_TOOLBAR (tbar_attach), button, -1); } /* TOOLBAR_INS_STOCK (tbar_attach, GTK_STOCK_DIALOG_WARNING, attach_warn, _("Important informations\non this feature"));*/ TOOLBAR_INS_STOCK_WIDGET (tbar_attach, GTK_STOCK_ADD, attach_file, _("Add a new attachment"), batadd); TOOLBAR_INS_STOCK_WIDGET (tbar_attach, GTK_STOCK_REMOVE, detach_file, _("Remove this attachment"), batrem); TOOLBAR_INS_STOCK_WIDGET (tbar_attach, GTK_STOCK_SAVE, save_attached_file, _("Save this attachment"), batsav); TOOLBAR_INS_STOCK_WIDGET (tbar_attach, GTK_STOCK_DIALOG_INFO, info_attached_file, _("Info on this attachment"), batinf); TOOLBAR_INS_STOCK_WIDGET (tbar_attach, GTK_STOCK_CONVERT, change_attach_comment, _("Change comment"), batchco); combo_attach_list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT); combo_attach = GTK_COMBO_BOX (gtk_combo_box_new_with_model ( GTK_TREE_MODEL (combo_attach_list_store) )); cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_attach), cell, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_attach), cell, "text", ATTACHMENT_TITLE, NULL); grg_attachment_fill_combo_box (combo_attach); { GtkToolItem * button; button = gtk_tool_item_new (); gtk_container_add (GTK_CONTAINER (button), GTK_WIDGET (combo_attach)); gtk_tool_item_set_tooltip_text (button, _("List of attached files")); gtk_toolbar_insert (GTK_TOOLBAR (tbar_attach), button, -1); } vbox = gtk_vbox_new (FALSE, 1); gtk_widget_show (vbox); menu = grg_menu_create (win1); gtk_box_pack_start (GTK_BOX (vbox), menu, FALSE, TRUE, 1); gtk_box_pack_start (GTK_BOX (vbox), handle_main, FALSE, TRUE, 1); hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), btitle, FALSE, TRUE, 1); gtk_box_pack_start (GTK_BOX (hbox), title, TRUE, TRUE, 1); gtk_box_pack_start (GTK_BOX (hbox), lbl, FALSE, TRUE, 1); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 1); hbox = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (hbox), handle_nav, FALSE, TRUE, 1); gtk_box_pack_start (GTK_BOX (hbox), scrollbox, TRUE, TRUE, 1); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 1); gtk_container_add (GTK_CONTAINER (win1), vbox); update_saveable (GRG_SAVE_INACTIVE); created = TRUE; if ((fdesc = get_pref_font_string ()) != NULL) { set_editor_font (fdesc); g_free (fdesc); } else { set_pref_font_string_from_editor (); } update (); /* set minimum size hints to the main window */ geometry.min_width = 460; geometry.min_height = 460; gtk_window_set_geometry_hints (GTK_WINDOW (win1), NULL, &geometry, GDK_HINT_MIN_SIZE); /* and apply custom size preferences */ gtk_widget_set_size_request (win1, grg_prefs_mainwin_width, grg_prefs_mainwin_height); g_signal_connect (G_OBJECT (win1), "size_allocate", G_CALLBACK (mainwin_resize), NULL); started = TRUE; gtk_widget_show_all (win1); if (grg_prefs_splash) gtk_widget_show_all (grg_splash (win1)); } void tray_icon_on_click(GtkStatusIcon *status_icon, gpointer user_data) { if(gdk_window_get_state(GTK_WIDGET(win1)->window)==1 ||gdk_window_get_state(GTK_WIDGET(win1)->window)==2) { /* The window is either iconified, or on another workspace */ gtk_widget_show_all(win1); gtk_window_deiconify(GTK_WINDOW(win1)); }else{ gtk_widget_hide(win1); gtk_status_icon_set_visible(GTK_STATUS_ICON(status_icon), TRUE); } } void tray_button_view(GtkMenuItem *item, gpointer window) { gtk_widget_show(GTK_WIDGET(window)); gtk_window_deiconify(GTK_WINDOW(window)); } void tray_button_exit(GtkMenuItem *item, gpointer user_data) { meta_quit(); } void tray_button_about(GtkMenuItem *item, gpointer user_data) { about(); } void trayIconPopup(GtkStatusIcon *status_icon, guint button, guint32 activate_time, gpointer popUpMenu) { gtk_menu_popup(GTK_MENU(popUpMenu), NULL, NULL, gtk_status_icon_position_menu, status_icon, button, activate_time); } /* Creates a GTK-Tray-icon: */ GtkStatusIcon *create_tray_icon(void) { GtkStatusIcon *tray_icon; tray_icon = gtk_status_icon_new(); GdkPixbuf *gp = gdk_pixbuf_new_from_xpm_data (gringotts_xpm); gtk_status_icon_set_from_pixbuf(tray_icon, gp); gtk_status_icon_set_tooltip(tray_icon, "Gringotts"); gtk_status_icon_set_visible(tray_icon, TRUE); g_object_unref (G_OBJECT (gp)); return tray_icon; } /* Initiates the Tray-icon: */ void tray_icon_init(void) { GtkWidget *menu, *menuItemView, *menuItemExit, *menuItemAbout, *menuItemSeparator; GtkStatusIcon *tray_icon; /* Tray-icon is created and shown */ tray_icon = create_tray_icon(); /* Right-click menu for trayicon */ menu = gtk_menu_new(); menuItemView = gtk_menu_item_new_with_label ("View"); menuItemAbout = gtk_image_menu_item_new_from_stock (GTK_STOCK_ABOUT,NULL); menuItemExit = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT,NULL); menuItemSeparator = gtk_separator_menu_item_new (); /* Signal-handler for right-click menu */ g_signal_connect (G_OBJECT (menuItemView), "activate", G_CALLBACK (tray_button_view), win1); g_signal_connect (G_OBJECT (menuItemExit), "activate", G_CALLBACK (tray_button_exit), NULL); g_signal_connect (G_OBJECT (menuItemAbout), "activate", G_CALLBACK (tray_button_about), NULL); /* Creates the actual right-click menu and shows it */ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuItemView); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuItemSeparator); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuItemAbout); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuItemExit); gtk_widget_show_all (menu); /* other signal-handler for left/right-click on the icon itself */ g_signal_connect(GTK_STATUS_ICON (tray_icon), "popup-menu", GTK_SIGNAL_FUNC (trayIconPopup), menu); g_signal_connect(G_OBJECT(tray_icon), "activate", G_CALLBACK(tray_icon_on_click), NULL); } /** * main: * @argc: No need to tell... ;) * @argv: No need to tell... ;) * * No need to tell... ;) * * Returns: No need to tell... ;) */ gint main (gint argc, gchar ** argv) { gchar *file2load = NULL, *file2loadInArgv = NULL, *finalfile = NULL; guchar *version = grg_get_version (); /* libgringotts version */ gint prefs_err; gboolean root = FALSE; if (!grg_mlockall_and_drop_root_privileges ()) exit (1); gctx = grg_context_initialize_defaults ((guchar*)"GRG"); /*parse cmdline args */ grg_parse_argv (argc, argv, &file2loadInArgv, &root); if (!grg_security_filter (root)) { grg_context_free (gctx); exit (1); } grg_recent_dox_init (); prefs_err = grg_load_prefs (); setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); g_print ("\n" GRG_CAP_NAME " %s " GRG_VERSION " (libGringotts %s)\n%s 2002 Germano Rizzo \n\n%s\n%s\n", _("version"), version, _("(c)"), _ ("released under GNU General Public License (GPL) v.2 or later"), _ ("See COPYING or go to http://www.gnu.org/copyleft/gpl.html")); g_free (version); gtk_init (&argc, &argv); entries_vis_init (); grg_interface (); /*if the preferences file is invalid, saves a default */ if (prefs_err < 0) { g_warning ("%s", _ ("Invalid preferences file. Resetting to defaults.")); grg_prefs_reset_defaults (); grg_save_prefs (); } /*loads (ev.) a startup file */ file2load = get_pref_file (); if (file2loadInArgv) finalfile = file2loadInArgv; if (file2load && !finalfile) { finalfile = g_filename_from_utf8 (file2load, -1, NULL, NULL, NULL); g_free (file2load); } if (finalfile) { if (g_file_test (finalfile, G_FILE_TEST_IS_REGULAR)) load_file (finalfile); else g_warning ("%s", _ ("File to load does not exists or it is invalid")); g_free (finalfile); } gtk_loop_started = TRUE; if (grg_prefs_tray) tray_icon_init(); gtk_main (); return 0; } gringotts-1.2.10/src/gringotts.h000066400000000000000000000052341201055014300165660ustar00rootroot00000000000000/* Gringotts - a small utility to safe-keep sensitive data * (c) 2002, Germano Rizzo * * gringotts.h - header file for gringotts.c * Author: Germano Rizzo * * 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GRINGOTTS_H #define GRINGOTTS_H #include "grg_defs.h" GList *garbage; GRG_CTX gctx; glong pwdbirth; /*callbacks for menu items */ /* Displays a "not yet implemented" message box */ /* void nyi(void); */ /*menu File */ /* Creates a new document. */ void do_new (void); /* Displays a file loading dialog, then calls load. */ void meta_load (void); /* Calls load_file() with the specified file arg. */ void meta_load_file (gpointer callback_data, gchar * callback_action); /* Saves the current version of the opened document. */ void save (void); /* Displays the Save As dialog, then calls save_as. */ void meta_save_as (void); /* Reverts to last saved version. */ void revert (void); /* Closes the opened document. */ grg_response file_close (void); /* exits */ void quit (gint code); void emergency_quit (void); /* Asks for save if not saved, and then exits. */ void meta_quit (void); void meta_saveable (gpointer data, gpointer user_data); /*menu Edit */ /* Appends a new entry. */ void insert (void); /* Deletes the current entry. */ void del (void); /* Calls the change password dialog. */ void chpwd (void); /* Displays the preferences window. */ void launch_prefs (void); /*menu Navigation */ /* Displays the entry in the specified direction. */ void move_around (gpointer callback_data, guint callback_action); /* Calls the list window. */ void meta_list (void); /*menu Tools */ /* Securely wipe a file */ void wipe_file (void); /*menu Help */ /* Displays the `About' box. */ void about (void); /* Performs an action about saveability. */ gboolean update_saveable (grg_saveable mode); gchar *get_editor_font (void); void set_editor_font (const gchar * font_desc); void update (void); extern const char *gringotts_xpm[115]; #endif