diff options
author | Tomas Mraz <tmraz@redhat.com> | 2011-09-16 19:02:43 +0200 |
---|---|---|
committer | Tomas Mraz <tmraz@redhat.com> | 2011-09-16 19:02:43 +0200 |
commit | e745294c1839de3b0886c6cbe5d8601c56dd3dcf (patch) | |
tree | 2f46e7e2e66ee2a52557d577268ec738545b91c4 | |
download | libpwquality-e745294c1839de3b0886c6cbe5d8601c56dd3dcf.tar.gz |
Initial import into the repository.
-rw-r--r-- | .hgignore | 33 | ||||
-rw-r--r-- | ABOUT-NLS | 1282 | ||||
-rw-r--r-- | AUTHORS | 10 | ||||
-rw-r--r-- | COPYING | 385 | ||||
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | INSTALL | 365 | ||||
-rw-r--r-- | Makefile.am | 17 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | README | 6 | ||||
-rwxr-xr-x | autogen.sh | 6 | ||||
-rw-r--r-- | configure.in | 89 | ||||
-rw-r--r-- | m4/gettext.m4 | 383 | ||||
-rw-r--r-- | m4/iconv.m4 | 214 | ||||
-rw-r--r-- | m4/lib-ld.m4 | 110 | ||||
-rw-r--r-- | m4/lib-link.m4 | 774 | ||||
-rw-r--r-- | m4/lib-prefix.m4 | 224 | ||||
-rw-r--r-- | m4/libtool.m4 | 7441 | ||||
-rw-r--r-- | m4/ltoptions.m4 | 369 | ||||
-rw-r--r-- | m4/ltsugar.m4 | 123 | ||||
-rw-r--r-- | m4/ltversion.m4 | 23 | ||||
-rw-r--r-- | m4/lt~obsolete.m4 | 98 | ||||
-rw-r--r-- | m4/nls.m4 | 32 | ||||
-rw-r--r-- | m4/po.m4 | 449 | ||||
-rw-r--r-- | m4/progtest.m4 | 92 | ||||
-rw-r--r-- | po/ChangeLog | 11 | ||||
-rw-r--r-- | po/LINGUAS | 44 | ||||
-rw-r--r-- | po/Makefile.in.in | 444 | ||||
-rw-r--r-- | po/Makevars | 41 | ||||
-rw-r--r-- | po/Makevars.template | 41 | ||||
-rw-r--r-- | po/POTFILES.in | 4 | ||||
-rw-r--r-- | po/Rules-quot | 47 | ||||
-rw-r--r-- | po/ar.po | 187 | ||||
-rw-r--r-- | po/as.po | 190 | ||||
-rw-r--r-- | po/bn_IN.po | 190 | ||||
-rw-r--r-- | po/boldquot.sed | 10 | ||||
-rw-r--r-- | po/ca.po | 202 | ||||
-rw-r--r-- | po/cs.po | 181 | ||||
-rw-r--r-- | po/da.po | 189 | ||||
-rw-r--r-- | po/de.po | 189 | ||||
-rw-r--r-- | po/en@boldquot.header | 25 | ||||
-rw-r--r-- | po/en@quot.header | 22 | ||||
-rw-r--r-- | po/es.po | 193 | ||||
-rw-r--r-- | po/fi.po | 189 | ||||
-rw-r--r-- | po/fr.po | 192 | ||||
-rw-r--r-- | po/gu.po | 192 | ||||
-rw-r--r-- | po/he.po | 183 | ||||
-rw-r--r-- | po/hi.po | 193 | ||||
-rw-r--r-- | po/hu.po | 193 | ||||
-rw-r--r-- | po/insert-header.sin | 23 | ||||
-rw-r--r-- | po/it.po | 192 | ||||
-rw-r--r-- | po/ja.po | 190 | ||||
-rw-r--r-- | po/kk.po | 188 | ||||
-rw-r--r-- | po/km.po | 187 | ||||
-rw-r--r-- | po/kn.po | 189 | ||||
-rw-r--r-- | po/ko.po | 189 | ||||
-rw-r--r-- | po/libpwquality.pot | 180 | ||||
-rw-r--r-- | po/ml.po | 192 | ||||
-rw-r--r-- | po/mr.po | 189 | ||||
-rw-r--r-- | po/ms.po | 196 | ||||
-rw-r--r-- | po/nb.po | 187 | ||||
-rw-r--r-- | po/nl.po | 193 | ||||
-rw-r--r-- | po/or.po | 194 | ||||
-rw-r--r-- | po/pa.po | 190 | ||||
-rw-r--r-- | po/pl.po | 189 | ||||
-rw-r--r-- | po/pt.po | 192 | ||||
-rw-r--r-- | po/pt_BR.po | 192 | ||||
-rw-r--r-- | po/quot.sed | 6 | ||||
-rw-r--r-- | po/ru.po | 195 | ||||
-rw-r--r-- | po/si.po | 187 | ||||
-rw-r--r-- | po/sk.po | 188 | ||||
-rw-r--r-- | po/sr.po | 192 | ||||
-rw-r--r-- | po/sr@latin.po | 192 | ||||
-rw-r--r-- | po/sv.po | 189 | ||||
-rw-r--r-- | po/ta.po | 193 | ||||
-rw-r--r-- | po/te.po | 193 | ||||
-rw-r--r-- | po/tr.po | 190 | ||||
-rw-r--r-- | po/uk.po | 191 | ||||
-rw-r--r-- | po/vi.po | 190 | ||||
-rw-r--r-- | po/zh_CN.po | 191 | ||||
-rw-r--r-- | po/zh_TW.po | 190 | ||||
-rw-r--r-- | po/zu.po | 183 | ||||
-rw-r--r-- | src/Makefile.am | 44 | ||||
-rw-r--r-- | src/check.c | 509 | ||||
-rw-r--r-- | src/generate.c | 211 | ||||
-rw-r--r-- | src/libpwquality.map | 15 | ||||
-rw-r--r-- | src/pam_cracklib.c | 755 | ||||
-rw-r--r-- | src/pam_pwquality.c | 309 | ||||
-rw-r--r-- | src/pwmake.c | 108 | ||||
-rw-r--r-- | src/pwqprivate.h | 88 | ||||
-rw-r--r-- | src/pwquality.h | 139 | ||||
-rw-r--r-- | src/pwscore.c | 143 | ||||
-rw-r--r-- | src/settings.c | 350 |
92 files changed, 24490 insertions, 0 deletions
diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000..4bf7595 --- /dev/null +++ b/.hgignore @@ -0,0 +1,33 @@ +syntax: glob +.deps +.depend +.depend-done +.libs +*.o +*.lo +*.la +*.a +*.gmo +POTFILES +Makefile +Makefile.in +aclocal.m4 +autom4te* +compile +config.cache +config.guess +config.h +config.h.in +config.log +config.status +config.sub +config.rpath +configure +depcomp +install-sh +ltmain.sh +missing +stamp-h* +INSTALL +po/stamp-* +po/remove-* diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..b1de1b6 --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,1282 @@ +1 Notes on the Free Translation Project +*************************************** + +Free software is going international! The Free Translation Project is +a way to get maintainers of free software, translators, and users all +together, so that free software will gradually become able to speak many +languages. A few packages already provide translations for their +messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work on translations can contact the appropriate team. + +1.1 INSTALL Matters +=================== + +Some packages are "localizable" when properly installed; the programs +they contain can be made to speak your own native language. Most such +packages use GNU `gettext'. Other packages have their own ways to +internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. Installers may use special +options at configuration time for changing the default behaviour. The +command: + + ./configure --disable-nls + +will _totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl' library +and will decide to use it. If not, you may have to to use the +`--with-libintl-prefix' option to tell `configure' where to look for it. + + Internationalized packages usually have many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +1.2 Using This Package +====================== + +As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. If you happen to have the `LC_ALL' or some other +`LC_xxx' environment variables set, you should unset them before +setting `LANG', otherwise the setting of `LANG' will not have the +desired effect. Here `LL' is an ISO 639 two-letter language code, and +`CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your language by running the +command `locale -a | grep '^LL''. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +1.3 Translating Teams +===================== + +For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://translationproject.org/', in the "Teams" area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `coordinator@translationproject.org' to +reach the coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skills are praised more than +programming skills, here. + +1.4 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of June +2010. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca + +--------------------------------------------------+ + a2ps | [] [] | + aegis | | + ant-phone | | + anubis | | + aspell | [] [] | + bash | | + bfd | | + bibshelf | [] | + binutils | | + bison | | + bison-runtime | [] | + bluez-pin | [] [] | + bombono-dvd | | + buzztard | | + cflow | | + clisp | | + coreutils | [] [] | + cpio | | + cppi | | + cpplib | [] | + cryptsetup | | + dfarc | | + dialog | [] [] | + dico | | + diffutils | [] | + dink | | + doodle | | + e2fsprogs | [] | + enscript | [] | + exif | | + fetchmail | [] | + findutils | [] | + flex | [] | + freedink | | + gas | | + gawk | [] [] | + gcal | [] | + gcc | | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] | + gettext-tools | [] [] | + gip | [] | + gjay | | + gliv | [] | + glunarclock | [] [] | + gnubiff | | + gnucash | [] | + gnuedu | | + gnulib | | + gnunet | | + gnunet-gtk | | + gnutls | | + gold | | + gpe-aerial | | + gpe-beam | | + gpe-bluetooth | | + gpe-calendar | | + gpe-clock | [] | + gpe-conf | | + gpe-contacts | | + gpe-edit | | + gpe-filemanager | | + gpe-go | | + gpe-login | | + gpe-ownerinfo | [] | + gpe-package | | + gpe-sketchbook | | + gpe-su | [] | + gpe-taskmanager | [] | + gpe-timesheet | [] | + gpe-today | [] | + gpe-todo | | + gphoto2 | | + gprof | [] | + gpsdrive | | + gramadoir | | + grep | | + grub | [] [] | + gsasl | | + gss | | + gst-plugins-bad | [] | + gst-plugins-base | [] | + gst-plugins-good | [] | + gst-plugins-ugly | [] | + gstreamer | [] [] [] | + gtick | | + gtkam | [] | + gtkorphan | [] | + gtkspell | [] [] [] | + gutenprint | | + hello | [] | + help2man | | + hylafax | | + idutils | | + indent | [] [] | + iso_15924 | | + iso_3166 | [] [] [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | | + iso_639 | [] [] [] [] | + iso_639_3 | | + jwhois | | + kbd | | + keytouch | [] | + keytouch-editor | | + keytouch-keyboa... | [] | + klavaro | [] | + latrine | | + ld | [] | + leafpad | [] [] | + libc | [] [] | + libexif | () | + libextractor | | + libgnutls | | + libgpewidget | | + libgpg-error | | + libgphoto2 | | + libgphoto2_port | | + libgsasl | | + libiconv | [] | + libidn | | + lifelines | | + liferea | [] [] | + lilypond | | + linkdr | [] | + lordsawar | | + lprng | | + lynx | [] | + m4 | | + mailfromd | | + mailutils | | + make | | + man-db | | + man-db-manpages | | + minicom | | + mkisofs | | + myserver | | + nano | [] [] | + opcodes | | + parted | | + pies | | + popt | | + psmisc | | + pspp | [] | + pwdutils | | + radius | [] | + recode | [] [] | + rosegarden | | + rpm | | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] | + sharutils | [] [] | + shishi | | + skencil | | + solfege | | + solfege-manual | | + soundtracker | | + sp | | + sysstat | | + tar | [] | + texinfo | | + tin | | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] | + vice | | + vmm | | + vorbis-tools | | + wastesedge | | + wdiff | | + wget | [] [] | + wyslij-po | | + xchat | [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] | + +--------------------------------------------------+ + af am an ar as ast az be be@latin bg bn_IN bs ca + 6 0 1 2 3 19 1 10 3 28 3 1 38 + + crh cs da de el en en_GB en_ZA eo es et eu fa + +-------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] | + aegis | [] [] [] | + ant-phone | [] () | + anubis | [] [] | + aspell | [] [] [] [] [] | + bash | [] [] [] | + bfd | [] | + bibshelf | [] [] [] | + binutils | [] | + bison | [] [] | + bison-runtime | [] [] [] [] | + bluez-pin | [] [] [] [] [] [] | + bombono-dvd | [] | + buzztard | [] [] [] | + cflow | [] [] | + clisp | [] [] [] [] | + coreutils | [] [] [] [] | + cpio | | + cppi | | + cpplib | [] [] [] | + cryptsetup | [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] [] [] | + dink | [] [] [] | + doodle | [] | + e2fsprogs | [] [] [] | + enscript | [] [] [] | + exif | () [] [] | + fetchmail | [] [] () [] [] [] | + findutils | [] [] [] | + flex | [] [] | + freedink | [] [] [] | + gas | [] | + gawk | [] [] [] | + gcal | [] | + gcc | [] [] | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] [] [] | + gip | [] [] [] [] | + gjay | [] | + gliv | [] [] [] | + glunarclock | [] [] | + gnubiff | () | + gnucash | [] () () () () | + gnuedu | [] [] | + gnulib | [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gold | [] | + gpe-aerial | [] [] [] [] | + gpe-beam | [] [] [] [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] | + gpe-clock | [] [] [] [] | + gpe-conf | [] [] [] | + gpe-contacts | [] [] [] | + gpe-edit | [] [] | + gpe-filemanager | [] [] [] | + gpe-go | [] [] [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] [] [] | + gpe-package | [] [] [] | + gpe-sketchbook | [] [] [] [] | + gpe-su | [] [] [] [] | + gpe-taskmanager | [] [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] [] | + gphoto2 | [] [] () [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] [] | + gramadoir | [] [] [] | + grep | [] | + grub | [] [] | + gsasl | [] | + gss | | + gst-plugins-bad | [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] () [] | + gtkam | [] [] () [] [] | + gtkorphan | [] [] [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | [] [] [] | + hello | [] [] [] [] | + help2man | [] | + hylafax | [] [] | + idutils | [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | [] () [] [] | + iso_3166 | [] [] [] [] () [] [] [] () | + iso_3166_2 | () | + iso_4217 | [] [] [] () [] [] | + iso_639 | [] [] [] [] () [] [] | + iso_639_3 | [] | + jwhois | [] | + kbd | [] [] [] [] [] | + keytouch | [] [] | + keytouch-editor | [] [] | + keytouch-keyboa... | [] | + klavaro | [] [] [] [] | + latrine | [] () | + ld | [] [] | + leafpad | [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] () | + libextractor | | + libgnutls | [] | + libgpewidget | [] [] | + libgpg-error | [] [] | + libgphoto2 | [] () | + libgphoto2_port | [] () [] | + libgsasl | | + libiconv | [] [] [] [] [] | + libidn | [] [] [] | + lifelines | [] () | + liferea | [] [] [] [] [] | + lilypond | [] [] [] | + linkdr | [] [] [] | + lordsawar | [] | + lprng | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailfromd | | + mailutils | [] | + make | [] [] [] | + man-db | | + man-db-manpages | | + minicom | [] [] [] [] | + mkisofs | | + myserver | | + nano | [] [] [] | + opcodes | [] [] | + parted | [] [] | + pies | | + popt | [] [] [] [] [] | + psmisc | [] [] [] | + pspp | [] | + pwdutils | [] | + radius | [] | + recode | [] [] [] [] [] [] | + rosegarden | () () () | + rpm | [] [] [] | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] [] [] [] | + sed | [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | | + skencil | [] () [] | + solfege | [] [] [] | + solfege-manual | [] [] | + soundtracker | [] [] [] | + sp | [] | + sysstat | [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] | + tin | [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] [] [] [] | + vice | () () | + vmm | [] | + vorbis-tools | [] [] | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] [] | + wyslij-po | | + xchat | [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] [] | + +-------------------------------------------------+ + crh cs da de el en en_GB en_ZA eo es et eu fa + 5 64 105 117 18 1 8 0 28 89 18 19 0 + + fi fr ga gl gu he hi hr hu hy id is it ja ka kn + +----------------------------------------------------+ + a2ps | [] [] [] [] | + aegis | [] [] | + ant-phone | [] [] | + anubis | [] [] [] [] | + aspell | [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] [] | + bibshelf | [] [] [] [] [] | + binutils | [] [] [] | + bison | [] [] [] [] | + bison-runtime | [] [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] | + bombono-dvd | [] | + buzztard | [] | + cflow | [] [] [] | + clisp | [] | + coreutils | [] [] [] [] [] | + cpio | [] [] [] [] | + cppi | [] [] | + cpplib | [] [] [] | + cryptsetup | [] [] [] | + dfarc | [] [] [] | + dialog | [] [] [] [] [] [] [] | + dico | | + diffutils | [] [] [] [] [] [] [] [] [] | + dink | [] | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + exif | [] [] [] [] [] [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] | + freedink | [] [] [] | + gas | [] [] | + gawk | [] [] [] [] () [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] | + gettext-tools | [] [] [] [] | + gip | [] [] [] [] [] [] | + gjay | [] | + gliv | [] () | + glunarclock | [] [] [] [] | + gnubiff | () [] () | + gnucash | () () () () () [] | + gnuedu | [] [] | + gnulib | [] [] [] [] [] [] | + gnunet | | + gnunet-gtk | [] | + gnutls | [] [] | + gold | [] [] | + gpe-aerial | [] [] [] | + gpe-beam | [] [] [] [] | + gpe-bluetooth | [] [] [] [] | + gpe-calendar | [] [] | + gpe-clock | [] [] [] [] [] | + gpe-conf | [] [] [] [] | + gpe-contacts | [] [] [] [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] [] [] | + gpe-go | [] [] [] [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-package | [] [] [] | + gpe-sketchbook | [] [] [] [] | + gpe-su | [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] | + gpe-todo | [] [] [] | + gphoto2 | [] [] [] [] [] [] | + gprof | [] [] [] [] | + gpsdrive | [] [] [] | + gramadoir | [] [] [] | + grep | [] [] | + grub | [] [] [] [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] [] [] | + gst-plugins-bad | [] [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] [] [] | + gtkam | [] [] [] [] [] | + gtkorphan | [] [] [] | + gtkspell | [] [] [] [] [] [] [] [] [] | + gutenprint | [] [] [] [] | + hello | [] [] [] | + help2man | [] [] | + hylafax | [] | + idutils | [] [] [] [] [] [] | + indent | [] [] [] [] [] [] [] [] | + iso_15924 | [] () [] [] | + iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] | + iso_3166_2 | () [] [] [] | + iso_4217 | [] () [] [] [] [] | + iso_639 | [] () [] [] [] [] [] [] [] | + iso_639_3 | () [] [] | + jwhois | [] [] [] [] [] | + kbd | [] [] | + keytouch | [] [] [] [] [] [] | + keytouch-editor | [] [] [] [] [] | + keytouch-keyboa... | [] [] [] [] [] | + klavaro | [] [] | + latrine | [] [] [] | + ld | [] [] [] [] | + leafpad | [] [] [] [] [] [] [] () | + libc | [] [] [] [] [] | + libexif | [] | + libextractor | | + libgnutls | [] [] | + libgpewidget | [] [] [] [] | + libgpg-error | [] [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] [] | + libidn | [] [] [] [] | + lifelines | () | + liferea | [] [] [] [] | + lilypond | [] [] | + linkdr | [] [] [] [] [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] [] [] | + m4 | [] [] [] [] [] [] | + mailfromd | | + mailutils | [] [] | + make | [] [] [] [] [] [] [] [] [] | + man-db | [] [] | + man-db-manpages | [] | + minicom | [] [] [] [] [] | + mkisofs | [] [] [] [] | + myserver | | + nano | [] [] [] [] [] [] | + opcodes | [] [] [] [] | + parted | [] [] [] [] | + pies | | + popt | [] [] [] [] [] [] [] [] [] | + psmisc | [] [] [] | + pspp | | + pwdutils | [] [] | + radius | [] [] | + recode | [] [] [] [] [] [] [] [] | + rosegarden | () () () () () | + rpm | [] [] | + rush | | + sarg | [] | + screem | [] [] | + scrollkeeper | [] [] [] [] | + sed | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] | + shishi | [] | + skencil | [] | + solfege | [] [] [] [] | + solfege-manual | [] [] | + soundtracker | [] [] | + sp | [] () | + sysstat | [] [] [] [] [] | + tar | [] [] [] [] [] [] [] | + texinfo | [] [] [] [] | + tin | [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux-ng | [] [] [] [] [] [] | + vice | () () () | + vmm | [] | + vorbis-tools | [] | + wastesedge | () () | + wdiff | [] | + wget | [] [] [] [] [] [] [] [] | + wyslij-po | [] [] [] | + xchat | [] [] [] [] [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] [] [] | + +----------------------------------------------------+ + fi fr ga gl gu he hi hr hu hy id is it ja ka kn + 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4 + + ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne + +-----------------------------------------------+ + a2ps | [] | + aegis | | + ant-phone | | + anubis | [] [] | + aspell | [] | + bash | | + bfd | | + bibshelf | [] [] | + binutils | | + bison | [] | + bison-runtime | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] | + bombono-dvd | | + buzztard | | + cflow | | + clisp | | + coreutils | [] | + cpio | | + cppi | | + cpplib | | + cryptsetup | | + dfarc | [] | + dialog | [] [] [] [] [] | + dico | | + diffutils | [] [] | + dink | | + doodle | | + e2fsprogs | | + enscript | | + exif | [] | + fetchmail | | + findutils | | + flex | | + freedink | [] | + gas | | + gawk | | + gcal | | + gcc | | + gettext-examples | [] [] [] [] | + gettext-runtime | [] | + gettext-tools | [] | + gip | [] [] | + gjay | | + gliv | | + glunarclock | [] | + gnubiff | | + gnucash | () () () () | + gnuedu | | + gnulib | | + gnunet | | + gnunet-gtk | | + gnutls | [] | + gold | | + gpe-aerial | [] | + gpe-beam | [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] | + gpe-clock | [] [] [] [] [] | + gpe-conf | [] [] | + gpe-contacts | [] [] | + gpe-edit | [] | + gpe-filemanager | [] [] | + gpe-go | [] [] [] | + gpe-login | [] | + gpe-ownerinfo | [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] | + gpe-timesheet | [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] | + gphoto2 | | + gprof | [] | + gpsdrive | | + gramadoir | | + grep | | + grub | | + gsasl | | + gss | | + gst-plugins-bad | [] [] [] [] | + gst-plugins-base | [] [] | + gst-plugins-good | [] [] | + gst-plugins-ugly | [] [] [] [] [] | + gstreamer | | + gtick | | + gtkam | [] | + gtkorphan | [] [] | + gtkspell | [] [] [] [] [] [] [] | + gutenprint | | + hello | [] [] [] | + help2man | | + hylafax | | + idutils | | + indent | | + iso_15924 | [] [] | + iso_3166 | [] [] () [] [] [] [] [] | + iso_3166_2 | | + iso_4217 | [] [] | + iso_639 | [] [] | + iso_639_3 | [] | + jwhois | [] | + kbd | | + keytouch | [] | + keytouch-editor | [] | + keytouch-keyboa... | [] | + klavaro | [] | + latrine | [] | + ld | | + leafpad | [] [] [] | + libc | [] | + libexif | | + libextractor | | + libgnutls | [] | + libgpewidget | [] [] | + libgpg-error | | + libgphoto2 | | + libgphoto2_port | | + libgsasl | | + libiconv | | + libidn | | + lifelines | | + liferea | | + lilypond | | + linkdr | | + lordsawar | | + lprng | | + lynx | | + m4 | | + mailfromd | | + mailutils | | + make | [] | + man-db | | + man-db-manpages | | + minicom | [] | + mkisofs | | + myserver | | + nano | [] [] | + opcodes | | + parted | | + pies | | + popt | [] [] [] | + psmisc | | + pspp | | + pwdutils | | + radius | | + recode | | + rosegarden | | + rpm | | + rush | | + sarg | | + screem | | + scrollkeeper | [] [] | + sed | | + sharutils | | + shishi | | + skencil | | + solfege | [] | + solfege-manual | | + soundtracker | | + sp | | + sysstat | [] | + tar | [] | + texinfo | [] | + tin | | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | | + vice | | + vmm | | + vorbis-tools | | + wastesedge | | + wdiff | | + wget | [] | + wyslij-po | | + xchat | [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +-----------------------------------------------+ + ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne + 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1 + + nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + +---------------------------------------------------+ + a2ps | [] [] [] [] [] [] [] [] | + aegis | [] [] [] | + ant-phone | [] [] | + anubis | [] [] [] | + aspell | [] [] [] [] [] | + bash | [] [] | + bfd | [] | + bibshelf | [] [] | + binutils | [] [] | + bison | [] [] [] | + bison-runtime | [] [] [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] | + bombono-dvd | [] () | + buzztard | [] [] | + cflow | [] | + clisp | [] [] | + coreutils | [] [] [] [] [] [] | + cpio | [] [] [] | + cppi | [] | + cpplib | [] | + cryptsetup | [] | + dfarc | [] | + dialog | [] [] [] [] | + dico | [] | + diffutils | [] [] [] [] [] [] | + dink | () | + doodle | [] [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] [] | + exif | [] [] [] () [] | + fetchmail | [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] [] | + freedink | [] [] | + gas | | + gawk | [] [] [] [] | + gcal | | + gcc | [] | + gettext-examples | [] [] [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] | + gip | [] [] [] [] [] | + gjay | | + gliv | [] [] [] [] [] [] | + glunarclock | [] [] [] [] [] | + gnubiff | [] () | + gnucash | [] () () () | + gnuedu | [] | + gnulib | [] [] [] [] | + gnunet | | + gnunet-gtk | | + gnutls | [] [] | + gold | | + gpe-aerial | [] [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] [] | + gpe-bluetooth | [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] [] | + gpe-edit | [] [] [] | + gpe-filemanager | [] [] [] | + gpe-go | [] [] [] [] [] [] [] [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] [] | + gpe-package | [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] [] | + gphoto2 | [] [] [] [] [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] | + gramadoir | [] [] | + grep | [] [] [] [] | + grub | [] [] [] | + gsasl | [] [] [] [] | + gss | [] [] [] | + gst-plugins-bad | [] [] [] [] [] [] | + gst-plugins-base | [] [] [] [] [] | + gst-plugins-good | [] [] [] [] [] | + gst-plugins-ugly | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] [] [] | + gtkam | [] [] [] [] [] [] | + gtkorphan | [] | + gtkspell | [] [] [] [] [] [] [] [] [] [] | + gutenprint | [] [] | + hello | [] [] [] [] | + help2man | [] [] | + hylafax | [] | + idutils | [] [] [] [] [] | + indent | [] [] [] [] [] [] [] | + iso_15924 | [] [] [] [] | + iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] | + iso_3166_2 | [] [] [] | + iso_4217 | [] [] [] [] [] [] [] [] | + iso_639 | [] [] [] [] [] [] [] [] [] | + iso_639_3 | [] [] | + jwhois | [] [] [] [] | + kbd | [] [] [] | + keytouch | [] [] [] | + keytouch-editor | [] [] [] | + keytouch-keyboa... | [] [] [] | + klavaro | [] [] | + latrine | [] [] | + ld | | + leafpad | [] [] [] [] [] [] [] [] [] | + libc | [] [] [] [] | + libexif | [] [] () [] | + libextractor | | + libgnutls | [] [] | + libgpewidget | [] [] [] | + libgpg-error | [] [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] [] [] [] | + libgsasl | [] [] [] [] [] | + libiconv | [] [] [] [] [] | + libidn | [] [] | + lifelines | [] [] | + liferea | [] [] [] [] [] () () [] | + lilypond | [] | + linkdr | [] [] [] | + lordsawar | | + lprng | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailfromd | [] | + mailutils | [] | + make | [] [] [] [] | + man-db | [] [] [] | + man-db-manpages | [] [] [] | + minicom | [] [] [] [] | + mkisofs | [] [] [] | + myserver | | + nano | [] [] [] [] | + opcodes | [] [] | + parted | [] [] [] [] | + pies | [] | + popt | [] [] [] [] | + psmisc | [] [] [] | + pspp | [] [] | + pwdutils | [] | + radius | [] [] [] | + recode | [] [] [] [] [] [] [] [] | + rosegarden | () () | + rpm | [] [] [] | + rush | [] [] | + sarg | | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] | + shishi | [] | + skencil | [] [] | + solfege | [] [] [] [] | + solfege-manual | [] [] [] | + soundtracker | [] | + sp | | + sysstat | [] [] [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + tin | [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux-ng | [] [] [] [] [] | + vice | [] | + vmm | [] | + vorbis-tools | [] [] | + wastesedge | [] | + wdiff | [] [] | + wget | [] [] [] [] [] [] [] | + wyslij-po | [] [] [] | + xchat | [] [] [] [] [] [] [] [] [] | + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | + xkeyboard-config | [] [] [] | + +---------------------------------------------------+ + nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr + 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37 + + sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW + +---------------------------------------------------+ + a2ps | [] [] [] [] [] | 27 + aegis | [] | 9 + ant-phone | [] [] [] [] | 9 + anubis | [] [] [] [] | 15 + aspell | [] [] [] | 20 + bash | [] [] [] | 12 + bfd | [] | 6 + bibshelf | [] [] [] | 16 + binutils | [] [] | 8 + bison | [] [] | 12 + bison-runtime | [] [] [] [] [] [] | 29 + bluez-pin | [] [] [] [] [] [] [] [] | 37 + bombono-dvd | [] | 4 + buzztard | [] | 7 + cflow | [] [] [] | 9 + clisp | | 10 + coreutils | [] [] [] [] | 22 + cpio | [] [] [] [] [] [] | 13 + cppi | [] [] | 5 + cpplib | [] [] [] [] [] [] | 14 + cryptsetup | [] [] | 7 + dfarc | [] | 9 + dialog | [] [] [] [] [] [] [] | 30 + dico | [] | 2 + diffutils | [] [] [] [] [] [] | 30 + dink | | 4 + doodle | [] [] | 7 + e2fsprogs | [] [] [] | 11 + enscript | [] [] [] [] | 17 + exif | [] [] [] | 16 + fetchmail | [] [] [] | 17 + findutils | [] [] [] [] [] | 20 + flex | [] [] [] [] | 15 + freedink | [] | 10 + gas | [] | 4 + gawk | [] [] [] [] | 18 + gcal | [] [] | 5 + gcc | [] [] [] | 7 + gettext-examples | [] [] [] [] [] [] [] | 34 + gettext-runtime | [] [] [] [] [] [] [] | 29 + gettext-tools | [] [] [] [] [] [] | 22 + gip | [] [] [] [] | 22 + gjay | [] | 3 + gliv | [] [] [] | 14 + glunarclock | [] [] [] [] [] | 19 + gnubiff | [] [] | 4 + gnucash | () [] () [] () | 10 + gnuedu | [] [] | 7 + gnulib | [] [] [] [] | 16 + gnunet | [] | 1 + gnunet-gtk | [] [] [] | 5 + gnutls | [] [] [] | 10 + gold | [] | 4 + gpe-aerial | [] [] [] | 18 + gpe-beam | [] [] [] | 19 + gpe-bluetooth | [] [] [] | 13 + gpe-calendar | [] [] [] [] | 12 + gpe-clock | [] [] [] [] [] | 28 + gpe-conf | [] [] [] [] | 20 + gpe-contacts | [] [] [] | 17 + gpe-edit | [] [] [] | 12 + gpe-filemanager | [] [] [] [] | 16 + gpe-go | [] [] [] [] [] | 25 + gpe-login | [] [] [] | 11 + gpe-ownerinfo | [] [] [] [] [] | 25 + gpe-package | [] [] [] | 13 + gpe-sketchbook | [] [] [] | 20 + gpe-su | [] [] [] [] [] | 30 + gpe-taskmanager | [] [] [] [] [] | 29 + gpe-timesheet | [] [] [] [] [] | 25 + gpe-today | [] [] [] [] [] [] | 30 + gpe-todo | [] [] [] [] | 17 + gphoto2 | [] [] [] [] [] | 24 + gprof | [] [] [] | 15 + gpsdrive | [] [] [] | 11 + gramadoir | [] [] [] | 11 + grep | [] [] [] | 10 + grub | [] [] [] | 14 + gsasl | [] [] [] [] | 14 + gss | [] [] [] | 11 + gst-plugins-bad | [] [] [] [] | 26 + gst-plugins-base | [] [] [] [] [] | 24 + gst-plugins-good | [] [] [] [] | 24 + gst-plugins-ugly | [] [] [] [] [] | 29 + gstreamer | [] [] [] [] | 22 + gtick | [] [] [] | 13 + gtkam | [] [] [] | 20 + gtkorphan | [] [] [] | 14 + gtkspell | [] [] [] [] [] [] [] [] [] | 45 + gutenprint | [] | 10 + hello | [] [] [] [] [] [] | 21 + help2man | [] [] | 7 + hylafax | [] | 5 + idutils | [] [] [] [] | 17 + indent | [] [] [] [] [] [] | 30 + iso_15924 | () [] () [] [] | 16 + iso_3166 | [] [] () [] [] () [] [] [] () | 53 + iso_3166_2 | () [] () [] | 9 + iso_4217 | [] () [] [] () [] [] | 26 + iso_639 | [] [] [] () [] () [] [] [] [] | 38 + iso_639_3 | [] () | 8 + jwhois | [] [] [] [] [] | 16 + kbd | [] [] [] [] [] | 15 + keytouch | [] [] [] | 16 + keytouch-editor | [] [] [] | 14 + keytouch-keyboa... | [] [] [] | 14 + klavaro | [] | 11 + latrine | [] [] [] | 10 + ld | [] [] [] [] | 11 + leafpad | [] [] [] [] [] [] | 33 + libc | [] [] [] [] [] | 21 + libexif | [] () | 7 + libextractor | [] | 1 + libgnutls | [] [] [] | 9 + libgpewidget | [] [] [] | 14 + libgpg-error | [] [] [] | 9 + libgphoto2 | [] [] | 8 + libgphoto2_port | [] [] [] [] | 14 + libgsasl | [] [] [] | 13 + libiconv | [] [] [] [] | 21 + libidn | () [] [] | 11 + lifelines | [] | 4 + liferea | [] [] [] | 21 + lilypond | [] | 7 + linkdr | [] [] [] [] [] | 17 + lordsawar | | 1 + lprng | [] | 3 + lynx | [] [] [] [] | 17 + m4 | [] [] [] [] | 19 + mailfromd | [] [] | 3 + mailutils | [] | 5 + make | [] [] [] [] | 21 + man-db | [] [] [] | 8 + man-db-manpages | | 4 + minicom | [] [] | 16 + mkisofs | [] [] | 9 + myserver | | 0 + nano | [] [] [] [] | 21 + opcodes | [] [] [] | 11 + parted | [] [] [] [] [] | 15 + pies | [] [] | 3 + popt | [] [] [] [] [] [] | 27 + psmisc | [] [] | 11 + pspp | | 4 + pwdutils | [] [] | 6 + radius | [] [] | 9 + recode | [] [] [] [] | 28 + rosegarden | () | 0 + rpm | [] [] [] | 11 + rush | [] [] | 4 + sarg | | 1 + screem | [] | 3 + scrollkeeper | [] [] [] [] [] | 27 + sed | [] [] [] [] [] | 30 + sharutils | [] [] [] [] [] | 22 + shishi | [] | 3 + skencil | [] [] | 7 + solfege | [] [] [] [] | 16 + solfege-manual | [] | 8 + soundtracker | [] [] [] | 9 + sp | [] | 3 + sysstat | [] [] | 15 + tar | [] [] [] [] [] [] | 23 + texinfo | [] [] [] [] [] | 17 + tin | | 4 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux-ng | [] [] [] [] | 20 + vice | () () | 1 + vmm | [] | 4 + vorbis-tools | [] | 6 + wastesedge | | 2 + wdiff | [] [] | 7 + wget | [] [] [] [] [] | 26 + wyslij-po | [] [] | 8 + xchat | [] [] [] [] [] [] | 36 + xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63 + xkeyboard-config | [] [] [] | 22 + +---------------------------------------------------+ + 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW + 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If June 2010 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://translationproject.org/extra/matrix.html'. + +1.5 Using `gettext' in new packages +=================================== + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`coordinator@translationproject.org' to make the `.pot' files available +to the translation teams. + @@ -0,0 +1,10 @@ +Original authors of the borrowed code: + +Dmitry V. Levin <ldv@altlinux.org> +Thorsten Kukuk <kukuk@thkukuk.de> +Cristian Gafton +Philip W. Dalrymple + +Authors of the pwquality library: + +Tomáš Mráz <tm@t8m.info> @@ -0,0 +1,385 @@ +Unless otherwise *explicitly* stated the following text describes the +licensed conditions under which the contents of this libpwquality release +may be distributed: + +------------------------------------------------------------------------- +Redistribution and use in source and binary forms of libpwquality, with +or without modification, are permitted provided that the following +conditions are met: + +1. Redistributions of source code must retain any existing copyright + notice, and this entire permission notice in its entirety, + including the disclaimer of warranties. + +2. Redistributions in binary form must reproduce all prior and current + copyright notices, this list of conditions, and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +3. The name of any author may not be used to endorse or promote + products derived from this software without their specific prior + written permission. + +ALTERNATIVELY, this product may be distributed under the terms of the +GNU General Public License, in which case the provisions of the GNU +GPL are required INSTEAD OF the above restrictions. (This clause is +necessary due to a potential conflict between the GNU GPL and the +restrictions contained in a BSD-style copyright.) + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +The full text of the GNU GENERAL PUBLIC LICENSE Version 2 is included +below. + +------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..3ab8e49 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,15 @@ +2011-09-16 gettextize <bug-gnu-gettext@gnu.org> + + * m4/gettext.m4: New file, from gettext-0.18.1. + * m4/iconv.m4: New file, from gettext-0.18.1. + * m4/lib-ld.m4: New file, from gettext-0.18.1. + * m4/lib-link.m4: New file, from gettext-0.18.1. + * m4/lib-prefix.m4: New file, from gettext-0.18.1. + * m4/nls.m4: New file, from gettext-0.18.1. + * m4/po.m4: New file, from gettext-0.18.1. + * m4/progtest.m4: New file, from gettext-0.18.1. + * Makefile.am (EXTRA_DIST): Add config.rpath. + +2011-07-26 Tomas Mraz <tm@t8m.info> + + * initial release 0.9 @@ -0,0 +1,365 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008, 2009 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `<wchar.h>' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..d019f96 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,17 @@ +# +# Copyright (c) 2005, 2006, 2007 Thorsten Kukuk <kukuk@thkukuk.de> +# Copyright (c) 2011 Red Hat, Inc. +# Copyright (c) 2011 Tomas Mraz <tm@t8m.info> +# + +AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 check-news + +SUBDIRS = po src + +CLEANFILES = *~ + +M4_FILES = m4/libtool.m4 + +EXTRA_DIST = config.rpath CHANGELOG $(M4_FILES) + +ACLOCAL_AMFLAGS = -I m4 @@ -0,0 +1,5 @@ +libpwquality NEWS -- history of user-visible changes. + +Release 0.9 + +* First prerelease @@ -0,0 +1,6 @@ +This is a libpwquality library for password quality checks +and generation of a random passwords that pass the checks. + +NOTES: + +This library uses the cracklib as a dependency. diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..25ef983 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -x +aclocal -I m4 +autoheader +automake -a +autoconf diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..8a8efdf --- /dev/null +++ b/configure.in @@ -0,0 +1,89 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT([libpwquality], [0.9]) +AM_INIT_AUTOMAKE([-Wall]) +AC_PREREQ(2.61) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CANONICAL_HOST + +dnl LT Version numbers, remember to change them *before* a release. +dnl (Interfaces removed: CURRENT++, AGE=0, REVISION=0) +dnl (Interfaces added: CURRENT++, AGE++, REVISION=0) +dnl (No interfaces changed: REVISION++) +PWQUALITY_LT_CURRENT=1 +PWQUALITY_LT_AGE=0 +PWQUALITY_LT_REVISION=0 + +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) +AC_SUBST(PWQUALITY_LT_CURRENT) +AC_SUBST(PWQUALITY_LT_AGE) +AC_SUBST(PWQUALITY_LT_REVISION) + +dnl Checks for programs. +AC_USE_SYSTEM_EXTENSIONS +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_LIBTOOL + +dnl Localization support +AM_GNU_GETTEXT_VERSION +AM_GNU_GETTEXT([external]) +AC_CHECK_FUNCS(dngettext) +AH_BOTTOM([#ifdef ENABLE_NLS +#include <libintl.h> +#define _(msgid) dgettext(PACKAGE, msgid) +#define N_(msgid) msgid +#else +#define _(msgid) (msgid) +#define N_(msgid) msgid +#endif /* ENABLE_NLS */]) + +dnl Library version scripts + +dnl For some systems we know that we have ld_version scripts. +dnl Use it then as default. +have_ld_version_script=no +case "${host}" in + *-*-linux*) + have_ld_version_script=yes + ;; + *-*-gnu*) + have_ld_version_script=yes + ;; +esac +AC_ARG_ENABLE([ld-version-script], + AC_HELP_STRING([--enable-ld-version-script], + [enable/disable use of linker version script. + (default is system dependent)]), + [have_ld_version_script=$enableval], + [ : ] ) +AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes") + +dnl options and defaults + +dnl Check for cracklib +AC_CHECK_HEADERS([crack.h], + AC_CHECK_LIB([crack], [FascistCheck], LIBCRACK="-lcrack", LIBCRACK="")) +if test x$LIBCRACK = xno ; then + AC_MSG_ERROR([No or unusable cracklib library]) +fi +AC_SUBST(LIBCRACK) + +AC_ARG_WITH([randomdev], AS_HELP_STRING([--with-randomdev=(<path>|yes)],[use specified random device instead of /dev/urandom]), opt_randomdev=$withval) +if test "$opt_randomdev" = yes -o -z "$opt_randomdev"; then + opt_randomdev="/dev/urandom" +fi +AC_DEFINE_UNQUOTED(CONF_PATH_RANDOMDEV, "$opt_randomdev", [Random device path.]) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_BIGENDIAN +AC_C_CONST + +dnl Checks for library functions. +AC_CHECK_FUNCS(strcspn strdup strspn strstr strtol) + +dnl Files to be created from when we run configure +AC_CONFIG_FILES([Makefile src/Makefile po/Makefile.in]) +AC_OUTPUT diff --git a/m4/gettext.m4 b/m4/gettext.m4 new file mode 100644 index 0000000..f84e6a5 --- /dev/null +++ b/m4/gettext.m4 @@ -0,0 +1,383 @@ +# gettext.m4 serial 63 (gettext-0.18) +dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], + [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH([included-gettext], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code=' +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include <libintl.h> +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE([ENABLE_NLS], [1], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE([HAVE_GETTEXT], [1], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/iconv.m4 b/m4/iconv.m4 new file mode 100644 index 0000000..e2041b9 --- /dev/null +++ b/m4/iconv.m4 @@ -0,0 +1,214 @@ +# iconv.m4 serial 11 (gettext-0.18.1) +dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + AC_TRY_RUN([ +#include <iconv.h> +#include <string.h> +int main () +{ + /* Test against AIX 5.1 bug: Failures are not distinguishable from successful + returns. */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_utf8_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } + /* Test against Solaris 10 bug: Failures are not distinguishable from + successful returns. */ + { + iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); + if (cd_ascii_to_88591 != (iconv_t)(-1)) + { + static const char input[] = "\263"; + char buf[10]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_ascii_to_88591, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + return 1; + } + } +#if 0 /* This bug could be worked around by the caller. */ + /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + const char *inptr = input; + size_t inbytesleft = strlen (input); + char *outptr = buf; + size_t outbytesleft = sizeof (buf); + size_t res = iconv (cd_88591_to_utf8, + (char **) &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + return 1; + } + } +#endif + /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is + provided. */ + if (/* Try standardized names. */ + iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) + /* Try IRIX, OSF/1 names. */ + && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) + /* Try AIX names. */ + && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) + /* Try HP-UX names. */ + && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) + return 1; + return 0; +}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + LIBS="$am_save_LIBS" + ]) + case "$am_cv_func_iconv_works" in + *no) am_func_iconv=no am_cv_lib_iconv=no ;; + *) am_func_iconv=yes ;; + esac + else + am_func_iconv=no am_cv_lib_iconv=no + fi + if test "$am_func_iconv" = yes; then + AC_DEFINE([HAVE_ICONV], [1], + [Define if you have the iconv() function and it works.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) + +dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to +dnl avoid warnings like +dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". +dnl This is tricky because of the way 'aclocal' is implemented: +dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. +dnl Otherwise aclocal's initial scan pass would miss the macro definition. +dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. +dnl Otherwise aclocal would emit many "Use of uninitialized value $1" +dnl warnings. +m4_define([gl_iconv_AC_DEFUN], + m4_version_prereq([2.64], + [[AC_DEFUN_ONCE( + [$1], [$2])]], + [[AC_DEFUN( + [$1], [$2])]])) +gl_iconv_AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL([am_cv_proto_iconv], [ + AC_TRY_COMPILE([ +#include <stdlib.h> +#include <iconv.h> +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + fi +]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 new file mode 100644 index 0000000..ebb3052 --- /dev/null +++ b/m4/lib-ld.m4 @@ -0,0 +1,110 @@ +# lib-ld.m4 serial 4 (gettext-0.18) +dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + acl_cv_prog_gnu_ld=yes ;; +*) + acl_cv_prog_gnu_ld=no ;; +esac]) +with_gnu_ld=$acl_cv_prog_gnu_ld +]) + +dnl From libtool-1.4. Sets the variable LD. +AC_DEFUN([AC_LIB_PROG_LD], +[AC_ARG_WITH([gnu-ld], +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT([$LD]) +else + AC_MSG_RESULT([no]) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 new file mode 100644 index 0000000..c73bd8e --- /dev/null +++ b/m4/lib-link.m4 @@ -0,0 +1,774 @@ +# lib-link.m4 serial 21 (gettext-0.18) +dnl Copyright (C) 2001-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ([2.54]) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + popdef([NAME]) + popdef([Name]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. The missing-message +dnl defaults to 'no' and may contain additional hints for the user. +dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} +dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname +dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + pushdef([Name],[translit([$1],[./-], [___])]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, + dnl because these -l options might require -L options that are present in + dnl LIBS. -l options benefit only from the -L options listed before it. + dnl Otherwise, add it to the front of LIBS, because it may be a static + dnl library that depends on another static library that is present in LIBS. + dnl Static libraries benefit only from the static libraries listed after + dnl it. + case " $LIB[]NAME" in + *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; + *) LIBS="$LIB[]NAME $LIBS" ;; + esac + AC_TRY_LINK([$3], [$4], + [ac_cv_lib[]Name=yes], + [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + LIB[]NAME[]_PREFIX= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + AC_SUBST([LIB]NAME[_PREFIX]) + popdef([NAME]) + popdef([Name]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl acl_libext, +dnl acl_shlibext, +dnl acl_hardcode_libdir_flag_spec, +dnl acl_hardcode_libdir_separator, +dnl acl_hardcode_direct, +dnl acl_hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl Autoconf >= 2.61 supports dots in --with options. + pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH(P_A_C_K[-prefix], +[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib + --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + dir="$additional_libdir" + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext"; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 new file mode 100644 index 0000000..1601cea --- /dev/null +++ b/m4/lib-prefix.m4 @@ -0,0 +1,224 @@ +# lib-prefix.m4 serial 7 (gettext-0.18) +dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a variable acl_libdirstem, containing the basename of the libdir, either +dnl "lib" or "lib64" or "lib/64", +dnl - a variable acl_libdirstem2, as a secondary possible value for +dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or +dnl "lib/amd64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. + dnl On glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine + dnl the compiler's default mode by looking at the compiler's library search + dnl path. If at least one of its elements ends in /lib64 or points to a + dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. + dnl Otherwise we use the default, namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>. + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], + [AC_EGREP_CPP([sixtyfour bits], [ +#ifdef _LP64 +sixtyfour bits +#endif + ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) + ]) + if test $gl_cv_solaris_64bit = yes; then + acl_libdirstem=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + esac + fi + ;; + *) + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" +]) diff --git a/m4/libtool.m4 b/m4/libtool.m4 new file mode 100644 index 0000000..8c99a62 --- /dev/null +++ b/m4/libtool.m4 @@ -0,0 +1,7441 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# 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. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to <bug-libtool@gnu.org>." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_XSI_SHELLFNS + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX +# ----------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`print -r -- -n 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[AC_CHECK_TOOL(AR, ar, false) +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1]) + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +void fnord () __attribute__((visibility("default"))); +#endif + +void fnord () { int i=42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +_LT_PATH_LD_GNU +AC_SUBST([LD]) + +_LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) +])# LT_PATH_LD + +# Old names: +AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) +AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_LD], []) +dnl AC_DEFUN([AC_PROG_LD], []) + + +# _LT_PATH_LD_GNU +#- -------------- +m4_defun([_LT_PATH_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac]) +with_gnu_ld=$lt_cv_prog_gnu_ld +])# _LT_PATH_LD_GNU + + +# _LT_CMD_RELOAD +# -------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +m4_defun([_LT_CMD_RELOAD], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_TAGDECL([], [reload_cmds], [2])dnl +])# _LT_CMD_RELOAD + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method == "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac +AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE(int foo(void) {}, + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + ) + LDFLAGS="$save_LDFLAGS" + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [fix_srcfile_path], [1], + [Fix the shell variable $srcfile for the compiler]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${F77-"f77"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${FC-"f95"} + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC="$lt_save_CC" +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC="$lt_save_CC" +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_XSI_SHELLFNS +# --------------------- +# Bourne and XSI compatible variants of some useful shell functions. +m4_defun([_LT_PROG_XSI_SHELLFNS], +[case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $[*] )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} + +dnl func_dirname_and_basename +dnl A portable version of this function is already defined in general.m4sh +dnl so there is no need for it here. + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[[^=]]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$[@]"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]+=\$[2]" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]=\$$[1]\$[2]" +} + +_LT_EOF + ;; + esac +]) diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 new file mode 100644 index 0000000..17cfd51 --- /dev/null +++ b/m4/ltoptions.m4 @@ -0,0 +1,369 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 new file mode 100644 index 0000000..9000a05 --- /dev/null +++ b/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 new file mode 100644 index 0000000..93fc771 --- /dev/null +++ b/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# 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. + +# Generated from ltversion.in. + +# serial 3175 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.2.10]) +m4_define([LT_PACKAGE_REVISION], [1.3175]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.2.10' +macro_revision='1.3175' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c573da9 --- /dev/null +++ b/m4/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# 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 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/m4/nls.m4 b/m4/nls.m4 new file mode 100644 index 0000000..003704c --- /dev/null +++ b/m4/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. + +AC_PREREQ([2.50]) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) diff --git a/m4/po.m4 b/m4/po.m4 new file mode 100644 index 0000000..47f36a4 --- /dev/null +++ b/m4/po.m4 @@ -0,0 +1,449 @@ +# po.m4 serial 17 (gettext-0.18) +dnl Copyright (C) 1995-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. +dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. + +AC_PREREQ([2.50]) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AM_NLS])dnl + + dnl Release version of the gettext macros. This is used to ensure that + dnl the gettext macros and po/Makefile.in.in are in sync. + AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + dnl Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; 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 + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat <<EOT +$* +EOT + } + gt_echo='echo_func' + fi + fi + + # A sed script that extracts the value of VARIABLE from a Makefile. + sed_x_variable=' +# Test if the hold space is empty. +x +s/P/P/ +x +ta +# Yes it was empty. Look if we have the expected variable definition. +/^[ ]*VARIABLE[ ]*=/{ + # Seen the first line of the variable definition. + s/^[ ]*VARIABLE[ ]*=// + ba +} +bd +:a +# Here we are processing a line from the variable definition. +# Remove comment, more precisely replace it with a space. +s/#.*$/ / +# See if the line ends in a backslash. +tb +:b +s/\\$// +# Print the line, without the trailing backslash. +p +tc +# There was no trailing backslash. The end of the variable definition is +# reached. Clear the hold space. +s/^.*$// +x +bd +:c +# A trailing backslash means that the variable definition continues in the +# next line. Put a nonempty string into the hold space to indicate this. +s/^.*$/P/ +x +:d +' +changequote([,])dnl + + # Set POTFILES to the value of the Makefile variable POTFILES. + sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'` + POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"` + # Compute POTFILES_DEPS as + # $(foreach file, $(POTFILES), $(top_srcdir)/$(file)) + POTFILES_DEPS= + for file in $POTFILES; do + POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file" + done + POMAKEFILEDEPS="" + + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. + sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'` + ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` + fi + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + # Compute PROPERTIESFILES + # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties) + # Compute CLASSFILES + # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class) + # Compute QMFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) + # Compute MSGFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg) + # Compute RESOURCESDLLFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + PROPERTIESFILES= + CLASSFILES= + QMFILES= + MSGFILES= + RESOURCESDLLFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties" + CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" + QMFILES="$QMFILES $srcdirpre$lang.qm" + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; 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 + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + JAVACATALOGS= + QTCATALOGS= + TCLCATALOGS= + CSHARPCATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties" + QTCATALOGS="$QTCATALOGS $lang.qm" + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg" + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll" + done + fi + + sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" <<EOF +$frobbedlang.msg: $lang.po + @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \ + \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } +EOF + done + fi + if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <<EOF +$frobbedlang/\$(DOMAIN).resources.dll: $lang.po + @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \ + \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } +EOF + done + fi + if test -n "$POMAKEFILEDEPS"; then + cat >> "$ac_file.tmp" <<EOF +Makefile: $POMAKEFILEDEPS +EOF + fi + mv "$ac_file.tmp" "$ac_file" +]) + +dnl Initializes the accumulator used by AM_XGETTEXT_OPTION. +AC_DEFUN([AM_XGETTEXT_OPTION_INIT], +[ + XGETTEXT_EXTRA_OPTIONS= +]) + +dnl Registers an option to be passed to xgettext in the po subdirectory. +AC_DEFUN([AM_XGETTEXT_OPTION], +[ + AC_REQUIRE([AM_XGETTEXT_OPTION_INIT]) + XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1" +]) diff --git a/m4/progtest.m4 b/m4/progtest.m4 new file mode 100644 index 0000000..2d804ac --- /dev/null +++ b/m4/progtest.m4 @@ -0,0 +1,92 @@ +# progtest.m4 serial 6 (gettext-0.18) +dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper <drepper@cygnus.com>, 1996. + +AC_PREREQ([2.50]) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# 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. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + 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 +]) diff --git a/po/ChangeLog b/po/ChangeLog new file mode 100644 index 0000000..972a0a6 --- /dev/null +++ b/po/ChangeLog @@ -0,0 +1,11 @@ +2011-09-16 gettextize <bug-gnu-gettext@gnu.org> + + * Makefile.in.in: Upgrade to gettext-0.18.1. + * boldquot.sed: New file, from gettext-0.18.1. + * en@boldquot.header: New file, from gettext-0.18.1. + * en@quot.header: New file, from gettext-0.18.1. + * insert-header.sin: New file, from gettext-0.18.1. + * quot.sed: New file, from gettext-0.18.1. + * remove-potcdate.sin: New file, from gettext-0.18.1. + * Rules-quot: New file, from gettext-0.18.1. + diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..9d5f6a8 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,44 @@ +ar +as +bn_IN +ca +cs +da +de +es +fi +fr +gu +he +hi +hu +it +ja +kk +km +kn +ko +ml +mr +ms +nb +nl +or +pa +pl +pt +pt_BR +ru +si +sk +sr +sr@latin +sv +ta +te +tr +uk +vi +zh_CN +zh_TW +zu diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..83d8838 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,444 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu> +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.18 +GETTEXT_MACRO_VERSION = 0.18 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.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 stamp-po $(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: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use @SHELL@, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# 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: diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..5768f89 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = -E --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = libpwquality project + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = http://fedorahosted.org/libpwquality + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/po/Makevars.template b/po/Makevars.template new file mode 100644 index 0000000..32692ab --- /dev/null +++ b/po/Makevars.template @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..c6ecadd --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,4 @@ +src/pam_pwquality.c +src/pwscore.c +src/pwmake.c + diff --git a/po/Rules-quot b/po/Rules-quot new file mode 100644 index 0000000..af52487 --- /dev/null +++ b/po/Rules-quot @@ -0,0 +1,47 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 0000000..8fcec8e --- /dev/null +++ b/po/ar.po @@ -0,0 +1,187 @@ +# @TITLE@ +# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +# This file is distributed under the same license as @PACKAGE@ package. FIRST +# +msgid "" +msgstr "" +"Project-Id-Version: @PACKAGE@\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2001-07-13 15:36+0200\n" +"Last-Translator: Novell Language <language@novell.com>\n" +"Language-Team: Novell Language <language@novell.com>\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "كلمة سر %s%s الجديدة: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "أعد كتابة كلمة سر %s%s الجديدة: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "عذرًا، يوجد عدم تطابق بين كلمات السر." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "خطأ في المحادثة" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "لا يوجد اختلاف عن كلمة السر القديمة" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "كلمة سر يمكن قراءتها من الجهتين" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "لم يتم سوى تغيير حالة الأحرف" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "كلمة السر الجديدة شديدة الشبه بكلمة السر القديمة" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "كلمة السر شديدة البساطة" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "كلمة مرور ملتفة" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "لم يتم إدخال كلمة السر" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "خطأ في الوحدة النمطية للخدمة" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "كلمة سر سيئة: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "خطأ في المحادثة" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "لا يوجد اختلاف عن كلمة السر القديمة" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "كلمة سر يمكن قراءتها من الجهتين" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "كلمة السر الجديدة شديدة الشبه بكلمة السر القديمة" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "خطأ غير معروف" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "خطأ في المحادثة" diff --git a/po/as.po b/po/as.po new file mode 100644 index 0000000..8de2edd --- /dev/null +++ b/po/as.po @@ -0,0 +1,190 @@ +# translation of Linux-PAM.tip.po to Assamese +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Amitakhya Phukan <aphukan@redhat.com>, 2007. +# Amitakhya Phukan <aphukan@fedoraproject.org>, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-09 19:25+0530\n" +"Last-Translator: Amitakhya Phukan <aphukan@fedoraproject.org>\n" +"Language-Team: Assamese <fedora-trans-as@redhat.com>\n" +"Language: as\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1)\n" +"X-Generator: Lokalize 0.3\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "নতুন %s%s গুপ্তশব্দ: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "নতুন %s%s গুপ্তশব্দ পুনঃ লিখক: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "ক্ষমা কৰিব, গুপ্তশব্দৰ অমিল " + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "সম্বাদৰ ভুল" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "পুৰণিটোৰ সৈতে একেই" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "এটা অনুলোম-বিলোম বাক্য" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "অকল কেচ সলনি কৰা" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "পৰণিটোৰ সৈতে বহুত একেই" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "বৰ সৰল" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "পকোৱা হৈছে" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "পৰ্যাপ্ত character classes নাই" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "এটাৰ পিছত এটা বহুতো একেই আখৰ আছে" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "কোনো গুপ্তশব্দ দিয়া হোৱা নাই" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "সেৱাৰ অংশত ভুল" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "বেয়া গুপ্তশব্দ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "সম্বাদৰ ভুল" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "পুৰণিটোৰ সৈতে একেই" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "এটা অনুলোম-বিলোম বাক্য" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "পৰণিটোৰ সৈতে বহুত একেই" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "পৰ্যাপ্ত character classes নাই" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "এটাৰ পিছত এটা বহুতো একেই আখৰ আছে" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "অজ্ঞাত ভুল" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "সম্বাদৰ ভুল" diff --git a/po/bn_IN.po b/po/bn_IN.po new file mode 100644 index 0000000..95b7b51 --- /dev/null +++ b/po/bn_IN.po @@ -0,0 +1,190 @@ +# translation of pam.tip.po to Bengali INDIA +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Runa Bhattacharjee <runab@redhat.com>, 2007, 2008. +# Runa Bhattacharjee <runab@fedoraproject.org>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-08 18:30+0530\n" +"Last-Translator: Runa Bhattacharjee <runab@fedoraproject.org>\n" +"Language-Team: Bengali INDIA <fedora-trans-bn_in@redhat.com>\n" +"Language: bn_IN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "নতুন %s%s পাসওয়ার্ড: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "নতুন %s%s পাসওয়ার্ড পুনরায় লিখুন: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "দুঃখিত, পাসওয়ার্ড দুটি এক নয়।" + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Conversation অর্থাৎ তথ্য বিনিময়কালীন সমস্যা" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "পুরোনোটির অনুরূপ" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "উভমুখী শব্দ" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "শুধুমাত্র হরফের ছাঁদ পরিবর্তন করা হয়েছে" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "পুরোনো পাসওয়ার্ডের সমতূল্য" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "জটিল নয়" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "ঘোরানো হয়েছে" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "পর্যাপ্ত অক্ষর শ্রেণী উপস্থিত নেই" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "একই অক্ষর অত্যাধিক বার ক্রমাগত ব্যবহার করা হয়েছে" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "কোনো পাসওয়ার্ড উল্লিখিত হয়নি" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "পরিসেবা মডিউলে সমস্যা" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "পাসওয়ার্ড ভাল নয়: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Conversation অর্থাৎ তথ্য বিনিময়কালীন সমস্যা" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "পুরোনোটির অনুরূপ" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "উভমুখী শব্দ" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "পুরোনো পাসওয়ার্ডের সমতূল্য" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "পর্যাপ্ত অক্ষর শ্রেণী উপস্থিত নেই" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "একই অক্ষর অত্যাধিক বার ক্রমাগত ব্যবহার করা হয়েছে" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "অজানা সমস্যা" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Conversation অর্থাৎ তথ্য বিনিময়কালীন সমস্যা" diff --git a/po/boldquot.sed b/po/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g +s/“/“[1m/g +s/”/[0m”/g +s/‘/‘[1m/g +s/’/[0m’/g diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 0000000..ed04d36 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,202 @@ +# Catalan translations for Linux-PAM package. +# This file is distributed under the same license as the Linux-PAM package. +# +# This file is translated according to the glossary and style guide of +# Softcatalà. If you plan to modify this file, please read first the page +# of the Catalan translation team for the Fedora project at: +# http://www.softcatala.org/projectes/fedora/ +# and contact the previous translator +# +# Aquest fitxer s'ha de traduir d'acord amb el recull de termes i la guia +# d'estil de Softcatalà. Si voleu modificar aquest fitxer, llegiu si +# us plau la pàgina de catalanització del projecte Fedora a: +# http://www.softcatala.org/projectes/fedora/ +# i contacteu l'anterior traductor/a. +# +# TRADUCTORS +# Xavier Queralt Mateu <xqueralt@gmail.com>, 2008 +# Albert Carabasa Giribet <albertc@asic.udl.cat>, 2009 +# +msgid "" +msgstr "" +"Project-Id-Version: linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-05-18 16:10+0200\n" +"Last-Translator: Albert Carabasa Giribet <albertc@asic.udl.cat>\n" +"Language-Team: Catalan <fedora@softcatala.net>\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nova contrasenya de %s%s: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Torneu a escriure la nova contrasenya de %s%s: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Les contrasenyes no coincideixen." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Error de conversa" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "és la mateixa que l'antiga" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "és un palíndrom" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "només canvien les majúscules i minúscules" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "és massa semblant a l'antiga" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "és massa senzilla" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "està girada" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "no hi ha suficients classes de caràcters" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "conté massa caràcters idèntics consecutius" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "No s'ha proporcionat cap contrasenya" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Error en el mòdul de servei" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "CONTRASENYA INCORRECTA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Error de conversa" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "és la mateixa que l'antiga" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "és un palíndrom" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "és massa semblant a l'antiga" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "no hi ha suficients classes de caràcters" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "conté massa caràcters idèntics consecutius" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Error desconegut" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Error de conversa" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..30341d2 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,181 @@ +# translation of Linux-PAM.po to cs_CZ +# This file is distributed under the same license as the Linux-PAM package. +# Copyright (C) 2005-2009 Linux-PAM Project. +# Klara Cihlarova <koty@seznam.cz>, 2005, 2006. +# Tomas Mraz <t8m@centrum.cz>, 2005, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-03-24 15:22+0100\n" +"Last-Translator: Tomas Mraz <t8m@centrum.cz>\n" +"Language-Team: cs_CZ <cs@li.org>\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: KBabel 1.10.2\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nové %s%sheslo: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Opakujte nové %s%sheslo: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Hesla se neshodují." + +#: src/pam_pwquality.c:104 +msgid "memory allocation error" +msgstr "chyba alokace paměti" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "je stejné jako předcházející" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "je palindrom" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "pouze mění velikost" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "je příliš podobné předcházejícímu" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "je příliš jednoduché" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "je posunuté" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "nemá dostatek různých druhů znaků" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "obsahuje příliš mnoho stejných znaků za sebou" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Nezadáno heslo" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Chyba v modulu služby" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ŠPATNÉ HESLO: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "Použití: %s\n" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr " Příkaz čte hodnocené heslo ze standardního vstupu.\n" + +#: src/pwscore.c:31 src/pwmake.c:28 +msgid "Memory allocation error" +msgstr "Chyba alokace paměti" + +#: src/pwscore.c:33 +msgid "The password is the same as the old one" +msgstr "Heslo je stejné jako předcházející" + +#: src/pwscore.c:35 +msgid "The password is a palindrome" +msgstr "Heslo je palindrom" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "Heslo se odlišuje pouze změnou velikosti písmen" + +#: src/pwscore.c:39 +msgid "The password is too similar to the old one" +msgstr "Heslo je příliš podobné předcházejícímu" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "Heslo obsahuje příliš málo číslic" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "Heslo obsahuje příliš málo velkých písmen" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "Heslo obsahuje příliš málo malých písmen" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "Heslo obsahuje příliš málo jiných znaků než číslic a písmen" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "Heslo je příliš krátké" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "Heslo je pouze rotací starého hesla" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "Heslo nemá dostatek různých druhů znaků" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "Heslo obsahuje příliš mnoho stejných znaků za sebou" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "Heslo neprošlo kontrolou slovníkem - %s" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Neznámá chyba" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "Chyba: %s\n" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "Chyba kontroly kvality hesla: %s\n" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "Použití: %s <počet-bitů-entropie>\n" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "Nebylo možno získat náhodná čísla z RNG zařízení" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "Generování hesla selhalo - požadovaná entropie je příliš malá vzhledem k nastavení" + +#: src/pwmake.c:56 +msgid "Error: Memory allocation error" +msgstr "Chyba: Alokace paměti selhala" diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..4f3450c --- /dev/null +++ b/po/da.po @@ -0,0 +1,189 @@ +# Danish translation of PAM +# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg +# Kris Thomsen <lakristho@gmail.com>, 2009. +# +# This file is distributed under the same license as PAM package. +# +msgid "" +msgstr "" +"Project-Id-Version: pam\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-10-04 18:01+0200\n" +"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n" +"Language-Team: Danish <dansk@dansk-gruppen.dk>\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Ny %s%sadgangskode: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Genindtast ny %s%sadgangskode: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Adgangskoderne stemmer ikke overens." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Konversationsfejl" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "er den samme som den gamle" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "det staves ens forfra og bagfra" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "kun forskel i store/små bogstaver" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ligner for meget den gamle" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "er for simpel" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "er roteret" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "ikke nok tegnklasser" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "indeholder for mange af de samme tegn" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Ingen adgangskode angivet" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Der opstod en fejl i tjenestemodul" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "DÅRLIG ADGANGSKODE: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Konversationsfejl" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "er den samme som den gamle" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "det staves ens forfra og bagfra" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ligner for meget den gamle" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "ikke nok tegnklasser" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "indeholder for mange af de samme tegn" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Ukendt fejl" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Konversationsfejl" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..c708fe5 --- /dev/null +++ b/po/de.po @@ -0,0 +1,189 @@ +# German translation of pam +# Copyright (C) 2005, 2011 Linux-PAM Project +# This file is distributed under the same license as the pam package. +# +# Fabian Affolter <fab@fedoraproject.org>, 2008-2009. +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2011-06-21 13:27+02:00\n" +"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n" +"Language-Team: German <fedora-trans-de@redhat.com>\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: German\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Geben Sie ein neues %s%sPasswort ein: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Geben Sie das neue %s%sPasswort erneut ein: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Die Passwörter stimmen nicht überein." + +#: src/pam_pwquality.c:104 +msgid "memory allocation error" +msgstr "Fehler beim Allozieren von Speicher" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ist das gleiche wie das Alte" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "ist ein Palindrome" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "nur Änderungen bei der Gross-/Kleinschreibung" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ist dem alten zu ähnlich" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "ist zu einfach" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "wurde gedreht" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "nicht genug unterschiedliche Arten von Zeichen" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "das gleiche Zeichen wurde so oft hintereinander verwendet" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Kein Passwort angegeben" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Fehler im Service-Modul" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "Schlechtes Passwort: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Fehler beim Allozieren von Speicher" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ist das gleiche wie das Alte" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "ist ein Palindrome" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ist dem alten zu ähnlich" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "nicht genug unterschiedliche Arten von Zeichen" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "das gleiche Zeichen wurde so oft hintereinander verwendet" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Unbekannter Fehler" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Fehler beim Allozieren von Speicher" diff --git a/po/en@boldquot.header b/po/en@boldquot.header new file mode 100644 index 0000000..fedb6a0 --- /dev/null +++ b/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po/en@quot.header b/po/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..5c74c1d --- /dev/null +++ b/po/es.po @@ -0,0 +1,193 @@ +# translation of Linux-PAM to Spanish +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the Linux-PAM package. +# +# Manuel Ospina <mospina@redhat.com>, 2007. +# Domingo Becker <domingobecker@gmail.com>, 2008. +# Héctor Daniel Cabrera <h.daniel.cabrera@gmail.com>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM.tip.es\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-03-18 22:51-0300\n" +"Last-Translator: Domingo Becker <domingobecker@gmail.com>\n" +"Language-Team: Fedora Spanish <fedora-trans-es@redhat.com>\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n" +"X-Generator: KBabel 1.11.4\n" +"X-Poedit-Language: Spanish\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nueva %s%scontraseña: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Vuelva a escribir la nueva %s%scontraseña: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Las contraseñas no coinciden." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Error de conversación" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "es igual que la antigua" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "es un palíndromo" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "sólo hay cambios de minúsculas y mayúsculas" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "es demasiado similar a la antigua" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "es demasiado sencilla" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "es igual pero al revés" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "no hay suficientes clases de caracteres" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "contiene demasiados carateres iguales consecutivos" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "No se ha proporcionado ninguna contraseña" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Error en el módulo de servicios" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "CONTRASEÑA INCORRECTA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Error de conversación" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "es igual que la antigua" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "es un palíndromo" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "es demasiado similar a la antigua" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "no hay suficientes clases de caracteres" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "contiene demasiados carateres iguales consecutivos" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Error desconocido" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Error de conversación" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 0000000..a98014f --- /dev/null +++ b/po/fi.po @@ -0,0 +1,189 @@ +# translation of Linux-PAM.po to +# translation of uusi_Linux-PAM.po to +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR Linux-PAM Project. +# +# Ilkka Pirskanen <ilkka.pirskanen@kolumbus.fi>, 2005. +# Janne Ahlskog <j.ahlskog@multi.fi>, 2006. +# Jyri Palokangas <jmp@netti.fi>, 2006. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2006-05-04 08:30+0200\n" +"Last-Translator: Jyri Palokangas <jmp@netti.fi>\n" +"Language-Team: <yast-trans-fi@kotoistaminen.novell.fi>\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Uusi %s%ssalasana: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Anna uudelleen uusi %s%ssalasana: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Salasanat eivät täsmää." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Keskusteluvirhe" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "on sama kuin vanha" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "on palindromi" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "vain kirjainkoko muutos" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "on liian samankaltainen vanhan kanssa" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "on liian yksinkertainen" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "on kierrätetty" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Et antanut salasanaa" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Virhe palvelumoduulissa" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "HUONO SALASANA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Keskusteluvirhe" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "on sama kuin vanha" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "on palindromi" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "on liian samankaltainen vanhan kanssa" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Tuntematon virhe" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Keskusteluvirhe" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..a77c35c --- /dev/null +++ b/po/fr.po @@ -0,0 +1,192 @@ +# translation of pam.fr2.po to Français +# Copyright (C) 2008 Linux-PAM Project +# This file is distributed under the same license as the pam package. +# +# myriam malga <mmalga@redhat.com>, 2007. +# Canniot Thomas <thomas.canniot@mrtomlinux.org>, 2008. +# Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>, 2008. +# Charles-Antoine Couret <cacouret@wanadoo.fr>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.fr2\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-15 23:00+0200\n" +"Last-Translator: Charles-Antoine Couret <cacouret@wanadoo.fr>\n" +"Language-Team: French <fedora-trans-fr@redhat.com>\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n" +"X-Generator: Lokalize 0.3\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nouveau %s%smot de passe : " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Retapez le nouveau %s%smot de passe : " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Les mots de passe ne correspondent pas." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Erreur de conversation" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "est identique à l'ancien" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "est un palindrome" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "changement de casse uniquement" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ressemble trop à l'ancien" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "est trop simple" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "est inversé" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "les caractères utilisés ne sont pas suffisamment variés" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "contient trop de caractères consécutifs identiques" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Aucun mot de passe fourni" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Erreur dans le module de service" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "MOT DE PASSE INCORRECT : %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Erreur de conversation" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "est identique à l'ancien" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "est un palindrome" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ressemble trop à l'ancien" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "les caractères utilisés ne sont pas suffisamment variés" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "contient trop de caractères consécutifs identiques" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Erreur inconnue" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Erreur de conversation" diff --git a/po/gu.po b/po/gu.po new file mode 100644 index 0000000..22f38b3 --- /dev/null +++ b/po/gu.po @@ -0,0 +1,192 @@ +# translation of pam.default.gu.po to Gujarati +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Ankit Patel <ankit@redhat.com>, 2007, 2008. +# Sweta Kothari <swkothar@redhat.com>, 2009, 2010. +msgid "" +msgstr "" +"Project-Id-Version: pam.default.gu\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2010-08-02 18:15+0530\n" +"Last-Translator: Sweta Kothari <swkothar@redhat.com>\n" +"Language-Team: Gujarati\n" +"Language: gu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"\n" +"\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "નવો %s%sપાસવર્ડ: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "નવો %s%sપાસવર્ડ ફરી લખો: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "માફ કરજો, પાસવર્ડો બંધબેસતા નથી." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "વાર્તાલાપ ભૂલ" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "એ જૂના જેવો જ છે" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "એ પેલીન્ડ્રોમ છે" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "કેસ ફેરફાર માત્ર" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "એ જૂના સાથે એકદમ સરખો છે" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "એ ખૂબ સાદો છે" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "એ ફેરવાયેલ છે" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "પૂરતા અક્ષર વર્ગો નથી" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "એકપછી એક ઘણા બધા સરખા અક્ષરોને સમાવે છે" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "કોઈ પાસવર્ડ પૂરો પડાયેલ નથી" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "સેવા મોડ્યુલમાં ભૂલ" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ખરાબ પાસવર્ડ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "વાર્તાલાપ ભૂલ" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "એ જૂના જેવો જ છે" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "એ પેલીન્ડ્રોમ છે" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "એ જૂના સાથે એકદમ સરખો છે" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "પૂરતા અક્ષર વર્ગો નથી" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "એકપછી એક ઘણા બધા સરખા અક્ષરોને સમાવે છે" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "અજ્ઞાત ભૂલ" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "વાર્તાલાપ ભૂલ" diff --git a/po/he.po b/po/he.po new file mode 100644 index 0000000..3cfab0e --- /dev/null +++ b/po/he.po @@ -0,0 +1,183 @@ +msgid "" +msgstr "" +"Project-Id-Version: PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: Elad <el.il@doom.co.il>\n" +"Language-Team: Hebrew <fedora-he-list@redhat.com>\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: Hebrew\n" +"X-Poedit-Country: Israel\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "סליחה, הססמאות לא תואמות." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "שגיאת אימות" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "זהה לישנה" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "פילנדרום" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "יותר מדי דומה לישנה" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "פשוטה מדי." + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "לא סופקה ססמה" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ססמה לא טובה: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "שגיאת אימות" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "זהה לישנה" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "פילנדרום" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "יותר מדי דומה לישנה" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "שגיאה לא מוכרת" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "שגיאת אימות" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 0000000..3de55c7 --- /dev/null +++ b/po/hi.po @@ -0,0 +1,193 @@ +# translation of pam.tip.po to Hindi +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Rajesh Ranjan <rranjan@redhat.com>, 2007. +# Rajesh Ranjan <rajesh672@gmail.com>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-06-08 12:22+0530\n" +"Last-Translator: Rajesh Ranjan <rajesh672@gmail.com>\n" +"Language-Team: Hindi <hindi.sf.net>\n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"\n" +"\n" +"\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "नया %s%spassword: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "नया %s%spassword फिर टाइप करें: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "क्षमा करें, शब्दकूट नहीं मिलते हैं." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "रूपांतरक त्रुटि" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "पुराने की तरह समान है" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "एक पालिनड्रोम है" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "स्थिति परिवर्तन सिर्फ" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "पुराने के बहुत समान है" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "बहुत सरल है" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "घुमाया गया है" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "पर्याप्त वर्ण वर्ग नहीं" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "कई समान वर्ण लगातार समाहित करता है" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "कोई कूटशब्द नहीं दिया गया है" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "सेवा मॉड्यूल में त्रुटि" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "खराब शब्दकूट: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "रूपांतरक त्रुटि" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "पुराने की तरह समान है" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "एक पालिनड्रोम है" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "पुराने के बहुत समान है" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "पर्याप्त वर्ण वर्ग नहीं" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "कई समान वर्ण लगातार समाहित करता है" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "अनजान त्रुटि" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "रूपांतरक त्रुटि" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 0000000..aad8d69 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,193 @@ +# translation of hu.new.po to +# translation of Linux-pam.po to +# translation of hu.po to +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) 2009 Linux-PAM Project. +# Papp Zsolt <zpapp@novell.com>, 2006. +# Keresztes Ákos <xsak@c2.hu>, 2006. +# Kalman Kemenczy <kkemenczy@novell.com>, 2006, 2007. +# +# +msgid "" +msgstr "" +"Project-Id-Version: pam\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-03-20 20:53+0100\n" +"Last-Translator: Sulyok Péter <peti@sulyok.hu>\n" +"Language-Team: Hungarian <fedora-trans-hu@redhat.com>\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Új %s%sjelszó: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Ismét az új %s%sjelszó: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Sajnálom, de a jelszavak nem egyeznek." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Beszélgetési hiba" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ugyanaz, mint a régi" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "palindrom" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "csak a kis/nagybetűkben változott" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "túl hasonló a régihez" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "túl egyszerű" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "forgatva" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "elégtelen betűosztály" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "túl sok egymást követő betű egyezik meg" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Nincs jelszó megadva" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Hiba a szervizmodulban" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ROSSZ JELSZÓ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Beszélgetési hiba" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ugyanaz, mint a régi" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "palindrom" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "túl hasonló a régihez" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "elégtelen betűosztály" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "túl sok egymást követő betű egyezik meg" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Ismeretlen hiba" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Beszélgetési hiba" diff --git a/po/insert-header.sin b/po/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..9dbcb75 --- /dev/null +++ b/po/it.po @@ -0,0 +1,192 @@ +# translation of Linux-PAM.tip.po to +# Italian translation of Linux-PAM. +# Copyright (C) 2007 Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# TODO: uniformare la traduzione di alcune stringhe con shadow. +# Novell Language <language@novell.com>, 2007. +# Luca Bruno <luca.br@uno.it>, 2007. +# mario_santagiuliana <mario at marionline.it>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-20 18:31+0200\n" +"Last-Translator: mario_santagiuliana <mario at marionline.it>\n" +"Language-Team: Italian <fedora-trans-it at redhat.com>\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 0.3\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nuova password%s%s: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Reimmettere la nuova password%s%s: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Le password non corrispondono." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Errore di conversazione" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "è la stessa di quella precedente" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "è un palindromo" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "cambiano solo le maiuscole/minuscole" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "è troppo simile alla precedente" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "è troppo semplice" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "è una rotazione della precedente" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "non ha abbastanza classi di caratteri" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "contiene troppi caratteri simili consecutivi" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Nessuna password fornita" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Errore nel modulo di servizio" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "PASSWORD ERRATA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Errore di conversazione" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "è la stessa di quella precedente" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "è un palindromo" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "è troppo simile alla precedente" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "non ha abbastanza classi di caratteri" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "contiene troppi caratteri simili consecutivi" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Errore sconosciuto" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Errore di conversazione" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..b24bcac --- /dev/null +++ b/po/ja.po @@ -0,0 +1,190 @@ +# translation of ja.po to Japanese +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR Linux-PAM Project. +# +# Noriko Mizumoto <noriko@redhat.com>, 2007. +# Kiyoto Hashida <khashida@redhat.com>, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: ja\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-08-30 11:39+0900\n" +"Last-Translator: Kiyoto Hashida <khashida@redhat.com>\n" +"Language-Team: Japanese <jp@li.org>\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "新しい%s%sパスワード:" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "新しい%s%sパスワードを再入力してください:" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "パスワードが一致しません。" + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "会話エラー" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "パスワードが古いものと同じです。" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "前後どちらから読んでも同じパスワードです。" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "大文字小文字を変えただけのパスワード" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "古いものと似ています" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "簡単すぎます" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "回転しています" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "文字クラスが不十分です" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "連続的な同一文字が多く含まれ過ぎです" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "パスワードが与えられていません" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "サービスモジュールのエラー" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "よくないパスワード: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "会話エラー" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "パスワードが古いものと同じです。" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "前後どちらから読んでも同じパスワードです。" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "古いものと似ています" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "文字クラスが不十分です" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "連続的な同一文字が多く含まれ過ぎです" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "不明なエラー" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "会話エラー" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 0000000..74d71e2 --- /dev/null +++ b/po/kk.po @@ -0,0 +1,188 @@ +# translation of Linux-PAM.po to Kazakh +# Copyright (C) 2009 Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# Baurzhan Muftakhidinov@gmail.com +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM 1.0.3\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-02-26 13:07+0600\n" +"Last-Translator: Baurzhan M. <baurthefirst@gmail.com>\n" +"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "%s%sүшін жаңа пароль: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "%s%sүшін жаңа парольді қайта енгізіңіз: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Кешіріңіз, парольдер өзара сәйкес емес." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Сұхбат қатесі" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "алдыңғысына сәйкес болып тұр" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "палиндром болып тұр" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "өзгерістер таңбалардың регистрінде ғана" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ескі парольге өте ұқсас" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "өте оңай болып тұр" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "аударылған ескі пароль" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "керек таңбалар кластары жоқ" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "құрамында бірдей таңбалардың тізбегі бар" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Пароль көрсетілмеді" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Қызмет модулінде қате" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ҚАТЕ ПАРОЛЬ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Сұхбат қатесі" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "алдыңғысына сәйкес болып тұр" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "палиндром болып тұр" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ескі парольге өте ұқсас" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "керек таңбалар кластары жоқ" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "құрамында бірдей таңбалардың тізбегі бар" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Белгісіз қате" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Сұхбат қатесі" diff --git a/po/km.po b/po/km.po new file mode 100644 index 0000000..a488339 --- /dev/null +++ b/po/km.po @@ -0,0 +1,187 @@ +# translation of Linux-PAM.po to Khmer +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Leang Chumsoben <soben@khmeros.info>, 2006. +# Khoem Sokhem <khoemsokhem@khmeros.info>, 2006. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2006-03-17 10:32+0700\n" +"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n" +"Language-Team: Khmer <support@khmeros.info>\n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "ពាក្យសម្ងាត់ %s%s ថ្មី ៖" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "វាយពាក្យសម្ងាត់ %s%s ថ្មីឡើងវិញ ៖" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "សូមទោស ពាក្យសម្ងាត់មិនដូចគ្នាឡើយ ។" + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "កំហុសសន្ទនា" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ដូចគ្នានឹងពាក្យសម្ងាត់ចាស់" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "ត្រឡប់ចុះឡើង" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "គ្រាន់តែផ្លាស់ប្ដូរលក្ខណៈអក្សរប៉ុណ្ណោះ" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ស្រដៀងគ្នាណាស់នឹងពាក្យសម្ងាត់ចាស់" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "សាមញ្ញពេក" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "បានបង្វិល" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "មិនបានផ្ដល់ពាក្យសម្ងាត់" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "កំហុសនៅក្នុងម៉ូឌុលសេវា" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ពាក្យសម្ងាត់មិនល្អ ៖ %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "កំហុសសន្ទនា" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ដូចគ្នានឹងពាក្យសម្ងាត់ចាស់" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "ត្រឡប់ចុះឡើង" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ស្រដៀងគ្នាណាស់នឹងពាក្យសម្ងាត់ចាស់" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "មិនស្គាល់កំហុស" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "កំហុសសន្ទនា" diff --git a/po/kn.po b/po/kn.po new file mode 100644 index 0000000..0b0e4e8 --- /dev/null +++ b/po/kn.po @@ -0,0 +1,189 @@ +# translation of pam.tip.kn.po to Kannada +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Shankar Prasad <svenkate@redhat.com>, 2007, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip.kn\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-03 12:24+0530\n" +"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n" +"Language-Team: Kannada <en@li.org>\n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "ಹೊಸ %s%sಗುಪ್ತಪದ: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "ಹೊಸ %s%sಗುಪ್ತಪದವನ್ನು ಪುನರ್ ಟೈಪಿಸಿ: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "ಕ್ಷಮಿಸಿ, ಗುಪ್ತಪದಗಳು ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "ಸಂವಾದಾತ್ಮಕ ದೋಷ" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ಇದು ಹಳೆಯದರ ಹಾಗೆಯೇ ಇದೆ" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "ಇದು ಒಂದು ಸಮಾನ ಪೂರ್ವಾಪರವಾಗಿದೆ (palindrome)" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "ಕೇವಲ ಕೇಸ್ ಗಳ ಬದಲಾವಣೆಯಾಗಿದೆ ಅಷ್ಟೆ" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ಇದು ಹಳೆಯದಕ್ಕೆ ಬಹಳಷ್ಟು ಹೋಲುತ್ತದೆ" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "ಇದು ಬಹಳ ಸರಳವಾಗಿದೆ" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "ಇದು ತಿರುಗಿಸಲಾಗಿದೆ" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "ಸಾಕಷ್ಟು ಕ್ಯಾರೆಕ್ಟರ್ ವರ್ಗಗಳು ಇಲ್ಲ" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "ಇದು ಒಂದೇ ಬಗೆಯ ಬಹಳಷ್ಟು ಕ್ಯಾರೆಕ್ಟರುಗಳನ್ನು ಅನುಕ್ರಮವಾಗಿ ಹೊಂದಿದೆ" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "ಯಾವುದೇ ಗುಪ್ತಪದ ನೀಡಲಾಗಿಲ್ಲ" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "ಸೇವಾ ಮಾಡ್ಯೂಲಿನಲ್ಲಿ ದೋಷ" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ಕೆಟ್ಟ ಗುಪ್ತಪದ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "ಸಂವಾದಾತ್ಮಕ ದೋಷ" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ಇದು ಹಳೆಯದರ ಹಾಗೆಯೇ ಇದೆ" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "ಇದು ಒಂದು ಸಮಾನ ಪೂರ್ವಾಪರವಾಗಿದೆ (palindrome)" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ಇದು ಹಳೆಯದಕ್ಕೆ ಬಹಳಷ್ಟು ಹೋಲುತ್ತದೆ" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "ಸಾಕಷ್ಟು ಕ್ಯಾರೆಕ್ಟರ್ ವರ್ಗಗಳು ಇಲ್ಲ" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "ಇದು ಒಂದೇ ಬಗೆಯ ಬಹಳಷ್ಟು ಕ್ಯಾರೆಕ್ಟರುಗಳನ್ನು ಅನುಕ್ರಮವಾಗಿ ಹೊಂದಿದೆ" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "ಗೊತ್ತಿರದ ದೋಷ" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "ಸಂವಾದಾತ್ಮಕ ದೋಷ" diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 0000000..c3b4fda --- /dev/null +++ b/po/ko.po @@ -0,0 +1,189 @@ +# translation of pam.tip.po to Korean +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Eunju Kim <eukim@redhat.com>, 2007, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-09-04 16:29+1000\n" +"Last-Translator: Eunju Kim <eukim@redhat.com>\n" +"Language-Team: Korean <ko@li.org>\n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "새 %s%s 암호:" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "새 %s%s 암호 재입력:" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "죄송합니다. 암호가 일치하지 않습니다." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "인증 대화 오류" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "이전 암호와 같음" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "앞뒤 어느쪽에서 읽어도 같은 문맥임" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "대소문자만 변경" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "이전 암호와 유사함" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "너무 간단함" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "교체됨" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "문자 클래스가 부족합니다 " + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "너무 많은 동일한 문자가 연속적으로 포함되어있습니다 " + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "암호가 없음" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "서비스 모듈에서 오류 발생" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "잘못된 암호: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "인증 대화 오류" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "이전 암호와 같음" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "앞뒤 어느쪽에서 읽어도 같은 문맥임" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "이전 암호와 유사함" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "문자 클래스가 부족합니다 " + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "너무 많은 동일한 문자가 연속적으로 포함되어있습니다 " + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "알 수 없는 오류" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "인증 대화 오류" diff --git a/po/libpwquality.pot b/po/libpwquality.pot new file mode 100644 index 0000000..7c11150 --- /dev/null +++ b/po/libpwquality.pot @@ -0,0 +1,180 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR libpwquality project +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: libpwquality 0.9\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "" + +#: src/pam_pwquality.c:104 +msgid "memory allocation error" +msgstr "" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +msgid "Memory allocation error" +msgstr "" + +#: src/pwscore.c:33 +msgid "The password is the same as the old one" +msgstr "" + +#: src/pwscore.c:35 +msgid "The password is a palindrome" +msgstr "" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +msgid "The password is too similar to the old one" +msgstr "" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +msgid "Error: Memory allocation error" +msgstr "" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 0000000..04d78d7 --- /dev/null +++ b/po/ml.po @@ -0,0 +1,192 @@ +# translation of pam.default.ml.po to +# translation of ml.po to +# translation of pam.tip.ml.po to +# translation of Linux-PAM.tip.ml.po to +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Ani Peter <apeter@redhat.com>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: pam.default.ml\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2010-03-24 14:41+0530\n" +"Last-Translator: \n" +"Language-Team: <en@li.org>\n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "പുതിയ %s%s അടയാളവാക്ക്: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "വീണ്ടും %s%s അടയാളവാക്ക് ടൈപ്പ് ചെയ്യുക: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "ക്ഷമിക്കണം, അടയാളവാക്കുകള് തമ്മില് ചേരുന്നില്ല." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "സംവാദത്തിലുളള പിശക്" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "പഴയത് പോലെ തന്നെയാകുന്നതു്" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "ഒരു പാലിന്ഡ്രോം ആണു്" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "അക്ഷരങ്ങളുടെ വലിപ്പം മാത്രം മാറുന്നതു്" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "പഴയതിന് സാമ്യമുള്ളതു്" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "സാധാരണയുള്ളതു്" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "is rotated" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "മതിയായ ക്യാരക്ടര് ക്ലാസ്സുകള് ലഭ്യമല്ല" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "അടുത്തടുത്ത് ഒരേപോലുള്ള അനവധി അക്ഷരങ്ങളുണ്ടു്" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "അടയാളവാക്ക് നല്കിയിട്ടില്ല" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "സര്വീസ് മൊഡ്യൂളില് പിഴവ്" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "തെറ്റായ അടയാളവാക്ക്: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "സംവാദത്തിലുളള പിശക്" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "പഴയത് പോലെ തന്നെയാകുന്നതു്" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "ഒരു പാലിന്ഡ്രോം ആണു്" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "പഴയതിന് സാമ്യമുള്ളതു്" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "മതിയായ ക്യാരക്ടര് ക്ലാസ്സുകള് ലഭ്യമല്ല" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "അടുത്തടുത്ത് ഒരേപോലുള്ള അനവധി അക്ഷരങ്ങളുണ്ടു്" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "അപരിചിതമായ പിശക്" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "സംവാദത്തിലുളള പിശക്" diff --git a/po/mr.po b/po/mr.po new file mode 100644 index 0000000..91765c4 --- /dev/null +++ b/po/mr.po @@ -0,0 +1,189 @@ +# translation of pam.tip.mr.po to marathi +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Sandeep Shedmake <sandeep.shedmake@gmail.com>, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip.mr\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-14 11:31+0530\n" +"Last-Translator: Sandeep Shedmake <sandeep.shedmake@gmail.com>\n" +"Language-Team: marathi\n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "नवीन गुप्तशब्द %s%sp: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "नवीन गुप्तशब्द %s%sp पुन्हा टाइप करा: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "माफ करा, गुप्तशब्द जुळत नाही." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "संवाद त्रुटी" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "प्रविष्ट केलेले जुण्या प्रमाणेच आहे" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "पॅलींड्रोम आहे" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "फक्त आकार बदलाव" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "प्रविष्ट केलेले जुण्या नुरूपच आहे" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "खूपच सोपे आहे" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "स्तर बदलविले गेले" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "अतिरिक्त अक्षर गट उपलब्ध नाही" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "पाठोपाठ खूप जास्त समान अक्षर आढळले" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "गुप्तशब्द दिलेला नाही" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "सेवा विभाग अंतर्गत त्रुटी आढळली" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "अयोग्य गुप्तशब्द: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "संवाद त्रुटी" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "प्रविष्ट केलेले जुण्या प्रमाणेच आहे" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "पॅलींड्रोम आहे" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "प्रविष्ट केलेले जुण्या नुरूपच आहे" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "अतिरिक्त अक्षर गट उपलब्ध नाही" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "पाठोपाठ खूप जास्त समान अक्षर आढळले" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "अपरिचित चूक" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "संवाद त्रुटी" diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 0000000..03b37e3 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,196 @@ +# linux-pam Bahasa Melayu (Malay) (ms) +# Copyright (C) 2008 Linux-PAM Project +# This file is distributed under the same license as the linux-pam package. +# Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: linux-pam\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2008-09-25 23:52+0800\n" +"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n" +"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/pam_pwquality.c:22 +#, fuzzy, c-format +msgid "New %s%spassword: " +msgstr "&Tetingkap Baru" + +#: src/pam_pwquality.c:24 +#, fuzzy, c-format +msgid "Retype new %s%spassword: " +msgstr "Baru me&nggunakan Template" + +#: src/pam_pwquality.c:25 +#, fuzzy +msgid "Sorry, passwords do not match." +msgstr "Sijil dan kekunci diberi tidak sepadan." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Ralat KMail" + +#: src/pam_pwquality.c:106 +#, fuzzy +msgid "is the same as the old one" +msgstr " --src - pakej berikut adalah pakej sumber (sama dgn -s).\n" + +#: src/pam_pwquality.c:108 +#, fuzzy +msgid "is a palindrome" +msgstr "seadanya" + +#: src/pam_pwquality.c:110 +#, fuzzy +msgid "case changes only" +msgstr "Tetapkan hanya kad \"%s\"%s" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "" + +#: src/pam_pwquality.c:118 +#, fuzzy +msgid "is too simple" +msgstr "Nama terlalu panjang" + +#: src/pam_pwquality.c:120 +#, fuzzy +msgid "is rotated" +msgstr "seadanya" + +#: src/pam_pwquality.c:122 +#, fuzzy +msgid "not enough character classes" +msgstr "Tidak cukup volum fizikal" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +#, fuzzy +msgid "No password supplied" +msgstr "Kata Laluan & Akaun Pengguna" + +#: src/pam_pwquality.c:130 +#, fuzzy +msgid "Error in service module" +msgstr "Comment=Ralat dalam sintaks" + +#: src/pam_pwquality.c:198 +#, fuzzy, c-format +msgid "BAD PASSWORD: %s" +msgstr "Katalaluan Tidak Betul" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Ralat KMail" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr " --src - pakej berikut adalah pakej sumber (sama dgn -s).\n" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "seadanya" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +msgid "The password is too similar to the old one" +msgstr "" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "Tidak cukup volum fizikal" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +#, fuzzy +msgid "Unknown error" +msgstr "ralat tidak diketahui" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Ralat KMail" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 0000000..28469ae --- /dev/null +++ b/po/nb.po @@ -0,0 +1,187 @@ +# translation of Linux-PAM.po to +# Olav Pettershagen <olav.pet@online.no>, 2005, 2006. +# Kjartan Maraas <kmaraas@gnome.org>, 2008. +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR Linux-PAM Project. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2008-04-30 12:59+0200\n" +"Last-Translator: Olav Pettershagen <olav.pet@online.no>\n" +"Language-Team: <nb@li.org>\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nytt %s%spassord: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Bekreft nytt %s%s-passord: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Beklager, ikke samsvar mellom passord." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Dialogfeil" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "er det samme som det gamle" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "er et palindrom" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "kun endring av små/store bokstaver" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "er for likt det gamle" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "er for enkelt" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "er rotert" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "ikke nok tegnklasser" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Passord ikke angitt" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Feil i tjenestemodul" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "SVAKT PASSORD: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Dialogfeil" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "er det samme som det gamle" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "er et palindrom" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "er for likt det gamle" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "ikke nok tegnklasser" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Ukjent feil" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Dialogfeil" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..204468d --- /dev/null +++ b/po/nl.po @@ -0,0 +1,193 @@ +# translation of pam.tip.nl.po to Dutch +# translation of Linux-PAM to Dutch +# This file is distributed under the same license as the Linux-PAM package. +# Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# Rinse de Vries <rinsedevries@kde.nl>, 2005, 2006. +# R.F. Pels <ruurd@tiscali.nl>, 2005. +# Peter van Egdom <p.van.egdom@gmail.com>, 2008. +# R.E. van der Luit <nippur@fedoraproject.org>, 2009. +# Geert Warrink <geert.warrink@onsnet.nu>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip.nl\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2010-07-13 14:11+0200\n" +"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n" +"Language-Team: Fedora\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.6.1\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nieuw %s%swachtwoord: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Nieuw %s%swachtwoord herhalen: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Sorry, wachtwoorden komen niet overeen." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Conversatie fout" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "is hetzelfde als het oude" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "is een palindroom" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "alleen veranderingen in hoofd/kleine letters" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "lijkt te veel op het oude" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "is te eenvoudig" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "is omgedraaid" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "niet genoeg karakter klasses" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "bevat teveel dezelfde opeenvolgende karakters" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Geen wachtwoord opgegeven" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Fout in service module" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "SLECHT WACHTWOORD: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Conversatie fout" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "is hetzelfde als het oude" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "is een palindroom" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "lijkt te veel op het oude" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "niet genoeg karakter klasses" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "bevat teveel dezelfde opeenvolgende karakters" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Onbekende fout" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Conversatie fout" diff --git a/po/or.po b/po/or.po new file mode 100644 index 0000000..33baa78 --- /dev/null +++ b/po/or.po @@ -0,0 +1,194 @@ +# translation of pam.tip.or.po to Oriya +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Subhransu Behera <arya_subhransu@yahoo.co.in>, 2007. +# Manoj Kumar Giri <mgiri@redhat.com>, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip.or\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-01 15:07+0530\n" +"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n" +"Language-Team: Oriya <oriya-it@googlegroups.com>\n" +"Language: or\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"\n" +"\n" +"\n" +"\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "ନୂତନ %s%s ପ୍ରବେଶ ସଙ୍କେତ: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "ନୂତନ %s%s ପ୍ରବେଶ ସଙ୍କେତକୁ ପୁନର୍ବାର ଟାଇପ କରନ୍ତୁ: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "କ୍ଷମା କରିବେ, ପ୍ରବେଶ ସଙ୍କେତ ମିଶୁ ନାହିଁ।" + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "କଥୋପକଥନ ତୃଟି" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ପୁରୁଣା ପ୍ରବେଶ ସଙ୍କେତ ସହିତ ଏହା ସମାନ ଅଟେ" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ଗୋଟିଏ ପାଲିନଡ୍ରୋମ ଅଟେ" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "କେବଳ ଅକ୍ଷର ପ୍ରକାର ପରିବର୍ତ୍ତିତ ହୋଇଥାଏ" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ଏହା ପୂର୍ବ ପ୍ରବେଶ ସଙ୍କେତ ସହିତ ବହୁତ ସମାନ ଅଟେ" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "ଏହା ଅତି ସହଜ ଅଟେ" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "ଏହା ଘୂର୍ଣ୍ଣୟମାନ ଅଟେ" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "ଯଥେଷ୍ଟ ବର୍ଣ୍ଣ ଶ୍ରେଣୀ ନାହିଁ" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "ଅତ୍ୟଧିକ ସମାନ ଅକ୍ଷରକୁ ଲଗାତାର ଧାରଣ କରିଥାଏ" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "କୌଣସି ପ୍ରବେଶ ସଙ୍କେତ ପ୍ରଦାନ କରାଯାଇ ନାହିଁ" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "ସେବା ଏକକାଂଶରେ ତୃଟି" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ଖରାପ ପ୍ରବେଶ ସଙ୍କେତ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "କଥୋପକଥନ ତୃଟି" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ପୁରୁଣା ପ୍ରବେଶ ସଙ୍କେତ ସହିତ ଏହା ସମାନ ଅଟେ" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ଗୋଟିଏ ପାଲିନଡ୍ରୋମ ଅଟେ" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ଏହା ପୂର୍ବ ପ୍ରବେଶ ସଙ୍କେତ ସହିତ ବହୁତ ସମାନ ଅଟେ" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "ଯଥେଷ୍ଟ ବର୍ଣ୍ଣ ଶ୍ରେଣୀ ନାହିଁ" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "ଅତ୍ୟଧିକ ସମାନ ଅକ୍ଷରକୁ ଲଗାତାର ଧାରଣ କରିଥାଏ" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "ଅଜଣା ତୃଟି" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "କଥୋପକଥନ ତୃଟି" diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 0000000..8a1f44f --- /dev/null +++ b/po/pa.po @@ -0,0 +1,190 @@ +# translation of pam.tip.pa.po to Punjabi +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR Linux-PAM Project. +# +# Amanpreet Singh Alam[ਆਲਮ] <amanpreetalam@yahoo.com>, 2005. +# Jaswinder Singh <jsingh@redhat.com>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip.pa\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-06-01 16:19+0530\n" +"Last-Translator: Jaswinder Singh <jsingh@redhat.com>\n" +"Language-Team: Punjabi <Punjabi-users@lists.sourceforge.net>\n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "ਨਵਾਂ %s%sਪਾਸਵਰਡ: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "ਨਵਾਂ %s%sਪਾਸਵਰਡ ਮੁੜ-ਲਿਖੋ: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "ਮਾਫ ਕਰਨਾ ਪਾਸਵਰਡ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ।" + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "ਤਬਦੀਲੀ ਗਲਤੀ" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ਪੁਰਾਣੇ ਵਰਗਾ ਹੈ" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "ਇੱਕ palindrome ਹੈ" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "ਸਿਰਫ ਅੱਖਰ ਤਬਦੀਲੀ" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ਪੁਰਾਣੇ ਨਾਲ ਬਹੁਤ ਮਿਲਦਾ-ਜੁਲਦਾ ਹੈ" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "ਬਹੁਤ ਸਧਾਰਨ ਹੈ" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "ਘੁੰਮਾਇਆ ਹੈ" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "ਲੋੜੀਂਦੀਆਂ ਅੱਖਰ ਸ਼੍ਰੇਣੀਆਂ ਨਹੀਂ ਹਨ" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "ਲਗਾਤਾਰ ਬਹੁਤ ਸਾਰੇ ਮਿਲਦੇ-ਜੁਲਦੇ ਅੱਖਰ ਸ਼ਾਮਿਲ ਹਨ" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "ਕੋਈ ਪਾਸਵਰਡ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "ਸੇਵਾ ਮੈਡੀਊਲ ਵਿੱਚ ਗਲਤੀ" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ਗਲਤ ਪਾਸਵਰਡ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "ਤਬਦੀਲੀ ਗਲਤੀ" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ਪੁਰਾਣੇ ਵਰਗਾ ਹੈ" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "ਇੱਕ palindrome ਹੈ" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ਪੁਰਾਣੇ ਨਾਲ ਬਹੁਤ ਮਿਲਦਾ-ਜੁਲਦਾ ਹੈ" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "ਲੋੜੀਂਦੀਆਂ ਅੱਖਰ ਸ਼੍ਰੇਣੀਆਂ ਨਹੀਂ ਹਨ" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "ਲਗਾਤਾਰ ਬਹੁਤ ਸਾਰੇ ਮਿਲਦੇ-ਜੁਲਦੇ ਅੱਖਰ ਸ਼ਾਮਿਲ ਹਨ" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "ਅਣਜਾਣੀ ਗਲਤੀ" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "ਤਬਦੀਲੀ ਗਲਤੀ" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..5ccdfe3 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,189 @@ +# translation of pl.po to Polish +# Stanisław Małolepszy <smalolepszy@aviary.pl>, 2006. +# Wojciech Kapusta <wojciech@aviary.pl>, 2006. +# Piotr Drąg <piotrdrag@gmail.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: pl\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-09-27 13:48+0200\n" +"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" +"Language-Team: Polish <fedora-trans-pl@redhat.com>\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nowe hasło %s%s: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Proszę ponownie podać nowe hasło %s%s: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Podane hasła nie zgadzają się." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Błąd rozmowy" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "jest identyczne ze starym" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "jest palindromem" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "ma zmienioną tylko wielkość znaków" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "jest za bardzo podobne do poprzedniego" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "jest za proste" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "jest obrócone" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "za mało klas znaków" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "zawiera za dużo takich samych znaków po sobie" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Nie podano hasła" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Błąd w module usługi" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "BŁĘDNE HASŁO: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Błąd rozmowy" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "jest identyczne ze starym" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "jest palindromem" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "jest za bardzo podobne do poprzedniego" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "za mało klas znaków" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "zawiera za dużo takich samych znaków po sobie" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Nieznany błąd" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Błąd rozmowy" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 0000000..d3dd68b --- /dev/null +++ b/po/pt.po @@ -0,0 +1,192 @@ +# translation of Linux-PAM-pt.po to portuguese +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) 2006 Linux-PAM Project. +# Antonio Cardoso Martins <digiplan@netvisao.pt>, 2005, 2006. +# Rui Gouveia <rui.gouveia@globaltek.pt>, 2009 +# +msgid "" +msgstr "" +"Project-Id-Version: pam\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-09 16:42+0100\n" +"Last-Translator: Rui Gouveia <rui.gouveia@globaltek.pt>\n" +"Language-Team: pt <fedora-trans-pt@redhat.com>\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: PORTUGAL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nova %s%ssenha: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Digite novamente a nova %s%ssenha: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Lamento, as senhas não coincidem." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Erro de conversação" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "é igual à anterior" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "é um palíndromo" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "apenas muda a capitulação" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "é muito semelhante à anterior" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "é demasiado simples" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "é rodada" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "não tem classes de caracteres suficientes" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "contém demasiados caracteres iguais consecutivos" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Não foi fornecida uma senha" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Erro no módulo do serviço" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "MÁ SENHA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Erro de conversação" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "é igual à anterior" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "é um palíndromo" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "é muito semelhante à anterior" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "não tem classes de caracteres suficientes" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "contém demasiados caracteres iguais consecutivos" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Erro desconhecido" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Erro de conversação" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..5a40107 --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,192 @@ +# translation of Linux-PAM.tip.po to Brazilian Portuguese +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the pam package. +# +# Glaucia Cintra <gcintra@redhat.com>, 2007. +# Diego Búrigo Zacarão <diegobz@projetofedora.org>, 2008. +# Taylon Silmer <taylonsilva@gmail.com>, 2008,2009. +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-02-20 12:41-0300\n" +"Last-Translator: Taylon <taylonsilva@gmail.com>\n" +"Language-Team: Brazilian Portuguese <fedora-trans-pt_br@redhat.com>\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nova %s%ssenha:" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Redigite a nova %s%ssenha:" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "As senhas não são iguais." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Erro de conversação" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "é igual à antiga senha" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "é um palíndromo" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "mudou apenas maiúsculas/minúsculas" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "é muito semelhante à antiga" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "é simples demais" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "foi invertida" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "classes de caractere insuficientes" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "contém muitos caracteres igual consecutivamente" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Nenhuma senha informada" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Erro no módulo de serviço" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "SENHA INCORRETA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Erro de conversação" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "é igual à antiga senha" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "é um palíndromo" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "é muito semelhante à antiga" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "classes de caractere insuficientes" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "contém muitos caracteres igual consecutivamente" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Erro desconhecido" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Erro de conversação" diff --git a/po/quot.sed b/po/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..3ca4038 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,195 @@ +# translation of ru.po to +# @TITLE@ +# Copyright (C) 2006, SUSE Linux GmbH, Nuremberg +# +# This file is distributed under the same license as @PACKAGE@ package. FIRST +# +# Yulia Poyarkova <yulia.poyarkova@redhat.com>, 2007, 2009. +# Andrew Martynov <andrewm@inventa.ru>, 2008. +msgid "" +msgstr "" +"Project-Id-Version: ru\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-08-21 15:33+1000\n" +"Last-Translator: Yulia Poyarkova <yulia.poyarkova@redhat.com>\n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Новый пароль %s%s: " + +# Keep the newlines and spaces after ':'! +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Повторите ввод нового пароля %s%s: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Извините, но пароли не совпадают." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Ошибка диалога" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "совпадает со старым" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "является палиндромом" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "изменения только в регистре" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "слишком похож на старый" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "слишком простой" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "является результатом чередования" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "слишком мало символов различных типов" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "содержит слишком длинную последовательность одинаковых символов" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Пароль не указан" + +# Translators: error message +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Ошибка в модуле службы" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "НЕУДАЧНЫЙ ПАРОЛЬ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Ошибка диалога" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "совпадает со старым" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "является палиндромом" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "слишком похож на старый" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "слишком мало символов различных типов" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "содержит слишком длинную последовательность одинаковых символов" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Неизвестная ошибка" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Ошибка диалога" diff --git a/po/si.po b/po/si.po new file mode 100644 index 0000000..1743b71 --- /dev/null +++ b/po/si.po @@ -0,0 +1,187 @@ +# translation of si.po to Sinhala +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Danishka Navin <snavin@redhat.com>, 2007. +msgid "" +msgstr "" +"Project-Id-Version: si\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2007-06-22 12:24+0530\n" +"Last-Translator: Danishka Navin <snavin@redhat.com>\n" +"Language-Team: Sinhala <en@li.org>\n" +"Language: si\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "නව %s%sරහස්පදය: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "නව %s%sරහස්පදය නැවත ඇතුළත් කරන්න: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "සමාවෙන්න, රහස්පද ගැලපෙන්නේ නැත." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "පරිවර්තන දෝෂය" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "එය පැරණි රහස්පදය හා සමාන වේ" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "එය පැලින්ඩ්රොමයකි" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "කැපිටල් සිම්පල් වෙනස්කම් පමණි" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "එය පැරණි රහස්පදය බොගොදුරට සමාන වේ" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "එය සරළ වැඩි වේ" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "භ්රමණය වි ඇත" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "රහස්පදය සපයා නැත" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "සේවා අංගයේ දෝෂයකි" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "BAD PASSWORD: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "පරිවර්තන දෝෂය" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "එය පැරණි රහස්පදය හා සමාන වේ" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "එය පැලින්ඩ්රොමයකි" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "එය පැරණි රහස්පදය බොගොදුරට සමාන වේ" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "නොදන්නා දෝෂයක්" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "පරිවර්තන දෝෂය" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 0000000..80ccbb5 --- /dev/null +++ b/po/sk.po @@ -0,0 +1,188 @@ +# Slovak translation for Linux-PAM package +# This file is distributed under the same license as the Linux-PAM package. +# +# Ondrej Šulek <feonsu@gmail.com>, 2008. +# Pavol Šimo <palo.simo@gmail.com>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-03-24 22:24+0100\n" +"Last-Translator: Pavol Šimo <palo.simo@gmail.com>\n" +"Language-Team: Slovak <fedora-trans-sk@redhat.com>\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nové %s%sheslo: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Opakujte nové %s%sheslo: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Prepáčte, heslá sa nezhodujú." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Chyba konverzácie" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "je rovnaké ako predchádzajúce" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "je palindróm" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "len zmena veľkosti" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "je príliš podobné predchádzajúcemu" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "je príliš jednoduché" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "je otočené" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "nedostatok rôznych druhov znakov" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "obsahuje príliš veľa rovnakých znakov za sebou" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Heslo nezadané" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Chyba v module služby" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "NESPRÁVNE HESLO: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Chyba konverzácie" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "je rovnaké ako predchádzajúce" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "je palindróm" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "je príliš podobné predchádzajúcemu" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "nedostatok rôznych druhov znakov" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "obsahuje príliš veľa rovnakých znakov za sebou" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Neznáma chyba" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Chyba konverzácie" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..15ce2ff --- /dev/null +++ b/po/sr.po @@ -0,0 +1,192 @@ +# Serbian translations for Linux-PAM +# Copyright (C) 2007 Linux-PAM Project +# This file is distributed under the same license as the Linux-PAM package. +# Marko Uskokovic <uskokovic@etf.bg.ac.yu>, 2007, 2008. +# Sandra Gucul-Milojevic <undra01@gmail.com>, 2008. +# Nikola Pajtić <salgeras@gmail.com>, 2008. +# Miloš Komarčević <kmilos@gmail.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-03-25 22:53+0100\n" +"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n" +"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Нова %s%sлозинка: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Поново унесите нову %s%sлозинку: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Извините, лозинке се не подударају." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Грешка у разговору" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "иста је као и стара" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "палиндром је" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "само промене величине слова" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "сувише је слична претходној" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "сувише је једноставна" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "изокренута је" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "нема довољно класа знакова" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "садржи превише истих знакова узастопно" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Није понуђена лозинка" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Грешка у услужном модулу" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ЛОША ЛОЗИНКА: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Грешка у разговору" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "иста је као и стара" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "палиндром је" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "сувише је слична претходној" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "нема довољно класа знакова" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "садржи превише истих знакова узастопно" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Непозната грешка" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Грешка у разговору" diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 0000000..db855ad --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,192 @@ +# Serbian(Latin) translations for Linux-PAM +# Copyright (C) 2007 Linux-PAM Project +# This file is distributed under the same license as the Linux-PAM package. +# Marko Uskokovic <uskokovic@etf.bg.ac.yu>, 2007, 2008. +# Sandra Gucul-Milojevic <undra01@gmail.com>, 2008. +# Nikola Pajtić <salgeras@gmail.com>, 2008. +# Miloš Komarčević <kmilos@gmail.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-03-25 22:53+0100\n" +"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n" +"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n" +"Language: sr@latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nova %s%slozinka: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Ponovo unesite novu %s%slozinku: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Izvinite, lozinke se ne podudaraju." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Greška u razgovoru" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ista je kao i stara" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "palindrom je" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "samo promene veličine slova" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "suviše je slična prethodnoj" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "suviše je jednostavna" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "izokrenuta je" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "nema dovoljno klasa znakova" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "sadrži previše istih znakova uzastopno" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Nije ponuđena lozinka" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Greška u uslužnom modulu" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "LOŠA LOZINKA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Greška u razgovoru" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ista je kao i stara" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "palindrom je" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "suviše je slična prethodnoj" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "nema dovoljno klasa znakova" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "sadrži previše istih znakova uzastopno" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Nepoznata greška" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Greška u razgovoru" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..e1e89d2 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,189 @@ +# Swedish translation of Linux-PAM messages. +# Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the Linux-PAM package. +# Christer Andersson <klamm@comhem.se>, 2007. +# Daniel Nylander <po@danielnylander.se>, 2009, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2010-03-25 19:44+0100\n" +"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" +"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Nytt %s%slösenord: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Ange nytt %s%slösenord igen: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Tyvärr, lösenorden stämmer inte överens." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Konversationsfel" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "är samma som det gamla" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "är ett palindrom" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "endast ändringar i gemener och versaler" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "är för likt det gamla" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "är för enkelt" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "är roterat" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "för få teckenklasser" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "innehåller för många tecken av samma sort i följd" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Inget lösenord angivet" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Fel i tjänstemodul" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "DÅLIGT LÖSENORD: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Konversationsfel" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "är samma som det gamla" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "är ett palindrom" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "är för likt det gamla" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "för få teckenklasser" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "innehåller för många tecken av samma sort i följd" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Okänt fel" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Konversationsfel" diff --git a/po/ta.po b/po/ta.po new file mode 100644 index 0000000..46152d0 --- /dev/null +++ b/po/ta.po @@ -0,0 +1,193 @@ +# translation of pam.tip.ta.po to Tamil +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# I felix <ifelix@redhat.com>, 2007. +# I. Felix <ifelix@redhat.com>, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip.ta\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-03 22:27+0530\n" +"Last-Translator: I. Felix <ifelix@redhat.com>\n" +"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\\n\n" +"\n" +"\n" +"\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "புதிய %s%spassword: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "புதிய %s%spassword மீண்டும் உள்ளிடவும்: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "கடவுச்சொல் பொருந்தவில்லை." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "உரையாடல் பிழை" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "இது பழையதைப் போல உள்ளது" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "இது ஒரு palindrome" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "எழுத்து வகை மாற்றங்கள் மட்டும்" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "இது பழையதை ஒத்தே உள்ளது" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "இது மிகவும் எளிதாக உள்ளது" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "இது சுழலக்கூடியது" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "போதிய எழுத்து வகுப்புகள் இல்லை" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "நிறைய அதே எழுத்துக்கள் தொடர்ந்து கொண்டுள்ளது" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "கடவுச்சொல் கொடுக்கப்படவில்லை" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "சேவை தொகுதியில் பிழை" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "தவறான கடவுச்சொல்: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "உரையாடல் பிழை" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "இது பழையதைப் போல உள்ளது" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "இது ஒரு palindrome" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "இது பழையதை ஒத்தே உள்ளது" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "போதிய எழுத்து வகுப்புகள் இல்லை" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "நிறைய அதே எழுத்துக்கள் தொடர்ந்து கொண்டுள்ளது" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "தெரியாத பிழை" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "உரையாடல் பிழை" diff --git a/po/te.po b/po/te.po new file mode 100644 index 0000000..3eae490 --- /dev/null +++ b/po/te.po @@ -0,0 +1,193 @@ +# translation of pam.tip.te.po to Telugu +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Krishna Babu K <kkrothap@redhat.com>, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip.te\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-14 15:14+0530\n" +"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n" +"Language-Team: Telugu <en@li.org>\n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"\n" +"\n" +"\n" +"\n" +"X-Generator: KBabel 1.11.4\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "కొత్త %s%sసంకేతపదము: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "కొత్త %s%sసంకేతపదమును మరలాటైపుచేయుము: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "క్షమించాలి, సంకేతపదము సరిపోలలేదు." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "సంభాషణా దోషము" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "ఇది పాతదేనా" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "పాలిండ్రోమా" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "కేస్ మార్పులు మాత్రమే" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "పాతదానికి మరీ దగ్గరపోలికగావుంది" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "మరీ సరళంగావుంది" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "ఇది పర్యాయంగానా" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "సరిపోవునంత కారెక్టర్ క్లాసెస్ లేవు" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "ఒకదానితర్వాత వొకటి అదే అక్షరాలు చాలావున్నాయి" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "ఎటువంటి సంకేతపదము యివ్వలేదు" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "సేవా మాడ్యూల్నందు దోషము" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "చెడ్డ సంకేతపదము: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "సంభాషణా దోషము" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "ఇది పాతదేనా" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "పాలిండ్రోమా" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "పాతదానికి మరీ దగ్గరపోలికగావుంది" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "సరిపోవునంత కారెక్టర్ క్లాసెస్ లేవు" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "ఒకదానితర్వాత వొకటి అదే అక్షరాలు చాలావున్నాయి" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "తెలియని దోషము" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "సంభాషణా దోషము" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 0000000..755e986 --- /dev/null +++ b/po/tr.po @@ -0,0 +1,190 @@ +# translation of Linux-PAM.po to Türkçe +# Copyright (C) 2010 Linux-PAM Project +# This file is distributed under the same license as the PAM package. +# +# Koray Löker <loker@pardus.org.tr>, 2006. +# Bahadır Kandemir <bahadir@pardus.org.tr>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2006-05-03 19:00+0200\n" +"Last-Translator: Bahadır Kandemir <bahadir@pardus.org.tr>\n" +"Language-Team: Türkçe <tr@li.org>\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Yeni %s%sparolası: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Yeni %s%sparolasını tekrar girin: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Üzgünüm, parolalar birbirine uymuyor." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Etkileşim hatası" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "eskisi ile aynı" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "bir palindrom (iki yönden aynı şekilde okunuyor)" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "sadece büyük-küçük harf değişimi" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "eskisine çok benziyor" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "çok basit" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "değiştirilmiş" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "yetersiz karakter sınıfı" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "aynı karakterleri arka arkaya içeriyor" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Parola girilmedi" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Servis modülünde hata" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "KÖTÜ PAROLA: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Etkileşim hatası" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "eskisi ile aynı" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "bir palindrom (iki yönden aynı şekilde okunuyor)" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "eskisine çok benziyor" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "yetersiz karakter sınıfı" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "aynı karakterleri arka arkaya içeriyor" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Bilinmeyen hata" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Etkileşim hatası" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 0000000..cd89ce5 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,191 @@ +# translation of Linux-PAM.uk.po to Ukrainian +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Ivan Petrouchtchak <ivanpetrouchtchak@yahoo.com>, 2006. +# Yuri Chornoivan <yurchor@ukr.net>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM.uk\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2010-03-07 13:00+0200\n" +"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" +"Language-Team: Ukrainian <translation@linux.org.ua>\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Новий пароль %s%s:" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Повторіть новий пароль %s%s: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Вибачте, паролі не збігаються." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Помилка обміну даними" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "такий самий, як і старий" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "— це паліндром" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "тільки зміни в регістрі" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "занадто подібний до старого" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "занадто простий" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "чергується" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "недостатнє використання класів символів" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "містить забагато послідовних однакових символів" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Пароль не встановлено" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Помилка в модулі служби" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "ПОГАНИЙ ПАРОЛЬ: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Помилка обміну даними" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "такий самий, як і старий" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "— це паліндром" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "занадто подібний до старого" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "недостатнє використання класів символів" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "містить забагато послідовних однакових символів" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Невідома помилка" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Помилка обміну даними" diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 0000000..2d6fc3e --- /dev/null +++ b/po/vi.po @@ -0,0 +1,190 @@ +# Vietnamese translation for pam +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the pam package. +# Ubuntu Vietname translators <ubuntu-l10n-vi@lists.launchpad.net>, 2009-2011. +# +msgid "" +msgstr "" +"Project-Id-Version: pam\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2011-06-04 17:58+0700\n" +"Last-Translator: Lê Trường An <truongan@linuxmail.org>\n" +"Language-Team: Vietnamese <du-an-most@lists.hanoilug.org>\n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Launchpad-Export-Date: 2011-06-04 10:52+0000\n" +"X-Generator: Launchpad (build 13144)\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "Mật khẩu %s%s mới: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Nhập lại mật khẩu %s%s mới: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Xin lỗi, mật khẩu không khớp." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Lỗi giao tiếp" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "là giống như cũ" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "là một xâu palindrome" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "chỉ thay đổi chữ thường/hoa" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "quá giống cái cũ" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "quá đơn giản" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "được sử dụng lại" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "không đủ các lớp nhân vật" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "chứa quá nhiều kí tự giống nhau liên tiếp" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Không có mật khẩu được cung cấp" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Lỗi trong mô-đun dịch vụ" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "Mật khẩu không an toàn: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Lỗi giao tiếp" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "là giống như cũ" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "là một xâu palindrome" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "quá giống cái cũ" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "không đủ các lớp nhân vật" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "chứa quá nhiều kí tự giống nhau liên tiếp" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Lỗi không rõ" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Lỗi giao tiếp" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..ad4739e --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,191 @@ +# translation of pam.tip.po to Simplified Chinese +# translation of zh_CN.po to +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Xi HUANG <xhuang@redhat.com>, 2007. +# Leah Liu <lliu@redhat.com>, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-03 12:47+1000\n" +"Last-Translator: Leah Liu <lliu@redhat.com>\n" +"Language-Team: Simplified Chinese <zh@li.org>\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "新的 %s%s密码:" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "重新输入新的 %s%s密码:" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "抱歉,密码不匹配。" + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "转换错误" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "与旧密码相同" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "是回文" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "仅更改了大小写" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "与旧密码过于相似" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "过于简单" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "是旧密码的循环" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "没有足够的字符分类" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "包含过多连续相同的字符" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "密码未提供" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "服务模块存在错误" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "无效的密码: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "转换错误" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "与旧密码相同" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "是回文" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "与旧密码过于相似" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "没有足够的字符分类" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "包含过多连续相同的字符" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "未知的错误" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "转换错误" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 0000000..2953e62 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,190 @@ +# translation of pam.tip.po to +# translation of Linux-PAM.tip.po to +# Copyright (C) YEAR Linux-PAM Project +# This file is distributed under the same license as the PACKAGE package. +# +# Terry Chuang <tchuang@redhat.com>, 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: pam.tip\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2009-04-06 21:21+1000\n" +"Last-Translator: Terry Chuang <tchuang@redhat.com>\n" +"Language-Team: <zh@li.org>\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "新 %s%s密碼:" + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "再次輸入新的 %s%s密碼:" + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "抱歉,密碼不符合。" + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "交談錯誤" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "與舊的密碼相同" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "是一個回文" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "僅變更大小寫" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "與舊的密碼太相似" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "太簡單" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "已旋轉" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "字元類別不足" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "包含了太多連續的相同字元" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "未提供密碼" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "服務模組發生錯誤" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "不良的密碼: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "交談錯誤" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "與舊的密碼相同" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "是一個回文" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "與舊的密碼太相似" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +#, fuzzy +msgid "The password does not contain enough character classes" +msgstr "字元類別不足" + +#: src/pwscore.c:55 +#, fuzzy +msgid "The password contains too many same characters consecutively" +msgstr "包含了太多連續的相同字元" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "未知的錯誤" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "交談錯誤" diff --git a/po/zu.po b/po/zu.po new file mode 100644 index 0000000..b9ef800 --- /dev/null +++ b/po/zu.po @@ -0,0 +1,183 @@ +# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg +# This file is distributed under the same license as the package. +# +msgid "" +msgstr "" +"Project-Id-Version: Linux-PAM\n" +"Report-Msgid-Bugs-To: http://fedorahosted.org/libpwquality\n" +"POT-Creation-Date: 2011-09-16 14:36+0200\n" +"PO-Revision-Date: 2006-11-03 12:03\n" +"Last-Translator: Novell Language <language@novell.com>\n" +"Language-Team: Novell Language <language@novell.com>\n" +"Language: zu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/pam_pwquality.c:22 +#, c-format +msgid "New %s%spassword: " +msgstr "%s%siphasiwedi entsha: " + +#: src/pam_pwquality.c:24 +#, c-format +msgid "Retype new %s%spassword: " +msgstr "Thayipha kabusha %s%siphasiwedi entsha: " + +#: src/pam_pwquality.c:25 +msgid "Sorry, passwords do not match." +msgstr "Uxolo, amaphasiwedi awahambelani." + +#: src/pam_pwquality.c:104 +#, fuzzy +msgid "memory allocation error" +msgstr "Iphutha lengxoxo" + +#: src/pam_pwquality.c:106 +msgid "is the same as the old one" +msgstr "iyafana nendala" + +#: src/pam_pwquality.c:108 +msgid "is a palindrome" +msgstr "iyi-palindrome" + +#: src/pam_pwquality.c:110 +msgid "case changes only" +msgstr "kushintshe onobumba kuphela" + +#: src/pam_pwquality.c:112 +msgid "is too similar to the old one" +msgstr "ifana kakhulu nendala" + +#: src/pam_pwquality.c:118 +msgid "is too simple" +msgstr "ilula kakhulu" + +#: src/pam_pwquality.c:120 +msgid "is rotated" +msgstr "ijikelezisiwe" + +#: src/pam_pwquality.c:122 +msgid "not enough character classes" +msgstr "" + +#: src/pam_pwquality.c:124 +msgid "contains too many same characters consecutively" +msgstr "" + +#: src/pam_pwquality.c:126 src/pwscore.c:57 +msgid "No password supplied" +msgstr "Ayikho iphasiwedi enikeziwe" + +#: src/pam_pwquality.c:130 +msgid "Error in service module" +msgstr "Iphutha kwimoduli yesevisi" + +#: src/pam_pwquality.c:198 +#, c-format +msgid "BAD PASSWORD: %s" +msgstr "IPHASIWEDI ENGASEBENZI: %s" + +#: src/pwscore.c:20 +#, c-format +msgid "Usage: %s\n" +msgstr "" + +#: src/pwscore.c:21 +#, c-format +msgid "" +" The command reads the password to be scored from the standard input.\n" +msgstr "" + +#: src/pwscore.c:31 src/pwmake.c:28 +#, fuzzy +msgid "Memory allocation error" +msgstr "Iphutha lengxoxo" + +#: src/pwscore.c:33 +#, fuzzy +msgid "The password is the same as the old one" +msgstr "iyafana nendala" + +#: src/pwscore.c:35 +#, fuzzy +msgid "The password is a palindrome" +msgstr "iyi-palindrome" + +#: src/pwscore.c:37 +msgid "The password differs with case changes only" +msgstr "" + +#: src/pwscore.c:39 +#, fuzzy +msgid "The password is too similar to the old one" +msgstr "ifana kakhulu nendala" + +#: src/pwscore.c:41 +msgid "The password contains too few digits" +msgstr "" + +#: src/pwscore.c:43 +msgid "The password contains too few uppercase letters" +msgstr "" + +#: src/pwscore.c:45 +msgid "The password contains too few lowercase letters" +msgstr "" + +#: src/pwscore.c:47 +msgid "The password contains too few non-alphanumeric characters" +msgstr "" + +#: src/pwscore.c:49 +msgid "The password is too short" +msgstr "" + +#: src/pwscore.c:51 +msgid "The password is just rotated old one" +msgstr "" + +#: src/pwscore.c:53 +msgid "The password does not contain enough character classes" +msgstr "" + +#: src/pwscore.c:55 +msgid "The password contains too many same characters consecutively" +msgstr "" + +#: src/pwscore.c:59 +#, c-format +msgid "The password fails the dictionary check - %s" +msgstr "" + +#: src/pwscore.c:62 src/pwmake.c:34 +msgid "Unknown error" +msgstr "Iphutha elingaziwa" + +#: src/pwscore.c:91 +#, c-format +msgid "Error: %s\n" +msgstr "" + +#: src/pwscore.c:100 +#, c-format +msgid "Password quality check failed: %s\n" +msgstr "" + +#: src/pwmake.c:20 +#, c-format +msgid "Usage: %s <entropy-bits>\n" +msgstr "" + +#: src/pwmake.c:30 +msgid "Cannot obtain random numbers from the RNG device" +msgstr "" + +#: src/pwmake.c:32 +msgid "Password generation failed - required entropy too low for settings" +msgstr "" + +#: src/pwmake.c:56 +#, fuzzy +msgid "Error: Memory allocation error" +msgstr "Iphutha lengxoxo" diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..09db8ca --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,44 @@ +# +# Copyright (c) 2005, 2006, 2007, 2009 Thorsten Kukuk <kukuk@thkukuk.de> +# Copyright (c) 2011 Red Hat, Inc. +# Copyright (c) 2011 Tomas Mraz <tm@t8m.info> +# + +CLEANFILES = *~ + +EXTRA_DIST = libpwquality.map + +include_HEADERS = pwquality.h + +noinst_HEADERS = pwqprivate.h + +if HAVE_LD_VERSION_SCRIPT + libpwquality_version_script = -Wl,--version-script=$(srcdir)/libpwquality.map +else + libpwquality_version_script = +endif + +libpwquality_la_LDFLAGS = -no-undefined $(libpwquality_version_script) \ + -version-info @PWQUALITY_LT_CURRENT@:@PWQUALITY_LT_REVISION@:@PWQUALITY_LT_AGE@ + +libpwquality_la_LIBADD = @LIBCRACK@ + +libpwquality_la_SOURCES = generate.c check.c settings.c + +pam_pwquality_la_LDFLAGS = -no-undefined -avoid-version -module + +pam_pwquality_la_LIBADD = libpwquality.la -lpam + +pam_pwquality_la_SOURCES = pam_pwquality.c + +pwscore_SOURCES = pwscore.c + +pwscore_LDADD = libpwquality.la + +pwmake_SOURCES = pwmake.c + +pwmake_LDADD = libpwquality.la + +lib_LTLIBRARIES = libpwquality.la pam_pwquality.la + +bin_PROGRAMS = pwscore pwmake diff --git a/src/check.c b/src/check.c new file mode 100644 index 0000000..c02d1b4 --- /dev/null +++ b/src/check.c @@ -0,0 +1,509 @@ +/* + * libpwquality main API code for quality checking + * + * See the end of the file for Copyright and License Information + */ + +#include "config.h" + +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <crack.h> + +#include "pwquality.h" +#include "pwqprivate.h" + +#ifdef MIN +#undef MIN +#endif +#define MIN(_a, _b) (((_a) < (_b)) ? (_a) : (_b)) + +/* Helper functions */ + +/* + * test for a palindrome - like `R A D A R' or `M A D A M' + */ +static int +palindrome(const char *new) +{ + int i, j; + + i = strlen (new); + + for (j = 0; j < i; j++) + if (new[i - j - 1] != new[j]) + return 0; + + return 1; +} + +/* + * Calculate how different two strings are in terms of the number of + * character removals, additions, and changes needed to go from one to + * the other + */ + +static int +distdifferent(const char *old, const char *new, + size_t i, size_t j) +{ + char c, d; + + if ((i == 0) || (strlen(old) < i)) { + c = 0; + } else { + c = old[i - 1]; + } + + if ((j == 0) || (strlen(new) < j)) { + d = 0; + } else { + d = new[j - 1]; + } + return (c != d); +} + +static int +distcalculate(int **distances, const char *old, const char *new, + size_t i, size_t j) +{ + int tmp = 0; + + if (distances[i][j] != -1) { + return distances[i][j]; + } + + tmp = distcalculate(distances, old, new, i - 1, j - 1); + tmp = MIN(tmp, distcalculate(distances, old, new, i, j - 1)); + tmp = MIN(tmp, distcalculate(distances, old, new, i - 1, j)); + tmp += distdifferent(old, new, i, j); + + distances[i][j] = tmp; + + return tmp; +} + +static int +distance(const char *old, const char *new) +{ + int **distances = NULL; + size_t m, n, i, j; + int r = -1; + + m = strlen(old); + n = strlen(new); + distances = malloc(sizeof(int*) * (m + 1)); + if (distances == NULL) + return -1; + + for (i = 0; i <= m; i++) { + distances[i] = malloc(sizeof(int) * (n + 1)); + if (distances[i] == NULL) + goto allocfail; + + for(j = 0; j <= n; j++) { + distances[i][j] = -1; + } + } + + for (i = 0; i <= m; i++) { + distances[i][0] = i; + } + + for (j = 0; j <= n; j++) { + distances[0][j] = j; + } + + r = distcalculate(distances, old, new, m, n); + +allocfail: + for (i = 0; i <= m; i++) { + if (distances[i]) { + memset(distances[i], 0, sizeof(int) * (n + 1)); + free(distances[i]); + } + } + free(distances); + + return r; +} + +static int +similar(pwquality_settings_t *pwq, + const char *old, const char *new) +{ + int dist; + + dist = distance(old, new); + + if (dist < 0) + return PWQ_ERROR_MEM_ALLOC; + + if (dist >= pwq->diff_ok) { + return 0; + } + + if (strlen(new) >= (strlen(old) * 2)) { + return 0; + } + + /* passwords are too similar */ + return PWQ_ERROR_TOO_SIMILAR; +} + +/* + * count classes of charecters + */ + +static int +numclass(pwquality_settings_t *pwq, + const char *new) +{ + int digits = 0; + int uppers = 0; + int lowers = 0; + int others = 0; + int total_class; + int i; + int retval; + + for (i = 0; new[i]; i++) { + if (isdigit(new[i])) + digits = 1; + else if (isupper(new[i])) + uppers = 1; + else if (islower(new[i])) + lowers = 1; + else + others = 1; + } + + total_class = digits + uppers + lowers + others; + + return total_class; +} + +/* + * a nice mix of characters + * the credit (if positive) is a maximum value that is subtracted from + * the minimum allowed size of the password if letters of the class are + * present in the password + */ +static int +simple(pwquality_settings_t *pwq, const char *new) +{ + int digits = 0; + int uppers = 0; + int lowers = 0; + int others = 0; + int size; + int i; + + for (i = 0; new[i]; i++) { + if (isdigit(new[i])) + digits++; + else if (isupper(new[i])) + uppers++; + else if (islower(new[i])) + lowers++; + else + others++; + } + + if ((pwq->dig_credit >= 0) && (digits > pwq->dig_credit)) + digits = pwq->dig_credit; + + if ((pwq->up_credit >= 0) && (uppers > pwq->up_credit)) + uppers = pwq->up_credit; + + if ((pwq->low_credit >= 0) && (lowers > pwq->low_credit)) + lowers = pwq->low_credit; + + if ((pwq->oth_credit >= 0) && (others > pwq->oth_credit)) + others = pwq->oth_credit; + + size = pwq->min_length; + + if (pwq->dig_credit >= 0) + size -= digits; + else if (digits < pwq->dig_credit * -1) + return PWQ_ERROR_MIN_DIGITS; + + if (pwq->up_credit >= 0) + size -= uppers; + else if (uppers < pwq->up_credit * -1) + return PWQ_ERROR_MIN_UPPERS; + + if (pwq->low_credit >= 0) + size -= lowers; + else if (lowers < pwq->low_credit * -1) + return PWQ_ERROR_MIN_LOWERS; + + if (pwq->oth_credit >= 0) + size -= others; + else if (others < pwq->oth_credit * -1) + return PWQ_ERROR_MIN_OTHERS; + + if (size <= i) + return 0; + + return PWQ_ERROR_MIN_LENGTH; +} + +/* + * too many same consecutive characters + */ + +static int +consecutive(pwquality_settings_t *pwq, const char *new) +{ + char c; + int i; + int same; + + if (pwq->max_repeat == 0) + return 0; + + for (i = 0; new[i]; i++) { + if (i > 0 && new[i] == c) { + ++same; + if (same > pwq->max_repeat) + return 1; + } else { + c = new[i]; + same = 1; + } + } + return 0; +} + +static char * +str_lower(char *string) +{ + char *cp; + + if (!string) + return NULL; + + for (cp = string; *cp; cp++) + *cp = tolower(*cp); + return string; +} + +static char * +x_strdup(const char *string) +{ + if (!string) + return NULL; + return strdup(string); +} + +static int +password_check(pwquality_settings_t *pwq, + const char *new, const char *old) +{ + int rv = 0; + char *oldmono = NULL, *newmono, *wrapped = NULL; + + newmono = str_lower(x_strdup(new)); + if (!newmono) + rv = PWQ_ERROR_MEM_ALLOC; + + if (!rv && old) { + oldmono = str_lower(x_strdup(old)); + if (oldmono) + wrapped = malloc(strlen(oldmono) * 2 + 1); + if (wrapped) { + strcpy (wrapped, oldmono); + strcat (wrapped, oldmono); + } else { + rv = PWQ_ERROR_MEM_ALLOC; + } + } + + if (!rv && palindrome(newmono)) + rv = PWQ_ERROR_PALINDROME; + + if (!rv && oldmono && strcmp(oldmono, newmono) == 0) + rv = PWQ_ERROR_CASE_CHANGES_ONLY; + + if (!rv && oldmono) + rv = similar(pwq, oldmono, newmono); + + if (!rv) + rv = simple(pwq, new); + + if (!rv && wrapped && strstr(wrapped, newmono)) + rv = PWQ_ERROR_ROTATED; + + if (!rv && numclass(pwq, new) < pwq->min_class) + rv = PWQ_ERROR_MIN_CLASSES; + + if (!rv && consecutive(pwq, new)) + rv = PWQ_ERROR_MAX_CONSECUTIVE; + + if (newmono) { + memset(newmono, 0, strlen(newmono)); + free(newmono); + } + + if (oldmono) { + memset(oldmono, 0, strlen(oldmono)); + free(oldmono); + } + + if (wrapped) { + memset(wrapped, 0, strlen(wrapped)); + free(wrapped); + } + + return rv; +} + +/* this algorithm is an arbitrary one, fine-tuned by testing */ +static int +password_score(pwquality_settings_t *pwq, const char *password) +{ + int len; + int score; + int i; + int j; + unsigned char freq[256]; + unsigned char *buf; + + len = strlen(password); + + if ((buf = malloc(len)) == NULL) + /* should get enough memory to obtain a nice score */ + return 0; + + score = (len - pwq->min_length) * 2; + + memcpy(buf, password, len); + + for (j = 0; j < 3; j++) { + + memset(freq, 0, sizeof(freq)); + + for (i = 0; i < len - j; i++) { + ++freq[buf[i]]; + if (i < len - j - 1) + buf[i] = abs(buf[i] - buf[i+1]); + } + + for (i = 0; i < sizeof(freq); i++) { + if (freq[i]) + ++score; + } + } + + memset(buf, 0, len); + free(buf); + + score += numclass(pwq, password) * 2; + + score = (score * 100)/(3 * pwq->min_length + + + PWQ_NUM_CLASSES * 2); + + score -= 50; + + if (score > 100) + score = 100; + if (score < 0) + score = 0; + + return score; +} + +/* check the password according to the settings + * it returns either score <0-100>, negative error number, + * and in case of PWQ_ERROR_CRACKLIB also auxiliary + * error message returned from cracklib; + * the old password is optional */ +int +pwquality_check(pwquality_settings_t *pwq, const char *password, + const char *oldpassword, const char **error) +{ + const char *msg; + int score; + + if (password == NULL || *password == '\0') { + return PWQ_ERROR_EMPTY_PASSWORD; + } + + if (oldpassword && strcmp(oldpassword, password) == 0) { + return PWQ_ERROR_SAME_PASSWORD; + } + + msg = FascistCheck(password, pwq->dict_path); + if (msg) { + if (error) + *error = msg; + return PWQ_ERROR_CRACKLIB_CHECK; + } + + score = password_check(pwq, password, oldpassword); + if (score == 0) { + score = password_score(pwq, password); + } + + return score; +} + +/* + * Copyright (c) Cristian Gafton <gafton@redhat.com>, 1996. + * All rights reserved + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The following copyright was appended for the long password support + * added with the libpam 0.58 release: + * + * Modificaton Copyright (c) Philip W. Dalrymple III <pwd@mdtsoft.com> + * 1997. All rights reserved + * + * THE MODIFICATION THAT PROVIDES SUPPORT FOR LONG PASSWORD TYPE CHECKING TO + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/generate.c b/src/generate.c new file mode 100644 index 0000000..24c158b --- /dev/null +++ b/src/generate.c @@ -0,0 +1,211 @@ +/* + * libpwquality main API code for password generation + * + * See the end of the file for Copyright and License Information + */ + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <ctype.h> +#include <limits.h> +#include <crack.h> +#include <errno.h> + +#include "pwquality.h" +#include "pwqprivate.h" + +#ifndef PATH_DEV_URANDOM +#define PATH_DEV_URANDOM "/dev/urandom" +#endif + +static char vowels[] = { 'a', '4', 'A', 'e', 'E', '3', 'i', 'I', 'o', 'O', + '0', 'u', 'U', 'y', 'Y', '@' }; /* 4 bits */ +static char consonants1[] = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', + 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z', + 'B', 'D', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', + 'R', 'S' }; /* 5 bits */ +static char consonants2[] = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', + 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z', + 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', + 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Z', + '1', '2', '5', '6', '7', '8', '9', '!', '#', '$', + '%', '^', '&', '*', '(', ')', '-', '+', '=', '[', + ']', ';', '.', ',' }; /* 6 bits */ + +static int +get_entropy_bits(char *buf, int nbits) +{ + int fd; + int rv; + int offset = 0; + int bytes = (nbits + 7) / 8; /* round up on division */ + + fd = open(PATH_DEV_URANDOM, O_RDONLY); + if (fd == -1) + return -1; + + while (bytes > 0) { + rv = read(fd, buf + offset, bytes); + + if (rv < 0) { + if (errno == EINTR) continue; + (void)close(fd); + return -1; + } + if (rv == 0) { + (void)close(fd); + return -1; + } + + offset += rv; + bytes -= rv; + } + + (void)close(fd); + return 0; +} + +static unsigned int +consume_entropy(char *buf, int bits, int *remaining, int *offset) +{ + unsigned int low = (unsigned char)buf[*offset/8]; + unsigned int high = 0; + + if (remaining) + *remaining -= bits; + + low >>= *offset % 8; + low &= (1 << bits) - 1; + + if (8 - *offset % 8 < bits) { + high = (unsigned char)buf[*offset/8 + 1]; + high &= (1 << (bits - (8 - *offset % 8))) - 1; + high <<= 8 - *offset % 8; + low |= high; + } + + *offset += bits; + return low; +} + +/* generate a random password according to the settings */ +int +pwquality_generate(pwquality_settings_t *pwq, int entropy_bits, char **password) +{ + char entropy[PWQ_MAX_ENTROPY_BITS/8 + 1]; + char *tmp; + int maxlen; + int try = 0; + + *password = NULL; + + if (entropy_bits > PWQ_MAX_ENTROPY_BITS) + entropy_bits = PWQ_MAX_ENTROPY_BITS; + + if (entropy_bits < PWQ_MIN_ENTROPY_BITS) + entropy_bits = PWQ_MIN_ENTROPY_BITS; + + /* overestimate here only 9 bits per syllable of 3 characters */ + maxlen = (entropy_bits + 8) / 9 * 3 + 1; + + tmp = malloc(maxlen); + if (tmp == NULL) { + return PWQ_ERROR_FATAL_FAILURE; + } + + do { + int offset = 0; + int remaining = entropy_bits; + char *ptr; + + memset(tmp, '\0', maxlen); + /* read one more byte for rounding overflow during generation + and for at most every 9th bit we also drop one bit */ + if (get_entropy_bits(entropy, entropy_bits + + (entropy_bits+8)/9 + 8) < 0) { + free(tmp); + return PWQ_ERROR_RNG; + } + + ptr = tmp; + while (remaining > 0) { + unsigned int idx; + + if (consume_entropy(entropy, 1, NULL, &offset)) { + idx = consume_entropy(entropy, 6, &remaining, &offset); + *ptr = consonants2[idx]; + ++ptr; + if (remaining < 0) + break; + } + + idx = consume_entropy(entropy, 4, &remaining, &offset); + *ptr = vowels[idx]; + ++ptr; + if (remaining < 0) + break; + + idx = consume_entropy(entropy, 5, &remaining, &offset); + *ptr = consonants1[idx]; + ++ptr; + } + } while (pwquality_check(pwq, tmp, NULL, NULL) < 0 && + ++try < PWQ_NUM_GENERATION_TRIES); + + /* clean up */ + memset(entropy, '\0', sizeof(entropy)); + + if (try >= PWQ_NUM_GENERATION_TRIES) { + free(tmp); + return PWQ_ERROR_GENERATION_FAILED; + } + + *password = tmp; + tmp = NULL; + return 0; +} + + +/* + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/libpwquality.map b/src/libpwquality.map new file mode 100644 index 0000000..231dd02 --- /dev/null +++ b/src/libpwquality.map @@ -0,0 +1,15 @@ +LIBPWQUALITY_1.0 { + global: + pwquality_default_settings; + pwquality_free_settings; + pwquality_read_config; + pwquality_set_option; + pwquality_set_int_value; + pwquality_set_str_value; + pwquality_get_int_value; + pwquality_get_str_value; + pwquality_generate; + pwquality_check; + local: + *; +}; diff --git a/src/pam_cracklib.c b/src/pam_cracklib.c new file mode 100644 index 0000000..a5e12cb --- /dev/null +++ b/src/pam_cracklib.c @@ -0,0 +1,755 @@ +/* + * libpwquality main API code + * + * See the end of the file for Copyright and License Information + */ + +#include "config.h" + +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <ctype.h> +#include <limits.h> +#include <crack.h> + +/* For Translators: "%s%s" could be replaced with "<service> " or "". */ +#define PROMPT1 _("New %s%spassword: ") +/* For Translators: "%s%s" could be replaced with "<service> " or "". */ +#define PROMPT2 _("Retype new %s%spassword: ") +#define MISTYPED_PASS _("Sorry, passwords do not match.") + +#ifdef MIN +#undef MIN +#endif +#define MIN(_a, _b) (((_a) < (_b)) ? (_a) : (_b)) + +/* + * here, we make a definition for the externally accessible function + * in this file (this definition is required for static a module + * but strongly encouraged generally) it is used to instruct the + * modules include file to define the function prototypes. + */ + +#define PAM_SM_PASSWORD + +#include <security/pam_modules.h> +#include <security/_pam_macros.h> +#include <security/pam_ext.h> + +/* argument parsing */ +#define PAM_DEBUG_ARG 0x0001 + +struct cracklib_options { + int retry_times; + int diff_ok; + int diff_ignore; + int min_length; + int dig_credit; + int up_credit; + int low_credit; + int oth_credit; + int min_class; + int max_repeat; + int reject_user; + const char *cracklib_dictpath; +}; + +#define CO_RETRY_TIMES 1 +#define CO_DIFF_OK 5 +#define CO_DIFF_IGNORE 23 +#define CO_MIN_LENGTH 9 +# define CO_MIN_LENGTH_BASE 5 +#define CO_DIG_CREDIT 1 +#define CO_UP_CREDIT 1 +#define CO_LOW_CREDIT 1 +#define CO_OTH_CREDIT 1 + +static int +_pam_parse (pam_handle_t *pamh, struct cracklib_options *opt, + int argc, const char **argv) +{ + int ctrl=0; + + /* step through arguments */ + for (ctrl=0; argc-- > 0; ++argv) { + char *ep = NULL; + + /* generic options */ + + if (!strcmp(*argv,"debug")) + ctrl |= PAM_DEBUG_ARG; + else if (!strncmp(*argv,"type=",5)) + pam_set_item (pamh, PAM_AUTHTOK_TYPE, *argv+5); + else if (!strncmp(*argv,"retry=",6)) { + opt->retry_times = strtol(*argv+6,&ep,10); + if (!ep || (opt->retry_times < 1)) + opt->retry_times = CO_RETRY_TIMES; + } else if (!strncmp(*argv,"difok=",6)) { + opt->diff_ok = strtol(*argv+6,&ep,10); + if (!ep || (opt->diff_ok < 0)) + opt->diff_ok = CO_DIFF_OK; + } else if (!strncmp(*argv,"difignore=",10)) { + opt->diff_ignore = strtol(*argv+10,&ep,10); + if (!ep || (opt->diff_ignore < 0)) + opt->diff_ignore = CO_DIFF_IGNORE; + } else if (!strncmp(*argv,"minlen=",7)) { + opt->min_length = strtol(*argv+7,&ep,10); + if (!ep || (opt->min_length < CO_MIN_LENGTH_BASE)) + opt->min_length = CO_MIN_LENGTH_BASE; + } else if (!strncmp(*argv,"dcredit=",8)) { + opt->dig_credit = strtol(*argv+8,&ep,10); + if (!ep) + opt->dig_credit = 0; + } else if (!strncmp(*argv,"ucredit=",8)) { + opt->up_credit = strtol(*argv+8,&ep,10); + if (!ep) + opt->up_credit = 0; + } else if (!strncmp(*argv,"lcredit=",8)) { + opt->low_credit = strtol(*argv+8,&ep,10); + if (!ep) + opt->low_credit = 0; + } else if (!strncmp(*argv,"ocredit=",8)) { + opt->oth_credit = strtol(*argv+8,&ep,10); + if (!ep) + opt->oth_credit = 0; + } else if (!strncmp(*argv,"minclass=",9)) { + opt->min_class = strtol(*argv+9,&ep,10); + if (!ep) + opt->min_class = 0; + if (opt->min_class > 4) + opt->min_class = 4; + } else if (!strncmp(*argv,"maxrepeat=",10)) { + opt->max_repeat = strtol(*argv+10,&ep,10); + if (!ep) + opt->max_repeat = 0; + } else if (!strncmp(*argv,"reject_username",15)) { + opt->reject_user = 1; + } else if (!strncmp(*argv,"authtok_type",12)) { + /* for pam_get_authtok, ignore */; + } else if (!strncmp(*argv,"use_authtok",11)) { + /* for pam_get_authtok, ignore */; + } else if (!strncmp(*argv,"use_first_pass",14)) { + /* for pam_get_authtok, ignore */; + } else if (!strncmp(*argv,"try_first_pass",14)) { + /* for pam_get_authtok, ignore */; + } else if (!strncmp(*argv,"dictpath=",9)) { + opt->cracklib_dictpath = *argv+9; + if (!*(opt->cracklib_dictpath)) { + opt->cracklib_dictpath = CRACKLIB_DICTS; + } + } else { + pam_syslog(pamh,LOG_ERR,"pam_parse: unknown option; %s",*argv); + } + } + + return ctrl; +} + +/* Helper functions */ + +/* + * can't be a palindrome - like `R A D A R' or `M A D A M' + */ +static int palindrome(const char *new) +{ + int i, j; + + i = strlen (new); + + for (j = 0;j < i;j++) + if (new[i - j - 1] != new[j]) + return 0; + + return 1; +} + +/* + * Calculate how different two strings are in terms of the number of + * character removals, additions, and changes needed to go from one to + * the other + */ + +static int distdifferent(const char *old, const char *new, + size_t i, size_t j) +{ + char c, d; + + if ((i == 0) || (strlen(old) < i)) { + c = 0; + } else { + c = old[i - 1]; + } + if ((j == 0) || (strlen(new) < j)) { + d = 0; + } else { + d = new[j - 1]; + } + return (c != d); +} + +static int distcalculate(int **distances, const char *old, const char *new, + size_t i, size_t j) +{ + int tmp = 0; + + if (distances[i][j] != -1) { + return distances[i][j]; + } + + tmp = distcalculate(distances, old, new, i - 1, j - 1); + tmp = MIN(tmp, distcalculate(distances, old, new, i, j - 1)); + tmp = MIN(tmp, distcalculate(distances, old, new, i - 1, j)); + tmp += distdifferent(old, new, i, j); + + distances[i][j] = tmp; + + return tmp; +} + +static int distance(const char *old, const char *new) +{ + int **distances = NULL; + size_t m, n, i, j, r; + + m = strlen(old); + n = strlen(new); + distances = malloc(sizeof(int*) * (m + 1)); + + for (i = 0; i <= m; i++) { + distances[i] = malloc(sizeof(int) * (n + 1)); + for(j = 0; j <= n; j++) { + distances[i][j] = -1; + } + } + for (i = 0; i <= m; i++) { + distances[i][0] = i; + } + for (j = 0; j <= n; j++) { + distances[0][j] = j; + } + distances[0][0] = 0; + + r = distcalculate(distances, old, new, m, n); + + for (i = 0; i <= m; i++) { + memset(distances[i], 0, sizeof(int) * (n + 1)); + free(distances[i]); + } + free(distances); + + return r; +} + +static int similar(struct cracklib_options *opt, + const char *old, const char *new) +{ + if (distance(old, new) >= opt->diff_ok) { + return 0; + } + + if (strlen(new) >= (strlen(old) * 2)) { + return 0; + } + + /* passwords are too similar */ + return 1; +} + +/* + * enough classes of charecters + */ + +static int minclass (struct cracklib_options *opt, + const char *new) +{ + int digits = 0; + int uppers = 0; + int lowers = 0; + int others = 0; + int total_class; + int i; + int retval; + + D(( "called" )); + for (i = 0; new[i]; i++) + { + if (isdigit (new[i])) + digits = 1; + else if (isupper (new[i])) + uppers = 1; + else if (islower (new[i])) + lowers = 1; + else + others = 1; + } + + total_class = digits + uppers + lowers + others; + + D (("total class: %d\tmin_class: %d", total_class, opt->min_class)); + + if (total_class >= opt->min_class) + retval = 0; + else + retval = 1; + + return retval; +} + + +/* + * a nice mix of characters. + */ +static int simple(struct cracklib_options *opt, const char *new) +{ + int digits = 0; + int uppers = 0; + int lowers = 0; + int others = 0; + int size; + int i; + + for (i = 0;new[i];i++) { + if (isdigit (new[i])) + digits++; + else if (isupper (new[i])) + uppers++; + else if (islower (new[i])) + lowers++; + else + others++; + } + + /* + * The scam was this - a password of only one character type + * must be 8 letters long. Two types, 7, and so on. + * This is now changed, the base size and the credits or defaults + * see the docs on the module for info on these parameters, the + * defaults cause the effect to be the same as before the change + */ + + if ((opt->dig_credit >= 0) && (digits > opt->dig_credit)) + digits = opt->dig_credit; + + if ((opt->up_credit >= 0) && (uppers > opt->up_credit)) + uppers = opt->up_credit; + + if ((opt->low_credit >= 0) && (lowers > opt->low_credit)) + lowers = opt->low_credit; + + if ((opt->oth_credit >= 0) && (others > opt->oth_credit)) + others = opt->oth_credit; + + size = opt->min_length; + + if (opt->dig_credit >= 0) + size -= digits; + else if (digits < opt->dig_credit * -1) + return 1; + + if (opt->up_credit >= 0) + size -= uppers; + else if (uppers < opt->up_credit * -1) + return 1; + + if (opt->low_credit >= 0) + size -= lowers; + else if (lowers < opt->low_credit * -1) + return 1; + + if (opt->oth_credit >= 0) + size -= others; + else if (others < opt->oth_credit * -1) + return 1; + + if (size <= i) + return 0; + + return 1; +} + +static int consecutive(struct cracklib_options *opt, const char *new) +{ + char c; + int i; + int same; + + if (opt->max_repeat == 0) + return 0; + + for (i = 0; new[i]; i++) { + if (i > 0 && new[i] == c) { + ++same; + if (same > opt->max_repeat) + return 1; + } else { + c = new[i]; + same = 1; + } + } + return 0; +} + +static int usercheck(struct cracklib_options *opt, const char *new, + char *user) +{ + char *f, *b; + + if (!opt->reject_user) + return 0; + + if (strstr(new, user) != NULL) + return 1; + + /* now reverse the username, we can do that in place + as it is strdup-ed */ + f = user; + b = user+strlen(user)-1; + while (f < b) { + char c; + + c = *f; + *f = *b; + *b = c; + --b; + ++f; + } + + if (strstr(new, user) != NULL) + return 1; + return 0; +} + +static char * str_lower(char *string) +{ + char *cp; + + if (!string) + return NULL; + + for (cp = string; *cp; cp++) + *cp = tolower(*cp); + return string; +} + +static const char *password_check(struct cracklib_options *opt, + const char *old, const char *new, + const char *user) +{ + const char *msg = NULL; + char *oldmono = NULL, *newmono, *wrapped = NULL; + char *usermono = NULL; + + if (old && strcmp(new, old) == 0) { + msg = _("is the same as the old one"); + return msg; + } + + newmono = str_lower(x_strdup(new)); + if (!newmono) + msg = _("memory allocation error"); + + usermono = str_lower(x_strdup(user)); + if (!usermono) + msg = _("memory allocation error"); + + if (!msg && old) { + oldmono = str_lower(x_strdup(old)); + if (oldmono) + wrapped = malloc(strlen(oldmono) * 2 + 1); + if (wrapped) { + strcpy (wrapped, oldmono); + strcat (wrapped, oldmono); + } else { + msg = _("memory allocation error"); + } + } + + if (!msg && palindrome(newmono)) + msg = _("is a palindrome"); + + if (!msg && oldmono && strcmp(oldmono, newmono) == 0) + msg = _("case changes only"); + + if (!msg && oldmono && similar(opt, oldmono, newmono)) + msg = _("is too similar to the old one"); + + if (!msg && simple(opt, new)) + msg = _("is too simple"); + + if (!msg && wrapped && strstr(wrapped, newmono)) + msg = _("is rotated"); + + if (!msg && minclass (opt, new)) + msg = _("not enough character classes"); + + if (!msg && consecutive(opt, new)) + msg = _("contains too many same characters consecutively"); + + if (!msg && usercheck(opt, newmono, usermono)) + msg = _("contains the user name in some form"); + + free(usermono); + if (newmono) { + memset(newmono, 0, strlen(newmono)); + free(newmono); + } + if (oldmono) { + memset(oldmono, 0, strlen(oldmono)); + free(oldmono); + } + if (wrapped) { + memset(wrapped, 0, strlen(wrapped)); + free(wrapped); + } + + return msg; +} + + +static int _pam_unix_approve_pass(pam_handle_t *pamh, + unsigned int ctrl, + struct cracklib_options *opt, + const char *pass_old, + const char *pass_new) +{ + const char *msg = NULL; + const char *user; + int retval; + + if (pass_new == NULL || (pass_old && !strcmp(pass_old,pass_new))) { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh, LOG_DEBUG, "bad authentication token"); + pam_error(pamh, "%s", pass_new == NULL ? + _("No password supplied"):_("Password unchanged")); + return PAM_AUTHTOK_ERR; + } + + retval = pam_get_user(pamh, &user, NULL); + if (retval != PAM_SUCCESS || user == NULL) { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh,LOG_ERR,"Can not get username"); + return PAM_AUTHTOK_ERR; + } + /* + * if one wanted to hardwire authentication token strength + * checking this would be the place + */ + msg = password_check(opt, pass_old, pass_new, user); + + if (msg) { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh, LOG_NOTICE, + "new passwd fails strength check: %s", msg); + pam_error(pamh, _("BAD PASSWORD: %s"), msg); + return PAM_AUTHTOK_ERR; + }; + return PAM_SUCCESS; + +} + +/* The Main Thing (by Cristian Gafton, CEO at this module :-) + * (stolen from http://home.netscape.com) + */ +PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, + int argc, const char **argv) +{ + unsigned int ctrl; + struct cracklib_options options; + + D(("called.")); + + memset(&options, 0, sizeof(options)); + options.retry_times = CO_RETRY_TIMES; + options.diff_ok = CO_DIFF_OK; + options.diff_ignore = CO_DIFF_IGNORE; + options.min_length = CO_MIN_LENGTH; + options.dig_credit = CO_DIG_CREDIT; + options.up_credit = CO_UP_CREDIT; + options.low_credit = CO_LOW_CREDIT; + options.oth_credit = CO_OTH_CREDIT; + options.cracklib_dictpath = CRACKLIB_DICTS; + + ctrl = _pam_parse(pamh, &options, argc, argv); + + if (flags & PAM_PRELIM_CHECK) { + /* Check for passwd dictionary */ + /* We cannot do that, since the original path is compiled + into the cracklib library and we don't know it. */ + return PAM_SUCCESS; + } else if (flags & PAM_UPDATE_AUTHTOK) { + int retval; + const void *oldtoken; + int tries; + + D(("do update")); + + + retval = pam_get_item (pamh, PAM_OLDAUTHTOK, &oldtoken); + if (retval != PAM_SUCCESS) { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh,LOG_ERR,"Can not get old passwd"); + oldtoken = NULL; + } + + tries = 0; + while (tries < options.retry_times) { + const char *crack_msg; + const char *newtoken = NULL; + + + tries++; + + /* Planned modus operandi: + * Get a passwd. + * Verify it against cracklib. + * If okay get it a second time. + * Check to be the same with the first one. + * set PAM_AUTHTOK and return + */ + + retval = pam_get_authtok_noverify (pamh, &newtoken, NULL); + if (retval != PAM_SUCCESS) { + pam_syslog(pamh, LOG_ERR, "pam_get_authtok_noverify returned error: %s", + pam_strerror (pamh, retval)); + continue; + } else if (newtoken == NULL) { /* user aborted password change, quit */ + return PAM_AUTHTOK_ERR; + } + + D(("testing password")); + /* now test this passwd against cracklib */ + + D(("against cracklib")); + if ((crack_msg = FascistCheck (newtoken, options.cracklib_dictpath))) { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh,LOG_DEBUG,"bad password: %s",crack_msg); + pam_error (pamh, _("BAD PASSWORD: %s"), crack_msg); + if (getuid() || (flags & PAM_CHANGE_EXPIRED_AUTHTOK)) + { + pam_set_item (pamh, PAM_AUTHTOK, NULL); + retval = PAM_AUTHTOK_ERR; + continue; + } + } + + /* check it for strength too... */ + D(("for strength")); + retval = _pam_unix_approve_pass (pamh, ctrl, &options, + oldtoken, newtoken); + if (retval != PAM_SUCCESS) { + if (getuid() || (flags & PAM_CHANGE_EXPIRED_AUTHTOK)) + { + pam_set_item(pamh, PAM_AUTHTOK, NULL); + retval = PAM_AUTHTOK_ERR; + continue; + } + } + + retval = pam_get_authtok_verify (pamh, &newtoken, NULL); + if (retval != PAM_SUCCESS) { + pam_syslog(pamh, LOG_ERR, "pam_get_authtok_verify returned error: %s", + pam_strerror (pamh, retval)); + pam_set_item(pamh, PAM_AUTHTOK, NULL); + continue; + } else if (newtoken == NULL) { /* user aborted password change, quit */ + return PAM_AUTHTOK_ERR; + } + + return PAM_SUCCESS; + } + + D(("returning because maxtries reached")); + + pam_set_item (pamh, PAM_AUTHTOK, NULL); + + /* if we have only one try, we can use the real reason, + else say that there were too many tries. */ + if (options.retry_times > 1) + return PAM_MAXTRIES; + else + return retval; + + } else { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh, LOG_NOTICE, "UNKNOWN flags setting %02X",flags); + return PAM_SERVICE_ERR; + } + + /* Not reached */ + return PAM_SERVICE_ERR; +} + + + +#ifdef PAM_STATIC +/* static module data */ +struct pam_module _pam_cracklib_modstruct = { + "pam_cracklib", + NULL, + NULL, + NULL, + NULL, + NULL, + pam_sm_chauthtok +}; +#endif + +/* + * Copyright (c) Cristian Gafton <gafton@redhat.com>, 1996. + * All rights reserved + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The following copyright was appended for the long password support + * added with the libpam 0.58 release: + * + * Modificaton Copyright (c) Philip W. Dalrymple III <pwd@mdtsoft.com> + * 1997. All rights reserved + * + * THE MODIFICATION THAT PROVIDES SUPPORT FOR LONG PASSWORD TYPE CHECKING TO + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/pam_pwquality.c b/src/pam_pwquality.c new file mode 100644 index 0000000..e3cd522 --- /dev/null +++ b/src/pam_pwquality.c @@ -0,0 +1,309 @@ +/* + * PAM module for password quality checking using libpwquality + * + * See the end of the file for Copyright and License Information + */ + +#include "config.h" + +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <ctype.h> +#include <limits.h> +#include <syslog.h> +#include <libintl.h> +#include "pwquality.h" + +/* For Translators: "%s%s" could be replaced with "<service> " or "". */ +#define PROMPT1 _("New %s%spassword: ") +/* For Translators: "%s%s" could be replaced with "<service> " or "". */ +#define PROMPT2 _("Retype new %s%spassword: ") +#define MISTYPED_PASS _("Sorry, passwords do not match.") + +/* + * here, we make a definition for the externally accessible function + * in this file (this definition is required for static a module + * but strongly encouraged generally) it is used to instruct the + * modules include file to define the function prototypes. + */ + +#define PAM_SM_PASSWORD + +#include <security/pam_modules.h> +#include <security/_pam_macros.h> +#include <security/pam_ext.h> + +/* argument parsing */ +#define PAM_DEBUG_ARG 0x0001 + +struct module_options { + int retry_times; + pwquality_settings_t *pwq; +}; + +#define CO_RETRY_TIMES 1 + +static int +_pam_parse (pam_handle_t *pamh, struct module_options *opt, + int argc, const char **argv) +{ + int ctrl = 0; + pwquality_settings_t *pwq; + + pwq = pwquality_default_settings(); + if (pwq == NULL) + return -1; + + /* just log error here */ + if (pwquality_read_config(pwq, NULL)) + pam_syslog(pamh, LOG_ERR, + "Reading pwquality configuration file failed: %m"); + + /* step through arguments */ + for (ctrl = 0; argc-- > 0; ++argv) { + char *ep = NULL; + + if (!strcmp(*argv, "debug")) + ctrl |= PAM_DEBUG_ARG; + else if (!strncmp(*argv, "type=", 5)) + pam_set_item (pamh, PAM_AUTHTOK_TYPE, *argv+5); + else if (!strncmp(*argv, "retry=", 6)) { + opt->retry_times = strtol(*argv+6, &ep, 10); + if (!ep || (opt->retry_times < 1)) + opt->retry_times = CO_RETRY_TIMES; + } else if (!strncmp(*argv, "reject_username", 15)) { + /* ignored for compatibility with pam_cracklib */ + } else if (!strncmp(*argv, "authtok_type", 12)) { + /* for pam_get_authtok, ignore */; + } else if (!strncmp(*argv, "use_authtok", 11)) { + /* for pam_get_authtok, ignore */; + } else if (!strncmp(*argv, "use_first_pass", 14)) { + /* for pam_get_authtok, ignore */; + } else if (!strncmp(*argv, "try_first_pass", 14)) { + /* for pam_get_authtok, ignore */; + } else if (pwquality_set_option(pwq, *argv)) { + pam_syslog(pamh, LOG_ERR, + "pam_parse: unknown or broken option; %s", *argv); + } + } + + opt->pwq = pwq; + + return ctrl; +} + +static const char * +make_error_message(int rv, const char *crack_msg) +{ + switch(rv) { + case PWQ_ERROR_MEM_ALLOC: + return _("memory allocation error"); + case PWQ_ERROR_SAME_PASSWORD: + return _("is the same as the old one"); + case PWQ_ERROR_PALINDROME: + return _("is a palindrome"); + case PWQ_ERROR_CASE_CHANGES_ONLY: + return _("case changes only"); + case PWQ_ERROR_TOO_SIMILAR: + return _("is too similar to the old one"); + case PWQ_ERROR_MIN_DIGITS: + case PWQ_ERROR_MIN_UPPERS: + case PWQ_ERROR_MIN_LOWERS: + case PWQ_ERROR_MIN_OTHERS: + case PWQ_ERROR_MIN_LENGTH: + return _("is too simple"); + case PWQ_ERROR_ROTATED: + return _("is rotated"); + case PWQ_ERROR_MIN_CLASSES: + return _("not enough character classes"); + case PWQ_ERROR_MAX_CONSECUTIVE: + return _("contains too many same characters consecutively"); + case PWQ_ERROR_EMPTY_PASSWORD: + return _("No password supplied"); + case PWQ_ERROR_CRACKLIB_CHECK: + return crack_msg; + default: + return _("Error in service module"); + } +} + +PAM_EXTERN int +pam_sm_chauthtok(pam_handle_t *pamh, int flags, + int argc, const char **argv) +{ + int ctrl; + struct module_options options; + + memset(&options, 0, sizeof(options)); + options.retry_times = CO_RETRY_TIMES; + + ctrl = _pam_parse(pamh, &options, argc, argv); + if (ctrl < 0) + return PAM_BUF_ERR; + + if (flags & PAM_PRELIM_CHECK) { + /* Check for passwd dictionary + * We cannot do that, since the original path is compiled + * into the cracklib library and we don't know it. + */ + return PAM_SUCCESS; + } else if (flags & PAM_UPDATE_AUTHTOK) { + int retval; + const void *oldtoken; + int tries; + + retval = pam_get_item(pamh, PAM_OLDAUTHTOK, &oldtoken); + if (retval != PAM_SUCCESS) { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh, LOG_ERR, "Can not get old passwd"); + oldtoken = NULL; + } + + tries = 0; + while (tries < options.retry_times) { + const char *crack_msg; + const char *newtoken = NULL; + + tries++; + + /* Planned modus operandi: + * Get a passwd. + * Verify it against libpwquality. + * If okay get it a second time. + * Check to be the same with the first one. + * set PAM_AUTHTOK and return + */ + + retval = pam_get_authtok_noverify(pamh, &newtoken, NULL); + if (retval != PAM_SUCCESS) { + pam_syslog(pamh, LOG_ERR, "pam_get_authtok_noverify returned error: %s", + pam_strerror(pamh, retval)); + continue; + } else if (newtoken == NULL) { /* user aborted password change, quit */ + return PAM_AUTHTOK_ERR; + } + + /* now test this passwd against libpwquality */ + retval = pwquality_check(options.pwq, newtoken, oldtoken, &crack_msg); + + if (retval < 0) { + const char *msg; + msg = make_error_message(retval, crack_msg); + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh, LOG_DEBUG, "bad password: %s", msg); + pam_error(pamh, _("BAD PASSWORD: %s"), msg); + + if (getuid() || (flags & PAM_CHANGE_EXPIRED_AUTHTOK)) { + pam_set_item(pamh, PAM_AUTHTOK, NULL); + retval = PAM_AUTHTOK_ERR; + continue; + } + } else { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh, LOG_DEBUG, "password score: %d", retval); + } + + retval = pam_get_authtok_verify(pamh, &newtoken, NULL); + if (retval != PAM_SUCCESS) { + pam_syslog(pamh, LOG_ERR, "pam_get_authtok_verify returned error: %s", + pam_strerror(pamh, retval)); + pam_set_item(pamh, PAM_AUTHTOK, NULL); + continue; + } else if (newtoken == NULL) { /* user aborted password change, quit */ + return PAM_AUTHTOK_ERR; + } + + return PAM_SUCCESS; + } + + pam_set_item (pamh, PAM_AUTHTOK, NULL); + + /* if we have only one try, we can use the real reason, + * else say that there were too many tries. */ + if (options.retry_times > 1) + return PAM_MAXTRIES; + else + return retval; + } else { + if (ctrl & PAM_DEBUG_ARG) + pam_syslog(pamh, LOG_NOTICE, "UNKNOWN flags setting %02X",flags); + } + + return PAM_SERVICE_ERR; +} + + + +#ifdef PAM_STATIC +/* static module data */ +struct pam_module _pam_pwquality_modstruct = { + "pam_pwquality", + NULL, + NULL, + NULL, + NULL, + NULL, + pam_sm_chauthtok +}; +#endif + +/* + * Copyright (c) Cristian Gafton <gafton@redhat.com>, 1996. + * All rights reserved + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The following copyright was appended for the long password support + * added with the libpam 0.58 release: + * + * Modificaton Copyright (c) Philip W. Dalrymple III <pwd@mdtsoft.com> + * 1997. All rights reserved + * + * THE MODIFICATION THAT PROVIDES SUPPORT FOR LONG PASSWORD TYPE CHECKING TO + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/pwmake.c b/src/pwmake.c new file mode 100644 index 0000000..876ef1c --- /dev/null +++ b/src/pwmake.c @@ -0,0 +1,108 @@ +/* + * pwmake - a simple tool for password generation + * + * See the end of the file for Copyright and License Information + */ + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <errno.h> + +#include "pwquality.h" + +int +usage(const char *progname) { + fprintf(stderr, _("Usage: %s <entropy-bits>\n"), progname); +} + +static const char * +make_error_message(int rv) +{ + switch(rv) { + case PWQ_ERROR_MEM_ALLOC: + return _("Memory allocation error"); + case PWQ_ERROR_RNG: + return _("Cannot obtain random numbers from the RNG device"); + case PWQ_ERROR_GENERATION_FAILED: + return _("Password generation failed - required entropy too low for settings"); + default: + return _("Unknown error"); + } +} + +/* score a password */ +int +main(int argc, char *argv[]) +{ + pwquality_settings_t *pwq; + char *password; + int rv; + int bits; + + if (argc != 2) { + usage(argv[0]); + exit(3); + } + + bits = atoi(argv[1]); + + pwq = pwquality_default_settings(); + if (pwq == NULL) { + fprintf(stderr, "Error: %s\n", _("Error: Memory allocation error")); + exit(2); + } + + pwquality_read_config(pwq, NULL); + + rv = pwquality_generate(pwq, bits, &password); + + if (rv != 0) { + fprintf(stderr, "Error: %s\n", make_error_message(rv)); + exit(1); + } + + printf("%s\n", password); + free(password); + return 0; +} + +/* + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/pwqprivate.h b/src/pwqprivate.h new file mode 100644 index 0000000..500c4e6 --- /dev/null +++ b/src/pwqprivate.h @@ -0,0 +1,88 @@ +/* + * libpwquality internal header + * + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * See the end of the file for the License Information + */ + +#ifndef PWQPRIVATE_H +#define PWQPRIVATE_H + +#include "pwquality.h" + +struct pwquality_settings { + int diff_ok; + int diff_ignore; + int min_length; + int dig_credit; + int up_credit; + int low_credit; + int oth_credit; + int min_class; + int max_repeat; + char *dict_path; + +}; + +struct setting_mapping { + const char *name; + int id; + int type; +}; + +#define PWQ_DEFAULT_DIFF_OK 5 +#define PWQ_DEFAULT_DIFF_IGNORE 23 +#define PWQ_DEFAULT_MIN_LENGTH 9 +#define PWQ_DEFAULT_DIG_CREDIT 1 +#define PWQ_DEFAULT_UP_CREDIT 1 +#define PWQ_DEFAULT_LOW_CREDIT 1 +#define PWQ_DEFAULT_OTH_CREDIT 1 + +#define PWQ_TYPE_INT 1 +#define PWQ_TYPE_STR 2 +#define PWQ_TYPE_SET 3 + +#define PWQ_BASE_MIN_LENGTH 6 /* used when lower than this value of min len is set */ +#define PWQ_NUM_CLASSES 4 +#define PWQ_NUM_GENERATION_TRIES 3 /* how many times to try to generate the random password if it fails the check */ + +#ifndef PWQUALITY_DEFAULT_CFGFILE +#define PWQUALITY_DEFAULT_CFGFILE "/etc/security/pwquality.conf" +#endif + +#endif /* PWQPRIVATE_H */ + +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/pwquality.h b/src/pwquality.h new file mode 100644 index 0000000..5e7105b --- /dev/null +++ b/src/pwquality.h @@ -0,0 +1,139 @@ +/* + * libpwquality main API code header + * + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * See the end of the file for the License Information + */ + +#ifndef PWQUALITY_H +#define PWQUALITY_H + +#define PWQ_SETTING_DIFF_OK 1 +#define PWQ_SETTING_DIFF_IGNORE 2 +#define PWQ_SETTING_MIN_LENGTH 3 +#define PWQ_SETTING_DIG_CREDIT 4 +#define PWQ_SETTING_UP_CREDIT 5 +#define PWQ_SETTING_LOW_CREDIT 6 +#define PWQ_SETTING_OTH_CREDIT 7 +#define PWQ_SETTING_MIN_CLASS 8 +#define PWQ_SETTING_MAX_REPEAT 9 +#define PWQ_SETTING_DICT_PATH 10 + +#define PWQ_MAX_ENTROPY_BITS 256 +#define PWQ_MIN_ENTROPY_BITS 56 + +#define PWQ_ERROR_SUCCESS 0 /* implicit, not used in the library code */ +#define PWQ_ERROR_FATAL_FAILURE -1 +#define PWQ_ERROR_INTEGER -2 +#define PWQ_ERROR_CFGFILE_OPEN -3 +#define PWQ_ERROR_CFGFILE_MALFORMED -4 +#define PWQ_ERROR_UNKNOWN_SETTING -5 +#define PWQ_ERROR_NON_INT_SETTING -6 +#define PWQ_ERROR_NON_STR_SETTING -7 +#define PWQ_ERROR_MEM_ALLOC -8 +#define PWQ_ERROR_TOO_SIMILAR -9 +#define PWQ_ERROR_MIN_DIGITS -10 +#define PWQ_ERROR_MIN_UPPERS -11 +#define PWQ_ERROR_MIN_LOWERS -12 +#define PWQ_ERROR_MIN_OTHERS -13 +#define PWQ_ERROR_MIN_LENGTH -14 +#define PWQ_ERROR_PALINDROME -15 +#define PWQ_ERROR_CASE_CHANGES_ONLY -16 +#define PWQ_ERROR_ROTATED -17 +#define PWQ_ERROR_MIN_CLASSES -18 +#define PWQ_ERROR_MAX_CONSECUTIVE -19 +#define PWQ_ERROR_EMPTY_PASSWORD -20 +#define PWQ_ERROR_SAME_PASSWORD -21 +#define PWQ_ERROR_CRACKLIB_CHECK -22 +#define PWQ_ERROR_RNG -23 +#define PWQ_ERROR_GENERATION_FAILED -24 + +typedef struct pwquality_settings pwquality_settings_t; + +/* returns default pwquality settings to be used in other library calls */ +pwquality_settings_t * +pwquality_default_settings(void); + +/* frees pwquality settings data */ +void +pwquality_free_settings(pwquality_settings_t *pwq); + +/* parse the configuration file (if NULL then the default one) */ +int +pwquality_read_config(pwquality_settings_t *pwq, const char *cfgfile); + +/* useful for setting the options as configured on a pam module + * command line in form of <opt>=<val> */ +int +pwquality_set_option(pwquality_settings_t *pwq, const char *option); + +/* set value of an integer setting */ +int +pwquality_set_int_value(pwquality_settings_t *pwq, int setting, int value); + +/* set value of a string setting */ +int +pwquality_set_str_value(pwquality_settings_t *pwq, int setting, + const char *value); + +/* get value of an integer setting, or -1 if setting unknown */ +int +pwquality_get_int_value(pwquality_settings_t *pwq, int setting); + +/* get value of a string setting, or NULL if setting unknown */ +const char * +pwquality_get_str_value(pwquality_settings_t *pwq, int setting); + +/* generate a random password of entropy_bits entropy and check it according to + * the settings */ +int +pwquality_generate(pwquality_settings_t *pwq, int entropy_bits, + char **password); + +/* check the password according to the settings + * it returns either score <0-100>, negative error number, + * and in case of PWQ_ERROR_CRACKLIB also auxiliary + * error message returned from cracklib + * The old password is optional and can be NULL. + * The score depends on PWQ_SETTING_MIN_LENGTH. If it is set higher, + * the score for the same passwords will be lower. */ +int +pwquality_check(pwquality_settings_t *pwq, const char *password, + const char *oldpassword, const char **error); + +#endif /* PWQUALITY_H */ + +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/pwscore.c b/src/pwscore.c new file mode 100644 index 0000000..9046bbb --- /dev/null +++ b/src/pwscore.c @@ -0,0 +1,143 @@ +/* + * pwscore - a simple tool for password scoring + * + * See the end of the file for Copyright and License Information + */ + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <errno.h> + +#include "pwquality.h" + +int +usage(const char *progname) { + fprintf(stderr, _("Usage: %s\n"), progname); + fprintf(stderr, _(" The command reads the password to be scored from the standard input.\n")); +} + +static const char * +make_error_message(int rv, const char *crack_msg) +{ + static char buf[200]; + + switch(rv) { + case PWQ_ERROR_MEM_ALLOC: + return _("Memory allocation error"); + case PWQ_ERROR_SAME_PASSWORD: + return _("The password is the same as the old one"); + case PWQ_ERROR_PALINDROME: + return _("The password is a palindrome"); + case PWQ_ERROR_CASE_CHANGES_ONLY: + return _("The password differs with case changes only"); + case PWQ_ERROR_TOO_SIMILAR: + return _("The password is too similar to the old one"); + case PWQ_ERROR_MIN_DIGITS: + return _("The password contains too few digits"); + case PWQ_ERROR_MIN_UPPERS: + return _("The password contains too few uppercase letters"); + case PWQ_ERROR_MIN_LOWERS: + return _("The password contains too few lowercase letters"); + case PWQ_ERROR_MIN_OTHERS: + return _("The password contains too few non-alphanumeric characters"); + case PWQ_ERROR_MIN_LENGTH: + return _("The password is too short"); + case PWQ_ERROR_ROTATED: + return _("The password is just rotated old one"); + case PWQ_ERROR_MIN_CLASSES: + return _("The password does not contain enough character classes"); + case PWQ_ERROR_MAX_CONSECUTIVE: + return _("The password contains too many same characters consecutively"); + case PWQ_ERROR_EMPTY_PASSWORD: + return _("No password supplied"); + case PWQ_ERROR_CRACKLIB_CHECK: + snprintf(buf, sizeof(buf), _("The password fails the dictionary check - %s"), crack_msg); + return buf; + default: + return _("Unknown error"); + } +} + + +/* score a password */ +int +main(int argc, char *argv[]) +{ + pwquality_settings_t *pwq; + int rv; + const char *crack_msg; + char buf[1024]; + size_t len; + + if (argc != 1) { + usage(argv[0]); + exit(3); + } + + if (fgets(buf, sizeof(buf), stdin) == NULL || (len = strlen(buf)) == 0) { + fprintf(stderr, "Error: Could not obtain the password to be scored\n"); + exit(4); + } + if (buf[len - 1] == '\n') + buf[len - 1] = '\0'; + + pwq = pwquality_default_settings(); + if (pwq == NULL) { + fprintf(stderr, _("Error: %s\n"), make_error_message(PWQ_ERROR_MEM_ALLOC, NULL)); + exit(2); + } + + pwquality_read_config(pwq, NULL); + + rv = pwquality_check(pwq, buf, NULL, &crack_msg); + + if (rv < 0) { + fprintf(stderr, _("Password quality check failed: %s\n"), + make_error_message(rv, crack_msg)); + exit(1); + } + + printf("%d\n", rv); + return 0; +} + +/* + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/src/settings.c b/src/settings.c new file mode 100644 index 0000000..70c0c2e --- /dev/null +++ b/src/settings.c @@ -0,0 +1,350 @@ +/* + * libpwquality main API code for reading and manipulation of settings + * + * See the end of the file for Copyright and License Information + */ + +#include "config.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <limits.h> +#include <ctype.h> +#include <errno.h> + +#include "pwquality.h" +#include "pwqprivate.h" + +/* returns default pwquality settings to be used in other library calls */ +pwquality_settings_t * +pwquality_default_settings(void) +{ + pwquality_settings_t *pwq; + + pwq = calloc(1, sizeof(*pwq)); + if (!pwq) + return NULL; + + pwq->diff_ok = PWQ_DEFAULT_DIFF_OK; + pwq->diff_ignore = PWQ_DEFAULT_DIFF_IGNORE; + pwq->min_length = PWQ_DEFAULT_MIN_LENGTH; + pwq->dig_credit = PWQ_DEFAULT_DIG_CREDIT; + pwq->up_credit = PWQ_DEFAULT_UP_CREDIT; + pwq->low_credit = PWQ_DEFAULT_LOW_CREDIT; + pwq->oth_credit = PWQ_DEFAULT_OTH_CREDIT; + /* pwq->dict_path = NULL; unneeded */ + + return pwq; +} + +/* frees pwquality settings data */ +void +pwquality_free_settings(pwquality_settings_t *pwq) +{ + if (pwq) { + free(pwq->dict_path); + free(pwq); + } +} + + +static const struct setting_mapping s_map[] = { + { "difok", PWQ_SETTING_DIFF_OK, PWQ_TYPE_INT}, + { "difignore", PWQ_SETTING_DIFF_IGNORE, PWQ_TYPE_INT}, + { "minlen", PWQ_SETTING_MIN_LENGTH, PWQ_TYPE_INT}, + { "dcredit", PWQ_SETTING_DIG_CREDIT, PWQ_TYPE_INT}, + { "ucredit", PWQ_SETTING_UP_CREDIT, PWQ_TYPE_INT}, + { "lcredit", PWQ_SETTING_LOW_CREDIT, PWQ_TYPE_INT}, + { "ocredit", PWQ_SETTING_OTH_CREDIT, PWQ_TYPE_INT}, + { "minclass", PWQ_SETTING_MIN_CLASS, PWQ_TYPE_INT}, + { "maxrepeat", PWQ_SETTING_MAX_REPEAT, PWQ_TYPE_INT}, + { "dictpath", PWQ_SETTING_DICT_PATH, PWQ_TYPE_STR} +}; + +/* set setting name with value */ +static int +set_name_value(pwquality_settings_t *pwq, const char *name, const char *value) +{ + int i; + long val; + char *endptr; + + for (i = 0; i < sizeof(s_map)/sizeof(s_map[0]); i++) { + if (strcasecmp(s_map[i].name, name) == 0) { + switch(s_map[i].type) { + case PWQ_TYPE_INT: + errno = 0; + val = strtol(value, &endptr, 10); + if (errno != 0 || *value == '\0' || + *endptr != '\0' || val >= INT_MAX || val <= INT_MIN) { + return PWQ_ERROR_INTEGER; + } + return pwquality_set_int_value(pwq, s_map[i].id, + (int)val); + case PWQ_TYPE_STR: + return pwquality_set_str_value(pwq, s_map[i].id, + value); + case PWQ_TYPE_SET: + return pwquality_set_int_value(pwq, s_map[i].id, + 1); + } + } + } + return PWQ_ERROR_UNKNOWN_SETTING; +} + +#define PWQSETTINGS_MAX_LINELEN 1023 + +/* parse the configuration file (if NULL then the default one) */ +int +pwquality_read_config(pwquality_settings_t *pwq, const char *cfgfile) +{ + FILE *f; + char linebuf[PWQSETTINGS_MAX_LINELEN+1]; + int rv = 0; + + if (cfgfile == NULL) + cfgfile = PWQUALITY_DEFAULT_CFGFILE; + + f = fopen(cfgfile, "r"); + if (f == NULL) + return PWQ_ERROR_CFGFILE_OPEN; + + while (fgets(linebuf, sizeof(linebuf), f) != NULL) { + size_t len; + char *ptr; + char *name; + + len = strlen(linebuf); + if (linebuf[len - 1] != '\n' && !feof(f)) { + (void) fclose(f); + return PWQ_ERROR_CFGFILE_MALFORMED; + } + + if ((ptr=strchr(linebuf, '#')) != NULL) { + *ptr = '\0'; + } else { + ptr = linebuf + len; + } + + /* drop terminating whitespace including the \n */ + do { + if (!isspace(*(ptr-1))) { + *ptr = '\0'; + break; + } + --ptr; + } while (ptr > linebuf); + + /* skip initial whitespace */ + for (ptr = linebuf; isspace(*ptr); ptr++); + if (*ptr == '\0') + continue; + + name = ptr; + while (*ptr != '\0') { + if (isspace(*ptr)) { + *ptr = '\0'; + ++ptr; + break; + } + ++ptr; + } + while (*ptr != '\0') { + if (!isspace(*ptr)) { + break; + } + ++ptr; + } + + if ((rv=set_name_value(pwq, name, ptr)) != 0) { + break; + } + } + + (void)fclose(f); + return rv; +} + +/* useful for setting the options as configured on a pam module + * command line in form of <opt>=<val> */ +int +pwquality_set_option(pwquality_settings_t *pwq, const char *option) +{ + char name[80]; /* no options with name longer than that */ + const char *value; + size_t len; + + value = strchr(option, '='); + if (value == NULL) { + len = strlen(option); + value = option + len; /* just empty value */ + } else { + len = value - option; + ++value; + } + if (len > sizeof(name) - 1) + return PWQ_ERROR_UNKNOWN_SETTING; + + strncpy(name, option, len); + name[sizeof(name) - 1] = '\0'; + + return set_name_value(pwq, name, value); +} + +/* set value of an integer setting */ +int +pwquality_set_int_value(pwquality_settings_t *pwq, int setting, int value) +{ + switch(setting) { + case PWQ_SETTING_DIFF_OK: + pwq->diff_ok = value; + break; + case PWQ_SETTING_DIFF_IGNORE: + pwq->diff_ignore = value; + break; + case PWQ_SETTING_MIN_LENGTH: + if (value < PWQ_BASE_MIN_LENGTH) + value = PWQ_BASE_MIN_LENGTH; + pwq->min_length = value; + break; + case PWQ_SETTING_DIG_CREDIT: + pwq->dig_credit = value; + break; + case PWQ_SETTING_UP_CREDIT: + pwq->up_credit = value; + break; + case PWQ_SETTING_LOW_CREDIT: + pwq->low_credit = value; + break; + case PWQ_SETTING_OTH_CREDIT: + pwq->oth_credit = value; + break; + case PWQ_SETTING_MIN_CLASS: + if (value > PWQ_NUM_CLASSES) + value = PWQ_NUM_CLASSES; + pwq->min_class = value; + break; + case PWQ_SETTING_MAX_REPEAT: + pwq->max_repeat = value; + break; + default: + return PWQ_ERROR_NON_INT_SETTING; + } + + return 0; +} + +/* set value of a string setting */ +int +pwquality_set_str_value(pwquality_settings_t *pwq, int setting, + const char *value) +{ + char *dup; + + if (value == NULL || *value == '\0') { + dup = NULL; + } else { + dup = strdup(value); + if (dup == NULL) + return PWQ_ERROR_MEM_ALLOC; + } + + switch(setting) { + case PWQ_SETTING_DICT_PATH: + pwq->dict_path = dup; + break; + default: + return PWQ_ERROR_NON_STR_SETTING; + } + + return 0; +} + +/* get value of an integer setting, or -1 if setting unknown */ +int +pwquality_get_int_value(pwquality_settings_t *pwq, int setting) +{ + switch(setting) { + case PWQ_SETTING_DIFF_OK: + return pwq->diff_ok; + break; + case PWQ_SETTING_DIFF_IGNORE: + return pwq->diff_ignore; + break; + case PWQ_SETTING_MIN_LENGTH: + return pwq->min_length; + break; + case PWQ_SETTING_DIG_CREDIT: + return pwq->dig_credit; + break; + case PWQ_SETTING_UP_CREDIT: + return pwq->up_credit; + break; + case PWQ_SETTING_LOW_CREDIT: + return pwq->low_credit; + break; + case PWQ_SETTING_OTH_CREDIT: + return pwq->oth_credit; + break; + case PWQ_SETTING_MIN_CLASS: + return pwq->min_class; + break; + case PWQ_SETTING_MAX_REPEAT: + return pwq->max_repeat; + break; + default: + return -1; + } +} + +/* get value of a string setting, or NULL if setting unknown */ +const char * +pwquality_get_str_value(pwquality_settings_t *pwq, int setting) +{ + switch(setting) { + case PWQ_SETTING_DICT_PATH: + return pwq->dict_path; + break; + default: + return NULL; + } + +} + +/* + * Copyright (c) Red Hat, Inc, 2011 + * Copyright (c) Tomas Mraz <tm@t8m.info>, 2011 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, and the entire permission notice in its entirety, + * including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * ALTERNATIVELY, this product may be distributed under the terms of + * the GNU Public License, in which case the provisions of the GPL are + * required INSTEAD OF the above restrictions. (This clause is + * necessary due to a potential bad interaction between the GPL and + * the restrictions contained in a BSD-style copyright.) + * + * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ |