From 09ed626f25fb3e7c57ad7a59e5261ea005aa498f Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 19 Apr 2009 01:01:09 +0100 Subject: [PATCH 1/1] Imported Upstream version 1.4.1~pre4~b --- ABOUT-NLS | 396 ++ AUTHORS | 1 + COPYING | 340 ++ ChangeLog | 1234 ++++ Documentation/FAQ | 43 + Documentation/HARDWARE-NOTES | 17 + Documentation/Makefile.am | 23 + Documentation/Makefile.in | 354 ++ Documentation/Ovislink-HOWTO.html | 367 ++ Documentation/README.RPM | 7 + Documentation/README.ap-gl | 3 + Documentation/Ukrainian/INSTALL | 28 + Documentation/Ukrainian/README | 26 + Documentation/ap-config.8 | 151 + Documentation/ap-mrtg.8 | 143 + Documentation/ap-trapd.8 | 132 + INSTALL | 273 + Makefile.am | 31 + Makefile.in | 581 ++ NEWS | 127 + README | 177 + THANKS | 45 + TODO | 20 + aclocal.m4 | 2444 ++++++++ ap-gl/Makefile.am | 28 + ap-gl/Makefile.in | 439 ++ ap-gl/ap-gl.c | 215 + ap-gl/auth_mac.c | 471 ++ ap-gl/bridge.c | 490 ++ ap-gl/stations.c | 201 + ap-utils.spec | 78 + config.h.in | 280 + config/config.guess | 1400 +++++ config/config.rpath | 513 ++ config/config.sub | 1469 +++++ config/depcomp | 479 ++ config/install-sh | 276 + config/missing | 336 ++ config/mkinstalldirs | 111 + configure | 8921 +++++++++++++++++++++++++++++ configure.in | 115 + intl/ChangeLog | 4 + intl/Makefile.in | 337 ++ intl/VERSION | 1 + intl/bindtextdom.c | 369 ++ intl/config.charset | 454 ++ intl/dcgettext.c | 58 + intl/dcigettext.c | 1167 ++++ intl/dcngettext.c | 60 + intl/dgettext.c | 59 + intl/dngettext.c | 61 + intl/eval-plural.h | 106 + intl/explodename.c | 192 + intl/finddomain.c | 198 + intl/gettext.c | 64 + intl/gettextP.h | 201 + intl/gmo.h | 100 + intl/hash-string.h | 59 + intl/intl-compat.c | 166 + intl/l10nflist.c | 400 ++ intl/libgnuintl.h | 137 + intl/loadinfo.h | 121 + intl/loadmsgcat.c | 445 ++ intl/localcharset.c | 345 ++ intl/locale.alias | 78 + intl/localealias.c | 419 ++ intl/localename.c | 694 +++ intl/ngettext.c | 68 + intl/os2compat.c | 101 + intl/os2compat.h | 46 + intl/osdep.c | 24 + intl/plural-exp.c | 156 + intl/plural-exp.h | 122 + intl/plural.c | 1322 +++++ intl/plural.y | 409 ++ intl/ref-add.sin | 31 + intl/ref-del.sin | 26 + intl/textdomain.c | 142 + lib/Makefile.am | 20 + lib/Makefile.in | 440 ++ lib/ap-curses.h | 26 + lib/ap-utils.h | 349 ++ lib/ap_search.c | 461 ++ lib/aps.c | 604 ++ lib/ber.c | 101 + lib/cmd.c | 181 + lib/common.c | 290 + lib/file.c | 344 ++ lib/input.c | 355 ++ lib/menu.c | 118 + lib/oui.c | 6053 +++++++++++++++++++ lib/radio.c | 309 + lib/reset.c | 60 + lib/scr.c | 159 + lib/set_community.c | 156 + lib/snmp.c | 269 + lib/stat.c | 539 ++ lib/sysinfo.c | 431 ++ lib/test.c | 299 + lib/wep.c | 420 ++ lib/wlan.c | 1109 ++++ po/Makefile.in.in | 317 + po/Makevars | 25 + po/POTFILES.in | 35 + po/ap-utils.pot | 1552 +++++ po/fr.gmo | Bin 0 -> 15405 bytes po/fr.po | 1885 ++++++ po/nl.gmo | Bin 0 -> 14301 bytes po/nl.po | 1776 ++++++ po/pl.gmo | Bin 0 -> 13616 bytes po/pl.po | 2142 +++++++ po/remove-potcdate.sin | 19 + po/ro.gmo | Bin 0 -> 14690 bytes po/ro.po | 1767 ++++++ po/uk.gmo | Bin 0 -> 30408 bytes po/uk.po | 1594 ++++++ src/Makefile.am | 33 + src/Makefile.in | 496 ++ src/ap-config.c | 264 + src/ap-mrtg.c | 411 ++ src/ap-trapd.c | 318 + src/auth_mac.c | 594 ++ src/bridge.c | 583 ++ src/nwn_advanced.c | 136 + src/nwn_latest.c | 129 + src/stations.c | 355 ++ 126 files changed, 59051 insertions(+) create mode 100644 ABOUT-NLS create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 Documentation/FAQ create mode 100644 Documentation/HARDWARE-NOTES create mode 100644 Documentation/Makefile.am create mode 100644 Documentation/Makefile.in create mode 100644 Documentation/Ovislink-HOWTO.html create mode 100644 Documentation/README.RPM create mode 100644 Documentation/README.ap-gl create mode 100644 Documentation/Ukrainian/INSTALL create mode 100644 Documentation/Ukrainian/README create mode 100644 Documentation/ap-config.8 create mode 100644 Documentation/ap-mrtg.8 create mode 100644 Documentation/ap-trapd.8 create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 THANKS create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100644 ap-gl/Makefile.am create mode 100644 ap-gl/Makefile.in create mode 100644 ap-gl/ap-gl.c create mode 100644 ap-gl/auth_mac.c create mode 100644 ap-gl/bridge.c create mode 100644 ap-gl/stations.c create mode 100644 ap-utils.spec create mode 100644 config.h.in create mode 100755 config/config.guess create mode 100644 config/config.rpath create mode 100755 config/config.sub create mode 100755 config/depcomp create mode 100755 config/install-sh create mode 100755 config/missing create mode 100755 config/mkinstalldirs create mode 100755 configure create mode 100644 configure.in create mode 100644 intl/ChangeLog create mode 100644 intl/Makefile.in create mode 100644 intl/VERSION create mode 100644 intl/bindtextdom.c create mode 100644 intl/config.charset create mode 100644 intl/dcgettext.c create mode 100644 intl/dcigettext.c create mode 100644 intl/dcngettext.c create mode 100644 intl/dgettext.c create mode 100644 intl/dngettext.c create mode 100644 intl/eval-plural.h create mode 100644 intl/explodename.c create mode 100644 intl/finddomain.c create mode 100644 intl/gettext.c create mode 100644 intl/gettextP.h create mode 100644 intl/gmo.h create mode 100644 intl/hash-string.h create mode 100644 intl/intl-compat.c create mode 100644 intl/l10nflist.c create mode 100644 intl/libgnuintl.h create mode 100644 intl/loadinfo.h create mode 100644 intl/loadmsgcat.c create mode 100644 intl/localcharset.c create mode 100644 intl/locale.alias create mode 100644 intl/localealias.c create mode 100644 intl/localename.c create mode 100644 intl/ngettext.c create mode 100644 intl/os2compat.c create mode 100644 intl/os2compat.h create mode 100644 intl/osdep.c create mode 100644 intl/plural-exp.c create mode 100644 intl/plural-exp.h create mode 100644 intl/plural.c create mode 100644 intl/plural.y create mode 100644 intl/ref-add.sin create mode 100644 intl/ref-del.sin create mode 100644 intl/textdomain.c create mode 100644 lib/Makefile.am create mode 100644 lib/Makefile.in create mode 100644 lib/ap-curses.h create mode 100644 lib/ap-utils.h create mode 100644 lib/ap_search.c create mode 100644 lib/aps.c create mode 100644 lib/ber.c create mode 100644 lib/cmd.c create mode 100644 lib/common.c create mode 100644 lib/file.c create mode 100644 lib/input.c create mode 100644 lib/menu.c create mode 100644 lib/oui.c create mode 100644 lib/radio.c create mode 100644 lib/reset.c create mode 100644 lib/scr.c create mode 100644 lib/set_community.c create mode 100644 lib/snmp.c create mode 100644 lib/stat.c create mode 100644 lib/sysinfo.c create mode 100644 lib/test.c create mode 100644 lib/wep.c create mode 100644 lib/wlan.c create mode 100644 po/Makefile.in.in create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/ap-utils.pot create mode 100644 po/fr.gmo create mode 100644 po/fr.po create mode 100644 po/nl.gmo create mode 100644 po/nl.po create mode 100644 po/pl.gmo create mode 100644 po/pl.po create mode 100644 po/remove-potcdate.sin create mode 100644 po/ro.gmo create mode 100644 po/ro.po create mode 100644 po/uk.gmo create mode 100644 po/uk.po create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/ap-config.c create mode 100644 src/ap-mrtg.c create mode 100644 src/ap-trapd.c create mode 100644 src/auth_mac.c create mode 100644 src/bridge.c create mode 100644 src/nwn_advanced.c create mode 100644 src/nwn_latest.c create mode 100644 src/stations.c diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..022965c --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,396 @@ +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 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 at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +Quick configuration advice +========================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +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. If not, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is _not_ required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will respectively bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_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.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages have usually 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. + +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. 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 country 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'. + + 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. + +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://www.iro.umontreal.ca/contrib/po/HTML/', in the "National 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 `translation@iro.umontreal.ca' 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 skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of March +2002. 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 bg ca cs da de el en eo es et fi fr + +-------------------------------------+ + a2ps | [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + clisp | [] [] [] [] | + cpio | [] [] [] [] | + diffutils | [] [] [] [] [] [] | + enscript | [] [] | + error | [] [] | + fetchmail | () [] [] [] () | + fileutils | [] [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] | + gas | [] [] | + gawk | [] [] | + gcal | [] [] | + gcc | [] [] | + gettext | [] [] [] [] [] | + gnupg | [] [] [] [] [] [] | + gprof | [] [] | + grep | [] [] [] [] [] [] | + hello | [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + indent | [] [] [] [] [] | + jpilot | () [] [] [] | + jwhois | [] [] | + kbd | [] [] | + ld | [] [] | + libc | [] [] [] [] [] [] [] | + lilypond | [] [] | + lynx | [] [] [] [] | + m4 | [] [] [] [] [] | + make | [] [] [] [] | + mysecretdiary | [] [] | + nano | [] () [] [] [] [] | + nano_1_0 | [] () [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] | + ptx | [] [] [] [] [] | + python | | + recode | [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] | + sketch | () [] () | + soundtracker | [] [] [] | + sp | | + tar | [] [] [] [] [] [] | + texinfo | [] [] [] [] [] | + textutils | [] [] [] [] [] | + util-linux | [] [] [] [] | + vorbis-tools | | + wdiff | [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + +-------------------------------------+ + bg ca cs da de el en eo es et fi fr + 1 12 11 31 36 9 1 8 39 15 1 50 + + gl he hr hu id it ja ko lv nb nl nn + +-------------------------------------+ + a2ps | () () [] | + bash | | + bfd | [] | + binutils | [] | + bison | [] [] | + clisp | [] | + cpio | [] [] [] | + diffutils | [] [] [] | + enscript | [] | + error | [] | + fetchmail | | + fileutils | [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] | + gas | | + gawk | [] | + gcal | | + gcc | | + gettext | [] | + gnupg | [] [] [] | + gprof | | + grep | [] | + hello | [] [] [] [] [] [] [] [] [] [] | + id-utils | [] | + indent | [] [] [] | + jpilot | () () | + jwhois | | + kbd | | + ld | | + libc | [] [] [] [] | + lilypond | [] [] | + lynx | [] [] | + m4 | [] [] [] [] | + make | [] [] [] [] | + mysecretdiary | | + nano | [] [] [] () [] () [] | + nano_1_0 | [] [] [] () [] () [] | + opcodes | [] | + parted | [] [] [] | + ptx | [] [] [] [] | + python | | + recode | [] [] [] | + sed | [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] | + sharutils | [] [] [] | + sketch | () | + soundtracker | [] | + sp | | + tar | [] [] [] | + texinfo | [] [] | + textutils | [] [] | + util-linux | () [] | + vorbis-tools | | + wdiff | | + wget | [] [] [] [] [] | + +-------------------------------------+ + gl he hr hu id it ja ko lv nb nl nn + 19 7 0 4 6 11 22 9 1 8 19 4 + + no pl pt pt_BR ru sk sl sv tr uk zh_TW + +----------------------------------------+ + a2ps | () () () [] [] [] () | 8 + bash | | 4 + bfd | [] [] | 5 + binutils | [] | 4 + bison | [] [] [] | 8 + clisp | | 5 + cpio | [] [] [] [] | 11 + diffutils | [] [] [] [] [] | 14 + enscript | [] [] [] | 6 + error | [] [] [] | 6 + fetchmail | () () [] | 4 + fileutils | [] [] [] [] | 12 + findutils | [] [] [] [] [] [] [] | 18 + flex | [] [] [] | 8 + gas | [] | 3 + gawk | [] [] | 5 + gcal | [] [] | 4 + gcc | [] | 3 + gettext | [] [] [] [] | 10 + gnupg | [] [] [] | 12 + gprof | [] [] | 4 + grep | [] [] [] | 10 + hello | [] [] [] [] [] [] [] | 25 + id-utils | [] [] | 6 + indent | [] [] [] [] | 12 + jpilot | () () | 3 + jwhois | () () [] | 3 + kbd | [] [] | 4 + ld | [] [] | 4 + libc | [] [] [] [] [] [] | 17 + lilypond | [] | 5 + lynx | [] [] [] | 9 + m4 | [] [] [] | 12 + make | [] [] [] [] | 12 + mysecretdiary | [] [] | 4 + nano | () [] [] [] [] | 14 + nano_1_0 | () [] [] [] | 13 + opcodes | [] [] | 6 + parted | [] [] [] | 10 + ptx | [] [] [] [] [] [] | 15 + python | | 0 + recode | [] [] [] [] | 13 + sed | [] [] [] [] [] [] | 21 + sh-utils | [] [] [] [] [] [] [] [] [] | 22 + sharutils | [] [] [] | 12 + sketch | [] () | 3 + soundtracker | [] | 5 + sp | | 0 + tar | [] [] [] [] [] [] [] | 16 + texinfo | [] [] [] | 10 + textutils | [] [] [] [] | 11 + util-linux | [] [] [] | 8 + vorbis-tools | [] | 1 + wdiff | [] [] [] [] | 9 + wget | [] [] [] [] [] [] [] | 20 + +----------------------------------------+ + 35 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW + 55 domains 5 13 2 12 25 11 11 41 34 4 7 489 + + 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 March 2002 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://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. + +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 +to 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 +`translation@iro.umontreal.ca' to make the `.pot' files available to +the translation teams. + diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..263a920 --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +Roman Festchook diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..aa0aea5 --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..52e910c --- /dev/null +++ b/ChangeLog @@ -0,0 +1,1234 @@ +2004-04-04 Dieter Fiebelkorn + * lib/ap_search.c: Compiler Error for ap-utils on Darwin 7.3 (Mac OS X 10.3.3) fix + +2004-03-20 Roman Festchook + * ap-gl/bridge.c: Isolate wireless clients status displaying fixed + * lib/snmp.c: decreased timeout waiting for snmp reply packet to 1 second + * src/ap-mrtg.c: to decrease usage of network and AP CPU AP name only requested if -n option specified + +2004-03-06 Roman Festchook + * src/ap-trapd.c: MAc address logging changed to common ap-utils format (without any dividers) + * configure.in: version 1.4.1pre3 + +2004-02-27 Roman Festchook + * lib/ap-curses.h, configure.in: updates to build with SysV curses lib if ncurses not found + +2004-02-27 Daniel Eisenbud + * lib, src, ap-gl: Solaris and SysV curses build fixes + +2004-02-26 Roman Festchook + * lib/sysinfo.c, lib/wlan.c: fixed Bus error when getting SysInfo structure data from AP on Sun Sparc64 processor + * po/uk.po: updated translation + * lib, ap-gl, src: removed dublicated includes + * lib/ap-utils.h, lib/ap-curses.h, configure.in: updates to build on Solaris with SysV curses lib + * THANKS: updated + +2004-02-25 Vladimir N.Velychko + * Documentation/Ukrainian/*: translation spelling fixes + +2004-02-25 Roman Festchook + * lib, ap-gl, src: removed including config.h from files that include ap-utils.h + * lib/ap-utils.h, configure.in: another updates to MacOS X build + +2004-02-24 Daniel Eisenbud + * lib/wlan.c: fix to make ap-config able to set ESSID on powerpc and probably other bigendian machines + +2004-02-22 Roman Festchook + * src/stations.c; ap-gl/stations.c: added check if AP in Client mode with corresponding warning message to user + * configure.in: version 1.4.1pre2 + +2004-02-21 Roman Festchook + * configure.in: updated to build under MacOS X + +2004-02-10 Roman Festchook + * lib/scr.c: fixed memory leak in scroll_rows function + * lib/wlan.c: fixed wrong keys for changing values for NWN APs + +2004-02-04 Roman Festchook + * configure.in: version 1.4 + * NEWS: main changes added + +2004-01-30 Roman Festchook + * Documentatin/README.ap-gl: added file with notes about ap-gl utility + * TODO: updated + +2004-01-29 Roman Festchook + * ap-gl: changed ATMEL410 -> ATMEL_PRISM name, for safe use removed Config port blocking, merged wireless client isolation (unicast & broadcast). + +2003-12-30 Roman Festchook + * ap-gl: added new utility for ATMEL410 AP with 1.4k.1 firmware and support for RADIUS auth, wireless clients isolation, Repeater mode, Config port blocking, connected APs extended info (MAC, IP, Parent IP, RSSI, LQ, Status, Port) + * lib, src, ap.gl: a lot of internal code moving from program to lib sources + * po/uk.po: translation updated + * TODO: updated + * configure.in: version 1.4pre2 "Happy New Year" release + * src/bridge.c: renamed options "Send back broadcast/unicast traffic) to Isolate wireless clients + +2003-12-28 Ashley Gittins + * src/ap-mrtg.c: changes to support ATMEL12350/ME-102 + +2003-11-27 Roman Festchook + * TODO: updated + +2003-11-27 Jacek Pliszka + * ap-utils.spec, Documentation/README.RPM: added spec file for rpm building + +2003-11-25 Roman Festchook + * po/uk.po: updated + +2003-11-23 Roman Festchook + * po/uk.po: updated to current sources + * src/common.c: changed copyright years to 2001-2003 + * src/ap-mrtg.c: changed copyright years to 2002-2003 + * src/aps.c: table header legenda increased to 3 lines + * TODO: updated with current goals and removed working now things + * configure.in: version 1.3.4pre1 + +2003-11-15 Jacek Pliszka + * src/ap-mrtg.c: added -n name option to ap-mrtg that, if used, checks if name of the AP polled is same as one given + +2003-11-11 Roman Festchook + * src/ap-mrtg.c: fixed to return 999999999 for outgoing traffic when error connecting to AP exist + +2003-10-27 Jan Rafaj + * README,THANKS,TODO: modified + * HARDWARE-NOTES: added. This should keep important hardware-related + informations that the users _must_ read prior using ap-utils. + * reverted parameters order for on_off(), menu_choose() so that + we always use order everywhere + * src/aps.c: + - made ap_viewtype global so that the selected view type + sustains for whole session + - replaced snmp() for SiteSurveyCommand scan with sendto(), + as buggy ATMEL12350 firmware does not confirm SiteSurveyCommand + reception, but goes straight to internal scanning loop. + This allows for attempts to perform SiteSurveyCommand + via wireless interface of the AP, which would previously + time out due to the reluctance of the firmware to send + confirmation, as described above. + * src/bridge.c: disallow remote BSSID option key if AP is in + Access Point mode + * src/common.c: + - again changed/corrected the order of autodetection. + We cannot check against sysDescr OID of ATMEL12350 in first step + becouse ATMEL410 devices would pass this check too and would + be falsely marked as ATMEL12350. + - added back possibility to manually select the AP type. + User is given a choice to either autodetect the device + (default), or specify type manually. The latter may have + advantage if the AP is not actually available via network. + - hide cursor again after user turns back from the subshell + * src/radio.c: implemented detection & setup functions for APs + that give response to operAntennaSettings OID query in 1-byte + format. It seems that these devices do not distinguish between + receiving and transmitting antennas. This is true even for some + APs with single antenna output (Tellus A14 as an example), + where this OID gives really no good to the sum of resulting + functionality (why would you ever need to set up which antenna + is left, right or diversity, if you got just one ? :^) + * lib/ap-utils.h, src/common.c, src/input.c: + - added new function get_pass(). This code has been taken from + common.c, modified and moved to input.c. + - AP type is now displayed once it is selected or autodetected + - maximum password length is 16 characters, not more (originally + it was 32). It is quite possible more than 16 may work + with some devices, but I've never seen an AP MIB that would + define community length > 16 characters. + - made the offsets at which the values are displayed, relative + to the length of option name strings, to ease work for + translators + - yes_no(): newly introduced + - ignore escape key presses in both get_value() and get_pass() + * src/ap_search.c: + - indentation fixes + - if connect_options() is called for discovered APs, the 'type' + argument has to be always > 0, as this is being checked + against in connect_options(). We increment it with one all + the time and decrement back after the check in connect_options(). + Now, the user is not prompted for AP type in connect_options() + if he should not have to be (originally intended behaviour). + - check against duplicated responses from ATMEL410 APs. These + are also able to answer queries with 12350 in query OID. This + is now being explicitly checked for => no more duplicate + ATMEL410 and ATMEL12350 APs with same IPs in the Search menu. + - do not attempt to assign const char "public" to 'community' + variable, as we attempt to free() it elsewhere. We could use + malloc() here, but still, this would have no good reason since + user is (and should be) always prompted for a password once + he selects desired AP from the 'Search' menu, once it is found => + all password-saving & handling parts have been removed for now. + This also fixes a crash that would occur if someone would try + to connect to an AP in 'Connect' menu, after unsuccessful + 'Search' attempt. + - implemented searching per multiple network devices. This involved + modifying ap_search() and changing it to scan_local_segment(), + as well as making scan_local_segment() self-reentrant, plus + adding portable code to scan for available network interfaces + for their IP/broadcast(ptp) pairs, that are later used to scan + segments via scan_local_segment(). Thanks to Dan J. Bernstein + for an effort in writing portable SIOCGIFCONF-related code; + the current implementation is based on his ipme.c from Qmail. + No more using 255.255.255.255 as broadcast as well as source + IP scanning. Results are now accurate even on routers with + multiple network interfaces of different types. The current + ap_search() has been verified/tested with W-Link WEN2021 + and Tellus TWL-A14 APs on Linux 2.2/2.4 and FreeBSD 4.9 . + - the progress is now verbose: + - each AP is shown immediately as soon as it is found + - the screen is realtime-updated with information about network + interface index, its name and AP type, currently scanned for + - it is now possible to quit from scanning process by pressing + 'q' or 'Q' whenever user wants to + - do not attempt to connect to an AP by pressing a key with index + of AP that is not present in the 'found' table + * src/oui.c: added OUIs: + - 000C30 (Cisco) + - 000C41 (The Linksys Group, Inc.) + * configure.in: added check to determine whether the (struct sockaddr) + has 'sa_len' member, and if it has, #define HAVE_SA_LEN in order to + properly support network interface detection on 4.4BSD-ish systems. + Moved AC_CONFIG_AUX_DIR macro behind AC_INIT, to satisfy + newer autoconf. Also, moved template definition from acconfig.h here. + * acconfig.h: deleted (deprecated for newer autoconfs) + * src/menu.c: added hooks for keys, 'q' / 'Q', Home (PageUp), and + End (PageDown) + * src/set_community.c: use get_pass() for now instead of get_value(), + so that the passwords are hidden when someone types them in. + We should really use get_value() for this later, and make + the password hiding optional. + +2003-10-21 Roman Festchook + * configure.in: version 1.3.3, added "thank you" message + * src/common.c: falling back to firstly implemented AP type autodetection order - firstly searching for ATMEL410, by default ATMEL12530 + * NEWS: main changes added + +2003-08-14 Roman Festchook + * configure.in: version 1.3.3-pre3 + +2003-09-08 Jan Rafaj + * README: added several APs to the table of supported hardware + * lib/ap-utils.h, src/ap-config.c, src/auth_mac.c: AuthMAC() + renamed to atmel_auth_mac() + * lib/ap-utils.h, src/input.c, src/test.c, src/set_community.c, + src/wep.c, src/wlan.c, src/auth_mac.c, src/bridge.c, src/common.c, + src/file.c, src/nwn_advanced.c, src/radio.c: + - get_value(): rewritten; now embeds the bounds as well as + pressed key checking. The range boundaries, the desired type + of input with respect to the acceptable characters, and the + pointer to a message to be restored, when a warning about + exceeded boundary is printed in the bottom stripe, are accepted + as four additional parameters now. + - get_ip(), get_mask(): newly introduced + - get_ip(), get_mac(): based on get_value(), with additional + bounds checking tailored accordingly and moved here from + src/bridge.c + - get_mask(): based on get_ip() with additional mask correctness + checking code moved here from src/bridge.c + - all the above functions were used to replace the respective + original input functions to match the changed prototypes + - the generic message 'Invalid value...' has been replaced + with 'Value must be in range %i - %i...'. This is printed + in bold-white/red in bottom stripe if the user input value + exceeds the predefined boundaries. + - added inet_aton()-specific includes to lib/ap-utils.h, + and removed elsewhere for multiple reasons + * src/wlan.c: fixed code displaying the ESSID - upon its change, + previously it could happen that if a newly written ESSID + would be shorter than the previous one, the loop that has been used + to display ESSID would [erroneously] expect the string to be + finished with '\0' (which is not required due to operESSIDLength), + and would display garbage with content of and length up to an + old ESSID string + +2003-08-27 Jan Rafaj + * README: fixed/added some supported AP hardware entries + * lib/ap-utils.h, src/ap-config.c, src/bridge.c, src/radio.c, + src/set_community.c, src/sysinfo.c, src/test.c, src/wep.c, + src/wlan.c: hopefully the last round of changes in naming + convention + * src/bridge.c, src/wlan.c: + utility now distinguishes some extra MIB subtypes: for 410 enter- + prises MIBs: "SmartBridges" form, and for 12350 enterprises MIBs: + "Tellus" MIB form "prototype". The MIB form is being distinguished + based on the OUI part of MAC address of the device. + Other than those MIBs named above are considered "generic" + forms, becouse are very ubiquitous. + This procedure is necessary, becouse despite the fact that + many MIBs keep the same enterprises ID, they differ slightly + in OID structures (some OIDs are in one MIB and not in other, + and same OIDs even may have significantly different meaning - + this is a case of Tellus A14 MIB x NetGear ME102 MIB, f.e.). + So, unfortunately, there's no other way, but: + - make some MIB "prototypes" (aggregate those that contain + exactly the same information, based on the supported + AP models across all the device manufacturers) + - determine the correct MIB based on the OUI part of MAC + address of the device (we assume noone changes OUI part + of the MAC of his AP) + It is quite possible that this approach will need revision + in the future, but since there appears to be no 100% reliable + way of how to distinguish different device models of one + specific manufacturer, the above is currently the finest, + although still coarse enough, method to support most devices. + * src/bridge.c: + - 'Preferred BSSID' keys rebound from 'm/M' to 'r/R' + - 'Forward broadcast traffic' keys rebound from 't/T' to 'r/R' + - introduced new setting 'Trap-sending port(s)', and bound to 't/T' + key. This setting appears only if ATMEL12350 device with + "Tellus Group Co." OUI is detected. + * src/wlan.c: + - fixed 'Beacon period' input/output data formatting/displaying + - display/snag/set 'Beacon period' and 'DTIM sending interval' + options/their values only if the device uses "generic" + ATMEL12350 MIB prototype (that of NetGear ME102 for example). + This should fix crashing becouse of missing MIB OIDs for people + that use this kind of devices. + +2003-08-25 Roman Festchook + * lib/ap-utils.h, configure.in: FreeBSD compile time fixes + +2003-08-19 Roman Festchook + * src/ap_search.c: fixed getch delay and restoring current connect options when quiting search screen + +2003-08-18 Jan Rafaj + * README, THANKS: modified + * most of string #defines moved from lib/ap-utils.h to the corresponding + modules in src - lib/ap-utils.h should keep just those that are + common to more than 1 module + * src/aps.c: + - fix bound-checking condition. Some APs with older ATMEL firmware + actually provide less space than 16 APs in its KnownAP reply, + and we also need to check for condition when lvalue of next MAC + entry in the response table is 0 (means end of statistics) + - only rewrite the current bridge_mode to 3 (AP client) if the + AP is ATMEL12350 type + * src/auth_mac.c, src/bridge.c, src/nwn_latest.c, src/sysinfo.c, + src/test.c, src/wep.c, src/wlan.c: + - stripped the formatting characters from remaining string #defines + - made the displaying value in 'Feature: value' dependant on offset + computed through strlen() from #defined string - this way, + the internationalisation is eased becouse translators dont need + to keep with original english strings size + * src/bridge.c: implemented new functionality from ATMEL 12350 MIB for: + - Configuration-enabled port(s) + - ForwardBroadcast + - SendBackBcast + - SendBackUnicast + * src/input.c: enhanced get_mac() for checking invalid MAC values + that user may type in; if he does, print generic error and loop + unless user gives syntactically correct value. + * src/radio.c: changed the 'Key' to '[key]' in bottom message for + uniformity. + * lib/ap-utils.h, src/sysinfo.c, src/wlan.c: renamed CFG_STRUCT_ + {ATMEL410,ATMEL12350} to SysDeviceInfo_{ATMEL410,ATMEL12350} + * src/wlan.c: corrected offset of displayed values for features: + - InterRoaming + - BeaconPeriod + - DTIM + +2003-08-14 Roman Festchook + * src/common.c: changed AP type autodetection order - firstly searching for ATMEL12350, by default ATMEL410 + * configure.in: version 1.3.3-pre2 + * src/aps.c: fixed connecting to choosen AP on ATMEL12350 APs in not AP Client mode + +2003-08-14 Elros Cyriatan + * po/nl/po: New Dutch PO file for `ap-utils' + +2003-08-11 Jan Rafaj + * next round of spelling and indentation fixes + * src/aps.c: + - made the 'KnownAP' statistics available only if the Access Point + is in AP client mode [original behaviour]. Some Access Points + may keep the statistics in their RAM, but no update is performed. + Even, sometimes, their RAM may contain garbage after reset, + which would cause parsing problems. + * lib/ap-utils.h, lib/reset.c, src/ap-config.c, src/ap-mrtg.c, + src/ap_search.c, src/aps.c, src/auth_mac.c, src/bridge.c, + src/cmd.c, src/common.c, src/radio.c, src/set_community.c, + src/stat.c, src/stations.c, src/sysinfo.c, src/test.c, + src/wep.c, src/wlan.c: + - changed all occurences of 'ATMEL' to 'ATMEL410' and + for 'ME102' to 'ATMEL12350' + * lib/ap-utils.h, src/ap-config.c, src/sysinfo.c: + - renamed sysinfo() to atmel_sysinfo() + * lib/ap-utils.h, src/ap-config.c, src/wlan.c: + - renamed wireless() to atmel_wireless() + * src/ap-config.c: + - redefined color pair 2 (black ink, green background), and defined + new color pair 3 (black ink, green background), and color + pair 4 (white ink, red background). 2 is used for showing + all string values actually changed by the user; 3 is used + for displaying column-info stripe in aps.c, and 4 is used + to display error-related messages in bottom status stripe. + * src/input.c: + - get_value() modified + * src/scr.c, lib/ap-utils.h: + - added new function print_menusel(). + Prints a message split up to two parts - first part without + colors, second part in bright. Used in conjunction with get_value() + to display parameters that the user modified, in bold. + - added new function print_helperr(). This is basically the same + as print_help(), with the only difference that it prints + the text in white bold on red background. Uses color pair 4 + and bold attribute; see above. + * names of all print_help() functions related to printing error + messages have been changed to print_helperr() + * src/auth_mac.c, src/bridge.c, src/radio.c, src/test.c, src/wep.c, + src/wlan.c, lib/ap-utils.h: + - implemented new colorisation scheme using print_menusel() + and get_value(), get_mac() - if user enters a new value, + the maximum space (in character counts) that can be used, + is displayed in inverse color. As soon as user confirms + the new value by pressing enter, the changed value is displayed + in bold (so that he knows what he has actually changed). + * src/bridge.c: + - when entering AP's IP, mask and gateway, do not allow + to pass further if the user input is invalid - instead, loop unless + user enters valid information + - hardened bounds checking against correct netmask value; + now, invalid netmasks like 255.255.255.129 elicits error + and forces prompt for new value, too + * lib/ap-utils.h, src/ap-mrtg.c, src/ap_search.c: placed + conditinal GLIBC checks => ap-utils now compile/run even + on non-GLIBC (LIBC5-based and such) systems, hopefully. + Actually it has only been tested with libc5-based Linux + system. + * lib/ap-utils.h, src/ap-mrtg.c, src/ap-trapd.c: placed conditional + HAVE_GETTEXT checks around parts using gettext, to get + ap-utils compile on systems without gettext support + * lib/snmp.c, src/file.c: external declaration of ap_type datatype + unified as 'short' and made global to make some old + GNU C compilers happy + +2003-08-07 Roman Festchook + * src/brige.c: fixed bug when saving changed ip, netmask and gw + +2003-08-07 Jan Rafaj + * various spelling and indentation fixes here and there + * all the ATMEL 12350-specific stuff below has been modelled + using Tellus A14 AP. + * src/aps.c: + - made it malloc()-free. no more potential leaks. + - 'KnownAP' now works for ATMEL 12350-based APs too + - allow of up to 16 concurrent APs to be displayed + in the 'KnownAP', as the packet itself may carry + up to 16 records (768/48). This is also a fix + becouse up to now, the menu has shown just the first + AP entry. + - The button for 'refresh without reset', originally bound to + 'g' and 'G' key, has been rebound to 's' ('S') key, + since the keys a-g (A-G) are now used as keys, corresponding + to numbers 10-16 of the APs displayed, when used in + '# connect to this AP' command. + - enhanced '# connect to this AP' functionality for + also setting the appropriate channel through operChannelID + OID + - disallow connection to Ad-Hoc mode bridges + - fixed bad effect of displaying 'Writing data to AP' + after pressing AP number, even if the number of the + selected AP is not actually present in the table + - changed the color scheme to some more eye-pleasant values + - implemented 4 different "views", that can be toggled + via 't' ('T') key: + * view 1: - most usual one; with RSSI and LQ in % + [ATMEL utility view] + * view 2: - the same as 1; except that RSSI is displayed + in dBm and LQ in raw + * view 3: - ESSID shown expanded to full length, + no NetworkType; RSSI displayed in raw, + LQ displayed in raw + * view 4: - shown only BSSID, and its hardware manufacturer + - the 'KnownAP' statistics is available without reset + if the Access Point is either in any of APclient or AP modes, + not just when it is in APclient mode. + * lib/ap-utils.h: + - HARD_CONFIGURATION_STRUCT is now replaced with two new + structures: CFG_STRUCT_ATMEL (for ATMEL 410-based devices), + and CFG_STRUCT_ME102 (for ATMEL 12350-based devices). + * src/sysinfo.c: + - sysinfo() made malloc()-free, and made both ATMEL 410- + and ATMEL 12350-aware => SysInfo for APs of both ATMEL types + is now displayed correctly + * src/oui.c: + - added OUI 000CCE (Cisco Systems) + * lib/ap-utils.h, src/wlan.c: + - made it fully ATMEL 410- and ATMEL 12350-aware + (displaying/setting of additional InterRoaming, BeaconPeriod + and DTIM parameters in case of ATMEL12350). Note that + it is possible to regulate BeaconPeriod in range 0-65407 + and DTIM in range 0-255, but the boundary limits may vary + with different hardware. I've tried to make as broad + range coverage as possible. Anyway, for example, Tellus A14 + resets the BeaconPeriod internally to 100, if you write + it with value out of 1-1000 interval. + - rebound key for ESSID from 'd' ('D') to 'e' ('E') + +2003-07-26 Roman Festchook + * src/ap_search.c, src/common.c: changed AP types ATMEL to ATMEL410 and ME102 to ATMEL12350 + * src/common.c: added AP type autodetection - by default ATMEL12350 + * src/common.c, src/ap_search.c, lib/ap-utils.h: now its possible to choose working AP from AP search result + * po/uk.po: updated translation + * lib/ap-utils.h, src/brige.c: bigendian fixes when setting ip, netmask and gw + * configure.in: version 1.3.3-pre1 + +2003-06-20 Roman Festchook + * configure.in, acconfig.h, lib/ap-utils.h: small fix to compile under OpenBSD + * po/*.po: fixed some fuzzy translations + +2003-06-03 Eugen Hoanca + * po/ro.po, configure.in: added Romanian translation + +2003-05-28 Roman Festchook + * configure.in, NEWS: version 1.3.2 + +2003-05-26 Roman Festchook + * config/config.guess, config/config.sub: updated from latest autoconf + +2003-05-21 Roman Festchook + * README: new supported AP added + * configure.in: version 1.3.2-pre4 + +2003-05-20 Roman Festchook + * src/ap-mrtg.c: fix bug like 2003-05-20 Peter 'p2' De Schrijver patch fixes + +2003-05-20 Peter 'p2' De Schrijver + * src/auth_mac.c, src/stat.c, src/sysinfo.c, lib/ap-utils.h: patch to fix ap-config for 64bit archs such as the alpha. It also fixes a minor bug on big endian machines. Patch tested on alpha, ia32, parisc and powerpc. + +2003-04-29 Michel Robitaille + * po/fr.po: updated translation + +2003-04-28 Roman Festchook + * README: new supported APs added + * src/auth_mac.c: small compile error with old gcc fixed + +2003-04-26 Roman Festchook + * README: new supported APs added + +2003-04-15 Roman Festchook + * po/pl.po: updated translation + * lib/Makefile.am: not used code exluded for faster compilation + * lib/ap-utils.h: code rearangement + * src/scr.c: some updates for more faster screen handling + * configure.in: version 1.3.2-pre3 + +2003-04-15 Przemyslaw Stanislaw Knycz + * po/pl.po: fix to correct displaying polish chars + +2003-03-13 Roman Festchook + * README: new supported AP from SVEC + +2003-02-27 Roman Festchook + * FAQ: updates + +2003-02-26 Roman Festchook + * lib/*, src/*, README: added support fpr new Netgear ME102 enterprase in old Atmel mib (ME102 type) + * configure.in: version 1.3.2-pre2 + +2003-02-25 Roman Festchook + * README: new supported hardware from DCom removed (it's WLink hardware:) + +2003-02-23 Roman Festchook + * README: new supported hardware from DCom + +2003-02-23 Roman Festchook + * src/menu.c, src/input.c: added new vi-like keys to menu movement + * Documentation/ap-config.8: added info about vi-like keys to menu movement + * configure.in: version 1.3.2-pre1 + +2003-02-14 Roman Festchook + * TODO: support for ME102 new mib + * configure.in, NEWS: version 1.3.1 + +2003-02-11 Roman Festchook + * src/wep.c, src/wlan.c: fixed for warnins when compiling by egcs-2.91 + +2003-02-08 Roman Festchook + * src/common.c: removed unnecessary debug message + +2003-02-06 Roman Festchook + * src/input.c, src/mac_auth.c, src/bridge.c. src/nwn_latest.c, src/sysinfo.c, lib/ap-utils.h: mac adresseses now dysplayed and entered like XXXXXXXXXXXX + * Documentation/FAQ: added info about new ME102 AP + * src/ap-search.c: fixed bug with closing sock descriptor after making search - what make impossible working with current AP without reconnect + +2003-02-04 Roman Festchook + * src/file.c: fixed updating options file bug + +2003-02-03 Roman Festchook + * src/wep.c, Documentation/ap-config.8: added info about WEP key values + +2003-01-10 Roman Festchook + * src/common.c: fixed options file name mismatch + +2002-12-22 Roman Festchook + * src/file.c: added keys for fast selecting one from first 9 APs, fixed coredump when parsing file in wrong format + * po/uk.po: updated translation + +2002-12-16 Roman Festchook + * src/ap-mrtg.c: command line parameters parsing small fix + +2002-12-15 Roman Festchook + * configure.in: build cleanups + * src/file.c, src/common.c: now connect option for many APs can be stored in file and current AP can be choosed from it + * src/*, lib/*: many code cleanups and fixes + +2002-12-10 Roman Festchook + * configure.in, src/Makefile.am: fixes to build on OpenBSD + * README: new supported OS OpenBSD + +2002-12-05 Roman Festchook + * README: supported hardware table updated + * configure.in, NEWS: version 1.3 + +2002-12-02 Roman Festchook + * src/ap-mrtg.c: fixed printing warning in non verbose mode when getting Link Quality stats + * src/ap-mrtg.c, man/ap-mrtg.8: Signal Strenght returned in dBm + +2002-11-25 Roman Festchook + * man/ap-config.8: removed dead link + +2002-11-25 Wolfgang Fuschlberger + * Documentation/Ovislink-HOWTO.html: updated howto + +2002-11-20 Roman Festchook + * configure.in: defined LIBS and INSTALL variables to compile under QNX (nto-qnx) + * INSTALL: updated with info about installing on QNX + * README: new supported OS added + * src/Makefile.am, configure.in: removed checking for ncurses libs and LIBS difinition moved to Makefile (I think its wrong but useful:) + * src/aps.c, man/ap-config.8: RSSI now displayed in dBm (thanks to Ivan Korshun) + * po/*.po: translations updates + +2002-11-11 Michel Robitaille + * po/fr.po: updated french translation + +2002-11-10 Roman Festchook + * man/*.8: removed referrer to ap-atmel and ap-nwn + +2002-11-10 Dan Pelleg + * src/wlan.c: patch to build on FreeBSD + +2002-11-04 Wolfgang Fuschlberger + * Documentation/Ovislink-HOWTO.html: howto use ap-utils with Ovislink hardware + * README: new supported hardware from Ovislink + +2002-11-01 Wojciech Puchar + * po/pl.po: polish localization + +2002-11-01 Roman Festchook + * lib/common.c, po/*.po: spelling fixes + +2002-10-31 Roman Festchook + * src/aps.c: fixed getting info from APs manufactured by CC&C Technologies + * po/*.po: translations updates + +2002-10-30 Roman Festchook + * README: new supported hardware + * src/aps.c: check for right channel added + +2002-10-29 Rahul G + * lib/ber.c: function to ber encode object identifiers added + +2002-10-24 Roman Festchook + * configure.in, NEWS: version 1.2 + +2002-10-21 Pawel P. Kaszynski + * README: new supported hardware from Intellinet + +2002-10-17 Michel Robitaille + * po/fr.po: updated french translation + +2002-10-15 Roman Festchook + * configure.in: more fixes to compile under netbsd + +2002-10-11 Roman Festchook + * lib/common.c: added option to disable saving connect options to file + +2002-10-10 Roman Festchook + * src/wlan.c: fixed fail to set essid because wrong len + * Documentation/mib/atmel: new mib added form airBrige device + * src/ap-trapd.c, man/ap-trapd.8: added support for Smartbridges + airBrige traps, run utility with -s key + * src/brige.c: added support for Smartbridges airBrige speciffic oid + +2002-10-09 Roman Festchook + * src/brige.c: added check for getted from AP values + * configure.in: added CC variable to compile under netbsd + * README, INSTALL, mib/ap-config.8: updates about merging utilites to ap-config + +2002-10-07 Roman Festchook + * src/ap-config.c, lib/common.c, lib/ap-search.c: connect and + search procedure updates + +2002-10-07 Dan Pelleg + * lib/ap-search.c: fix to compile under FreeBSD + +2002-10-03 Roman Festchook + * src: ap-nwn and ap-atmel merged to one utility ap-config + * lib/snmp.c: decreased timeout waiting for reply from agent - in general it result more faster read SNMP data + +2002-10-02 Roman Festchook + * common/ap-search.c: socklen_t variables redefined to uint32_t for build package under MacOS-X + * common/file.c: char variable j redefined as unsigned to socessful build where char is per default unsigned on arm, powerpc and s390. + * nwn/wlan.c: form handling code cleanups, fixed display refreshing after changing antenna and rate options + * README: new supported hardware + * configure.in, NEWS: version 1.1.1 + +2002-09-29 Roman Festchook + * nwn/advanced.c, man/ap-nwn.8: added some advanced options to optimize long range links and antenna tuning + +2002-09-28 Roman Festchook + * atmel/aps.c: now after setting master AP from displated list also setted mode to AP client and ESSID to master AP ESSID, also now AP resets when getting stat only if brige mode = Access Point + * nwn/reset.c, nwn/ap-nwn.c: added option to reset AP + * atmel/wep.c: WEP encryption after fixes works - tested WEP64 crypted link between CompexWP11 and GL2411AP as client + * atmel/ap-trapd.c, man/ap-trapd.8: updated traps list with new traps from 1.4j.1 firmware + * atmel/brige.c: added Repeater mode to Brige modes + * nwn/nwn.c: now possible to define 4 WEP keys and choose default key + +2002-09-26 Roman Festchook + * atmel/ap-mrtg.c: small fixes about link quality displaying + * atmel/ap-trapd.c: small log format changes + * README: new supported hardware Smartbridges airBrige and airPoint + +2002-09-20 Roman Festchook + * configure.in, NEWS: version 1.1 + +2002-09-19 Roman Festchook + * atmel/aps.c: interface updates + * po/uk.po, po/fr.po: small translations update + +2002-09-19 Andy Igoshin + * atmel/radio.c: now wors fin on big_andian + +2002-09-17 Andy Igoshin + * common/ap-utils.h, atmel/wlan.c: basic rates display fix + * man/*.8: man page formatting updates + +2002-09-17 Roman Festchook + * nwn/stations.c: rewrited code that get associated stations info to avoid problems with invisible stations + * nwn/stations.c, atmel/stations.c: fixed display last value problem + * po/uk.po, po/fr.po: small translations update + +2002-09-16 Roman Festchook + * nwn/stations.c, atmel/aps.c, man/ap-atmel.8, man/ap-nwn.8: display linkquality and signal strenght without any modification on returned values, documentation updates about it + * po/uk.po: translation update + * atmel/aps.c: added option to connect to one of the displayed known APs, also now possible reget and refresh (with reset) stats + * atmel/ap-mrtg.c, man/ap-mrtg.8: aded option to reset AP when getting link quality stats, documentation updates about it, also after reset 10 second timeout set + +2002-09-15 Andy Igoshin + * atmel/ap-mrtg.c, atmel/aps.c, atmel/bridge.c, atmel/cmd.c, atmel/stat.c, + atmel/stations.c, atmel/wep.c, atmel/wlan.c, common/ap-utils.h: code cleanups + * nwn/sysinfo.c: code cleanups + +2002-09-12 Andy Igoshin + * configure.in: small fix for AIX + * atmel/auth_mac.c, atmel/wep.c: case statement code cleanups + * atmel/auth_mac.c: now works good with big_endian + * common/ap-utils.h: additional macros for data conversion on big_endian + * atmel/brige.c: removed any ip adderess converting on big-endian arch + * atmel/wep.c: now encryption enable and key num works good with big_endian + +2002-09-12 Roman Festchook + * nwn/sysinfo.c: removed any ip adderess converting on big-endian arch + * atmel/auth_mac.c: changed type to mib defined + * common/ap-utils.h: swap2 definition to little_endian arch + * atmel/wep.c: some variables declaration moved to up to compile on old gcc compilers + +2002-09-11 Roman Festchook + * atmel/wlan.c: fixed unpackeing RegulatoryDomain on big_endian computers + * atmel/bridge.c, nwn/sysinfo.c: fixed ip adderess converting on big-endian arch + +2002-09-11 Andy Igoshin + * atmel/sysinfo.c: fixed displaying RegulatoryDomain on big_endian computers + * configure.in: OS definition now standart macro, AIX compilation options + * atmel/auth_mac.c: mac auth foxes for big_endian + +2002-09-08 Andy Igoshin + * atmel/Makefile.am, common/Makefile.am, common/ap_search.c, + common/menu.c, common/scr.c, nwn/Makefile.am: patch to compile + by native compiler under AIX 4.3.3 + +2002-09-08 Roman Festchook + * README: new supported hardware Micronet SP918 and OS AIX 4.3.3 added + * configure.in, common/ap-utils.h, acconfig.h: now big_endian defined + using standart configure macro AC_C_BIGENDIAN (thanks Andy Igoshin + for suggection) + +2002-09-06 Roman Festchook + * atmel/bridge.c, nwn/sysinfo.c: fixed ip adderess displaying on big-endian arch + * README: new supported OS MacOS-X + * configure.in: new big_endian arch Power Macintosh + +2002-09-04 Roman Festchook + * nwn/wlan.c, atmel/wlan.c: fixed setting channel bug under + Spain and France regulatory domain + * man/nwn.8: additional info about Search AP option + * README: new supported hardware Dlink-1000AP + * nwn/auth_mac.c: displaying mac autorization status fixed + +2002-09-02 Roman Festchook + * configure.in, NEWS: version 1.0.5 + * po/uk.po: ukrainian translation updates + +2002-08-29 Roman Festchook + * atmel/ap-mrtg.c, man/ap-mrtg.8, aclocal.h, configure.in, INSTALL: enable report to MRTG when unable to get stats + from AP now sturtup option, also command line arguments now parse using getopt() in ap-mrtg + * atmel/ap-trapd.c, man/ap-trapd.8, aclocal.h, configure.in, INSTALL: option to change defaul unprivileged user + now sturtup option, also command line arguments now parse using getopt() in ap-trapd + * atmel/brige.c: entering AP mac address in Client mode fix + * common.c, configure.in: macro for check big-endian arch (sparc and mips) now set variable AP_BIG_ENDIAN + +2002-08-28 Roman Festchook + * atmel/*.c, nwn/*.c, common/*.c: getting pressed key fixes to avoid reactions to neutral keys pressed by user + +2002-08-28 Michel Robitaille + * po/fr.po: french localization + +2002-08-27 Roman Festchook + * atmel/stat.c, atmel/test.c, atmel/sysinfo.c, nwn/stat.c: applayed macro swap4 from Erik Rossen for display long values + * configure.in: macro for check big-endian arch (sparc and mips) added + +2002-08-27 Erik Rossen + * common/ap-utils.h: added swap4 - a quick-and-dirty macro to unconditionally swap bytes in 4-byte integers between big-endian and little-endian ordering + * INSTALL: instruction to compile under Sparc Linux + +2002-08-26 Roman Festchook + * README: updates and spelling + * atmel/test.c: user interface in test mode improvements and fallback when error reading test stat from AP now will not quit tests to make possible restoring normal AP functionality, regulation domain restriction removed + +2002-08-19 17:42 Dan Pelleg + * nwn/ap-nwn.c: minor change for compile under FreeBSD + +2002-08-08 22:56 Roman Festchook + * configure.in, NEWS: version 1.0.4 + +2002-08-02 20:29 Roman Festchook + * configure.in: moved configuration utilites into config dir + * atmel/*.c: code rewrited to don't use struct to unpack data that + comes from network (as suggect Erik Rossen its may fix problems + running utility on nonintel computer architectures). + +2002-07-24 01:06 Roman Festchook + * configure.in, common/common.c, acconfig.h, INSTALL: added compile + time option to disable regulation domain channel restrictions + +2002-07-22 00:02 Roman Festchook + * man/ap-atmel.8, man/ap-nwn.8: added manpages for ap-atmel and ap-nwn + +2002-07-21 20:02 Roman Festchook + * man/ap-trapd.8, man/ap-mrtg.8: added manpages for ap-trapd and ap-mrtg + +2002-07-21 15:06 Roman Festchook + * nwn/stations.c, atmel/auth_mac.c: getting data from AP algorithms + optimization + +2002-07-21 01:24 Roman Festchook + * common/oui.c: added displaying AP manufacturer using OUI value + * README: spelling fixes + +2002-07-18 14:53 Roman Festchook + * nwn/stations.c: added info about waiting for data when getting + data from AP + +2002-07-16 01:04 Roman Festchook + * configure.in: version 1.0.3 + * common/ap_search.c, common/set_community.c: code of search and auth + functions moved into common for both utilites functions + * Makefile.am: now packages will be compressed by bzip2 (to save + bandwith) + +2002-07-15 19:31 Roman Festchook + * common/scr.c, common/common.c, common/ap-utils.h: added info about + current AP at right bottom of the screen + +2002-07-14 00:20 Roman Festchook + * po, intl, m4: integration with GNU gettext for simlying localization + and translation + * src: a lot of internal code optimization and spelling + * nwn/search.c: AP search fixes + * po/uk.po: ukrainian localization + +2002-07-07 gettextize + * Makefile.am (SUBDIRS): Add intl. + (ACLOCAL_AMFLAGS): New variable. + (EXTRA_DIST): New variable. + * configure.in (AC_OUTPUT): po/Makefile.in, m4/Makefile. + +2002-07-07 05:20 Roman Festchook + * ap-trapd: log additiomal info about agent that generate trap + +2002-07-05 02:00 Roman Festchook + * common/ap-cnf.h, *.c: common/ap-cnf.h renamed to common/ap-utils.h + * nwn/menu.c, atmel/menu.c, common/menu.c, common/ap-utils.h, + common/Makefile.am: menu handling code rewrited to one universal + routine + +2002-07-04 15:44 Roman Festchook + * configure.in: version 1.0.2 + +2002-06-29 20:15 Roman Festchook + * nwn/search.c: error messages fixes + * configure.in: added test for Linux + * atmel/ap-trapd.c: fixed displaying new IP when SettingPingIPAddress + trap received, also displaying mac address limited to related traps, + bind to device code compiled only at Linux + * Documentation/README.trapd: info about bind to device option code + work only at Linux + * Documentation/THANKS: new contributor Dan Pelleg + * common/ap-cnf.h, README: changed project name to Wireless Access + Point Utilites for Unix + +2002-06-28 17:14 Roman Festchook + * atmel/Makefile.am, nwn/Makefile.am, common/Makefile.am: added options + to compile on FreeBSD + +2002-06-28 16:45 Dan Pelleg + * atmel/ap-atmel.c, atmel/ap-mrtg.c, atmel/ap-trapd.c, atmel/bridge.c, + atmel/radio.c, atmel/search.c, common/common.c, common/file.c, + common/snmp.c, nwn/ap-nwn.c, nwn/search.c, nwn/sysinfo.c, nwn/wlan.c: + patch to compile and run on FreeBSD + +2002-06-26 15:53 Roman Festchook + * configure.in: version 1.0.1 + +2002-06-24 23:40 Roman Festchook + * ap-trapd: by default installed into '/usr/local/sbin' + * src: code cleanups and compiler warnings fixes + +2002-06-21 16:34 Roman Festchook + * */Makefile.am: added target style + * atmel/ap-mrtg: code rearangement + +2002-06-17 09:24 Roman Festchook + * README: ap-amtel does work with an D-Link DWL 900AP wich is + (according to some google research it's an Linksys WAP11). Reported + by Jens Link . + +2002-06-16 18:48 Roman Festchook + * ap-trapd: added compile time option to set nonprivileged account + for running utility + +2002-06-16 03:12 Roman Festchook + * Makefile: now Makefiles generated by GNU autoconf and automake + * INSTALL: updated with info about new instalation procedures + * ap-mrtg: added compile time option to disable warnings when unable + to get data from AP + * atmel/aps.c: removed unnecessary code that read/set remote brige + BSSID + * atmel/search.c, atmel/wlan.c, nwn/search.c, nwn/wlan.c: compile + time warnings fixed + +2002-06-15 02:10 Roman Festchook + * ap-atmel: added try to restore settings when fail to get KnownAPs + info + +2002-06-09 23:33 Roman Festchook + * version: 1.0 + * ap-mrtg: removed email from usage message + * ap-mrtg and ap-trapd code: placed into atmel directory + * Makefile: some optimization at subdirs and at top level + * Documentation: mibs now back to package + * NEWS, AUTHORS: added + +2002-06-08 01:03 Roman Festchook + * ap-trapd: fixed getting data from old trap body when processing + new trap + +2002-06-06 14:29 Roman Festchook + * ap-trapd: rewriten to log shorter messages without informative + data lost + * Documentations: some updates for preparing to version 1.0 + +2002-06-05 00:01 Roman Festchook + * ap-atmel: added warnings in potentially dangerous options: + KnownAPs, Reset, Upload, Defaults, Restore + +2002-06-01 00:20 Roman Festchook + * version: 1.0pre3 + * ap-mrtg: added selecting AP to which get + Link Quality/Signal Strenght statistics, also updated documentation + +2002-05-31 00:50 Scott L. Thomas, Roman Festchook + * ap-mrtg: option to get Link Quality/Signal Strenght stat from AP in + client mode added + * Documentation/README.mrtg: description about getting Link + Quality/Signal Strenght stat from AP in client mode added + * Documentation/README.nwn: added info about basic rates setting + * ap-atmel, ap-nwn: added backspace support when entering password + +2002-05-30 14:05 Roman Festchook + * ap-trapd: option to bind listening for traps + on a specific interface added + * Documentation/README.trapd: option to bind listening + for traps on a specific interface described + * Documentation/README.nwn: added info about associated stations + +2002-05-29 19:30 Roman Festchook + * ap-nwn: fixed basic rates, AP name and ESSID displaying + * ap-atmel, ap-nwn: some optimization for size + * snmp.c: memory leaks fixes when parsing received packets + * ap-nwn: uptime displaying fixed + +2002-05-27 00:03 Roman Festchook + * version: 1.0pre2 + * ap-atmel: added Regulation domain restriction to select channel + in Test Mode + * ap-atmel, ap-nwn: added floating dropdown menus for choose from + the list of options + +2002-05-26 16:45 Roman Festchook + * ap-nwn: fixed lenght bug in setting AP name + +2002-05-25 14:05 Roman Festchook + * Documentation: added banner image:)) + +2002-05-22 00:19 Roman Festchook + * version: 1.0pre1 + * Documentation: additions and spelling + * src: removed unused code + +2002-05-21 20:06 Roman Festchook + * ap-nwn: added option to find connected APs + +2002-05-20 01:37 Roman Festchook + * ap-nwn: added basic rates choose options, added WEP key set options, + added setting prefered channel to operational channel value + * Documentation: mibs excluded from program package (they come with + devices), also excluded power hack docs (readme has links to this + pages) - this greatly reduce package size:) + +2002-05-18 19:51 Roman Festchook + * ap-atmel: fixed bug with unable to repeat APs search, + other search fixes and improvements + +2002-05-17 15:51 Roman Festchook + * version: 0.9.6 + * ap-atmel: added option to find connected APs + +2002-05-16 00:12 Roman Festchook + * atmel/aps.c: removed timeout when getting KnownAPs stat + from AP in client mode + +2002-05-15 20:57 Roman Festchook + * ap-mrtg: added option to get associated stations stat + * README.mrtg: info about stations stat + +2002-05-11 08:49 Erik Rossen + * src: fixed compile time errors and warnings + * atmel/scr.c, nwn/scr.c: patch to get rid of the annoying flicker + every time one changes a menu + +2002-05-06 02:42 Roman Festchook + * common/file.c: now AP ip and community string saved + in config file ~/., so no need to + input it after each program start + * common/common.c: connection password at input + displayed with '*' + * wlan.c: added Regulation Domain limit on setting channel + * atmel/aps.c: Now KnownAP stat may be get without AP reset if AP + in client mode + * atmel/radio.c: Antenna checks on Atmel, so user can't disable both + antenna, if he do this and save conf - AP restores factory + defaults, now it fixed + +2002-05-05 22:39 Roman Festchook + * common/file.c: now Associated Stations list + may be saved to file ~/.stations. + +2002-05-04 23:26 Roman Festchook + * version: 0.9.5 + * README.atmel: added description of most configuration options + * Documentation: updated documentations + * source tree: changed structure + * ap-cnf: renamed to ap-atmel + +2002-05-04 18:46 Roman Festchook + * ap-nwn: added utility to config Compex WP11 + +2002-05-02 18:46 Roman Festchook + * ap-atmel/auth.c: fixed mac number error when deleting addresses + from list + * snmp.c: now returned from agent oid accessible in program + +2002-05-01 17:43 Roman Festchook + * snmp.c: added support for Compex WP11 SNMP-agent + +2002-05-01 13:01 Roman Festchook + * FAQ: added FAQ + +2002-04-30 16:40 Roman Festchook + * src/ap-trapd.c: fixed bug with SettingPingIPAddress trap message + +2002-04-27 00:17 Roman Festchook + * src/sysinfo.c: added description for Regulation Domain + +2002-04-23 21:12 Roman Festchook + * version: 0.9 + * src/test.c: finished test mode + * docs: documentation updates + +2002-04-23 19:00 Roman Festchook + * src/radio.c: added option to enable/disable antennas + * src/menu.c: small menu rearangement again:)) + +2002-04-22 17:08 Roman Festchook + * src/auth.c: fixed mac number error when deleting addresses from list + * src/menu.c: small menu rearangement + +2002-04-15 20:20 Kucherak Sergij, Roman Festchook + * version: 0.8.2 + * INSTALL, README.ap-cnf: added ukrainian docs + +2002-04-15 20:01 Roman Festchook + * src/aps.c: added displaying Link Quality and Signal Strenght + +2002-04-14 23:18 Roman Festchook + * src/stat.c: fixed bug, that cause unable to exit + problem when can't to get Ethernet or Wireless stat + * src/aps.c: addded showing Preambule and Wep, also fixed + bug with displaying Network Type + * src/test.c: added unknown OID (see doc/todo), + test mode still not work + * src/snmp.c: fixed some warnings from gcc version pre3 + +2002-04-14 00:12 Roman Festchook + * src/ap-cnf.c: showing cursor when entering + password/community in connect screen + +2002-04-12 00:14 Roman Festchook + * src/auth.c: fixed displaying and setting mac authorization status + +2002-04-07 22:32 Roman Festchook + * version: 0.8.1 + * src/menu.c: added printing tips to all menu options + +2002-04-07 13:52 Roman Festchook + * src/Makefile: added 'install' option + +2002-04-06 23:50 Roman Festchook + * name: changed name to Access Point SNMP Utils for Linux + * src/stat.c: added mac address displaying in SysInfo, + correctly printed sysinfo string + * README: splited docs at top level directory - added + INSTALL and README.util, added additional info + +2002-04-04 22:50 Roman Festchook + * src/ap-trapd.c: after opening socket changed UID and GID + to non root user, I think it's more secure; also + added check from what enterprise this trap came + * src/ap-cnf.c: added info about not displayed characters + when entering password/community + +2002-04-04 01:12 Roman Festchook + * src: added info about retrieving/setting data on help string + * src/aps.c: more informative help string + * src/menu.c: option APs renamed to KnownAPs + +2002-04-02 14:34 Roman Festchook + * version: 0.8 + * src/aps.c: more verbose info when searching for APs + * README: added warnins about using Statistics/APs option + and info about ap-trapd + * src: code cleanups to remove some warning when compiling gcc 2.9x + +2002-04-01 21:36 Roman Festchook + * src/wlan.c: fixed bug with AP name lenght when setting AP name, + this may cause ip address change like + 192.168.97.32 => 0.192.168.97. So I think it's critical bug. + +2002-03-31 22:58 Roman Festchook + * src/wlan.c: fixed bug with ESSID lenght when setting ESSID, + this make impossible to set ESSID in some cases + * src/trapd.c: added SNMP traps processing daemon + +2002-03-27 13:58 Roman Festchook + * version: 0.7.6 + * src/ap-mrtg: error reports fixes + * src/power.c: power level settings changed, + now optimal values may be experimentally choosed + +2002-03-21 14:32 Roman Festchook + * src/smnp.c: conection timeout fixes + +2002-03-23 23:16 Roman Festchook + * version: 0.7.5 + * src/auth.c: fixed bug with mac addresses num = 65535, which mean 0, + this may cause problems configuring absolutelly new AP + * src/aps.c: more safe KnownAPs function - now it restores parameters + after requesting known aps info + * src/cmd.c: upload configuration fixes + +2002-03-11 02:01 Roman Festchook + * src/snmp.c: SNMP packets assembly rewriten to work correctly + with packets which size more than 128 bytes + +2002-03-09 02:15 Roman Festchook + * version: 0.7.4 + * src: more verbose parameters description, removed unused code + * ap-cnf: added screen "About", just about me and my program:)) + * ap-mrtg: errors printed in MRTG parsable format + * TODO: new goals + +2002-03-07 11:20 Roman Festchook + * version: 0.7.3 + * src/snmp.c: fixed bug with alarm handler + * src/stat.c, src/auth.c: removed mac addresses limit, added + option to save Associated Stations mac addresses to file. + +2002-03-03 13:22 Roman Festchook + * version: 0.7.2 + * src: many small bugfixes and code cleanups + * src/stat.c: Ethernet, Wireless and Wireless environment screens + now refreshed every second with updated data + * src/test.c: start working on test mode settings, but it not useful + for now + * README: new homepage url + +2002-03-01 23:53 Roman Festchook + * version: 0.7.1-pre + * src/snmp.c: Wireless stat now count all packets not only Unicast + * src/power.c: setting power level changes + * README: changed info about setting power level + +2002-02-28 00:52 Roman Festchook + * src/snmp.c, src/ap-cnf.c, src/ap-mrtg.c: connect blocks fixes + +2002-02-27 20:15 Roman Festchook + * src/power.c: power level now displayed with some kind of graph + +2002-02-26 14:22 Roman Festchook + * version: 0.7 + * src/wep.c: added Privacy settings, please test + +2002-02-25 16:44 Roman Festchook + * spelling: spelling heads up:)) (thanks Charles Henderson) + +2002-02-25 14:35 Roman Festchook + * version: 0.6.1 + * src/ap-mrtg.c: added utility to use MRTG for create stats graphics + * README: added info about using MRTG to request AP + +2002-02-24 01:10 Roman Festchook + * src/power.c: added Signal Power settings + * README: added info about Signal Power settings + * version: 0.6 + +2002-02-23 16:53 Roman Festchook + * src/bridge.c: added SNMP Traps switch option + * src/wireless.c: interface improvement when setting Basic and + Supported rates + * src/auth.c: socket to AP now opened in nonblock mode + * src/snmp.c: disabled program halt when timeout data read from socket + * TODO: new goals + * THANKS: added + +2002-02-21 22:52 Roman Festchook + * src/bridge.c: fixed broken setting RemoteBSSID in no + Access Point operational modes + +2002-02-21 14:17 Roman Festchook + * doc/: added some docs about setting signal power + * doc/mib: added mibs from another APs + * TODO: added setting signal power + * README: added additional info + * src/: new features - new code, version 0.5 + +2002-02-13 23:22 Roman Festchook + * ChangeLog: There was no ChangeLog here, so I added one. diff --git a/Documentation/FAQ b/Documentation/FAQ new file mode 100644 index 0000000..aad30e0 --- /dev/null +++ b/Documentation/FAQ @@ -0,0 +1,43 @@ +Q. +> I try to install Access Point SNMP Config utility, but i can't find +> menu.h file. +> [root@server src]# make +> gcc -O2 -Wall -c -o ap-cnf.o ap-cnf.c +> ap-cnf.c:24:18: menu.h: No such file or directory +> make: *** [ap-cnf.o] Error 1 +A. +You need to install ncurses and ncurses-devel packages from your distro. +Or just build and install ncurses libs from sources. + +Q. +> I bought a access point. Unfortunately, the +> documentation does not have the default community string used by the +> product. Do you know what it is, or where I could find it out? +A. +I'm give you default communities from my equipment, may be you may use +it with your AP: "public", "private", "linksys". +Also consult documentation to your AP. + +Q. +> The wireless & ethernet stats are reset to zero each time I grab +> the KnownAP signal and quality stats. The same issue happens when +> performing KnownAP's running your AP-CNF program without modification. +A. +Because only way to see KnownAPs info its to put AP to client mode with master +AP mac set to 0000000000. When setting this AP resets. Only one way to get +signal and quality stats not resetting AP - its to get this stat from AP +setted in client mode all time. + +Q. +>Can someone give me the "newbe" answer to what's the +>relationship/difference between RSSI and Link Quality? + +A. +RSSI = Received Signal Strength Indication. Measures only the signal +amplitude. This plays a major role in calculating the fade margin of the +link. +The Signal Quality represents how clean the signal is. Interference, +Multi path Reflections etc. This measure plays a major role in +determining the data throughput. Low Signal Quality would normally mean +retransmissions, dropped packets etc. + diff --git a/Documentation/HARDWARE-NOTES b/Documentation/HARDWARE-NOTES new file mode 100644 index 0000000..5c54948 --- /dev/null +++ b/Documentation/HARDWARE-NOTES @@ -0,0 +1,17 @@ +Tellus A14 and its clones - IMPORTANT, READ CAREFULLY: +====================================================== +Users of Tellus A14 and its OEM versions (Wline A14): Beware. +The firmware 0.2.2.11 contains a SERIOUS BUG that may cause unpredictable +damage, when the AP is configured over SNMP or even via its web interface, +no matter if the manufacturer-recommended 0.0.1.15 version of SNMP +manager, or AP-UTILS, are used. + +The only reliable way of (re)configuring the device is to either +reconfigure it via the supplied USB utility (ver. 0.0.5.6), or use +a different firmware in the AP, than 0.2.2.11 . At the moment, unfortunately, +we may _NOT_ recommend anyone to use AP-UTILS to configure these devices. + +The progress of determining correct firmware that does not corrupt +the contents of AP's flash memory once it is reconfigured, is underway, +however, and as soon as such a firmware will be known, the relevant +information will be posted here. diff --git a/Documentation/Makefile.am b/Documentation/Makefile.am new file mode 100644 index 0000000..ce9caa4 --- /dev/null +++ b/Documentation/Makefile.am @@ -0,0 +1,23 @@ +# +# Makefile.am from Access Point SNMP Utils for Linux +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +## Process this file with automake to produce Makefile.in + +man_MANS = ap-trapd.8 ap-mrtg.8 ap-config.8 +EXTRA_DIST = $(man_MANS) FAQ Ukrainian/* Ovislink-HOWTO.html HARDWARE-NOTES README.RPM README.ap-gl diff --git a/Documentation/Makefile.in b/Documentation/Makefile.in new file mode 100644 index 0000000..5997a4e --- /dev/null +++ b/Documentation/Makefile.in @@ -0,0 +1,354 @@ +# Makefile.in generated by automake 1.7.8 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am from Access Point SNMP Utils for Linux +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +man_MANS = ap-trapd.8 ap-mrtg.8 ap-config.8 +EXTRA_DIST = $(man_MANS) FAQ Ukrainian/* Ovislink-HOWTO.html HARDWARE-NOTES README.RPM README.ap-gl +subdir = Documentation +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Documentation/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: + +man8dir = $(mandir)/man8 +install-man8: $(man8_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man8dir) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ + done +uninstall-man8: + @$(NORMAL_UNINSTALL) + @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.8*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 8*) ;; \ + *) ext='8' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ + rm -f $(DESTDIR)$(man8dir)/$$inst; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + $(mkinstalldirs) $(distdir)/Ukrainian + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man8dir) +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man8 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man8 + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-man8 install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am uninstall-info-am uninstall-man uninstall-man8 + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Documentation/Ovislink-HOWTO.html b/Documentation/Ovislink-HOWTO.html new file mode 100644 index 0000000..59cc8a5 --- /dev/null +++ b/Documentation/Ovislink-HOWTO.html @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + Linux and Wireless Ovislink Airlive WL-1100AP/WL-1100PCM with Intersil Prism2 Chipset + + + + + +
+

Ovislink Airlive WL-1100AP Access Point
Ovislink Airlive WL-1100PCM PCMCIA Adapter

+ +

+ + +

+


+ +On this page you will a find a short guide on how to set up this wireless hardware under Linux.
+I wrote it because when I searched google I found nothing about this Hardware. +
+
+

+ +

+All comments, suggestions etc. are welcome. Please contact me at wf-hp@gmx.net. +

+ +
+ +

+A few days ago I decided to get me a new toy. I bought a wireless LAN-Card together with an access-point (short AP) to avoid 20 metres of Twisted-Pair Cable lying through the corridors of my home.

+ +

I chose the Ovislink hardware, because on the box of the PCMCIA-card Linux was listed as an OS which supported the card. The manual of the AP which they allowed me to read in the shop said it had to be configured over SNMP. After doing a little research on google I found out, that chances were good this could be done with one of the programs from ap-utils. I hoped it would work, but I have to confess I would have also used Windows for the configuration, since the price was rather low and I badly wanted to have that thing. +

+ +

+I own a HP Omnibook XE3-GC (the old variant with the Savage-Chip) running Debian/sarge at the moment (in stable/woody the package ap-utils was not included) and a router running Debian/woody, which now got a second NIC (network interface card) to attach the AP. +

+ +
+ +
+ +

+Setting up the PCMCIA-Card +

+ +

+The WLAN-Card has a Prism2-Chip which is supported by linux-wlan-ng. +
+In this file I will only cover the relevant details for WLAN-Configuration. For the basics please refer to the PCMCIA-HOWTO. +

+ +

+I heard reports that this card also worked with orinoco_cs. I will continue to use prism2_cs since it is the 'official' driver-module offered by Ovislink, but I am interested in reports about using orinoco_cs, especially the differences to prism2_cs. +

+ +

+Things you need for compiling linux-wlan-ng:
+- sources of linux-wlan-ng from http://www.linux-wlan.com
+- sources of pcmcia-cs from http://pcmcia-cs.sourceforge.net
+- sources of your linux kernel from http://www.kernel.org +

+ +

+For Debian-users: apt-get source linux-wlan-ng pcmcia-cs kernel-source-`uname -r` +

+ +

+Run ./Configure in the source-directory of pcmcia-cs. +

+

+Run ./Configure in the source-directory of linux-wlan-ng and answer the following question with yes:
+ +Build Prism2.x PCMCIA Card Services (_cs) driver? (y/n) [y]: y + +

+

+The other modules (PCI- and USB-drivers) are not needed. +

+ +

+Compile and install (as root) pcmcia-cs (if it is not installed yet) and linux-wlan-ng by running in both of the source-directories:
+make && make install. +

+ +

+Add the following lines to the file /etc/pcmcia/config.opts. In case you are using Debian you can add it to /etc/pcmcia/wlan-ng.conf, since all *.conf-files in /etc/pcmcia/ are sourced from /etc/pcmcia/config.opts: +

+ +

+ +card "Intersil PRISM2 11 Mbps Wireless Adapter"
+   manfid 0x0156, 0x0002
+   bind "prism2_cs" +
+

+ +

+With this card-definition the card will be recognized correctly by cardmgr when it is inserted into the PCMCIA-slot and the module /lib/modules/`uname -r`/pcmcia/prism2_cs.o will be loaded. +

+ +

+Next you have to configure the files /etc/pcmcia/network.opts for the network-parameters of the WLAN-interface /dev/wlan0 and /etc/pcmcia/wlan-ng.opts for the WLAN-configuration itself. Both files are commented thoroughly and the names of the variables are rather self-explaining. +

+ +
+ +

+This is my /etc/pcmcia/wlan-ng.opts without the Comment-lines:
+(YES, I changed my WEP-keys :-) ) +

+ +

+ +============ Begin of File /etc/pcmcia/wlan-ng.opts ============
+WLAN_VERSION=0
+WLAN_PATCHLEVEL=1
+WLAN_SUBLEVEL=15
+WLAN_EXTRAVERSION=
+
+case "$ADDRESS" in
+wlannoenable,*,*,*)
+    WLAN_ENABLE=n
+;;
+*,*,*,*)
+    #=======WEP===========================================
+    lnxreq_hostWEPEncrypt=true
+    lnxreq_hostWEPDecrypt=true
+    dot11PrivacyInvoked=true
+    dot11WEPDefaultKeyID=0
+    dot11ExcludeUnencrypted=true
+    dot11WEPDefaultKey0=01:23:45:67:89:AB:CD:EF:00:00:00:00:00
+    dot11WEPDefaultKey1=CC:CC:CC:CC:CC:CC:CC:CC:CC:CC:CC:CC:CC
+    dot11WEPDefaultKey2=FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:F0
+    dot11WEPDefaultKey3=00:00:00:00:00:00:00:00:00:00:00:00:0F
+
+    #=======SELECT STATION MODE===================
+    IS_ADHOC=n # y|n, y - adhoc, n - infrastructure
+
+    #=======INFRASTRUCTURE STATION START===================
+    AuthType="sharedkey"
+    DesiredSSID="wlan"
+
+    #=======ADHOC STATION START============================
+    SSID="adhoc-wlan"
+    BCNINT=100
+    CHANNEL=6
+    BASICRATES="2 4"
+    OPRATES="2 4 11 22"
+    ;;
+esac
+============ End of File /etc/pcmcia/wlan-ng.opts ============ +
+

+ +

+The settings for ad-hoc-mode are untested, since I have not yet found anybody for testing. +

+ +

+The nickname of the card can be set with the following command:
+ +wlancfg set wlan0
+p2CnfOwnName=mynewnickname +
+

+ +
+ +

+This is my /etc/pcmcia/networks.opts without the Comment-lines: +

+ +

+ +============ Begin of File /etc/pcmcia/networks.opts ============
+case "$ADDRESS" in
+*,*,*,*)
+    BOOTP="n"
+    DHCP="n"
+    PPPOE="n"
+    WHEREAMI="n"
+    IPADDR="192.168.1.1"
+    NETMASK="255.255.255.0"
+    IPMASQ="n"
+    start_fn () { return; }
+    stop_fn () { return; }
+    NO_CHECK=n
+    NO_FUSER=n
+    ;;
+esac
+============ End of File /etc/pcmcia/networks.opts ============ +
+

+ +

+In my case I did not have to set a gateway because I am running a 1024bit-encrypted VPN (from www.tinc.org) over the radio-connection which is my default route. +

+ +
+ +
+ + +

+ +Setting up the Access-Point + +

+ +

+Important Note: You can configure everything under Linux. No need to boot Windows. +

+ +

+Some interesting facts (which took me quite some time to find in the manual):
+Default-IP-address: 192.168.0.1
+Default-password: public
+Needed Cable: straight TwistedPair-Cable when connected to a switch or hub, a crossover cable when connecting directly to a NIC (network interface card) +

+ +

+Download ap-utils from http://ap-utils.polesye.net/. +

+ +

+Compile the programs:
+ +./configure
+make && make install +
+

+ +

+Start the program ap-config. +

+ +

+Enter the default-IP-address of the AP (192.168.0.1), the default-password ('public') and choose 'AP type: ATMEL'
+This should connect you to the AP.
+If this does not work check your network and routing settings, especially the netmask +

+ +

+The configuration is explained in the manual that came with the AP. +

+ +
+ +
+Some oddities you may encounter: +
+ +

+The WEP saved in the AP will never displayed, even though they were entered and saved correctly. The only thing you can to ensure encryption works is testing it with a WLAN-card and checking it with wlancfg show wlan0 +

+ +
+ +

+One really interesting feature of ap-config is the possibility of changing the radio power output of the AP: +

+ +

+This scale is everything I guessed so far. If you have any more details please let me know: +

+ + + + + + + + + + + + + + + + + + +
+

+decimal number in ap-config +

+
+

+power output +

+
+

+128 +

+
+

+100% (whatever this means in W) +

+
+

+255/0 +

+
+

+50% +

+
+

+127 +

+
+

+0%/off +

+
+ +
+

+Have fun! +

+ +
+
+
+
+ +

+© 2002 by Wolfgang Fuschlberger
+last update: 2002-11-24 +

+ +
+ + + + + + +
+ + + + diff --git a/Documentation/README.RPM b/Documentation/README.RPM new file mode 100644 index 0000000..c6621ad --- /dev/null +++ b/Documentation/README.RPM @@ -0,0 +1,7 @@ +After this inclusion people should be able easily build .rpm themselves +with: + +rpmbuild -tb ap-utils-1.3.4pre1.tar.gz + +Red Hat users will have to edit ~/.rpmmacros and add: +%make %__make diff --git a/Documentation/README.ap-gl b/Documentation/README.ap-gl new file mode 100644 index 0000000..0930aee --- /dev/null +++ b/Documentation/README.ap-gl @@ -0,0 +1,3 @@ +Client stations Status: +status 3 - normal connected +status 9 - awaiting authorization diff --git a/Documentation/Ukrainian/INSTALL b/Documentation/Ukrainian/INSTALL new file mode 100644 index 0000000..859b8fc --- /dev/null +++ b/Documentation/Ukrainian/INSTALL @@ -0,0 +1,28 @@ +¶ÎÓÔÒÕËÃ¦Ñ ÐÏ ¦ÎÓÔÁÌÑæ§ +------------------------- + +1. úͦΦÔØ (ÐÅÒÅצÒÔÅ) ÎÁÌÁÛÔÕ×ÁÎÎÑ × `Makefile' ÐiÄ ×ÁÛÕ ÓÉÓÔÅÍÕ. +2. äÌÑ ËÏÍЦÌÑæ§ ÐÁËÅÔÕ ÎÁÂÅÒ¦ÔØ `make' . +3. äÁÌi ×ÉËÏÎÁÊÔÅ 'make install', ÄÌÑ ¦ÎÓÔÁÌÑæ§ ÕÔ¦Ì¦Ô × ÄÉÒÅËÔÏÒ¦À +'/usr/local/bin'. äÌÑ ÃØÏÇÏ ×ÁÍ ÐÏÔÒ¦ÂÎÏ ÍÁÔÉ ÐÒÁ×Á root. +4. ÷É ÍÏÖÅÔÅ ÓÔÅÒÔÉ Â¦ÎÁÒΦ ÔÁ ÏÂ'¤ËÔΦ ÆÁÊÌÉ Ú `src` ÄÉÒÅËÔÏÒ¦§ ×ÉËÏÎÁ×ÛÉ +`make clean' × ÄÉÒÅËÔÏÒ¦§ `src'. + +îÅÏÂȦÄΦ ËÏÍÐÏÎÅÎÔÉ +------------ + +äÌÑ ËÏÍЦÌÑæ§ ÔÁ ÚÁÐÕÓËÕ ÐÒÏÇÒÁÍ ap-utils ×ÁÍ ÎÅÏÂȦÄÎÏ ÍÁÔÉ ¦ÎÓÔÁÌØÏ×ÁÎÕ +¦Â̦ÏÔÅËÕ ncurses × ×ÁÛ¦Ê ÓÉÔÅͦ. +â¦ÌØÛ¦ÔØ ÄÉÓÔÒÉÂÕÃ¦Ê ì¦ÎÕËÓ ÍÁÀÔØ × ÓϦ ÃÀ ¦Â̦ÏÔÅËÕ , ÑËÝÏ × ×ÁÛ¦Ê ÓÉÓÔÅͦ +ÃÑ Â¦Â̦ÏÔÅËÁ צÄÓÕÔÎÑ , ×É ÍÏÖÅÔÅ ×ÚÑÔÉ §§ Ú: + + ftp://ftp.gnu.org/gnu/ncurses/ + ftp://dickey.his.com/ncurses/ + +ôÁËÏÖ ×ÁÍ ÐÏÔÒ¦ÂÅÎ gcc ËÏÍЦÌÑÔÏÒ Ú GNU Compiler Collection. +êÏÇÏ ÍÏÖÎÏ ×ÚÑÔÉ Ú ÎÁÓÔÕÐÎÉÈ ÓÁÊÔ¦×: + + ftp://gcc.gnu.org/pub/gcc/releases/ + ftp://ftp.gnu.org/gnu/gcc/ + http://gcc.gnu.org/mirrors.html + diff --git a/Documentation/Ukrainian/README b/Documentation/Ukrainian/README new file mode 100644 index 0000000..dc89ed6 --- /dev/null +++ b/Documentation/Ukrainian/README @@ -0,0 +1,26 @@ +äÌÑ ×ÓÔÁÎÏ×ÌÅÎÎÑ ÍÁËÓÉÍÁÌØÎϧ ÐÏÔÕÖÎÏÓÔ¦ ÄÌÑ ×ÁÛÏÇÏ AP +×ÓÔÁÎÏצÔØ ÚÎÁÞÅÎÎÑ ÄÌÑ ÎÅÏÂȦÄÎÏÇÏ ËÁÎÁÌÕ × 128 (0x80). + + +! ðÒÏÔÅ ÞÁÓÏÍ ËÒÁÝÅ Ò¦ÛÅÎÎÑ - ÅËÓÐÅÒÅÍÅÎÔÁÌØÎÏ ×ÉÚÎÁÞÉÔÉ ÚÎÁÞÅÎÎÑ +! ÐÒÉ ËÒÁÝ¦Ê ÑËÏÓÔ¦ Ú×'ÑÚËÕ, ÎÅ ÚÁ×ÖÄÉ ×ÏÎÏ ÂÕÄÅ ÍÁËÓÉÍÁÌØÎÅ. + +â¦ÌØÛÅ ¦ÎÆÏÒÍÁæ§ ×É ÍÏÖÅÔŠĦÚÎÁÔÉÓÑ Ú: + http://pasadena.net/aprf/; + http://www.wi2600.org/mediawhore/nf0/wireless/docs/802.11/WAP11/fun_with_the_wap11.txt; + http://desync.com/linksys. + +áÓÏæÊÏ×ÁΦ ÓÔÁÎæ§ +---------------- +ú ×ÅÒÓ¦§ 0.7.3-pre1 Ú'Ñ×ÉÌÁÓØ ÍÏÖÌÉ×iÓÔØ ÚÁÐÉÓÕ×ÁÔÉ ÓÐÉÓÏË MAC ÁÄÒÅÓ ÓÔÁÎÃ¦Ê +Õ ÆÁÊÌ ~/ap-nwn.stations. + +÷¦ÄÏͦ AP +------------------ +÷ÉËÏÒÉÓÔÏ×ÕÀÞÉ ÃÀ ÏÐæÀ AP Ú ÍÅÎÀ ÓÔÁÔÉÓÔÉËÉ ×É ÍÏÖÅÔÅ ÂÁÞÉÔÉ +×Ó¦ Access Points Ñ˦ ×ÉÄÎÏ Ú ×ÁÛÏÇÏ AP. + +! õ÷áçá!!! ÷ÉËÏÒÉÓÔÁÎÎÑ Ã¦¤§ ÏÐæ§ ÎÅÂÅÚÐÅÞÎÏ - ×É ÍÏÖÅÔÅ ÚÁÇÕÂÉÔÉ ×ÁÛ¦ +! ÎÁÌÁÛÔÕ×ÁÎÎÑ. õ SMC 2655W , ÄÌÑ ×ÉÐÒÁ×ÌÅÎÎÑ Ã¦¤§ ÓÉÔÕÁæ§ ÎÅÏÂȦÄÎÏ +! צÄÎÏ×ÉÔÉ ÚÁ×ÏÄÓØ˦ ÎÁÌÁÛÔÕ×ÁÎÎÑ. + diff --git a/Documentation/ap-config.8 b/Documentation/ap-config.8 new file mode 100644 index 0000000..0f3a447 --- /dev/null +++ b/Documentation/ap-config.8 @@ -0,0 +1,151 @@ +.\" Manpage for ap-config utility +.\" from Wireless Access Point Utilitess for Unix +.\" +.\" Copyright (c) 2002 Roman Festchook +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License Version 2 from +.\" June 1991 as published by the Free Software Foundation. +.\" +.\" This program is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License along +.\" with this program; if not, write to the Free Software Foundation, Inc., +.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +.TH ap-config 8 "Wireless Access Point Utilites for Unix" +.SH NAME +ap-config \- configure and monitor Atmel and NWN based APs + +.SH SYNOPSIS +.B ap-config + +.SH DESCRIPTION +.B ap-config +to config and get stats from Atmel-chipset based AP with ATMEL Private MIB support. + +.SH MENU +.PP +.B Info/ +.TP +.B SysInfo +Get info about AP hardware and software +.TP +.B Ethernet +This option displays the Ethernet statistics for your reference. +.TP +.B Wireless +This option displays the wireless statistics for your reference. +.TP +.B Stations (atmel) +Under this menu the user will be able to see the Associated Stations that are currently associated with the Access Point. For each associated station the user will be able to see the MAC Address. From version 0.7.3-pre1 you may save mac addresses list to file ~/.stations. +Stations on NWN AP: +For each associated station the user will be able to see the MAC Address, Link Quality, RSSI and Idle time. + * Mac address: If the association is pending (that is, the Client is scanning, authenticating or associating), assocAddress contains the MAC address of that Client with the group bit set to indicate that the Access Point is aware of the presence of that Client. The other objects of the entry will be updated based on the information extracted from the received Probe Requests. + * Link Quality: An indicator for the quality of the Client. If the association is still pending, the quality is calculated over the received Probe Requests from the Client. If the Client is associated, the quality derived from any activity with the Client. The actual quality source depends on the selected quality indicator. The semantics of the indicator is 'low is good quality' and 'high is bad quality'. + * IdleTime: An indicator (in seconds) for the age of the information on the Client. The age is reset to 0 if any activity of this Client is detected. + * RSSI: An indicator for the RSSI of the Client. If the association is still pending, the RSSI is calculated over the received Probe Requests from the Client. If the Client is associated, the RSSI derived from any activity with the Client. +.TP +.B KnownAP +By using option APs from info menu you may see all Access Points thats visible by your AP. + * Link Quality: An indicator for the quality of the Client. If the associat ion is still pending, the quality is calculated over the received Probe Requests from the Client. If the Client is associated, the quality derived from any activity with the Client. The actual quality source depends on the selected quality indicator. The semantics of the indicator is 'low is good quality' and 'high is bad quality'. + * RSSI: An indicator for the RSSI in dBm of the Client. If the association is still pending, the RSSI is calculated over the received Probe Requests from the Client. If the Client is associated, the RSSI derived from any activity with the Client. + * WARNING! By reports this option my be dangerously - in some cases you may lost you AP configuration and on SMC2655W the one way to fix it - only restore factory defaults. +.PP +.B Config/ +.TP +.B Bridging + IP configuration - If the server site supports DHCP function and the DHCP Enable box is ticked; the IP address of an access point will be automatically displayed and assigned; otherwise, you need to key in an IP address now. + The primary port provides a wired or wireless method to change the access point setting. If the Ethernet option is ticked, the setting of an access point can be done through Ethernet. If the Wireless option is ticked, the access point function can be set through a wireless station. Wireless station means a laptop PC or a desktop PC equipped with an IEEE802.11b PCMCIA card or USB dongle. + Enable SNMP Traps enables the SNMP trap function. You can view the records by using ap-trapd utility. + You are allowed to set your access point to be used as Access point, Access point client, or Wireless bridge. + * Access Point - An internetworking device that seamlessly connects wired and wireless networks together. + * Wireless bridge Point to point - The point-to-point wireless bridge configuration uses two Wireless Bridge units to connect two separate LANs. You must to fill in the Remote MAC Address before your bridge-function-enable access point can work with it. + * Point to multipoint - When connecting three to more separate LANs, each LAN located building requires a wireless bridge. This is called Multipoint wireless bridge and again requires one Master bridge unit and two or more Slave bridge units as required. If the point-to-multipoint option is selected, your bridge-function-enable access point will designate as a Mater and to work with it, others bridges need to be set as a point-to-point bridge and enter the MAC address of the mater access point. +.TP +.B Wireless +You can give your access point a name and give it an ESSID (Extended Service Station ID), which can allow other wireless stations, which knows the ESSID, to link with it. + +.TP +.B Privacy +The Privacy options allow you to enable 64-bit or 128-bit WEP (wired equivalent privacy) encryption. If an encryption function is not needed, you can just simply tick on the Disable box to disable it. If the 64-bit or 128-bit encryption function is enabled, there are four sets of key need to be filled into the blanket boxes. For the 64-bit encryption, each key is required to enter 5 Hex digits. For example: 11 22 33 44 55 66. The 128-bit encryption requires each key to enter 13 Hex digits. For example: 12 34 56 78 9A BC DE F0 11 22 33 44 55. +.br +NOTE! The WEP keys you enter are really accepted and written to the AP, permanently if you do an Upload from the Commands menu after setting them. However, the new key values are not echoed to the user when you return to the Privacy settings under the Config menu. This is a security feature of SNMP implementation in this hardware. + +.TP +.B Authorized MAC address +For security or management purpose, you can edit a list of authorized MAC addresses, which are allowed to view or modify the setting of an access point. Authorization Table Enable option allows you to enable or disable this function. + +.TP +.B Community +The Community configuration allow you to set a phrase for administrator and manufacturer community and a phrase for user community. If a user knows the phrase of administrator, he/she is authorized to change the setting of an access point. If a user only knows about the phrase of a user community; he/she is allowed to view the setting of an access point but is not allowed to change the setting. + +.TP +.B Radio + Under the Radio user will be able to set or get the Transmitting Powervalues, for the Control Register 31 of the Baseband, for each channel. Reg CR31: Under this option user defines a value for the transmitted power (Value for the Control register 31 of the baseband) and it must be in the range 128 (max) to 255 (min) in Decimal form. Starting from version 0.6 of Access Point SNMP Config utility it's possible to set power output level for your AP. You may set signal power output in range from 0mw to 100mw by setting value for corresponding channel from 0 to 255 (0xFF). The scale is as follows: +.BR + Value: 00----------128--------255 +.br + Power: 0mw--------100mw-------0mw +.br + So to get maximum power output from your AP set value for corresponding channel to 128 (0x80). But sometimes better solution - experimentalli choose values for best link quality, sometimes not max. More info you can get from: + http://pasadena.net/aprf/; + http://www.wi2600.org/mediawhore/nf0/wireless/docs/802.11/WAP11/fun_with_the_wap11.txt. +.TP +.B Advanced +.PP +StationDBTimeout: This object specifies a timeout on entries and their state information in the Station database. For Clients the Station database is mapped on the roamTable. For Access Points, the Station database is mapped on the assocTable. The timeout is in seconds. +.PP +ACKWindow: The ACK frame time out defined in number of slottimes. This can be used to optimize long range links. + +.PP +.B Commands/ +.TP +.B Upload +After you ve changed any value or setting of an access point through the SNMP config utility. You must come back to this option to make the new changes and setting s validated. Also, only an administrator and manufacturer is allowed to do such changes. +.TP +.B Defaults +Restore factory default configuration. +.TP +.B Reset +Reset AP. All changed and not uploaded settings will be lost. +.TP +.B TestMode/ + When user selects the Tests option a form will appear indicating a number of parameter needed to be set by the user in order to perform the Radio test. + Antenna: Under this option we specify the antenna to be tested (A, B). + Tx Filter: Under this option user needs to select the Baseband transmitting Filter to be used. There are two options (US, JPN) available since the bandwidth for Europe - USA is 11MHz and for, Japan is 14MHz. + Rate: Under this option user needs to specify the rate to be used among the following options 1Mbps, 2Mbps, 5.5Mbps and 11Mbps. + Channel: Under this option user needs to select the channel to be used. There are 14 channels available. + After setting the parameters there are three commands available: Continuous Tx (With modulation), Continuous Tx (Witout modulation) and Continuous Rx: + * Continuous Tx (with modulation): Using this command the MAC sets the transmitter in continuous mode with modulation. We can measure the output power of the radio. + * Continuous Tx (without modulation): Using this command we can measure the frequency accuracy of the radio. The MAC sets the baseband Processor in test mode and turns off the spreading and scrambling codes. + * Continuous Rx: With this command user can set the device in a receiving mode. + Note: In order to perform the above test user needs to have a Spectrum Analyzer connected. + +.TP +.B Connect/ +In order to make a connection with Access Point user needs to set two parameters. The IP Address of the Access Point and the Community name (default 'public'). +.TP +.B Search/ +Find connected Access Points. Search for WNW APs only works if community set to right AP community. It's useful if you know community but dont know what ip your AP got from DHCP server. +You must have support for multicasting enabled in kernel. +.TP +.B About/ +About function shows the Wireless Access Point Configurator for Unix version and short info. +.TP +.B Shell/ +Run subshell. To return type 'exit' + +.SH NAVIGATION KEYS +In case you unable to use cursor keys to menu navigate - try to use "h" to go left, "j" to go down, "k" to go up, "l" to go right, like vi editor. + +.SH AUTHOR +Roman Festchook +.br +http://ap-utils.polesye.net + +.SH SEE ALSO +ap-trapd(8), ap-mrtg(8) + diff --git a/Documentation/ap-mrtg.8 b/Documentation/ap-mrtg.8 new file mode 100644 index 0000000..459bb99 --- /dev/null +++ b/Documentation/ap-mrtg.8 @@ -0,0 +1,143 @@ +.\" Manpage for ap-mrtg utility +.\" from Wireless Access Point Utilitess for Unix +.\" +.\" Copyright (c) 2002 Roman Festchook +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License Version 2 from +.\" June 1991 as published by the Free Software Foundation. +.\" +.\" This program is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License along +.\" with this program; if not, write to the Free Software Foundation, Inc., +.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +.TH ap-mrtg 8 "Wireless Access Point Utilites for Unix" +.SH NAME +ap-mrtg \- AP to MRTG data translator + +.SH SYNOPSIS +.B ap-mrtg +.B -i +.IR ip +.B -c +.IR community +.B -t +.IR type +.B [-b +.IR bssid +.B ] +.B [-v] +.B [-r] +.B [-h] + +.SH DESCRIPTION +.B ap-mrtg +get stats from AP and return it in MRTG parsable format. +.br +The Multi Router Traffic Grapher (MRTG) is a tool to monitor the traffic load on network-links. MRTG generates HTML pages containing graphical images which provide a LIVE visual representation of this traffic. You may get it from: http://people.ee.ethz.ch/~oetiker/webtools/mrtg/. + +.SH OPTIONS +.TP +.B -i ip +AP ip address +.TP +.B -c community +SNMP community string +.TP +.B -t type +Statistics type ireless, thernet, associated tations or ink quality in client mode; +.TP +.B -b bssid +Mac address of the AP to which get link quality. +.TP +.B -v +report MRTG about problems connecting to AP - if you want to get report about when AP spot work enable it +.TP +.B -r +reset AP when getting LinkQuality stats +.TP +.B -h +print help screen + +.SH MRTG Configuration Example +Simple mrtg.cfg for get stats from Atmel based AP: +.nf +Target[ap_e]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t ethernet -v` +Options[ap_e]: noinfo, growright, bits +MaxBytes[ap_e]: 12500 +Title[ap_e]: Traffic Analysis for AP Ethernet port +PageTop[ap_e]:

Traffic Analysis for AP Ethernet port

+ +Target[ap_w]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t wireless -v` +Options[ap_w]: noinfo, growright, perminute +ShortLegend[ap_w]: pkt/min +MaxBytes[ap_w]: 100000000 +Legend1[ap_w]: Packets In +Legend2[ap_w]: Packets Out +YLegend[ap_w]: packets/min +Title[ap_w]: Traffic Analysis for AP Wireless port +PageTop[ap_w]:

Traffic Analysis for AP Wireless port

+ +Target[ap_s]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t stations -v` +Options[ap_s]: growright, gauge, noinfo +ShortLegend[ap_s]: stations +MaxBytes[ap_s]: 10 +YTics[ap_s]: 10 +Legend2[ap_s]: none +Legend1[ap_s]: Associated Stations +YLegend[ap_s]: Associated Stations +Title[ap_s]: Traffic Analysis for AP Associated Stations +PageTop[ap_s]:

Traffic Analysis for AP Associated Stations

+LegendO[ap_s]: none +LegendI[ap_s]: Associated Stations +.fi + +.SH Link Quality stats +If the AP is not in client mode, it errors out. Grabbing the signal strength resets the ethernet and wireless stats and AP. It's +.B safe +do not use this type of stat. +.BR +Optionally you may set mac address (bssid) of the AP to which getting link quality stats, by default used first returned AP. +.BR +Simple mrtg.cfg for get stats from Atmel based AP with Link Quality and reset stats: + +.nf +Target[ap_e]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t ethernet -v` +Options[ap_e]: noinfo, growright, bits, gauge +MaxBytes[ap_e]: 12500 +Title[ap_e]: Traffic Analysis for AP Ethernet port +PageTop[ap_e]:

Traffic Analysis for AP Ethernet port

+ +Target[ap_w]: `/usr/local/bin//ap-mrtg -i 192.168.0.1 -c "public" -t wireless -v` +Options[ap_w]: noinfo, growright, perminute, gauge +ShortLegend[ap_w]: pkt/min +MaxBytes[ap_w]: 100000000 +Legend1[ap_w]: Packets In +Legend2[ap_w]: Packets Out +YLegend[ap_w]: packets/min +Title[ap_w]: Traffic Analysis for AP Wireless port +PageTop[ap_w]:

Traffic Analysis for AP Wireless port

+ +Target[EdAP_s]: `/usr/local/bin/ap-mrtg -i 192.168.0.1 -c "public" -t link -b FFFFFFFF -v -r` +MaxBytes[EdAP_s]: 100 +Options[EdAP_s]: noinfo,growright,integer,unknaszero,nopercent,gauge +Title[EdAP_s]: Signal Analysis for EdAP Wireless port +YLegend[EdAP_s]: Signal Strength dBm/Quality +ShortLegend[EdAP_s]: dBm +PageTop[EdAP_s]:

Signal/Quality Strength for EdAP

+LegendI[EdAP_s]: Signal Quality +LegendO[EdAP_s]: Signal Strength in dBm +.fi + +.SH AUTHOR +Roman Festchook +.br +http://ap-utils.polesye.net + +.SH SEE ALSO +ap-config(8), ap-trapd(8) + diff --git a/Documentation/ap-trapd.8 b/Documentation/ap-trapd.8 new file mode 100644 index 0000000..fc67edc --- /dev/null +++ b/Documentation/ap-trapd.8 @@ -0,0 +1,132 @@ +.\" Manpage for ap-trapd utility +.\" from Wireless Access Point Utilitess for Unix +.\" +.\" Copyright (c) 2002 Roman Festchook +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License Version 2 from +.\" June 1991 as published by the Free Software Foundation. +.\" +.\" This program is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License along +.\" with this program; if not, write to the Free Software Foundation, Inc., +.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +.TH ap-trapd 8 "Wireless Access Point Utilites for Unix" +.SH NAME +ap-trapd \- a SNMP trap processing daemon + +.SH SYNOPSIS +.B ap-trapd +.B [ -i +.IR device +.B ] [-u +.IR user +.B ] [-s] + +.SH DESCRIPTION +.B ap-trapd +It's a SNMP trap processing daemon that accepts traps, parse them and store useful data using syslog, at logging LEVEL0. +Specify +.IR device +to listen for SNMP traps on the particular device (this option only works at Linux). To be running by user different from +nobody you may specify +.IR user. +.br +To correct work with Smartbridges APs specify +.IR -s +key (they use specific traps). +.br +Utility added to ap-utils from version 0.8. + +.SH SYSLOG +To store traps to own log file you may add next string to your +.B /etc/syslog.conf +.br + local0.* /var/log/ap-traps.log +.br +After doing it, just restart syslogd with command like +.br + killall -HUP syslogd + +.SH TRAPS +When a trap is received, a message will be logged indicating that an action happened to the Access Point such as: +.TP +Trap Reassociation: +This trap message is sent when a Station reassociation request is received from Access Point. +.TP +Trap Association: +Indicates the reception of an association request packet and the sender Station's successful association with the Access Point. +.TP +Trap Disassociation: +This trap message is sent when a disassociation notification packet is received from a Station. +.TP +Trap Reset: +This trap message is sent when Access Point Resets. +.TP +Trap Setting IP Address with Ping: +This trap message is sent when the Access Point IP address is set with the transmission of a ping message. +.TP +Trap Start Up: +This trap message is sent when the Access Point Starts Up. +.TP +Trap Failed To Erase Flash: +This trap message is sent when Access Point Failed To Erase Flash. +.TP +APClientScanning +Access Point Client is scanning... +.TP +APClientAuthenticating +Access Point Client is authenticating with the AP. +.TP +APClientAssociating +Access Point Client is associating with the AP. +.TP +APClientReAssociating +Access Point Client is reassociating with the AP. +.TP +APClientAuthenticationFailed +Access Point Client has failed authenticating with the AP. +.TP +APClientAssociationFailed +Access Point Client has failed associating with the AP. +.TP +APClientConnected +Access Point Client has been connected with the AP. +.TP +APClientDisconnected +Access Point Client has been disconnected from the AP. +.TP +APClientScanFailed +Access Point Client has failed scanning! +.TP +APClientJoinFailed +Access Point Client has failed joining! +.TP +APClientJoining +Access Point Client is in join state. + +.SH Smartbridges specific TRAPS +.TP +MultiAttachedStation +Multiple attached stations in the ethernet size +.TP + + +.SH SECURITY +Utility ap-trapd must be running by 'root', after opening port utility change owner to 'nobody', so this user must exist in you system. +You may set +.IR user +using -u option as described below for change default unprivileged user. + +.SH AUTHOR +Roman Festchook +.br +http://ap-utils.polesye.net + +.SH SEE ALSO +ap-config(8), ap-mrtg(8), syslogd(8) + diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..d99f25e --- /dev/null +++ b/INSTALL @@ -0,0 +1,273 @@ +Installation instructions +------------------------- + +Just run: + ./configure + make + make install +This will install programs into '/usr/local/bin', ap-trapd installed +in to '/usr/local/sbin'. You must be logged as root to install. +You can remove the program binaries and object files from the source +directory by typing `make clean'. + +Requirements +------------ + +To build and run ap-utils you need ncurses libs installed in your system. +Most distribution come with this libs installed, but if your installation +lack it, you may get ncurses from: + ftp://ftp.gnu.org/gnu/ncurses/ + ftp://dickey.his.com/ncurses/ + +Also you need gcc compiler from GNU Compiler Collection that may be obtained +from the following sites: + ftp://gcc.gnu.org/pub/gcc/releases/ + ftp://ftp.gnu.org/gnu/gcc/ + http://gcc.gnu.org/mirrors.html +or IBM C 5.0 for AIX. + +Optional Features +----------------- + --disable-regdomain disable regulation domain channel restrictions + + +64-bit Sparc Linux +------------------ +Tell your 64-bit Sparc Linux users that if they want to compile +ap-utils, it must be compiled in a 32-bit environment (most of them know +this already.) They should type "sparc32 bash" before running +"./configure" or "make". + +QNX +--- +ap-utils compiles and runs under QNX RTP - tested with free CD version of this OS. Need to use included install program. +Compiled with included gettext: + ./configure --with-included-gettext + make + make install + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, 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 only 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. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. 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. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. 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. + +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 variables by setting +them in the environment. You can do that on the command line like this: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Environment 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 must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' 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. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it cannot guess the host 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 host type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option 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'. In this case, you should also specify the +build platform with `--build=TYPE', because, in this case, it may not +be possible to guess the build platform (it sometimes involves +compiling and running simple test programs, and this can't be done if +the compiler is a cross compiler). + +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. + +Environment 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 + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--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. + +`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..770e90a --- /dev/null +++ b/Makefile.am @@ -0,0 +1,31 @@ +# +# Makefile.am from Access Point SNMP Utils for Linux +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +## Process this file with automake to produce Makefile.in + +SUBDIRS = intl lib src po Documentation ap-gl + +AUTOMAKE_OPTIONS = gnu + +EXTRA_DIST = config/* ap-utils.spec + +dist-hook: + -chmod -R a+r $(distdir) + tar chof $(distdir).tar $(distdir) + bzip2 -v9f $(distdir).tar diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..79ca9d2 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,581 @@ +# Makefile.in generated by automake 1.7.8 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am from Access Point SNMP Utils for Linux +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +SUBDIRS = intl lib src po Documentation ap-gl + +AUTOMAKE_OPTIONS = gnu + +EXTRA_DIST = config/* ap-utils.spec +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = intl/Makefile +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \ + ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am NEWS \ + THANKS TODO aclocal.m4 config.h.in config/config.guess \ + config/config.rpath config/config.sub config/depcomp \ + config/install-sh config/missing config/mkinstalldirs configure \ + configure.in +DIST_SUBDIRS = $(SUBDIRS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h + +$(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.h.in + +distclean-hdr: + -rm -f config.h stamp-h1 +intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/config $(distdir)/intl $(distdir)/po + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + --with-included-gettext \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-recursive ctags ctags-recursive dist \ + dist-all dist-gzip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am dvi-recursive info \ + info-am info-recursive install install-am install-data \ + install-data-am install-data-recursive install-exec \ + install-exec-am install-exec-recursive install-info \ + install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \ + ps-recursive tags tags-recursive uninstall uninstall-am \ + uninstall-info-am uninstall-info-recursive uninstall-recursive + + +dist-hook: + -chmod -R a+r $(distdir) + tar chof $(distdir).tar $(distdir) + bzip2 -v9f $(distdir).tar +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..c8794b3 --- /dev/null +++ b/NEWS @@ -0,0 +1,127 @@ +ap-utils-1.3.3 => ap-utils-1.4 + * ap-gl: added new utility for ATMEL410 AP with 1.4k.1 firmware and support for RADIUS auth, wireless clients isolation, Repeater mode, connected APs extended info (MAC, IP, RSSI, LQ, Status, Port); + * big internal code movement for future easy adding new utilites to common engine; + * many fixes and minor feature additions. + +ap-utils-1.3.2 => ap-utils-1.3.3 + * many new options and better support for ATMEL12350 devices; + * added AP type autodetection; + * added option to choose AP to connect from AP search result; + * user interface improvements; + * many internal improvements to avoid memory leaks; + * BSD compile fixes; + * bigendian fixes; + * added Romanian and Dutch translation. + +ap-utils-1.3.1 => ap-utils-1.3.2 + * added support for new AP type - new revision Netgear ME102 and compatible; + * many small bugfixes for 64bit archs such as the alpha and big endian machines. + * vi-like keys to menu movement; + * some updates for more faster screen handling. + +ap-utils-1.3 => ap-utils-1.3.1 + * connect option for many APs can be stored in options file; + * fixes to build on OpenBSD; + * documentation updates; + * many small bugfixes and code improvements. + +ap-utils-1.2 => ap-utils-1.3 + * QNX RTOS supported; + * updates to support CC&C Technologies APs; + * RSSI (Signal Strenght) now returned in dBm in ap-mrtg and ap-config (ATMEL mode); + * polish localization added, other localization updated; + * added HOWTO use ap-utils with Ovislink hardware; + * FreeBSD building fixes; + * new internal functions added; + * additional check for data correctness added; + * documentation updates and spell checking; + * small bugfixes in ap-mrtg and ap-config. + +ap-utils-1.1.1 => ap-utils-1.2 + * ap-nwn and ap-atmel merged to one utility ap-config; + * getting SNMP data drom AP optimization; + * FreeBSD and NetBSD fixes; + * added support for Smartbridges airBrige speciffic mib; + * added option to disable saving connect options to file; + * updated ukrainian and french translations; + * many documentation updates. + +ap-utils-1.1 => ap-utils-1.1.1 +* small fixes to build on MacOS-X, and under Linux on arm, powerpc and s390. +* ap-atmel: after fixes WEP encryption works fine; added Repeater mode to +Brige modes; now after setting master AP from displated list of Known APs +also setted mode to AP client and ESSID to master AP ESSID, also now AP +resets when getting stat only if brige mode = Access Point. +* ap-nwn: now possible to define 4 WEP keys and choose default key; added some +advanced options to optimize long range links and antenna tuning; added +option to reset AP, display refreshing fixes. + * ap-trapd: updated traps list with new traps from 1.4j.1 firmware; small log +format changes. +* ap-mrtg: fixes about link quality/ signal strenght values displaying without +modyfication. +* documentation: new traps description (ap-trapd.8); andvanced options +description (ap-nwn.8); new supported hardware (README). + + + +ap-utils-1.0.5 => ap-utils-1.1 + a lot of big-endian updates; + fixes for APs under Spain and France regulatory domain; + ap-nwn getting stations code rewriten to support D-Link DWL 1000AP; + build system rewrited to use macros from autoconf and support IBM C compiler under AIX; + in ap-atmel utility added option to connect to one of the known APs; + ap-mrtg now has option to reset AP when getting link quality stats; + many small bug-fixes, user interface improvements, localization and documentation updates, code cleanups. + +ap-utils-1.0.4 => ap-utils-1.0.5 + updates to normally run on big-endian processors; + ap-trapd, ap-mrtg - rewriten to use getopt(), added new options, changed synopsys (!!!) see man-pages; + ap-atmel, ap-nwn - user interface when program react to neutral keys fixed; + ap-atmel - testmode fallback procedure updated; + french localization added. + +ap-utils-1.0.3 => ap-utils-1.0.4 + added man-pages to all utilites; + added manufacturer definition using OUI value; + bus error running on Sparc fix; + compile time option to disable regulation domain restriction; + documentation spelling and updates. + +ap-utils-1.0.2 => ap-utils-1.0.3 + gettext internalization support; + ukrainian localization added; + a lot of internal code rewrites; + small interface improvements and bugfixes. + +ap-utils-1.0.1 => ap-utils-1.0.2 + changed package name to Wireless Access Point Utilites for Unix; + added port to FreeBSD; + fixes in additional info from traps logging by ap-trapd; + fixes in error messages in ap-nwn utulity. + +ap-utils-1.0 => ap-utils-1.0.1 + errors procesing procedure updates; + package building moved to autoconf; + compile time warnings and small bugfixes fixed. + +ap-utils-0.9.6 => ap-utils-1.0 +ap-atmel: + added warnings about potentially dangerous options; + added floating dropdown menus for choose from the list of options; + fixed number of minor bugs. +ap-nwn: + added options: basic rates choose, WEP key setting; + added floating dropdown menus for choose from the list of options; + added option to find IP of connected APs; + fixed number of non critical bugs; + documentation updates. +ap-trapd: + option to bind listening for traps on a specific interface added; + rewriten to log shorter messages without informative data lost; + documentation updates; + bugfixes. +ap-mrtg: + option to get Link Quality/Signal Strenght stat from AP in client mode added; + documentation updates. +SNMP engine: + memory leaks fixes when parsing received packets. diff --git a/README b/README new file mode 100644 index 0000000..13cc75e --- /dev/null +++ b/README @@ -0,0 +1,177 @@ +About +----- +Wireless Access Point Utilites for Unix - it's a set of utilites to configure +and monitor Wireless Access Points under Unix using SNMP protocol. Utilites +are known to compile and run under Linux, FreeBSD, NetBSD, MacOS-X, AIX, +QNX and OpenBSD. + +The software was initially written by Roman Festchook +(ÕËÒÁ§ÎÓØËÏÀ òÏÍÁÎ æÅÝÕË) without any help from manufacturers +and released under the terms GNU General Public License version 2.0. +A copy of the license file is included with this distribution package. + +The project also has a number of contributions, thanks to whose this +software has grown significantly; for a list of them, see files "THANKS" +and "ChangeLog". + +As for version 1.2 Wireless Access Point Utilites for Unix include three utils: + +ap-config: config and get stats from AP: + setting bridging, wireless and ip options, WEP encryption, + mac authorization, radio signal power, and communities to + restrict access to AP, enabling/disabling antennas, + hiding ESSID in broadcast messages; + device test mode; + getting info about AP sofware and hardware, dynamically updated + ethernet and wireless ports statistics, list of associated + stations and visible APs (option to save mac addresses of + current associated stations to file); + executing commands on AP; + config and get stats from devices that support + MIB-II, IEEE 802.11 MIB and NWN DOT11EXT MIB: + setting bridging and wireless options, WEP encryption, + mac authorization, communities to restrict access to AP, + enabling/disabling antennas; + getting info about AP sofware and hardware, dynamically updated + wireless port statistics, information about latest events + and errors, list of current associated stations with info + about signal quality and station activity (option to save + mac addresses of associated stations to file); + search for connected APs; + nice and portable ncurses-based user interface with context-help + navigation menus, floating drop-down menus to choose from + options list, options file to store connect options and + subshell. + +ap-mrtg: to get stat from AP (ATMEL based) and return it in MRTG parseable format: + getting ethernet statistics in bytes, wireless statistics in packets, + associated stations number and Link Quality/Signal Strenght + stats from AP in client mode. + +ap-trapd: to receive, parse and log trap messages from AP (ATMEL based): + log data using standart syslogd; + running by not privileged user; + listening on the specified interface (only on Linux). + +Supported Hardware +------------------ +ap-utils support Atmel chipset based Access Points with ATMEL Private MIB +with enterprises ID 410 (ATMEL410), Access Points with newer ATMEL Private +MIB with enterprises ID 12350 (ATMEL12350) such as Netgear ME102, +and No Wires Needed APs with IEEE 802.11 MIB and NWN DOT11EXT MIB +(NWN). +You can find Known/Reported-to-work hardware in the table below. +If you have had success with ap-utils working with a hardware thats +not in the table below, please report. +Please, if possible, include informations from the ap-config's "sysinfo" +screen in your report. +Also, if possible, please send the MIB file that comes with your device. +This may result in supporting more options in ap-config in the future! +The file may look like 'AT76C510.mib' (in case of ATMEL-based APs), +and usually comes with your SNMP management utility for Windows. + ++------------------------------------------------------------------------------+ +| Supported Access Points | ++------------------------------------------------------------------------------+ +| Manufacturer | Models | Type | ++-------------------------------+-----------------------+----------------------+ +| Global Sun | ProWave GL2411AP | ATMEL410 | +| Linksys | WAP11 pre2 version | ATMEL410 | +| SMC | MC2655W | ATMEL410 | +| Netgear | ME102 | ATMEL12350, ATMEL410 | +| Eumitcom | WA3001A | ATMEL410 | +| Edimax | EW-7205 | ATMEL410 | +| Target | WLAP 24212 | ATMEL410 | +| Micronet | SP918 | ATMEL410 | +| Smartbridges | airPoint, airBridge | ATMEL410 | +| Belkin Components | F5D6130 | ATMEL410 | +| GemTek | TEW-210APB | ATMEL410 | +| GemTek | WX-1500 | NWN | +| Intellinet | AP, Wireless Bridge | ATMEL410 | +| D-Link | DWL 900AP | ATMEL410 | +| D-Link | DWL 1000AP | NWN | +| WLink Syst. (D-Link subs.) | Wen-2021 | ATMEL410 | +| Advantek Networks | AWN-AP128 | ATMEL410 | +| Compex | WavePort WP11 | NWN | +| Zoom | ZoomAir11AP | NWN | +| Telecom | T-Sinus 130X | ATMEL410 | +| Ovislink | Airlive WL-1100AP | ATMEL410 | +| CC&C Technologies | Access Point | ATMEL410 | +| Compaq | WL-400 | NWN (mostly works) | +| Asus | WL-300 | ATMEL410 | +| Topcom | SkyLanR@cer 500 | ATMEL410 | +| Fiberline | WL-1200AP | ATMEL12350 | +| CNet | CNAP-711 | ATMEL410 | +| Yakumo | Access Point | ATMEL410 | +| Dynalink (Askey) | RTW020 | ATMEL410 | +| Acer | Warplink EJA-A | NWN | +| Svec | FD1811 | ATMEL12350, ATMEL410 | +| Tellus Group Corp | A14 | ATMEL12350 | +| Wline | A14 | ATMEL12350 | +| i-Tec | i-Tec AP SILVER | ATMEL410 | +| i-Tec | i-Tec AP GOLD | ATMEL410 | +| Infosmart | INAP88 | ATMEL410 | +| Ark | SOHO-WLAP | ATMEL410 | +| Svec | SOHO-WLAP | ATMEL410 | +| GigaFast | WF711-AP | ATMEL12350 | +| Cameo Communications | WLB-2000/2001 | ATMEL410 | +| Wline | W-2000 | ATMEL410 | ++-------------------------------+-----------------------+----------------------+ + +Please read also HARDWARE-NOTES about hardware-specific information! + +Please note that although many of these devices may use the same MIB enterprise +identification, the actual MIBs may slightly differ, depending on whether +the manufacturer has decided upon hardware modifications. +In ap-config, an effort has been made to only include functionality +for features that are common to 2 or more MIBs with the same enterprise +ID. If you have qualms, then please send us the MIB file that came +with your device! + +I got an AP and I would like ap-utils to support it (it is not on the +--------------------------------------------------------------------- +list above) +----------- +The device has to be either ATMEL- or NWN-based. The first good sign +of a chance it could be supported by the ap-utils, is the presence +of file 'AT76C510.mib', that gets installed along with the original +Windows-based setup utility. +Try to install the accompanying Windows SNMP setup utility, and +browse the directory to which you have got it installed. +If you find the mentioned file, send this file via e-mail +to or . +Chances are, that this file matches more or less the MIBs +of other devices already being supported by ap-utils, and thus the +utility code can be tailored accordingly to support your AP +in as broad number of its features as possible. + +Where to get more information +----------------------------- +You can find info about utils from this README and from man pages +for utilites; as well as in INSTALL and TODO files at toplevel directory. +Additional info and useful links may be found in the Documentation +directory of this package and on our web page http://ap-utils.polesye.net/ . +We also run maillist to discuss any related topics - for more info please +visit http://ap-utils.polesye.net/ . + +Contributing & reporting problems +--------------------------------- +Any help in developing, bugfixing and testing is welcome. Also any +additional documentation, free hardware to support this project and job offers +are greatly welcome. +Please send your comments, if any, to my email - +roma at polesye.net or to the maillist. + +Before sending bugreports please be sure to read docs (firstly, README and FAQ) +and upgrade to the latest version of ap-utils. If problem still exists, then +please send a detailed description of your problem to the maillist. +Include the version of the program, the operating system that you are +using, the compiler and compiler flags used to compile the program (if +you know them), what kind of distribution you are using (in case of a GNU/Linux +system). +If the program crashed and produces a core dump, please provide a +stack trace of the program. +You can do this by running dbx or gdb like this: + gdb core + (gdb) where + diff --git a/THANKS b/THANKS new file mode 100644 index 0000000..99f577d --- /dev/null +++ b/THANKS @@ -0,0 +1,45 @@ +CONTRIBUTORS +Contributions to the project are not limited just to the source code +and bugfixes - addititional contributions include (but are not limited to) +reporting bugs, documentation, test results, helpful and enlightening +discussions, kind words and feedback from users as well as commercial +support and promoting the project. +Below are some of the contributors to the project. Contributions are +being made quite often, therefore, the list can never be considered +"current" enough - it even lags behind the most current release +of the project. ;-) + +Companies: +Engineering and industrial company "VECTOR" [http://www.vector.kharkov.ua] - free hardware samples + +Personals: +Ivan Korshun <2002_ivan at mail dot ru> - some info about Atmel APs +Charles Henderson - some spelling suggestion +Ryan Veety +Evgeni Gechev +Dominique Muller +Rudy Zijlstra +David M Reiger +Kucherak Sergij - ukrainian translation of some docs +Erik Rossen - bugfixes, big-endian port suggestions and patches +Scott L. Thomas - Link Quality stats in client mode for MRTG +Dan Pelleg - BSD port +Lenny Cartier - Mandrake RPM/SRPM packages +thisplanetsux - NetBSD package +Michel Robitaille - french localization +Andy Igoshin - AIX 4.3.3 and AIX native compiler port, a lot of big_endian and code fixes +Rahul G - sources to encode object identifiers +Wojciech Puchar - polish localization, hardware for testing +Jan Rafaj - spelling fixes, bugfixes, functionality enhancements, Q/A +Ashley Gittins - ap-mrtg changes to support ATMEL12350/ME-102 +Daniel E. Eisenbud - MacOS X and Solaris porting + + +Many, many more. +If I've overlooked you and you want to be listed here, +send me e-mail and I'll fix it. + +Thanks to all contributors and users! +Have Fun! +Roman Festchook + diff --git a/TODO b/TODO new file mode 100644 index 0000000..990271c --- /dev/null +++ b/TODO @@ -0,0 +1,20 @@ +TODO for ap-utils: + +* translations (ALWAYS) +* porting to other Unix'es and platforms (ALWAYS) +* support new AP's (ALWAYS) + +* try to not rely on actually configured subnet information on each + network interface in ap scan +* perhaps implement better way to distinguish between ATMEL410 and + ATMEL12350 APs - see TODO comment in ap_search.c +* patch test.c so that it works with ATMEL12350 devices +* adding access for editing feature values in sysinfo.c [by a hidden key, + with a big warning, since this would be a _very_ dangerous option] +* add 802.1X support for ATMEL12350 Tellus APs +* update manpages +* add S Search key in get_opts that would allow - instead of connecting - searching for APs first +* move updates from ap-gl to ap-config +* increase/disable knownAPs limit +* use iptraf like ethernet.desc file to store stations description +* add per client LQ and RSSI stats to ap-mrtg \ No newline at end of file diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..772975e --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,2444 @@ +# generated automatically by aclocal 1.7.8 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 10 + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7.8])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# -*- Autoconf -*- +# Copyright (C) 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# serial 5 -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# gettext.m4 serial 13 (gettext-0.11.1) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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 , 1995-2000. +dnl Bruno Haible , 2000-2002. + +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. +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([$2], [], , [ifelse([$2], [need-ngettext], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])]) + define(gt_included_intl, ifelse([$1], [external], [no], [yes])) + define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) + + 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]) + + 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) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + 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. + + dnl Add a version number to the cache macros. + define([gt_api_version], ifelse([$2], [need-ngettext], 2, 1)) + define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) + define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) + + AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "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_cv_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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + dnl Now see whether libintl exists and depends on libiconv. + if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_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 test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; 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. + INTLOBJS="\$(GETTOBJS)" + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + 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 "$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 + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "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; 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) + AC_SUBST(INTLOBJS) + + 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 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 Checks for all prerequisites of the po subdirectory, +dnl except for USE_NLS. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + + 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 >/dev/null 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 Search for GNU xgettext 0.11 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= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= /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 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 >/dev/null 2>&1], :) + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + AC_MSG_RESULT( + [found $GMSGFMT program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + fi + + AC_OUTPUT_COMMANDS([ + 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 + 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" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES 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 "$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" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + 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|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|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, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + + +AC_DEFUN([AM_MKINSTALLDIRS], +[ + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) + +# lib-prefix.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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_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_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/lib" + 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*) 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/lib"; 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/lib"; 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" +]) + +# lib-link.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([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" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + 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 + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +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. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl 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. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([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" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + 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 $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= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L, +dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. +AC_DEFUN([AC_LIB_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" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" +]) + +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. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + 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([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 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/lib" + 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= + 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= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + 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//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + 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 "X$found_dir" = "X/usr/lib"; 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 "$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 "$hardcode_libdir_flag_spec" && test "$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 "$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 $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 + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + 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*) 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/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) 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 + ;; + -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 "$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:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$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=\"$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 +]) + +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 +]) + +# lib-ld.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +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. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi]) +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 +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. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + 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 +]) + +# iconv.m4 serial AM3 (gettext-0.11) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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). + + 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]) + + 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 +#include ], + [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 +#include ], + [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_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + 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) +]) + +AC_DEFUN([AM_ICONV], +[ + AC_REQUIRE([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 +#include +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([$]{ac_t:- + }[$]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 +]) + +# progtest.m4 serial 2 (gettext-0.10.40) +dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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 , 1996. + +# 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], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# isc-posix.m4 serial 1 (gettext-0.10.40) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) + +# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) + +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) + +# lcmessage.m4 serial 2 (gettext-0.10.40) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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 , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) + diff --git a/ap-gl/Makefile.am b/ap-gl/Makefile.am new file mode 100644 index 0000000..3d763da --- /dev/null +++ b/ap-gl/Makefile.am @@ -0,0 +1,28 @@ +# +# Makefile.am from Wireless Access Point Utilites for Unix +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H +INCLUDES = -I../lib -I../intl -I.. +LIBS = @INTLLIBS@ @LIBS@ + +bin_PROGRAMS = ap-gl + +ap_gl_SOURCES = ap-gl.c auth_mac.c bridge.c stations.c +ap_gl_LDADD = ../lib/libap.a -lmenu + diff --git a/ap-gl/Makefile.in b/ap-gl/Makefile.in new file mode 100644 index 0000000..ff3720d --- /dev/null +++ b/ap-gl/Makefile.in @@ -0,0 +1,439 @@ +# Makefile.in generated by automake 1.7.8 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am from Wireless Access Point Utilites for Unix +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ + +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @INTLLIBS@ @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = -I../lib -I../intl -I.. + +bin_PROGRAMS = ap-gl + +ap_gl_SOURCES = ap-gl.c auth_mac.c bridge.c stations.c +ap_gl_LDADD = ../lib/libap.a -lmenu +subdir = ap-gl +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = ap-gl$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_ap_gl_OBJECTS = ap-gl.$(OBJEXT) auth_mac.$(OBJEXT) bridge.$(OBJEXT) \ + stations.$(OBJEXT) +ap_gl_OBJECTS = $(am_ap_gl_OBJECTS) +ap_gl_DEPENDENCIES = ../lib/libap.a +ap_gl_LDFLAGS = + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ap-gl.Po ./$(DEPDIR)/auth_mac.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/bridge.Po ./$(DEPDIR)/stations.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(ap_gl_SOURCES) +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +SOURCES = $(ap_gl_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu ap-gl/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +ap-gl$(EXEEXT): $(ap_gl_OBJECTS) $(ap_gl_DEPENDENCIES) + @rm -f ap-gl$(EXEEXT) + $(LINK) $(ap_gl_LDFLAGS) $(ap_gl_OBJECTS) $(ap_gl_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-gl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth_mac.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bridge.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stations.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/ap-gl/ap-gl.c b/ap-gl/ap-gl.c new file mode 100644 index 0000000..6200429 --- /dev/null +++ b/ap-gl/ap-gl.c @@ -0,0 +1,215 @@ +/* + * ap-config.c from Wireless Access Point Utilites for Unix + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" + +WINDOW *win_for_menu, *sub_for_menu, *win_for_help, *main_win, *main_sub; +short ap_type; +char *community; +int sockfd, atmel410_filter=1; +struct in_addr ap_ip; + +char *ap_types[3] = { + "ATMEL_PRISM", + "NWN", + "ATMEL12350" +}; + +char *prog_title = "Wireless AP Configurator for GlobalSun"; + +void config_menu() +{ + struct umitems umenu_atmel[] = { + {_("Bridging"), _("Set bridging and IP-related options"), bridging, + 0}, + {_("Wireless"), _("Set wireless options"), atmel_wireless, 0}, + {_("Privacy"), MENU_ENCRYPT, wep, 0}, + {_("MAC auth"), MENU_MAC, atmel_auth_mac, 0}, + {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0}, + {_("Radio"), _("Set radio signal power and antenna options"), + power, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + + uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); +} + + +void command_menu() +{ + struct umitems command_umenu_atmel[] = { + {_("Upload"), _("Make current configuration active"), upload, 0}, + {_("Defaults"), _("Restore factory default settings"), defaults, + 0}, + {_("Reset"), + _("Reset AP. All not uploaded configuration will be lost"), + reset, 0}, + {_("TestMode"), _("Put Access Point in test mode"), test, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + uni_menu(command_umenu_atmel, sizeof(command_umenu_atmel) / sizeof(command_umenu_atmel[0])); +} + + +void stat_menu() +{ + struct umitems umenu_atmel[] = { + {_("SysInfo"), MENU_SYSINFO, atmel_sysinfo, 0}, + {_("Ethernet"), _("Get ethernet port statistics"), EthStat, 0}, + {_("Wireless"), MENU_WIRELESS, WirelessStat, 0}, + {_("Stations"), MENU_STAS, stations, + 0}, + {_("KnownAPs"), _("Get info about known Access Points"), APs, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + + uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); +} + +void _auth() +{ + if(get_opts() == 0) + connect_options((unsigned long) NULL, ATMEL410+1); +} + +void main_menu() +{ + struct umitems config_umenu[] = { + {_("Info"), MENU_INFO, stat_menu, 1}, + {_("Config"), MENU_CONFIG, config_menu, 1}, + {_("Commands"), _("Execute commands on Access Point"), + command_menu, 1}, + {_("Connect"), MENU_CONNECT, _auth, 0}, + {_("Search"), MENU_SEARCH, ap_search, 0}, + {_("About"), MENU_ABOUT, about, 0}, + {_("Shell"), MENU_SHELL, exit_shell, 0}, + {_("Exit"), MENU_EXIT, exit_program, 0}, + {0, 0, NULL, 0} + }; + uni_menu(config_umenu, sizeof(config_umenu) / sizeof(config_umenu[0])); +} + + + +int main( /*int argc, char **argv */ ) +{ + int i; + WINDOW *win_for_title; + char message[100]; + + +#ifdef HAVE_GETTEXT + /* locale support init */ + setlocale(LC_ALL, ""); + bindtextdomain("ap-utils", LOCALEDIR); + textdomain("ap-utils"); +#endif + + initscr(); + if (has_colors()) { + start_color(); + init_pair(1, COLOR_BLACK, COLOR_CYAN); + init_pair(2, COLOR_BLACK, COLOR_WHITE); + init_pair(3, COLOR_BLACK, COLOR_GREEN); + init_pair(4, COLOR_WHITE, COLOR_RED); + } + + noraw(); + cbreak(); + noecho(); + scrollok(stdscr, TRUE); + idlok(stdscr, TRUE); + keypad(stdscr, TRUE); + refresh(); + +/* draw help win */ + win_for_help = newwin(1, COLS, LINES - 1, 0); + wattrset(win_for_help, COLOR_PAIR(1)); + print_help(""); + +/* draw title win */ + win_for_title = newwin(1, COLS, 0, 0); + wattrset(win_for_title, COLOR_PAIR(1)); + for (i = 0; i < COLS; i++) + waddch(win_for_title, ' '); + sprintf(message, _("Wireless Access Point Configurator ver. %s"), + VERSION); + mvwaddstr(win_for_title, 0, (COLS - strlen(message)) / 2, message); + wrefresh(win_for_title); + +/* draw menu win */ + win_for_menu = newwin(LINES - 2, MCOLS, 1, 0); + sub_for_menu = derwin(win_for_menu, LINES - 5, MCOLS - 2, 2, 1); + set_menu_win(NULL, win_for_menu); + set_menu_sub(NULL, sub_for_menu); + attrset(COLOR_PAIR(1)); + + /* íÁÌÀÀ ÒÁÍËÕ */ + waddch(win_for_menu, ACS_BSSB); + for (i = 0; i < MCOLS - 2; i++) + waddch(win_for_menu, ACS_BSBS); + waddch(win_for_menu, ACS_BSSS); + for (i = 0; i < LINES - 4; i++) { + waddch(win_for_menu, ACS_SBSB); + mvwaddch(win_for_menu, i + 1, MCOLS - 1, ACS_SBSB); + } + waddch(win_for_menu, ACS_SSBB); + for (i = 0; i < MCOLS - 2; i++) + waddch(win_for_menu, ACS_BSBS); + waddch(win_for_menu, ACS_SSBS); + wrefresh(win_for_menu); + +/* draw_main_win */ + main_win = newwin(LINES - 2, COLS - MCOLS, 1, MCOLS); + /* íÁÌÀÀ ÒÁÍËÕ */ + for (i = 0; i < COLS - MCOLS - 1; i++) + waddch(main_win, ACS_BSBS); + waddch(main_win, ACS_BBSS); + for (i = 0; i < LINES - 4; i++) + mvwaddch(main_win, i + 1, COLS - MCOLS - 1, ACS_SBSB); + for (i = 0; i < COLS - MCOLS - 1; i++) + waddch(main_win, ACS_BSBS); + waddch(main_win, ACS_SBBS); + main_sub = derwin(main_win, LINES - 4, COLS - MCOLS - 1, 1, 0); + wclear(main_sub); + wrefresh(main_win); + + about(); + if (get_opts() == 0) { + connect_options((unsigned long) NULL, ATMEL410+1); + + } + while (1) + main_menu(); + +/* Not reachable */ + return 0; +} + diff --git a/ap-gl/auth_mac.c b/ap-gl/auth_mac.c new file mode 100644 index 0000000..80cac79 --- /dev/null +++ b/ap-gl/auth_mac.c @@ -0,0 +1,471 @@ +/* + * auth.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define MAX_LINES LINES-6 +#define PACKET_ERROR _("AuthorizedMacTableString packet error") + +#define MAC_AUTH _("[A] MAC authorization: ") +#define MAC_ADD _("Enter MAC: ") +#define MAC_DEL _("Delete Num: ") +#define MAC_TITLE _("Authorized MAC addresses") +#define MAC_HEADER _("NUM MAC address") +#define MAC_HELP _("A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit") +#define MAC_RADIUS_HELP _("A - auth; IPSTF - set; W - write conf; Q - quit") +#define MAC_NONE_HELP _("A - auth; W - write conf; Q - quit") + +#define RADIUS_IP _("[I] RADIUS SERVER IP: ") +#define RADIUS_DEST_PORT _("[P] RADIUS SERVER PORT: ") +#define RADIUS_SECRET _("[S] RADIUS SERVER SECRET: ") +#define RADIUS_TIME _("[T] REAUTHORIZATION TIME: ") +#define RADIUS_PORT _("[F] RADIUS SOURCE PORT: ") + +extern WINDOW *main_sub; +extern int LINES; +extern short ap_type; + +void atmel_auth_mac() +{ + struct AuthorizedMacTableString { + unsigned int short Action; + unsigned int short NumOfAllTableAddresses; + unsigned int short NumOfCurrentAddress; + unsigned char MacAddress[6]; + } *AuthMac = NULL, get; + + struct MacListStat *pmac, *first = NULL, *curr = NULL; + uint32_t auth_mac_hw; + + char EnableAuthMAC[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x01, 0x00 + }; + char AutorizedMac[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x02, 0x00 + }; + + char AuthRadiusIP[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x03, 0x00 + }; + char AuthRadiusSecret[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x04, 0x00 + }; + char AuthRadiusSecretLength[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x05, 0x00 + }; + char AuthRadiusPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x06, 0x00 + }; + char AuthRadiusReauthorizationTime[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x07, 0x00 + }; + char AuthRadiusDestinPort[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x08, 0x00 + }; + + char *auth_types[] = { _("Internal"), OFF, "RADIUS" }; + + struct in_addr radius_ip; + char message[1024], m_authmac = 0, radius_secret[32], m_radius_secret=0, m_radius_ip=0; + int radius_port, radius_time, radius_dest_port, m_radius_port=0, m_radius_time=0, m_radius_dest_port=0; + int i, total_mac, auth_mac = 0, mac_num = 0, begin=0, end=0, c=0; + varbind varbinds[7]; + + memcpy(radius_secret, _(""), 32); + + varbinds[0].oid = EnableAuthMAC; + varbinds[0].len_oid = sizeof(EnableAuthMAC); + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + + varbinds[1].oid = AuthRadiusIP; + varbinds[1].len_oid = sizeof(AuthRadiusIP); + varbinds[1].type = NULL_VALUE; + varbinds[1].len_val = 0; + + varbinds[3].oid = AuthRadiusPort; + varbinds[3].len_oid = sizeof(AuthRadiusPort); + varbinds[3].type = NULL_VALUE; + varbinds[3].len_val = 0; + + varbinds[4].oid = AuthRadiusReauthorizationTime; + varbinds[4].len_oid = sizeof(AuthRadiusReauthorizationTime); + varbinds[4].type = NULL_VALUE; + varbinds[4].len_val = 0; + + varbinds[2].oid = AuthRadiusDestinPort; + varbinds[2].len_oid = sizeof(AuthRadiusDestinPort); + varbinds[2].type = NULL_VALUE; + varbinds[2].len_val = 0; + + print_help(WAIT_RET); + if (snmp(varbinds, 5, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + print_title(MAC_TITLE); + + auth_mac = *(varbinds[0].value); + memcpy(&radius_ip.s_addr, varbinds[1].value, 4); + memcpy(&radius_dest_port, varbinds[2].value, 2); + radius_dest_port = ntohs(radius_dest_port); + memcpy(&radius_port, varbinds[3].value, 2); + radius_port = ntohs(radius_port); + memcpy(&radius_time, varbinds[4].value, 2); + radius_time = ntohs(radius_time); + + sprintf(message, "%s%s", MAC_AUTH, auth_types[auth_mac-1]); + mvwaddstr(main_sub, 0, 0, message); + wrefresh(main_sub); + + total_mac = 0; + mac_num = 0; + + while (mac_num <= total_mac) { + get.Action = 0x02; rshort(get.Action); + get.NumOfAllTableAddresses = total_mac; rshort(get.NumOfAllTableAddresses); + get.NumOfCurrentAddress = mac_num; rshort(get.NumOfCurrentAddress); + + varbinds[0].oid = AutorizedMac; + varbinds[0].len_oid = sizeof(AutorizedMac); + varbinds[0].value = (char *) &get; + varbinds[0].len_val = 12; + varbinds[0].type = STRING_VALUE; + + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (varbinds[0].len_val == 12) { + if (AuthMac) + free(AuthMac); + AuthMac = + (struct AuthorizedMacTableString *) malloc(varbinds[0]. + len_val); + memcpy(AuthMac, varbinds[0].value, varbinds[0].len_val); +/* AuthMac = + (struct AuthorizedMacTableString *) varbinds[0].value;*/ + } else { + print_helperr(PACKET_ERROR); + goto exit; + } + + rshort(AuthMac->NumOfAllTableAddresses); + total_mac = + (AuthMac->NumOfAllTableAddresses == + 65535) ? 0 : AuthMac->NumOfAllTableAddresses; + + if (mac_num) { + if (first == NULL) { + first = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + memcpy(curr->addr, AuthMac->MacAddress, 6); + curr->next = NULL; + } + mac_num++; + } + +choose_view: + clear_main(2); + if (auth_mac == 1) { + mvwaddstr(main_sub, 2, 5, MAC_HEADER); + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + print_help(MAC_HELP); + } else if(auth_mac == 3) { + sprintf(message, "%s%s", RADIUS_IP, inet_ntoa(radius_ip)); + mvwaddstr(main_sub, 2, 0, message); + sprintf(message, "%s%d", RADIUS_DEST_PORT, radius_dest_port); + mvwaddstr(main_sub, 3, 0, message); + sprintf(message, "%s%s", RADIUS_SECRET, radius_secret); + mvwaddstr(main_sub, 4, 0, message); + sprintf(message, "%s%d", RADIUS_TIME, radius_time); + mvwaddstr(main_sub, 5, 0, message); + sprintf(message, "%s%d", RADIUS_PORT, radius_port); + mvwaddstr(main_sub, 6, 0, message); + + wrefresh(main_sub); + print_help(MAC_RADIUS_HELP); + } else { + print_help(MAC_NONE_HELP); + } + noecho(); + + while (1) { + switch (getch()) { + case 'q': + case 'Q': + goto quit; + case 'a': + case 'A': + auth_mac = menu_choose(0, strlen(MAC_AUTH), auth_types, 3)+1; + clear_main_new(0, 1); + print_menusel(0, 0, MAC_AUTH, auth_types[auth_mac-1]); + m_authmac = 1; + goto choose_view; + case 'S': + case 's': + if (auth_mac != 3) { + continue; + } + get_value(radius_secret, 4, strlen(RADIUS_SECRET), 32, ANY_STRING, 0, 0, NULL); + m_radius_secret = 1; + continue; + case 'P': + case 'p': + if (auth_mac != 3) { + continue; + } + get_value(message, 3, strlen(RADIUS_DEST_PORT), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP); + radius_dest_port = atoi(message); + m_radius_dest_port = 1; + continue; + case 'T': + case 't': + if (auth_mac != 3) { + continue; + } + get_value(message, 5, strlen(RADIUS_TIME), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP); + radius_time = atoi(message); + m_radius_time = 1; + continue; + case 'F': + case 'f': + if (auth_mac != 3) { + continue; + } + get_value(message, 6, strlen(RADIUS_PORT), 6, INT_STRING, 0, 65535, MAC_RADIUS_HELP); + radius_port = atoi(message); + m_radius_port = 1; + continue; + case 'I': + case 'i': + if (auth_mac != 3) { + continue; + } + get_ip(&radius_ip, 2, strlen(RADIUS_IP), MAC_RADIUS_HELP); + m_radius_ip = 1; + continue; + case 'd': + case 'D': + if (auth_mac != 1) { + continue; + } + mvwaddstr(main_sub, 1, 0, MAC_DEL); + get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING, + 1, mac_num - 1, NULL); + i = atoi(message); + if (i == 1) { + pmac = first; + first = first->next; + free(pmac); + } else { + curr = first; + while (--i > 1) + curr = curr->next; + pmac = curr->next; + curr->next = pmac->next; + free(pmac); + } + mac_num--; + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + clear_main_new(1, 2); + continue; + case 'n': + case 'N': + if (auth_mac != 1) { + continue; + } + mvwaddstr(main_sub, 1, 0, MAC_ADD); + curr = first; + while (curr && curr->next) + curr = curr->next; + if (first == NULL) { + first = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + curr->next = NULL; + mac_num++; + get_mac(curr->addr, 1, strlen(MAC_ADD)); + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + clear_main_new(1, 2); + continue; + case 'w': + case 'W': + i=0; + if (m_authmac) { + auth_mac_hw = swap4(auth_mac); + varbinds[i].oid = EnableAuthMAC; + varbinds[i].len_oid = sizeof(EnableAuthMAC); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &auth_mac_hw; + varbinds[i].len_val = 1; + i++; + } + + if (m_radius_ip) { + radius_ip.s_addr = htonl(radius_ip.s_addr); + radius_ip.s_addr = swap4(radius_ip.s_addr); + varbinds[i].oid = AuthRadiusIP; + varbinds[i].len_oid = sizeof(AuthRadiusIP); + varbinds[i].value = (char *) &radius_ip.s_addr; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + + if (m_radius_dest_port) { + varbinds[i].oid = AuthRadiusDestinPort; + varbinds[i].len_oid = sizeof(AuthRadiusDestinPort); + radius_dest_port = htons(radius_dest_port); + varbinds[i].value = (char *) &radius_dest_port; + varbinds[i].len_val = 2; + varbinds[i].type = 0x02; + i++; + } + + if (m_radius_time) { + varbinds[i].oid = AuthRadiusReauthorizationTime; + varbinds[i].len_oid = sizeof(AuthRadiusReauthorizationTime); + radius_time = htons(radius_time); + varbinds[i].value = (char *) &radius_time; + varbinds[i].len_val = 2; + varbinds[i].type = 0x02; + i++; + } + + if (m_radius_port) { + varbinds[i].oid = AuthRadiusPort; + varbinds[i].len_oid = sizeof(AuthRadiusPort); + radius_port = htons(radius_port); + varbinds[i].value = (char *) &radius_port; + varbinds[i].len_val = 2; + varbinds[i].type = 0x02; + i++; + } + if (m_radius_secret) { + c = strlen(radius_secret); + varbinds[i].oid = AuthRadiusSecretLength; + varbinds[i].len_oid = sizeof(AuthRadiusSecretLength); + varbinds[i].value = (char *)&c; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + varbinds[i].oid = AuthRadiusSecret; + varbinds[i].len_oid = sizeof(AuthRadiusSecret); + varbinds[i].value = radius_secret; + varbinds[i].len_val = c; + varbinds[i].type = STRING_VALUE; + i++; + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + curr = first; + i = 1; + while (curr != NULL) { + get.Action = 0x01; rshort(get.Action); + get.NumOfAllTableAddresses = mac_num - 1; rshort(get.NumOfAllTableAddresses); + get.NumOfCurrentAddress = i; rshort(get.NumOfCurrentAddress); + memcpy(get.MacAddress, curr->addr, 6); + varbinds[0].oid = AutorizedMac; + varbinds[0].len_oid = sizeof(AutorizedMac); + varbinds[0].value = (char *) &get; + varbinds[0].len_val = 12; + varbinds[0].type = STRING_VALUE; + print_help(WAIT_SET); + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + if (varbinds[0].len_val != 12) { + print_helperr(PACKET_ERROR); + goto exit; + } + curr = curr->next; + i++; + } + print_help(DONE_SET); + goto exit; + case KEY_DOWN: + case KEY_RIGHT: + if (auth_mac != 1) { + continue; + } + if (end < mac_num) { + begin++; + end++; + scroll_rows(first, begin, end, 3, 0); + } + continue; + case KEY_UP: + case KEY_LEFT: + if (auth_mac != 1) { + continue; + } + if (begin > 1) { + begin--; + end--; + scroll_rows(first, begin, end, 3, 0); + } + continue; + } + continue; + } + + print_help(ANY_KEY); + exit: + getch(); + quit: + while ((curr = first)) { + first = curr->next; + free(curr); + } + if (AuthMac) + free(AuthMac); + print_title(""); + clear_main(0); +} diff --git a/ap-gl/bridge.c b/ap-gl/bridge.c new file mode 100644 index 0000000..d283e90 --- /dev/null +++ b/ap-gl/bridge.c @@ -0,0 +1,490 @@ +/* + * bridge.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define IPADDR _("[I] IP: ") +#define NETMASK _("[N] Netmask: ") +#define GATEWAY _("[G] Gateway: ") +#define IP_FILTER _("[F] Filter non-IP traffic: ") +#define PR_PORT _("[P] Primary port: ") +#define SB_ATTMAC _("Attached station MAC: ") +#define DHCP _("[D] DHCP client: ") +#define OPER _("[O] Operational mode: ") +#define REMOTE_MAC _("[M] Preferred BSSID (remote MAC addr.): ") +//#define CF_PORT _("[C] Configuration-enabled port(s): ") +#define TRAP_PORT _("[T] Trap-sending port(s): ") +#define FW_BCAST _("[R] Forward broadcast traffic: ") +//#define SB_BCAST _("[B] Isolate wireless clients (broadcast traffic): ") +#define SB_UCAST _("[U] Isolate wireless clients: ") +#define HELP _("INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu") + +extern short ap_type; + +void bridging() +{ + + char sysTrapSwitch[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x03, + 0x00 + }; + + char operIPAddress[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x01, + 0x00 + }; + char operIPMask[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x02, + 0x00 + }; + char operEthernetAddress[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x03, + 0x00 + }; + char operGateway[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x04, + 0x00 + }; + char operDHCP[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x05, + 0x00 + }; + char PrimaryPort[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x06, + 0x00 + }; +/* char ConfigPort[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x07, + 0x00 + }; +*/ /* This one is ATMEL12350 TELLUS MIB specific. */ + char TrapPort[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x08, + 0x00 + }; + + char IPFilter[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x01, + 0x00 + }; + + /* These 3 are ATMEL12350 MIB specific. */ + char ForwardBroadcast[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x02, + 0x00 + }; + char SendBackBcast[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x03, + 0x00 + }; + char SendBackUnicast[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x04, + 0x00 + }; + + char bridgeOperationalMode[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, + 0x00 + }; + char bridgeRemoteBridgeBSSID[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x02, + 0x00 + }; + + extern WINDOW *main_sub; + varbind varbinds[15]; + struct in_addr ip, mask, gw; + unsigned char message[1024], filter, primary_port, dhcp, RemoteBSSID[6], + bridge_mode, traps, fw_bcast, sb_ucast; + char m_filter = 0, m_bridge_mode = 0, m_primary_port = 0, m_traps = 0, + m_dhcp = 0, m_ip = 0, m_mask = 0, m_gw = 0, m_remote_bssid = 0, + /*m_config_port = 0, */m_trap_port = 0, m_fw_bcast = 0, /*m_sb_bcast = 0,*/ + m_sb_ucast = 0; + char *bridge_modes[6] = { + _("Wireless Bridge Point to MultiPoint"), + _("Access Point"), + _("Access Point client"), + _("Wireless Bridge Point to Point"), + _("Repeater"), + ("unknown") + }, *pr_ports[2] = { + _("Ethernet"), + _("Wireless") + } /*, *cf_trap_ports[3] = { + _("Ethernet"), + _("Wireless"), + _("Both") + }*/; + + int i; + unsigned int trap_port = 0; + + /* Determine the advanced MIB subtype of the device from its MAC address. */ + varbinds[0].type = NULL_VALUE; + varbinds[0].oid = operEthernetAddress; + varbinds[0].len_oid = sizeof(operEthernetAddress); + varbinds[0].len_val = 0; + + print_help(WAIT_RET); +/* if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } +*/ + for (i = 1; i < 15; i++) { + varbinds[i].type = NULL_VALUE; + varbinds[i].len_val = 0; + varbinds[i].len_oid = sizeof(sysTrapSwitch); + } + + varbinds[1].oid = IPFilter; + varbinds[2].oid = PrimaryPort; + varbinds[3].oid = operDHCP; + varbinds[4].oid = operIPAddress; + varbinds[5].oid = operIPMask; + varbinds[6].oid = operGateway; + varbinds[7].oid = bridgeOperationalMode; + varbinds[8].oid = sysTrapSwitch; + varbinds[9].oid = bridgeRemoteBridgeBSSID; + varbinds[10].oid = ForwardBroadcast; + varbinds[11].oid = SendBackUnicast; + varbinds[12].oid = SendBackBcast; + + if (snmp(varbinds, 13, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + print_title(_("Bridging")); + + sb_ucast = *(varbinds[11].value); +// sb_ucast = varbinds[11].len_val; + sprintf(message, "%s%s", SB_UCAST, (sb_ucast == 2) ? ON : OFF); + mvwaddstr(main_sub, 10, 0, message); + + + + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC, + varbinds[0].value[0] & 0xFF, + varbinds[0].value[1] & 0xFF, + varbinds[0].value[2] & 0xFF, + varbinds[0].value[3] & 0xFF, + varbinds[0].value[4] & 0xFF, + varbinds[0].value[5] & 0xFF); + mvwaddstr(main_sub, 0, 0, message); + + filter = *(varbinds[1].value); + sprintf(message, "%s%s", IP_FILTER, (filter == 1) ? ON : OFF); + mvwaddstr(main_sub, 3, 0, message); + + primary_port = *(varbinds[2].value); + if (primary_port < 1 || primary_port > 2) { + primary_port = 1; + } + sprintf(message, "%s%s", PR_PORT, pr_ports[primary_port - 1]); + mvwaddstr(main_sub, 4, 0, message); + + dhcp = *(varbinds[3].value); + sprintf(message, "%s%s", DHCP, (dhcp == 1) ? ON : OFF); + mvwaddstr(main_sub, 5, 0, message); + + memcpy(&ip.s_addr, varbinds[4].value, 4); + sprintf(message, "%s%s", IPADDR, inet_ntoa(ip)); + mvwaddstr(main_sub, 1, 0, message); + + memcpy(&mask.s_addr, varbinds[5].value, 4); + sprintf(message, "%s%s", NETMASK, inet_ntoa(mask)); + mvwaddstr(main_sub, 1, 24, message); + + memcpy(&gw.s_addr, varbinds[6].value, 4); + sprintf(message, "%s%s", GATEWAY, inet_ntoa(gw)); + mvwaddstr(main_sub, 2, 0, message); + + memcpy(RemoteBSSID, varbinds[9].value, 6); + + if ((bridge_mode = *(varbinds[7].value)) != 2) { + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", REMOTE_MAC, + *(RemoteBSSID + 0) & 0xFF, *(RemoteBSSID + 1) & 0xFF, + *(RemoteBSSID + 2) & 0xFF, *(RemoteBSSID + 3) & 0xFF, + *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); + mvwaddstr(main_sub, 7, 0, message); + } + if (bridge_mode > 5) + bridge_mode = 6; + sprintf(message, "%s%s", OPER, bridge_modes[bridge_mode - 1]); + mvwaddstr(main_sub, 6, 0, message); + + traps = *(varbinds[8].value); + sprintf(message, "%s%s", TRAPS, (traps == 1) ? ON : OFF); + mvwaddstr(main_sub, 8, 0, message); + + fw_bcast = *(varbinds[10].value); + sprintf(message, "%s%s", FW_BCAST, (fw_bcast == 1) ? ON : OFF); + mvwaddstr(main_sub, 9, 0, message); + + wrefresh(main_sub); + noecho(); + + print_help(HELP); + while (1) { + switch (getch()) { + case 'I': + case 'i': + get_ip(&ip, 1, strlen(IPADDR), HELP); + m_ip = 1; + continue; + case 'N': + case 'n': + get_mask(&mask, 1, strlen(IPADDR) + 16 + strlen(NETMASK), HELP); + m_mask = 1; + continue; + case 'G': + case 'g': + get_ip(&gw, 2, strlen(GATEWAY), HELP); + m_gw = 1; + continue; + case 'F': + case 'f': + filter = on_off(3, strlen(IP_FILTER)); + clear_main_new(3, 4); + print_menusel(3, 0, IP_FILTER, (filter == 1) ? ON : OFF); + m_filter = 1; + continue; + case 'P': + case 'p': + primary_port = menu_choose(4, strlen(PR_PORT), pr_ports, 2) + 1; + clear_main_new(4, 5); + print_menusel(4, 0, PR_PORT, pr_ports[primary_port - 1]); + m_primary_port = 1; + continue; + case 'D': + case 'd': + dhcp = on_off(5, strlen(DHCP)); + clear_main_new(5, 6); + print_menusel(5, 0, DHCP, (dhcp == 1) ? ON : OFF); + m_dhcp = 1; + continue; + case 'O': + case 'o': + bridge_mode = menu_choose(6, strlen(OPER), bridge_modes, 5) + 1; + clear_main_new(6, 8); + print_menusel(6, 0, OPER, bridge_modes[bridge_mode - 1]); + if (bridge_mode != 2) { + sprintf(message, "%02X%02X%02X%02X%02X%02X", + *(RemoteBSSID + 0) & 0xFF, + *(RemoteBSSID + 1) & 0xFF, + *(RemoteBSSID + 2) & 0xFF, + *(RemoteBSSID + 3) & 0xFF, + *(RemoteBSSID + 4) & 0xFF, + *(RemoteBSSID + 5) & 0xFF); + print_menusel(7, 0, REMOTE_MAC, message); + } + m_bridge_mode = 1; + continue; + case 'M': + case 'm': + if (bridge_mode == 2) + continue; + get_mac(RemoteBSSID, 7, strlen(REMOTE_MAC)); + m_remote_bssid = 1; + continue; + case 'S': + case 's': + traps = on_off(8, strlen(TRAPS)); + clear_main_new(8, 9); + print_menusel(8, 0, TRAPS, (traps == 1) ? ON : OFF); + m_traps = 1; + continue; +/* case 'C': + case 'c': + config_port = menu_choose(9, strlen(CF_PORT), cf_trap_ports, 3); + clear_main_new(9, 10); + print_menusel(9, 0, CF_PORT, cf_trap_ports[config_port]); + m_config_port = 1; + continue; +*/ case 'R': + case 'r': + fw_bcast = on_off(9, strlen(FW_BCAST)); + clear_main_new(9, 10); + print_menusel(9, 0, FW_BCAST, (fw_bcast == 1) ? ON : OFF); + m_fw_bcast = 1; + continue; +/* case 'B': + case 'b': + sb_bcast = on_off(12, strlen(SB_BCAST)); + clear_main_new(12, 13); + print_menusel(12, 0, SB_BCAST, (sb_bcast == 1) ? ON : OFF); + m_sb_bcast = 1; + continue; +*/ case 'U': + case 'u': + sb_ucast = on_off(10, strlen(SB_UCAST)); + sb_ucast = (sb_ucast == 2) ? 1 : 2; + clear_main_new(10, 11); + print_menusel(10, 0, SB_UCAST, (sb_ucast == 2) ? ON : OFF); + m_sb_ucast = 1; + continue; + case 'w': + case 'W': + i = 0; + if (m_filter) { + varbinds[i].oid = IPFilter; + varbinds[i].len_oid = sizeof(IPFilter); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &filter; + varbinds[i].len_val = 1; + i++; + } + if (m_primary_port) { + varbinds[i].oid = PrimaryPort; + varbinds[i].len_oid = sizeof(PrimaryPort); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &primary_port; + varbinds[i].len_val = 1; + i++; + } + if (m_dhcp) { + varbinds[i].oid = operDHCP; + varbinds[i].len_oid = sizeof(operDHCP); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &dhcp; + varbinds[i].len_val = 1; + i++; + } + if (m_ip) { + varbinds[i].oid = operIPAddress; + varbinds[i].len_oid = sizeof(operIPAddress); + ip.s_addr = htonl(ip.s_addr); + ip.s_addr = swap4(ip.s_addr); + varbinds[i].value = (char *) &ip.s_addr; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_mask) { + varbinds[i].oid = operIPMask; + varbinds[i].len_oid = sizeof(operIPMask); + mask.s_addr = htonl(mask.s_addr); + mask.s_addr = swap4(mask.s_addr); + varbinds[i].value = (char *) &mask.s_addr; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_gw) { + varbinds[i].oid = operGateway; + gw.s_addr = htonl(gw.s_addr); + gw.s_addr = swap4(gw.s_addr); + varbinds[i].len_oid = sizeof(operGateway); + varbinds[i].value = (char *) &gw.s_addr; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_traps) { + varbinds[i].oid = sysTrapSwitch; + varbinds[i].len_oid = sizeof(sysTrapSwitch); + varbinds[i].value = &traps; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_bridge_mode) { + varbinds[i].oid = bridgeOperationalMode; + varbinds[i].len_oid = sizeof(bridgeOperationalMode); + varbinds[i].value = (char *) &bridge_mode; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_remote_bssid) { + varbinds[i].oid = bridgeRemoteBridgeBSSID; + varbinds[i].len_oid = sizeof(bridgeRemoteBridgeBSSID); + varbinds[i].value = RemoteBSSID; + varbinds[i].len_val = 6; + varbinds[i].type = STRING_VALUE; + i++; + } +/* if (m_config_port) { + varbinds[i].oid = ConfigPort; + varbinds[i].len_oid = sizeof(ConfigPort); + varbinds[i].type = INT_VALUE; + config_port +=1; + varbinds[i].value = (char *) &config_port; + varbinds[i].len_val = 1; + i++; + } +*/ if (m_fw_bcast) { + varbinds[i].oid = ForwardBroadcast; + varbinds[i].len_oid = sizeof(ForwardBroadcast); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &fw_bcast; + varbinds[i].len_val = 1; + i++; + } + if (m_sb_ucast) { + varbinds[i].oid = SendBackBcast; + varbinds[i].len_oid = sizeof(SendBackBcast); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &sb_ucast; + varbinds[i].len_val = 1; + i++; + varbinds[i].oid = SendBackUnicast; + varbinds[i].len_oid = sizeof(SendBackUnicast); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &sb_ucast; + varbinds[i].len_val = 1; + i++; + } + if (m_trap_port) { + int len_val; + + len_val = (trap_port > 0x7fff) ? 3 : (trap_port > 0x7f) ? 2 : 1; + varbinds[i].oid = TrapPort; + varbinds[i].len_oid = sizeof(TrapPort); + varbinds[i].type = STRING_VALUE; + varbinds[i].value = (char *) &trap_port; + varbinds[i].len_val = len_val; + i++; + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) + print_helperr(ERR_SET); + else + print_help(DONE_SET); + goto exit; + case 'Q': + case 'q': + goto quit; + } + continue; + } + exit: + getch(); + quit: + print_title(""); + clear_main(0); +} + diff --git a/ap-gl/stations.c b/ap-gl/stations.c new file mode 100644 index 0000000..7e59698 --- /dev/null +++ b/ap-gl/stations.c @@ -0,0 +1,201 @@ +/* + * stations.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define MAX_LINES LINES-4 + +#define STAS _("Associated Stations") + +extern int LINES; +extern WINDOW *main_sub; +extern short ap_type; + +void stations() +{ + struct AssociatedSTAsInfo { + unsigned short Num; + unsigned char MacAddress[6]; + unsigned char Status; + unsigned char Port; + unsigned char ParentMacAddress[6]; + unsigned char RSSI; + unsigned char LinkQuality; + unsigned char IP[4]; + unsigned char Reserved[2]; + } *mac = NULL, get; + char StasNum[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01, + 0x00 + }; + + char StasMac[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x02, + 0x00 + }; + + char bridgeOperationalMode[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 + }; + + struct MacListStat *first = NULL, *curr = NULL; + char message[1024]; + int mac_num, begin, end, total_mac; + varbind varbinds[1]; + + print_title(STAS); + + varbinds[0].oid = bridgeOperationalMode; + varbinds[0].len_oid = sizeof(bridgeOperationalMode); + varbinds[0].value = bridgeOperationalMode; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (*(varbinds[0].value) == 3) { + mvwaddstr(main_sub, 3, 1, _("AP now in AP Client Mode and don't has any associated stations")); + print_help(ANY_KEY); + wrefresh(main_sub); + getch(); + goto exit; + } + + + + varbinds[0].oid = StasNum; + varbinds[0].len_oid = sizeof(StasNum); + varbinds[0].value = StasNum; + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + getch(); + goto exit; + } + + total_mac = *(varbinds[0].value); + mac_num = 1; + + sprintf(message, "%s: %d", STAS, total_mac); + print_title(message); + mvwaddstr(main_sub, 0, 1, _("# MAC LQ RSSI Status Port IP")); + noecho(); + + while (mac_num <= total_mac) { + + varbinds[0].oid = StasMac; + varbinds[0].len_oid = sizeof(StasMac); + varbinds[0].type = INT_VALUE; + get.Num = swap2(mac_num); + varbinds[0].value = (char *) &get; + varbinds[0].len_val = sizeof(get); + + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + getch(); + goto exit; + } + + if (varbinds[0].len_val == 24) { + if (mac) + free(mac); + mac = + (struct AssociatedSTAsInfo *) malloc(varbinds[0].len_val); + memcpy(mac, varbinds[0].value, varbinds[0].len_val); +/* mac = (struct AssociatedSTAsInfo *) varbinds[0].value;*/ + } else { + print_helperr(_("AssociatedSTAsInfo packet error")); + goto exit; + } + + + if (first == NULL) { + first = + (struct MacListStat *) malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = + (struct MacListStat *) malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + + memcpy(curr->addr, mac->MacAddress, 6); +// memcpy(curr->ParentMacAddress, mac->ParentMacAddress, 6); + memcpy(&(curr->IP.s_addr), mac->IP, 4); + curr->quality = 100 - (minimum(mac->LinkQuality, 40)*2.5); + curr->rssi = - 96 + mac->RSSI; + + curr->Port = mac->Port; + curr->Status = mac->Status; + curr->next = NULL; + mac_num++; + } + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 1, 2); + print_help(_("Arrows - scroll; S - save to file; Q - quit to menu.")); + while (1) { + switch (getch()) { + case 'S': + case 's': + save_Stations(first); + continue; + case KEY_RIGHT: + case KEY_DOWN: + if (end < mac_num) { + begin++; + end++; + scroll_rows(first, begin, end, 1, 2); + } + continue; + case KEY_UP: + case KEY_LEFT: + if (begin > 1) { + begin--; + end--; + scroll_rows(first, begin, end, 1, 2); + } + continue; + case 'Q': + case 'q': + goto exit; + } + } + + exit: + while ((curr = first) != 0) { + first = curr->next; + free(curr); + } + print_title(""); + clear_main(0); +} + diff --git a/ap-utils.spec b/ap-utils.spec new file mode 100644 index 0000000..889b1ec --- /dev/null +++ b/ap-utils.spec @@ -0,0 +1,78 @@ +Summary: Configure and monitor Wireless Access Points +Name: ap-utils +Version: 1.3.4pre1 +Release: 0 + +Source: %name-%version.tar.bz2 + +License: GPL +Group: Networking/Other +URL: http://ap-utils.polesye.net/ +Buildroot: %_tmppath/%name-buildroot + +%description +Wireless Access Point Utilities for Unix is a set of utilities +to configure and monitor Wireless Access Points under Unix. + +%prep +rm -rf $RPM_BUILD_ROOT + +%setup -q + +%build + +%configure + +%make + +%install + +%makeinstall + +%find_lang %name + +%clean +rm -rf $RPM_BUILD_ROOT + +%files -f %name.lang +%defattr (-,root,root) +%doc AUTHORS INSTALL NEWS COPYING README TODO ChangeLog +%doc Documentation/FAQ Documentation/*.html +%_bindir/* +%_sbindir/* +%_mandir/man8/* + +%changelog +* Mon Nov 24 2003 Jacek Pliszka 1.3.4-pre1 +- 1.3.4-pre1 + +* Mon Oct 27 2003 Lenny Cartier 1.3.3-1mdk +- 1.3.3 + +* Sat Jul 26 2003 Lenny Cartier 1.3.2-1mdk +- 1.3.2 + +* Sat Apr 25 2003 Lenny Cartier 1.3.1-2mdk +- adjust buildrequires + +* Fri Mar 21 2003 Lenny Cartier 1.3.1-1mdk +- 1.3.1 + +* Sat Feb 01 2003 Lenny Cartier 1.3-2mdk +- rebuild + +* Fri Dec 06 2002 Lenny Cartier 1.3-1mdk +- 1.3 +- add locales & man pages + +* Tue Nov 12 2002 Lenny Cartier 1.2-1mdk +- 1.2 + +* Fri Oct 04 2002 Lenny Cartier 1.1.1-1mdk +- 1.1.1 + +* Tue Jul 16 2002 Lenny Cartier 1.0.3-1mdk +- 1.0.3 + +* Fri Jul 06 2002 Lenny Cartier 1.0.2-1mdk +- 1.0.2 diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..905e84c --- /dev/null +++ b/config.h.in @@ -0,0 +1,280 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have the `alarm' function. */ +#undef HAVE_ALARM + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `feof_unlocked' function. */ +#undef HAVE_FEOF_UNLOCKED + +/* Define to 1 if you have the `fgets_unlocked' function. */ +#undef HAVE_FGETS_UNLOCKED + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `free' function. */ +#undef HAVE_FREE + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getc_unlocked' function. */ +#undef HAVE_GETC_UNLOCKED + +/* Define to 1 if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the `inet_ntoa' function. */ +#undef HAVE_INET_NTOA + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `curses' library (-lcurses). */ +#undef HAVE_LIBCURSES + +/* Define to 1 if you have the `ncurses' library (-lncurses). */ +#undef HAVE_LIBNCURSES + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the `malloc' function. */ +#undef HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define if your (struct sockadr) has an sa_len member */ +#undef HAVE_SA_LEN + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the `sysinfo' function. */ +#undef HAVE_SYSINFO + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYSLOG_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define to 1 if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define to 1 if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define for no regulation domain restrictions */ +#undef NO_REG_DOMAIN + +/* Define if target OS is BSD */ +#undef OS_BSD + +/* Define if target OS is Linux */ +#undef OS_LINUX + +/* Define if target OS is Solaris */ +#undef OS_SOLARIS + +/* Define if target OS is MacOS X */ +#undef OS_X + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline + +/* Define to `long' if does not define. */ +#undef off_t + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to `unsigned' if does not define. */ +#undef size_t diff --git a/config/config.guess b/config/config.guess new file mode 100755 index 0000000..9b1384b --- /dev/null +++ b/config/config.guess @@ -0,0 +1,1400 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-11-30' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# This shell variable is my proudest work .. or something. --bje + +set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; +(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) + || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; +dummy=$tmpdir/dummy ; +files="$dummy.c $dummy.o $dummy.rel $dummy" ; +trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $files ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; +unset files' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + eval $set_cc_for_build + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null + if test "$?" = 0 ; then + case `$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + 3-1307) + UNAME_MACHINE="alphaev7" + ;; + esac + fi + rm -f $dummy.s $dummy && rmdir $tmpdir + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy && rmdir $tmpdir + fi ;; + esac + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i586-pc-interix3 + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 +rm -f $dummy.c $dummy && rmdir $tmpdir + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config/config.rpath b/config/config.rpath new file mode 100644 index 0000000..5ead758 --- /dev/null +++ b/config/config.rpath @@ -0,0 +1,513 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2002 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +shlibext= + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix3* | aix4* | aix5*) + wl='-Wl,' + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6*) + wl='-Wl,' + ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + : + else + # Intel icc + wl='-Qoption,ld,' + fi + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + if test "x$host_vendor" = xsni; then + wl='-LD' + else + wl='-Wl,' + fi + ;; + esac +fi + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + ld_shlibs=no + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + 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].*|aix5*) + 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 + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + fi + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=yes + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9* | hpux10* | hpux11*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + ;; + irix5* | irix6*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + sco3.2v5*) + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + if test "x$host_vendor" = xsno; then + hardcode_direct=yes # is this really true??? + else + hardcode_direct=no # Motorola manual says yes, but my tests say they lie + fi + ;; + sysv4.3*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5uw7* | unixware7*) + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +libname_spec='lib$name' +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +case "$host_os" in + aix3*) + shlibext=so + ;; + aix4* | aix5*) + shlibext=so + ;; + amigaos*) + shlibext=ixlibrary + ;; + beos*) + shlibext=so + ;; + bsdi4*) + shlibext=so + 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" + ;; + cygwin* | mingw* | pw32*) + case $GCC,$host_os in + yes,cygwin*) + shlibext=dll.a + ;; + yes,mingw*) + shlibext=dll + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` + ;; + yes,pw32*) + shlibext=dll + ;; + *) + shlibext=dll + ;; + esac + ;; + darwin* | rhapsody*) + shlibext=dylib + ;; + freebsd1*) + ;; + freebsd*) + shlibext=so + ;; + gnu*) + shlibext=so + ;; + hpux9* | hpux10* | hpux11*) + shlibext=sl + ;; + irix5* | irix6*) + shlibext=so + case "$host_os" in + irix5*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 ") libsuff= shlibsuff= ;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + ;; + linux-gnu*) + shlibext=so + ;; + netbsd*) + shlibext=so + ;; + newsos6) + shlibext=so + ;; + openbsd*) + shlibext=so + ;; + os2*) + libname_spec='$name' + shlibext=dll + ;; + osf3* | osf4* | osf5*) + shlibext=so + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + sco3.2v5*) + shlibext=so + ;; + solaris*) + shlibext=so + ;; + sunos4*) + shlibext=so + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + shlibext=so + case "$host_vendor" in + motorola) + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + uts4*) + shlibext=so + ;; + dgux*) + shlibext=so + ;; + sysv4*MP*) + if test -d /usr/nec; then + shlibext=so + fi + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39 | mipstx39el \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3d) + basic_machine=alpha-cray + os=-unicos + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic4x | c4x*) + basic_machine=tic4x-unknown + os=-coff + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config/depcomp b/config/depcomp new file mode 100755 index 0000000..edb5d38 --- /dev/null +++ b/config/depcomp @@ -0,0 +1,479 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000, 2003 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/config/install-sh b/config/install-sh new file mode 100755 index 0000000..36f96f3 --- /dev/null +++ b/config/install-sh @@ -0,0 +1,276 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "$0: no input file specified" >&2 + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d "$dst" ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "$0: $src does not exist" >&2 + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "$0: no destination specified" >&2 + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d "$dst" ] + then + dst=$dst/`basename "$src"` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-$defaultIFS}" + +oIFS=$IFS +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS=$oIFS + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp=$pathcomp$1 + shift + + if [ ! -d "$pathcomp" ] ; + then + $mkdirprog "$pathcomp" + else + : + fi + + pathcomp=$pathcomp/ +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd "$dst" && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename "$dst"` + else + : + fi + +# Make a couple of temp file names in the proper directory. + + dsttmp=$dstdir/#inst.$$# + rmtmp=$dstdir/#rm.$$# + +# Trap to clean up temp files at exit. + + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + +# Move or copy the file name to the temp name + + $doit $instcmd "$src" "$dsttmp" && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && + +# Now remove or move aside any old file at destination location. We try this +# two ways since rm can't unlink itself on some systems and the destination +# file might be busy for other reasons. In this case, the final cleanup +# might fail but the new file should still install successfully. + +{ + if [ -f "$dstdir/$dstfile" ] + then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || + $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || + { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi +} && + +# Now rename the file to the real destination. + + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + +fi && + +# The final little trick to "correctly" pass the exit status to the exit trap. + +{ + (exit 0); exit +} diff --git a/config/missing b/config/missing new file mode 100755 index 0000000..6a37006 --- /dev/null +++ b/config/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/config/mkinstalldirs b/config/mkinstalldirs new file mode 100755 index 0000000..d2d5f21 --- /dev/null +++ b/config/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/configure b/configure new file mode 100755 index 0000000..5dbd5d3 --- /dev/null +++ b/configure @@ -0,0 +1,8921 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.57. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# 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 + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="lib/snmp.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP EGREP LIBOBJS MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE build build_cpu build_vendor build_os host host_cpu host_vendor host_os ALLOCA GLIBC21 LIBICONV LTLIBICONV INTLBISON USE_NLS BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT INTLOBJS DATADIRNAME INSTOBJEXT GENCAT INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors + --disable-nls do not use Native Language Support + --disable-regdomain disable regulation domain channel restrictions + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + +ac_aux_dir= +for ac_dir in config $srcdir/config; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +am__api_version="1.7" +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=ap-utils + VERSION=1.4.1pre4b + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + + ac_config_headers="$ac_config_headers config.h" + + +ac_aux_dir=config +ac_config_guess=config/config.guess +ac_config_sub=config/config.sub + +# Checks for programs. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + : > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # (even with -Werror). So we grep stderr for any message + # that says an option was ignored. + if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +# Checks for header files. + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 +if test "${ac_cv_header_sys_wait_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) +#endif +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +int +main () +{ + int s; + wait (&s); + s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_sys_wait_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_sys_wait_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 +if test $ac_cv_header_sys_wait_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_WAIT_H 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + +for ac_header in arpa/inet.h fcntl.h malloc.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h syslog.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Checks for typedefs, structures, and compiler characteristics. +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_pid_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +if test $ac_cv_type_pid_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for struct sockaddr.sa_len" >&5 +echo $ECHO_N "checking for struct sockaddr.sa_len... $ECHO_C" >&6 +if test "${ac_cv_member_struct_sockaddr_sa_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include + + +int +main () +{ +static struct sockaddr ac_aggr; +if (ac_aggr.sa_len) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_sockaddr_sa_len=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include + + +int +main () +{ +static struct sockaddr ac_aggr; +if (sizeof ac_aggr.sa_len) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_sockaddr_sa_len=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_member_struct_sockaddr_sa_len=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_sa_len" >&5 +echo "${ECHO_T}$ac_cv_member_struct_sockaddr_sa_len" >&6 +if test $ac_cv_member_struct_sockaddr_sa_len = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SA_LEN 1 +_ACEOF + +fi + + +# Checks for library functions. +echo "$as_me:$LINENO: checking for working memcmp" >&5 +echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6 +if test "${ac_cv_func_memcmp_working+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_memcmp_working=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = 0x40, c1 = 0x80, c2 = 0x81; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + exit (1); + + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + exit (1); + } + exit (0); + } + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_memcmp_working=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_memcmp_working=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 +echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6 +test $ac_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.$ac_objext" + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_signal=int +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + + + + + + + + +for ac_func in alarm inet_ntoa socket strtol sysinfo fork malloc free +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +ALL_LINGUAS="uk fr pl ro nl" + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 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); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + rm -f messages.po + + # Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGMERGE" in + /*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +fi + + + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\_ACEOF +#define inline +_ACEOF + ;; + *) cat >>confdefs.h <<_ACEOF +#define inline $ac_cv_c_inline +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (1); + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (1); + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MMAP 1 +_ACEOF + +fi +rm -f conftest.mmap + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + 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" + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + 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 + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + 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. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${acl_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + 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 + +fi +echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6 + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + 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" + 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" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + 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 + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + 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 + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + 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*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + 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 + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + 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 + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + 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 + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + fi + if test "$am_cv_lib_iconv" = yes; then + echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6 + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + + + + +for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ +#ifdef __STDC__ +# include +#else +# include +#endif +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + if test "$am_cv_func_iconv" = yes; then + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +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 + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f conftest.$ac_objext conftest.$ac_ext + 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);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 + if test $am_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +if test "${with_included_gettext+set}" = set; then + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + + + + + + + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 + + if test "$gt_cv_func_gnugettext1_libc" != "yes"; then + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix or --without-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then + withval="$with_libintl_prefix" + + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi; + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + 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" + 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" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + 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 + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + 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 + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + 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*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + 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 + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + 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 + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + 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 + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libintl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libintl=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext1_libintl=yes + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 + fi + + if test "$gt_cv_func_gnugettext1_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + INTLOBJS="\$(GETTOBJS)" + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" + LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + else + USE_NLS=no + fi + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$LIBINTL" >&6 + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DCGETTEXT 1 +_ACEOF + + fi + + POSUB=po + fi + + + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + + +echo "$as_me:$LINENO: checking for initscr in -lncurses" >&5 +echo $ECHO_N "checking for initscr in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_initscr" >&6 +if test $ac_cv_lib_ncurses_initscr = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNCURSES 1 +_ACEOF + + LIBS="-lncurses $LIBS" + +else + NOCURSES=yes +fi + +if test "$NOCURSES" = yes; then + +echo "$as_me:$LINENO: checking for initscr in -lcurses" >&5 +echo $ECHO_N "checking for initscr in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_initscr=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_initscr" >&6 +if test $ac_cv_lib_curses_initscr = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBCURSES 1 +_ACEOF + + LIBS="-lcurses $LIBS" + +else + { { echo "$as_me:$LINENO: error: ap-utils requires installed ncurses or Sys V curses to build" >&5 +echo "$as_me: error: ap-utils requires installed ncurses or Sys V curses to build" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +# Check for OS and make OS define OS specific variables +case "$host_os" in + *bsd*|*darwin* ) + +cat >>confdefs.h <<\_ACEOF +#define OS_BSD 1 +_ACEOF + + case "$host_os" in + netbsd* ) + ap_config_LDADD="-lncurses" + CC="$CC -R/usr/pkg/lib -L/usr/pkg/lib -I/usr/pkg/include" + ;; + openbsd* ) + ;; + *darwin* ) + +cat >>confdefs.h <<\_ACEOF +#define OS_X 1 +_ACEOF + + ;; + esac + ;; + *qnx ) + LIBS="$LIBS -lsocket" + INSTALL="config/install-sh" + ;; + aix4* ) + case "$CC" in + cc* | xlc* ) + CC="$CC -qcpluscmt -qmaxmem=16384" + esac + ;; + solaris* ) + +cat >>confdefs.h <<\_ACEOF +#define OS_SOLARIS 1 +_ACEOF + + LIBS="$LIBS -lresolv -lnls" + ;; + gnu*|*linux* ) + +cat >>confdefs.h <<\_ACEOF +#define OS_LINUX 1 +_ACEOF + + CFLAGS="$CFLAGS -Wall -W" + ;; +esac + +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + +# Check whether --enable-regdomain or --disable-regdomain was given. +if test "${enable_regdomain+set}" = set; then + enableval="$enable_regdomain" + case "$enableval" in +no) + +cat >>confdefs.h <<\_ACEOF +#define NO_REG_DOMAIN 1 +_ACEOF + + ;; + esac + +fi; + + ac_config_files="$ac_config_files Makefile src/Makefile ap-gl/Makefile lib/Makefile po/Makefile.in intl/Makefile Documentation/Makefile" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# 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 + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.57. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -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 + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.57, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +# Capture the value of obsolete $ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "ap-gl/Makefile" ) CONFIG_FILES="$CONFIG_FILES ap-gl/Makefile" ;; + "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + "Documentation/Makefile" ) CONFIG_FILES="$CONFIG_FILES Documentation/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + default-1 ) + 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 + 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" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES 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 "$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" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + 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|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|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 ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + +echo " + + Thank you for using ap-utils. + +" diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..90e9d1b --- /dev/null +++ b/configure.in @@ -0,0 +1,115 @@ +# +# configure.in from Wireless Access Point Utilites for Unix +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +AC_INIT([lib/snmp.c]) +AC_CONFIG_AUX_DIR(config) +AM_INIT_AUTOMAKE(ap-utils, 1.4.1pre4b) +AM_CONFIG_HEADER(config.h) + +ac_aux_dir=config +ac_config_guess=config/config.guess +ac_config_sub=config/config.sub + +# Checks for programs. +AC_PROG_CC +AC_PROG_RANLIB + +# Checks for header files. +AC_HEADER_STDC +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS([arpa/inet.h fcntl.h malloc.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h syslog.h unistd.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_CHECK_MEMBER(struct sockaddr.sa_len, + AC_DEFINE(HAVE_SA_LEN, 1, + Define if your (struct sockadr) has an sa_len member),, + [ +#include +#include +]) + +# Checks for library functions. +AC_FUNC_MEMCMP +AC_TYPE_SIGNAL +AC_CHECK_FUNCS([alarm inet_ntoa socket strtol sysinfo fork malloc free]) + +ALL_LINGUAS="uk fr pl ro nl" + +AM_GNU_GETTEXT + +AC_CHECK_LIB(ncurses, initscr, , NOCURSES=yes) +if test "$NOCURSES" = yes; then + AC_CHECK_LIB(curses, initscr, , AC_MSG_ERROR([ap-utils requires installed ncurses or Sys V curses to build])) +fi + +# Check for OS and make OS define OS specific variables +case "$host_os" in + *bsd*|*darwin* ) + AC_DEFINE(OS_BSD, 1, Define if target OS is BSD) + case "$host_os" in + netbsd* ) + ap_config_LDADD="-lncurses" + CC="$CC -R/usr/pkg/lib -L/usr/pkg/lib -I/usr/pkg/include" + ;; + openbsd* ) + ;; + *darwin* ) + AC_DEFINE(OS_X, 1, Define if target OS is MacOS X) + ;; + esac + ;; + *qnx ) + LIBS="$LIBS -lsocket" + INSTALL="config/install-sh" + ;; + aix4* ) + case "$CC" in + cc* | xlc* ) + CC="$CC -qcpluscmt -qmaxmem=16384" + esac + ;; + solaris* ) + AC_DEFINE(OS_SOLARIS, 1, Define if target OS is Solaris) + LIBS="$LIBS -lresolv -lnls" + ;; + gnu*|*linux* ) + AC_DEFINE(OS_LINUX, 1, Define if target OS is Linux) + CFLAGS="$CFLAGS -Wall -W" + ;; +esac + +AC_C_BIGENDIAN + +AC_ARG_ENABLE(regdomain, [ --disable-regdomain disable regulation domain channel restrictions], + [ case "$enableval" in +no) + AC_DEFINE(NO_REG_DOMAIN, 1, Define for no regulation domain restrictions) + ;; + esac +]) + +AC_OUTPUT([Makefile src/Makefile ap-gl/Makefile lib/Makefile po/Makefile.in intl/Makefile Documentation/Makefile]) + +echo " + + Thank you for using ap-utils. + +" diff --git a/intl/ChangeLog b/intl/ChangeLog new file mode 100644 index 0000000..478d834 --- /dev/null +++ b/intl/ChangeLog @@ -0,0 +1,4 @@ +2002-03-12 GNU + + * Version 0.11.1 released. + diff --git a/intl/Makefile.in b/intl/Makefile.in new file mode 100644 index 0000000..c2cb20f --- /dev/null +++ b/intl/Makefile.in @@ -0,0 +1,337 @@ +# Makefile for directory with message catalog handling in GNU NLS Utilities. +# Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = @libdir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +l = @INTL_LIBTOOL_SUFFIX_PREFIX@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ +YACC = @INTLBISON@ -y -d +YFLAGS = --name-prefix=__gettext + +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(libdir)\" -DIN_LIBINTL @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = $(COMHDRS) libgnuintl.h loadinfo.h +COMHDRS = gmo.h gettextP.h hash-string.h plural-exp.h eval-plural.h os2compat.h +SOURCES = $(COMSRCS) intl-compat.c +COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ +finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ +explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \ +plural-exp.c localcharset.c localename.c osdep.c os2compat.c +OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ +finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ +explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \ +plural.$lo plural-exp.$lo localcharset.$lo localename.$lo osdep.$lo +GETTOBJS = intl-compat.$lo +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ +COPYING.LIB-2 gettext.h libgettext.h plural-eval.c + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=2 +LTV_REVISION=0 +LTV_AGE=0 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed +.c.o: + $(COMPILE) $< +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +.sin.sed: + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ + mv t-$@ $@ + +INCLUDES = -I.. -I. -I$(top_srcdir)/intl + +all: all-@USE_INCLUDED_LIBINTL@ +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-@BUILD_INCLUDED_LIBINTL@ +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) + $(LIBTOOL) --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) @LTLIBICONV@ -lc \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +libintl.h: libgnuintl.h + cp $(srcdir)/libgnuintl.h libintl.h + +charset.alias: config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# This installation goal is only used in GNU gettext. Packages which +# only use the library should use install instead. + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + orig=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + if test @GLIBC21@ = no; then \ + orig=charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + fi; \ + fi; \ + $(mkinstalldirs) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +install-strip: install + +installdirs: + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ + $(mkinstalldirs) $(DESTDIR)$(localedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext"; then \ + for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi: + +$(OBJECTS): ../config.h libgnuintl.h +bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: gettextP.h gmo.h loadinfo.h +dcigettext.$lo: hash-string.h +explodename.$lo l10nflist.$lo: loadinfo.h +dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: plural-exp.h +dcigettext.$lo: eval-plural.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.lo core core.* + rm -f libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = gettext; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = gettext; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + cp -p $$dir/$$file $(distdir); \ + done + +Makefile: Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/intl/VERSION b/intl/VERSION new file mode 100644 index 0000000..abe3915 --- /dev/null +++ b/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.11.1 diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c new file mode 100644 index 0000000..07e073d --- /dev/null +++ b/intl/bindtextdom.c @@ -0,0 +1,369 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_dirname _nl_default_dirname__ +# define _nl_domain_bindings _nl_domain_bindings__ +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock) + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN bindtextdomain__ +# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__ +#endif + +/* Prototypes for local functions. */ +static void set_binding_values PARAMS ((const char *domainname, + const char **dirnamep, + const char **codesetp)); + +/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP + to be used for the DOMAINNAME message catalog. + If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not + modified, only the current value is returned. + If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither + modified nor returned. */ +static void +set_binding_values (domainname, dirnamep, codesetp) + const char *domainname; + const char **dirnamep; + const char **codesetp; +{ + struct binding *binding; + int modified; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + { + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + return; + } + + __libc_rwlock_wrlock (_nl_state_lock); + + modified = 0; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding != NULL) + { + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The current binding has be to returned. */ + *dirnamep = binding->dirname; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->dirname; + if (strcmp (dirname, result) != 0) + { + if (strcmp (dirname, _nl_default_dirname) == 0) + result = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, dirname, len); +#endif + } + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = result; + modified = 1; + } + } + *dirnamep = result; + } + } + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset == NULL) + /* The current binding has be to returned. */ + *codesetp = binding->codeset; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->codeset; + if (result == NULL || strcmp (codeset, result) != 0) + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, codeset, len); +#endif + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->codeset != NULL) + free (binding->codeset); + + binding->codeset = result; + binding->codeset_cntr++; + modified = 1; + } + } + *codesetp = result; + } + } + } + else if ((dirnamep == NULL || *dirnamep == NULL) + && (codesetp == NULL || *codesetp == NULL)) + { + /* Simply return the default values. */ + if (dirnamep) + *dirnamep = _nl_default_dirname; + if (codesetp) + *codesetp = NULL; + } + else + { + /* We have to create a new binding. */ + size_t len = strlen (domainname) + 1; + struct binding *new_binding = + (struct binding *) malloc (offsetof (struct binding, domainname) + len); + + if (__builtin_expect (new_binding == NULL, 0)) + goto failed; + + memcpy (new_binding->domainname, domainname, len); + + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The default value. */ + dirname = _nl_default_dirname; + else + { + if (strcmp (dirname, _nl_default_dirname) == 0) + dirname = _nl_default_dirname; + else + { + char *result; +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; + memcpy (result, dirname, len); +#endif + dirname = result; + } + } + *dirnamep = dirname; + new_binding->dirname = (char *) dirname; + } + else + /* The default value. */ + new_binding->dirname = (char *) _nl_default_dirname; + + new_binding->codeset_cntr = 0; + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset != NULL) + { + char *result; + +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; + memcpy (result, codeset, len); +#endif + codeset = result; + new_binding->codeset_cntr++; + } + *codesetp = codeset; + new_binding->codeset = (char *) codeset; + } + else + new_binding->codeset = NULL; + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + modified = 1; + + /* Here we deal with memory allocation failures. */ + if (0) + { + failed_codeset: + if (new_binding->dirname != _nl_default_dirname) + free (new_binding->dirname); + failed_dirname: + free (new_binding); + failed: + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + } + } + + /* If we modified any binding, we flush the caches. */ + if (modified) + ++_nl_msg_cat_cntr; + + __libc_rwlock_unlock (_nl_state_lock); +} + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (domainname, dirname) + const char *domainname; + const char *dirname; +{ + set_binding_values (domainname, &dirname, NULL); + return (char *) dirname; +} + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char * +BIND_TEXTDOMAIN_CODESET (domainname, codeset) + const char *domainname; + const char *codeset; +{ + set_binding_values (domainname, NULL, &codeset); + return (char *) codeset; +} + +#ifdef _LIBC +/* Aliases for function names in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); +#endif diff --git a/intl/config.charset b/intl/config.charset new file mode 100644 index 0000000..0a1a68d --- /dev/null +++ b/intl/config.charset @@ -0,0 +1,454 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2002 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# The table consists of lines of the form +# ALIAS CANONICAL +# +# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". +# ALIAS is compared in a case sensitive way. +# +# CANONICAL is the GNU canonical name for this character encoding. +# It must be an encoding supported by libiconv. Support by GNU libc is +# also desirable. CANONICAL is case insensitive. Usually an upper case +# MIME charset name is preferred. +# The current list of GNU canonical charset names is as follows. +# +# name used by which systems a MIME name? +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd +# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-3 glibc yes +# ISO-8859-4 osf solaris freebsd yes +# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-6 glibc aix hpux solaris yes +# ISO-8859-7 glibc aix hpux irix osf solaris yes +# ISO-8859-8 glibc aix hpux osf solaris yes +# ISO-8859-9 glibc aix hpux irix osf solaris yes +# ISO-8859-13 glibc +# ISO-8859-15 glibc aix osf solaris freebsd +# KOI8-R glibc solaris freebsd yes +# KOI8-U glibc freebsd yes +# CP437 dos +# CP775 dos +# CP850 aix osf dos +# CP852 dos +# CP855 dos +# CP856 aix +# CP857 dos +# CP861 dos +# CP862 dos +# CP864 dos +# CP865 dos +# CP866 freebsd dos +# CP869 dos +# CP874 win32 dos +# CP922 aix +# CP932 aix win32 dos +# CP943 aix +# CP949 osf win32 dos +# CP950 win32 dos +# CP1046 aix +# CP1124 aix +# CP1129 aix +# CP1250 win32 +# CP1251 glibc win32 +# CP1252 aix win32 +# CP1253 win32 +# CP1254 win32 +# CP1255 win32 +# CP1256 win32 +# CP1257 win32 +# GB2312 glibc aix hpux irix solaris freebsd yes +# EUC-JP glibc aix hpux irix osf solaris freebsd yes +# EUC-KR glibc aix hpux irix osf solaris freebsd yes +# EUC-TW glibc aix hpux irix osf solaris +# BIG5 glibc aix hpux osf solaris freebsd yes +# BIG5-HKSCS glibc +# GBK aix osf win32 dos +# GB18030 glibc +# SHIFT_JIS hpux osf solaris freebsd yes +# JOHAB glibc win32 +# TIS-620 glibc aix hpux osf solaris +# VISCII glibc yes +# HP-ROMAN8 hpux +# HP-ARABIC8 hpux +# HP-GREEK8 hpux +# HP-HEBREW8 hpux +# HP-TURKISH8 hpux +# HP-KANA8 hpux +# DEC-KANJI osf +# DEC-HANYU osf +# UTF-8 glibc aix hpux osf solaris yes +# +# Note: Names which are not marked as being a MIME name should not be used in +# Internet protocols for information interchange (mail, news, etc.). +# +# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications +# must understand both names and treat them as equivalent. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +host="$1" +os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` +echo "# This file contains a table of character encoding aliases," +echo "# suitable for operating system '${os}'." +echo "# It was automatically generated from config.charset." +# List of references, updated during installation: +echo "# Packages using this file: " +case "$os" in + linux* | *-gnu*) + # With glibc-2.1 or newer, we don't need any canonicalization, + # because glibc has iconv and both glibc and libiconv support all + # GNU canonical names directly. Therefore, the Makefile does not + # need to install the alias file at all. + # The following applies only to glibc-2.0.x and older libcs. + echo "ISO_646.IRV:1983 ASCII" + ;; + aix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "IBM-850 CP850" + echo "IBM-856 CP856" + echo "IBM-921 ISO-8859-13" + echo "IBM-922 CP922" + echo "IBM-932 CP932" + echo "IBM-943 CP943" + echo "IBM-1046 CP1046" + echo "IBM-1124 CP1124" + echo "IBM-1129 CP1129" + echo "IBM-1252 CP1252" + echo "IBM-eucCN GB2312" + echo "IBM-eucJP EUC-JP" + echo "IBM-eucKR EUC-KR" + echo "IBM-eucTW EUC-TW" + echo "big5 BIG5" + echo "GBK GBK" + echo "TIS-620 TIS-620" + echo "UTF-8 UTF-8" + ;; + hpux*) + echo "iso88591 ISO-8859-1" + echo "iso88592 ISO-8859-2" + echo "iso88595 ISO-8859-5" + echo "iso88596 ISO-8859-6" + echo "iso88597 ISO-8859-7" + echo "iso88598 ISO-8859-8" + echo "iso88599 ISO-8859-9" + echo "iso885915 ISO-8859-15" + echo "roman8 HP-ROMAN8" + echo "arabic8 HP-ARABIC8" + echo "greek8 HP-GREEK8" + echo "hebrew8 HP-HEBREW8" + echo "turkish8 HP-TURKISH8" + echo "kana8 HP-KANA8" + echo "tis620 TIS-620" + echo "big5 BIG5" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "hp15CN GB2312" + #echo "ccdc ?" # what is this? + echo "SJIS SHIFT_JIS" + echo "utf8 UTF-8" + ;; + irix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + ;; + osf*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "cp850 CP850" + echo "big5 BIG5" + echo "dechanyu DEC-HANYU" + echo "dechanzi GB2312" + echo "deckanji DEC-KANJI" + echo "deckorean EUC-KR" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "GBK GBK" + echo "KSC5601 CP949" + echo "sdeckanji EUC-JP" + echo "SJIS SHIFT_JIS" + echo "TACTIS TIS-620" + echo "UTF-8 UTF-8" + ;; + solaris*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "koi8-r KOI8-R" + echo "BIG5 BIG5" + echo "gb2312 GB2312" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "eucJP EUC-JP" + echo "PCK SHIFT_JIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd* | os2*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just + # reuse FreeBSD's locale data for OS/2. + echo "C ASCII" + echo "US-ASCII ASCII" + for l in la_LN lt_LN; do + echo "$l.ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ + lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do + echo "$l.ISO_8859-1 ISO-8859-1" + echo "$l.DIS_8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do + echo "$l.ISO_8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO_8859-4 ISO-8859-4" + done + for l in ru_RU ru_SU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO_8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SHIFT_JIS" + echo "ja_JP.Shift_JIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + netbsd*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-15 ISO-8859-15" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "BIG5 BIG5" + echo "SJIS SHIFT_JIS" + ;; + beos*) + # BeOS has a single locale, and it has UTF-8 encoding. + echo "* UTF-8" + ;; + msdosdjgpp*) + # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "#" + echo "# The encodings given here may not all be correct." + echo "# If you find that the encoding given for your language and" + echo "# country is not the one your DOS machine actually uses, just" + echo "# correct it in this file, and send a mail to" + echo "# Juan Manuel Guerrero " + echo "# and Bruno Haible ." + echo "#" + echo "C ASCII" + # ISO-8859-1 languages + echo "ca CP850" + echo "ca_ES CP850" + echo "da CP865" # not CP850 ?? + echo "da_DK CP865" # not CP850 ?? + echo "de CP850" + echo "de_AT CP850" + echo "de_CH CP850" + echo "de_DE CP850" + echo "en CP850" + echo "en_AU CP850" # not CP437 ?? + echo "en_CA CP850" + echo "en_GB CP850" + echo "en_NZ CP437" + echo "en_US CP437" + echo "en_ZA CP850" # not CP437 ?? + echo "es CP850" + echo "es_AR CP850" + echo "es_BO CP850" + echo "es_CL CP850" + echo "es_CO CP850" + echo "es_CR CP850" + echo "es_CU CP850" + echo "es_DO CP850" + echo "es_EC CP850" + echo "es_ES CP850" + echo "es_GT CP850" + echo "es_HN CP850" + echo "es_MX CP850" + echo "es_NI CP850" + echo "es_PA CP850" + echo "es_PY CP850" + echo "es_PE CP850" + echo "es_SV CP850" + echo "es_UY CP850" + echo "es_VE CP850" + echo "et CP850" + echo "et_EE CP850" + echo "eu CP850" + echo "eu_ES CP850" + echo "fi CP850" + echo "fi_FI CP850" + echo "fr CP850" + echo "fr_BE CP850" + echo "fr_CA CP850" + echo "fr_CH CP850" + echo "fr_FR CP850" + echo "ga CP850" + echo "ga_IE CP850" + echo "gd CP850" + echo "gd_GB CP850" + echo "gl CP850" + echo "gl_ES CP850" + echo "id CP850" # not CP437 ?? + echo "id_ID CP850" # not CP437 ?? + echo "is CP861" # not CP850 ?? + echo "is_IS CP861" # not CP850 ?? + echo "it CP850" + echo "it_CH CP850" + echo "it_IT CP850" + echo "lt CP775" + echo "lt_LT CP775" + echo "lv CP775" + echo "lv_LV CP775" + echo "nb CP865" # not CP850 ?? + echo "nb_NO CP865" # not CP850 ?? + echo "nl CP850" + echo "nl_BE CP850" + echo "nl_NL CP850" + echo "nn CP865" # not CP850 ?? + echo "nn_NO CP865" # not CP850 ?? + echo "no CP865" # not CP850 ?? + echo "no_NO CP865" # not CP850 ?? + echo "pt CP850" + echo "pt_BR CP850" + echo "pt_PT CP850" + echo "sv CP850" + echo "sv_SE CP850" + # ISO-8859-2 languages + echo "cs CP852" + echo "cs_CZ CP852" + echo "hr CP852" + echo "hr_HR CP852" + echo "hu CP852" + echo "hu_HU CP852" + echo "pl CP852" + echo "pl_PL CP852" + echo "ro CP852" + echo "ro_RO CP852" + echo "sk CP852" + echo "sk_SK CP852" + echo "sl CP852" + echo "sl_SI CP852" + echo "sq CP852" + echo "sq_AL CP852" + echo "sr CP852" # CP852 or CP866 or CP855 ?? + echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? + # ISO-8859-3 languages + echo "mt CP850" + echo "mt_MT CP850" + # ISO-8859-5 languages + echo "be CP866" + echo "be_BE CP866" + echo "bg CP866" # not CP855 ?? + echo "bg_BG CP866" # not CP855 ?? + echo "mk CP866" # not CP855 ?? + echo "mk_MK CP866" # not CP855 ?? + echo "ru CP866" + echo "ru_RU CP866" + # ISO-8859-6 languages + echo "ar CP864" + echo "ar_AE CP864" + echo "ar_DZ CP864" + echo "ar_EG CP864" + echo "ar_IQ CP864" + echo "ar_IR CP864" + echo "ar_JO CP864" + echo "ar_KW CP864" + echo "ar_MA CP864" + echo "ar_OM CP864" + echo "ar_QA CP864" + echo "ar_SA CP864" + echo "ar_SY CP864" + # ISO-8859-7 languages + echo "el CP869" + echo "el_GR CP869" + # ISO-8859-8 languages + echo "he CP862" + echo "he_IL CP862" + # ISO-8859-9 languages + echo "tr CP857" + echo "tr_TR CP857" + # Japanese + echo "ja CP932" + echo "ja_JP CP932" + # Chinese + echo "zh_CN GBK" + echo "zh_TW CP950" # not CP938 ?? + # Korean + echo "kr CP949" # not CP934 ?? + echo "kr_KR CP949" # not CP934 ?? + # Thai + echo "th CP874" + echo "th_TH CP874" + # Other + echo "eo CP850" + echo "eo_EO CP850" + ;; +esac diff --git a/intl/dcgettext.c b/intl/dcgettext.c new file mode 100644 index 0000000..b7c9652 --- /dev/null +++ b/intl/dcgettext.c @@ -0,0 +1,58 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +# define DCIGETTEXT __dcigettext +#else +# define DCGETTEXT dcgettext__ +# define DCIGETTEXT dcigettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/intl/dcigettext.c b/intl/dcigettext.c new file mode 100644 index 0000000..2e724e1 --- /dev/null +++ b/intl/dcigettext.c @@ -0,0 +1,1167 @@ +/* Implementation of the internal dcigettext function. + Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#include "plural-exp.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "hash-string.h" + +/* Thread safetyness. */ +#ifdef _LIBC +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_lock_define_initialized(CLASS, NAME) +# define __libc_lock_lock(NAME) +# define __libc_lock_unlock(NAME) +# define __libc_rwlock_define_initialized(CLASS, NAME) +# define __libc_rwlock_rdlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* Alignment of types. */ +#if defined __GNUC__ && __GNUC__ >= 2 +# define alignof(TYPE) __alignof__ (TYPE) +#else +# define alignof(TYPE) \ + ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain _nl_default_default_domain__ +# define _nl_current_default_domain _nl_current_default_domain__ +# define _nl_default_dirname _nl_default_dirname__ +# define _nl_domain_bindings _nl_domain_bindings__ +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +# define tfind __tfind +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +char *getcwd (); +# endif +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy PARAMS ((void *dest, const void *src, size_t n)); +# endif +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined PATH_MAX && defined _PC_PATH_MAX +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif + +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +#endif + +/* This is the type used for the search tree where known translations + are stored. */ +struct known_translation_t +{ + /* Domain in which to search. */ + char *domainname; + + /* The category. */ + int category; + + /* State of the catalog counter at the point the string was found. */ + int counter; + + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + + /* And finally the translation. */ + const char *translation; + size_t translation_length; + + /* Pointer to the string in question. */ + char msgid[ZERO]; +}; + +/* Root of the search tree with known translations. We can use this + only if the system provides the `tsearch' function family. */ +#if defined HAVE_TSEARCH || defined _LIBC +# include + +static void *root; + +# ifdef _LIBC +# define tsearch __tsearch +# endif + +/* Function to compare two entries in the table of known translations. */ +static int transcmp PARAMS ((const void *p1, const void *p2)); +static int +transcmp (p1, p2) + const void *p1; + const void *p2; +{ + const struct known_translation_t *s1; + const struct known_translation_t *s2; + int result; + + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + + result = strcmp (s1->msgid, s2->msgid); + if (result == 0) + { + result = strcmp (s1->domainname, s2->domainname); + if (result == 0) + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; + } + + return result; +} +#endif + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +#if defined __EMX__ +extern const char _nl_default_dirname[]; +#else +const char _nl_default_dirname[] = LOCALEDIR; +#endif + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, + size_t translation_len)) + internal_function; +static const char *category_to_name PARAMS ((int category)) internal_function; +static const char *guess_category_value PARAMS ((int category, + const char *categoryname)) + internal_function; + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +#endif /* have alloca */ + + +#ifdef _LIBC +/* List of blocks allocated for translations. */ +typedef struct transmem_list +{ + struct transmem_list *next; + char data[ZERO]; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef unsigned char transmem_block_t; +#endif + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCIGETTEXT __dcigettext +#else +# define DCIGETTEXT dcigettext__ +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +#ifdef _LIBC +__libc_rwlock_define_initialized (, _nl_state_lock) +#endif + +/* Checking whether the binaries runs SUID must be done and glibc provides + easier methods therefore we make a difference here. */ +#ifdef _LIBC +# define ENABLE_SECURE __libc_enable_secure +# define DETERMINE_SECURE +#else +# ifndef HAVE_GETUID +# define getuid() 0 +# endif +# ifndef HAVE_GETGID +# define getgid() 0 +# endif +# ifndef HAVE_GETEUID +# define geteuid() getuid() +# endif +# ifndef HAVE_GETEGID +# define getegid() getgid() +# endif +static int enable_secure; +# define ENABLE_SECURE (enable_secure == 1) +# define DETERMINE_SECURE \ + if (enable_secure == 0) \ + { \ + if (getuid () != geteuid () || getgid () != getegid ()) \ + enable_secure = 1; \ + else \ + enable_secure = -1; \ + } +#endif + +/* Get the function to evaluate the plural expression. */ +#include "eval-plural.h" + +/* Look up MSGID in the DOMAINNAME message catalog for the current + CATEGORY locale and, if PLURAL is nonzero, search over string + depending on the plural form determined by N. */ +char * +DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + int plural; + unsigned long int n; + int category; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + char *dirname, *xdomainname; + char *single_locale; + char *retval; + size_t retlen; + int saved_errno; +#if defined HAVE_TSEARCH || defined _LIBC + struct known_translation_t *search; + struct known_translation_t **foundp = NULL; + size_t msgid_len; +#endif + size_t domainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) + return NULL; + + __libc_rwlock_rdlock (_nl_state_lock); + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + definition left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* OS/2 specific: backward compatibility with older libintl versions */ +#ifdef LC_MESSAGES_COMPAT + if (category == LC_MESSAGES_COMPAT) + category = LC_MESSAGES; +#endif + +#if defined HAVE_TSEARCH || defined _LIBC + msgid_len = strlen (msgid1) + 1; + + /* Try to find the translation among those which we found at + some time. */ + search = (struct known_translation_t *) + alloca (offsetof (struct known_translation_t, msgid) + msgid_len); + memcpy (search->msgid, msgid1, msgid_len); + search->domainname = (char *) domainname; + search->category = category; + + foundp = (struct known_translation_t **) tfind (search, &root, transcmp); + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) + { + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } +#endif + + /* Preserve the `errno' value. */ + saved_errno = errno; + + /* See whether this is a SUID binary or not. */ + DETERMINE_SECURE; + + /* First find matching binding. */ + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = (char *) _nl_default_dirname; + else if (IS_ABSOLUTE_PATH (binding->dirname)) + dirname = binding->dirname; + else + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (binding->dirname) + 1; + size_t path_max; + char *ret; + + path_max = (unsigned int) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + for (;;) + { + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + + __set_errno (0); + ret = getcwd (dirname, path_max); + if (ret != NULL || errno != ERANGE) + break; + + path_max += path_max / 2; + path_max += PATH_INCR; + } + + if (ret == NULL) + { + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + FREE_BLOCKS (block_list); + __libc_rwlock_unlock (_nl_state_lock); + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); + } + + stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); + } + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); + categoryvalue = guess_category_value (category, categoryname); + + domainname_len = strlen (domainname); + xdomainname = (char *) alloca (strlen (categoryname) + + domainname_len + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname, domainname_len), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for the translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + + /* When this is a SUID binary we must not allow accessing files + outside the dedicated directories. */ + if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) + /* Ingore this entry. */ + continue; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + { + FREE_BLOCKS (block_list); + __libc_rwlock_unlock (_nl_state_lock); + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); + } + + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); + + if (domain != NULL) + { + retval = _nl_find_msg (domain, binding, msgid1, &retlen); + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { + retval = _nl_find_msg (domain->successor[cnt], binding, + msgid1, &retlen); + + if (retval != NULL) + { + domain = domain->successor[cnt]; + break; + } + } + } + + if (retval != NULL) + { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ + FREE_BLOCKS (block_list); + __set_errno (saved_errno); +#if defined HAVE_TSEARCH || defined _LIBC + if (foundp == NULL) + { + /* Create a new entry and add it to the search tree. */ + struct known_translation_t *newp; + + newp = (struct known_translation_t *) + malloc (offsetof (struct known_translation_t, msgid) + + msgid_len + domainname_len + 1); + if (newp != NULL) + { + newp->domainname = + mempcpy (newp->msgid, msgid1, msgid_len); + memcpy (newp->domainname, domainname, domainname_len + 1); + newp->category = category; + newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; + newp->translation = retval; + newp->translation_length = retlen; + + /* Insert the entry in the search tree. */ + foundp = (struct known_translation_t **) + tsearch (newp, &root, transcmp); + if (foundp == NULL + || __builtin_expect (*foundp != newp, 0)) + /* The insert failed. */ + free (newp); + } + } + else + { + /* We can update the existing entry. */ + (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; + (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; + } +#endif + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } + } + } + /* NOTREACHED */ +} + + +char * +internal_function +_nl_find_msg (domain_file, domainbinding, msgid, lengthp) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; + const char *msgid; + size_t *lengthp; +{ + struct loaded_domain *domain; + size_t act; + char *result; + size_t resultlen; + + if (domain_file->decided == 0) + _nl_load_domain (domain_file, domainbinding); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + /* Locate the MSGID and its translation. */ + if (domain->hash_size > 2 && domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + while (1) + { + nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + /* Compare msgid with the original string at index nstr-1. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) + == 0)) + { + act = nstr - 1; + goto found; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + /* NOTREACHED */ + } + else + { + /* Try the default method: binary search in the sorted array of + messages. */ + size_t top, bottom; + + bottom = 0; + top = domain->nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, (domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset))); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + goto found; + } + /* No translation was found. */ + return NULL; + } + + found: + /* The translation was found at index ACT. If we have to convert the + string to use a different character set, this is the time. */ + result = ((char *) domain->data + + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + +#if defined _LIBC || HAVE_ICONV + if (domain->codeset_cntr + != (domainbinding != NULL ? domainbinding->codeset_cntr : 0)) + { + /* The domain's codeset has changed through bind_textdomain_codeset() + since the message catalog was initialized or last accessed. We + have to reinitialize the converter. */ + _nl_free_domain_conv (domain); + _nl_init_domain_conv (domain_file, domain, domainbinding); + } + + if ( +# ifdef _LIBC + domain->conv != (__gconv_t) -1 +# else +# if HAVE_ICONV + domain->conv != (iconv_t) -1 +# endif +# endif + ) + { + /* We are supposed to do a conversion. First allocate an + appropriate table with the same structure as the table + of translations in the file, where we can put the pointers + to the converted strings in. + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ + + if (domain->conv_tab == NULL + && ((domain->conv_tab = (char **) calloc (domain->nstrings, + sizeof (char *))) + == NULL)) + /* Mark that we didn't succeed allocating a table. */ + domain->conv_tab = (char **) -1; + + if (__builtin_expect (domain->conv_tab == (char **) -1, 0)) + /* Nothing we can do, no more memory. */ + goto converted; + + if (domain->conv_tab[act] == NULL) + { + /* We haven't used this string so far, so it is not + translated yet. Do this now. */ + /* We use a bit more efficient memory handling. + We allocate always larger blocks which get used over + time. This is faster than many small allocations. */ + __libc_lock_define_initialized (static, lock) +# define INITIAL_BLOCK_SIZE 4080 + static unsigned char *freemem; + static size_t freemem_size; + + const unsigned char *inbuf; + unsigned char *outbuf; + int malloc_count; +# ifndef _LIBC + transmem_block_t *transmem_list = NULL; +# endif + + __libc_lock_lock (lock); + + inbuf = (const unsigned char *) result; + outbuf = freemem + sizeof (size_t); + + malloc_count = 0; + while (1) + { + transmem_block_t *newmem; +# ifdef _LIBC + size_t non_reversible; + int res; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + res = __gconv (domain->conv, + &inbuf, inbuf + resultlen, + &outbuf, + outbuf + freemem_size - sizeof (size_t), + &non_reversible); + + if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) + break; + + if (res != __GCONV_FULL_OUTPUT) + { + __libc_lock_unlock (lock); + goto converted; + } + + inbuf = result; +# else +# if HAVE_ICONV + const char *inptr = (const char *) inbuf; + size_t inleft = resultlen; + char *outptr = (char *) outbuf; + size_t outleft; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + outleft = freemem_size - sizeof (size_t); + if (iconv (domain->conv, + (ICONV_CONST char **) &inptr, &inleft, + &outptr, &outleft) + != (size_t) (-1)) + { + outbuf = (unsigned char *) outptr; + break; + } + if (errno != E2BIG) + { + __libc_lock_unlock (lock); + goto converted; + } +# endif +# endif + + resize_freemem: + /* We must allocate a new buffer or resize the old one. */ + if (malloc_count > 0) + { + ++malloc_count; + freemem_size = malloc_count * INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC + if (newmem != NULL) + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif + } + else + { + malloc_count = 1; + freemem_size = INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) malloc (freemem_size); + } + if (__builtin_expect (newmem == NULL, 0)) + { + freemem = NULL; + freemem_size = 0; + __libc_lock_unlock (lock); + goto converted; + } + +# ifdef _LIBC + /* Add the block to the list of blocks we have to free + at some point. */ + newmem->next = transmem_list; + transmem_list = newmem; + + freemem = newmem->data; + freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; +# endif + + outbuf = freemem + sizeof (size_t); + } + + /* We have now in our buffer a converted string. Put this + into the table of conversions. */ + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); + domain->conv_tab[act] = (char *) freemem; + /* Shrink freemem, but keep it aligned. */ + freemem_size -= outbuf - freemem; + freemem = outbuf; + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); + + __libc_lock_unlock (lock); + } + + /* Now domain->conv_tab[act] contains the translation of all + the plural variants. */ + result = domain->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) domain->conv_tab[act]; + } + + converted: + /* The result string is converted. */ + +#endif /* _LIBC || HAVE_ICONV */ + + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (domain, n, translation, translation_len) + struct loaded_l10nfile *domain; + unsigned long int n; + const char *translation; + size_t translation_len; +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; + while (index-- > 0) + { +#ifdef _LIBC + p = __rawmemchr (p, '\0'); +#else + p = strchr (p, '\0'); +#endif + /* And skip over the NUL byte. */ + p++; + + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; +} + + +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (category) + int category; +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} + +/* Guess value of current locale from value of the environment variables. */ +static const char * +internal_function +guess_category_value (category, categoryname) + int category; + const char *categoryname; +{ + const char *language; + const char *retval; + + /* The highest priority value is the `LANGUAGE' environment + variable. But we don't use the value if the currently selected + locale is the C locale. This is a GNU extension. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] == '\0') + language = NULL; + + /* We have to proceed with the POSIX methods of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +#ifdef _LIBC + retval = setlocale (category, NULL); +#else + retval = _nl_locale_name (category, categoryname); +#endif + + /* Ignore LANGUAGE if the locale is set to "C" because + 1. "C" locale usually uses the ASCII encoding, and most international + messages use non-ASCII characters. These characters get displayed + as question marks (if using glibc's iconv()) or as invalid 8-bit + characters (because other iconv()s refuse to convert most non-ASCII + characters to ASCII). In any case, the output is ugly. + 2. The precise output of some programs in the "C" locale is specified + by POSIX and should not depend on environment variables like + "LANGUAGE". We allow such programs to use gettext(). */ + return language != NULL && strcmp (retval, "C") != 0 ? language : retval; +} + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (dest, src, n) + void *dest; + const void *src; + size_t n; +{ + return (void *) ((char *) memcpy (dest, src, n) + n); +} +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +static void __attribute__ ((unused)) +free_mem (void) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (oldp->dirname); + free (oldp->codeset); + free (oldp); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); + + /* Remove the search tree with the known translations. */ + __tdestroy (root, free); + root = NULL; + + while (transmem_list != NULL) + { + old = transmem_list; + transmem_list = transmem_list->next; + free (old); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/intl/dcngettext.c b/intl/dcngettext.c new file mode 100644 index 0000000..c16af21 --- /dev/null +++ b/intl/dcngettext.c @@ -0,0 +1,60 @@ +/* Implementation of the dcngettext(3) function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCNGETTEXT __dcngettext +# define DCIGETTEXT __dcigettext +#else +# define DCNGETTEXT dcngettext__ +# define DCIGETTEXT dcigettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcngettext, dcngettext); +#endif diff --git a/intl/dgettext.c b/intl/dgettext.c new file mode 100644 index 0000000..3651207 --- /dev/null +++ b/intl/dgettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dgettext(3) function. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT __dcgettext +#else +# define DGETTEXT dgettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/intl/dngettext.c b/intl/dngettext.c new file mode 100644 index 0000000..f214e95 --- /dev/null +++ b/intl/dngettext.c @@ -0,0 +1,61 @@ +/* Implementation of the dngettext(3) function. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DNGETTEXT __dngettext +# define DCNGETTEXT __dcngettext +#else +# define DNGETTEXT dngettext__ +# define DCNGETTEXT dcngettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale and skip message according to the plural form. */ +char * +DNGETTEXT (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dngettext, dngettext); +#endif diff --git a/intl/eval-plural.h b/intl/eval-plural.h new file mode 100644 index 0000000..44f4934 --- /dev/null +++ b/intl/eval-plural.h @@ -0,0 +1,106 @@ +/* Plural expression evaluation. + Copyright (C) 2000-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef STATIC +#define STATIC static +#endif + +/* Evaluate the plural expression and return an index value. */ +STATIC unsigned long int plural_eval PARAMS ((struct expression *pexp, + unsigned long int n)) + internal_function; + +STATIC +unsigned long int +internal_function +plural_eval (pexp, n) + struct expression *pexp; + unsigned long int n; +{ + switch (pexp->nargs) + { + case 0: + switch (pexp->operation) + { + case var: + return n; + case num: + return pexp->val.num; + default: + break; + } + /* NOTREACHED */ + break; + case 1: + { + /* pexp->operation must be lnot. */ + unsigned long int arg = plural_eval (pexp->val.args[0], n); + return ! arg; + } + case 2: + { + unsigned long int leftarg = plural_eval (pexp->val.args[0], n); + if (pexp->operation == lor) + return leftarg || plural_eval (pexp->val.args[1], n); + else if (pexp->operation == land) + return leftarg && plural_eval (pexp->val.args[1], n); + else + { + unsigned long int rightarg = plural_eval (pexp->val.args[1], n); + + switch (pexp->operation) + { + case mult: + return leftarg * rightarg; + case divide: + return leftarg / rightarg; + case module: + return leftarg % rightarg; + case plus: + return leftarg + rightarg; + case minus: + return leftarg - rightarg; + case less_than: + return leftarg < rightarg; + case greater_than: + return leftarg > rightarg; + case less_or_equal: + return leftarg <= rightarg; + case greater_or_equal: + return leftarg >= rightarg; + case equal: + return leftarg == rightarg; + case not_equal: + return leftarg != rightarg; + default: + break; + } + } + /* NOTREACHED */ + break; + } + case 3: + { + /* pexp->operation must be qmop. */ + unsigned long int boolarg = plural_eval (pexp->val.args[0], n); + return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); + } + } + /* NOTREACHED */ + return 0; +} diff --git a/intl/explodename.c b/intl/explodename.c new file mode 100644 index 0000000..2985064 --- /dev/null +++ b/intl/explodename.c @@ -0,0 +1,192 @@ +/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +char * +_nl_find_language (name) + const char *name; +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' + && name[0] != '+' && name[0] != ',') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (name, language, modifier, territory, codeset, + normalized_codeset, special, sponsor, revision) + char *name; + const char **language; + const char **modifier; + const char **territory; + const char **codeset; + const char **normalized_codeset; + const char **special; + const char **sponsor; + const char **revision; +{ + enum { undecided, xpg, cen } syntax; + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + *special = NULL; + *sponsor = NULL; + *revision = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = 0; + syntax = undecided; + *language = cp = name; + cp = _nl_find_language (*language); + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= TERRITORY; + + if (cp[0] == '.') + { + /* Next is the codeset. */ + syntax = xpg; + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) + { + /* Next is the modifier. */ + syntax = cp[0] == '@' ? xpg : cen; + cp[0] = '\0'; + *modifier = ++cp; + + while (syntax == cen && cp[0] != '\0' && cp[0] != '+' + && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= XPG_MODIFIER | CEN_AUDIENCE; + } + + if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) + { + syntax = cen; + + if (cp[0] == '+') + { + /* Next is special application (CEN syntax). */ + cp[0] = '\0'; + *special = ++cp; + + while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= CEN_SPECIAL; + } + + if (cp[0] == ',') + { + /* Next is sponsor (CEN syntax). */ + cp[0] = '\0'; + *sponsor = ++cp; + + while (cp[0] != '\0' && cp[0] != '_') + ++cp; + + mask |= CEN_SPONSOR; + } + + if (cp[0] == '_') + { + /* Next is revision (CEN syntax). */ + cp[0] = '\0'; + *revision = ++cp; + + mask |= CEN_REVISION; + } + } + + /* For CEN syntax values it might be important to have the + separator character in the file name, not for XPG syntax. */ + if (syntax == xpg) + { + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + if (*modifier != NULL && (*modifier)[0] == '\0') + mask &= ~XPG_MODIFIER; + } + + return mask; +} diff --git a/intl/finddomain.c b/intl/finddomain.c new file mode 100644 index 0000000..2f103d5 --- /dev/null +++ b/intl/finddomain.c @@ -0,0 +1,198 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (dirname, locale, domainname, domainbinding) + const char *dirname; + char *locale; + const char *domainname; + struct binding *domainbinding; +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *special; + const char *sponsor; + const char *revision; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory[.codeset]][@modifier] + + and six parts for the CEN syntax: + + language[_territory][+audience][+special][,[sponsor][_revision]] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) revision + (2) sponsor + (3) special + (4) codeset + (5) normalized codeset + (6) territory + (7) audience/modifier + */ + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, domainname, 0); + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + + if (retval->successor[cnt]->data != NULL) + break; + } + return cnt >= 0 ? retval : NULL; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset, &special, + &sponsor, &revision); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, special, + sponsor, revision, domainname, 1); + if (retval == NULL) + /* This means we are out of core. */ + return NULL; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + + /* The space for normalized_codeset is dynamically allocated. Free it. */ + if (mask & XPG_NORM_CODESET) + free ((void *) normalized_codeset); + + return retval; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free ((char *) here->filename); + free (here); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/intl/gettext.c b/intl/gettext.c new file mode 100644 index 0000000..22a6c24 --- /dev/null +++ b/intl/gettext.c @@ -0,0 +1,64 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DCGETTEXT __dcgettext +#else +# define GETTEXT gettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (msgid) + const char *msgid; +{ + return DCGETTEXT (NULL, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/intl/gettextP.h b/intl/gettextP.h new file mode 100644 index 0000000..a642fdb --- /dev/null +++ b/intl/gettextP.h @@ -0,0 +1,201 @@ +/* Header describing internals of libintl library. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include /* Get size_t. */ + +#ifdef _LIBC +# include "../iconv/gconv_int.h" +#else +# if HAVE_ICONV +# include +# endif +#endif + +#include "loadinfo.h" + +#include "gmo.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static inline nls_uint32 +SWAP (i) + nls_uint32 i; +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + const char *data; + int use_mmap; + size_t mmap_size; + int must_swap; + nls_uint32 nstrings; + struct string_desc *orig_tab; + struct string_desc *trans_tab; + nls_uint32 hash_size; + nls_uint32 *hash_tab; + int codeset_cntr; +#ifdef _LIBC + __gconv_t conv; +#else +# if HAVE_ICONV + iconv_t conv; +# endif +#endif + char **conv_tab; + + struct expression *plural; + unsigned long int nplurals; +}; + +/* We want to allocate a string at the end of the struct. But ISO C + doesn't allow zero sized arrays. */ +#ifdef __GNUC__ +# define ZERO 0 +#else +# define ZERO 1 +#endif + +/* A set of settings bound to a message domain. Used to store settings + from bindtextdomain() and bind_textdomain_codeset(). */ +struct binding +{ + struct binding *next; + char *dirname; + int codeset_cntr; /* Incremented each time codeset changes. */ + char *codeset; + char domainname[ZERO]; +}; + +/* A counter which is incremented each time some previous translations + become invalid. + This variable is part of the external ABI of the GNU libintl. */ +extern int _nl_msg_cat_cntr; + +#ifndef _LIBC +const char *_nl_locale_name PARAMS ((int category, const char *categoryname)); +#endif + +struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, + char *__locale, + const char *__domainname, + struct binding *__domainbinding)) + internal_function; +void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) + internal_function; +const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file, + struct loaded_domain *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain)) + internal_function; + +char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, + struct binding *domainbinding, + const char *msgid, size_t *lengthp)) + internal_function; + +#ifdef _LIBC +extern char *__gettext PARAMS ((const char *__msgid)); +extern char *__dgettext PARAMS ((const char *__domainname, + const char *__msgid)); +extern char *__dcgettext PARAMS ((const char *__domainname, + const char *__msgid, int __category)); +extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *__dngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n)); +extern char *__dcngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category)); +extern char *__dcigettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +extern char *__textdomain PARAMS ((const char *__domainname)); +extern char *__bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname, + const char *__codeset)); +#else +extern char *gettext__ PARAMS ((const char *__msgid)); +extern char *dgettext__ PARAMS ((const char *__domainname, + const char *__msgid)); +extern char *dcgettext__ PARAMS ((const char *__domainname, + const char *__msgid, int __category)); +extern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *dngettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *dcngettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category)); +extern char *dcigettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +extern char *textdomain__ PARAMS ((const char *__domainname)); +extern char *bindtextdomain__ PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname, + const char *__codeset)); +#endif + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/intl/gmo.h b/intl/gmo.h new file mode 100644 index 0000000..f05ae47 --- /dev/null +++ b/intl/gmo.h @@ -0,0 +1,100 @@ +/* Description of GNU message catalog format: general file layout. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work + when cross-compiling. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translation strings. */ + nls_uint32 trans_tab_offset; + /* Size of hashing table. */ + nls_uint32 hash_tab_size; + /* Offset of first hashing entry. */ + nls_uint32 hash_tab_offset; +}; + +struct string_desc +{ + /* Length of addressed string. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/intl/hash-string.h b/intl/hash-string.h new file mode 100644 index 0000000..b267a87 --- /dev/null +++ b/intl/hash-string.h @@ -0,0 +1,59 @@ +/* Description of GNU message catalog format: string hashing function. + Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +static unsigned long int hash_string PARAMS ((const char *__str_param)); + +static inline unsigned long int +hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long int) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/intl/intl-compat.c b/intl/intl-compat.c new file mode 100644 index 0000000..0a06ce9 --- /dev/null +++ b/intl/intl-compat.c @@ -0,0 +1,166 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995, 2000, 2001 Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgnuintl.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix or suffix) to + those defined in the included GNU gettext library (with "__" suffix). + It is compiled into libintl when the included GNU gettext library is + configured --with-included-gettext. + + This redirection works also in the case that the system C library or + the system libintl library contain gettext/textdomain/... functions. + If it didn't, we would need to add preprocessor level redirections to + libgnuintl.h of the following form: + +# define gettext gettext__ +# define dgettext dgettext__ +# define dcgettext dcgettext__ +# define ngettext ngettext__ +# define dngettext dngettext__ +# define dcngettext dcngettext__ +# define textdomain textdomain__ +# define bindtextdomain bindtextdomain__ +# define bind_textdomain_codeset bind_textdomain_codeset__ + + How does this redirection work? There are two cases. + A. When libintl.a is linked into an executable, it works because + functions defined in the executable always override functions in + the shared libraries. + B. When libintl.so is used, it works because + 1. those systems defining gettext/textdomain/... in the C library + (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer) are + ELF systems and define these symbols as weak, thus explicitly + letting other shared libraries override it. + 2. those systems defining gettext/textdomain/... in a standalone + libintl.so library (namely, Solaris 2.3 and newer) have this + shared library in /usr/lib, and the linker will search /usr/lib + *after* the directory where the GNU gettext library is installed. + + A third case, namely when libintl.a is linked into a shared library + whose name is not libintl.so, is not supported. In this case, on + Solaris, when -lintl precedes the linker option for the shared library + containing GNU gettext, the system's gettext would indeed override + the GNU gettext. Anyone doing this kind of stuff must be clever enough + to 1. compile libintl.a with -fPIC, 2. remove -lintl from his linker + command line. */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +char * +gettext (msgid) + const char *msgid; +{ + return gettext__ (msgid); +} + + +char * +dgettext (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return dgettext__ (domainname, msgid); +} + + +char * +dcgettext (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return dcgettext__ (domainname, msgid, category); +} + + +char * +ngettext (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return ngettext__ (msgid1, msgid2, n); +} + + +char * +dngettext (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return dngettext__ (domainname, msgid1, msgid2, n); +} + + +char * +dcngettext (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return dcngettext__ (domainname, msgid1, msgid2, n, category); +} + + +char * +textdomain (domainname) + const char *domainname; +{ + return textdomain__ (domainname); +} + + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ + return bindtextdomain__ (domainname, dirname); +} + + +char * +bind_textdomain_codeset (domainname, codeset) + const char *domainname; + const char *codeset; +{ + return bind_textdomain_codeset__ (domainname, codeset); +} diff --git a/intl/l10nflist.c b/intl/l10nflist.c new file mode 100644 index 0000000..5f04232 --- /dev/null +++ b/intl/l10nflist.c @@ -0,0 +1,400 @@ +/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Tell glibc's to provide a prototype for stpcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Define function which are usually not available. */ + +#if !defined _LIBC && !defined HAVE___ARGZ_COUNT +/* Returns the number of strings in ARGZ. */ +static size_t argz_count__ PARAMS ((const char *argz, size_t len)); + +static size_t +argz_count__ (argz, len) + const char *argz; + size_t len; +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ + +#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); + +static void +argz_stringify__ (argz, len, sep) + char *argz; + size_t len; + int sep; +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ + +#if !defined _LIBC && !defined HAVE___ARGZ_NEXT +static char *argz_next__ PARAMS ((char *argz, size_t argz_len, + const char *entry)); + +static char * +argz_next__ (argz, argz_len, entry) + char *argz; + size_t argz_len; + const char *entry; +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static int pop PARAMS ((int x)); + +static inline int +pop (x) + int x; +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, + territory, codeset, normalized_codeset, modifier, special, + sponsor, revision, filename, do_allocate) + struct loaded_l10nfile **l10nfile_list; + const char *dirlist; + size_t dirlist_len; + int mask; + const char *language; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *modifier; + const char *special; + const char *sponsor; + const char *revision; + const char *filename; + int do_allocate; +{ + char *abs_filename; + struct loaded_l10nfile *last = NULL; + struct loaded_l10nfile *retval; + char *cp; + size_t entries; + int cnt; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + (((mask & XPG_MODIFIER) != 0 + || (mask & CEN_AUDIENCE) != 0) + ? strlen (modifier) + 1 : 0) + + ((mask & CEN_SPECIAL) != 0 + ? strlen (special) + 1 : 0) + + (((mask & CEN_SPONSOR) != 0 + || (mask & CEN_REVISION) != 0) + ? (1 + ((mask & CEN_SPONSOR) != 0 + ? strlen (sponsor) + 1 : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) + 1 : 0)) : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + retval = NULL; + last = NULL; + + /* Construct file name. */ + memcpy (abs_filename, dirlist, dirlist_len); + __argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR); + cp = abs_filename + (dirlist_len - 1); + *cp++ = '/'; + cp = stpcpy (cp, language); + + if ((mask & TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) + { + /* This component can be part of both syntaces but has different + leading characters. For CEN we use `+', else `@'. */ + *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; + cp = stpcpy (cp, modifier); + } + if ((mask & CEN_SPECIAL) != 0) + { + *cp++ = '+'; + cp = stpcpy (cp, special); + } + if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) + { + *cp++ = ','; + if ((mask & CEN_SPONSOR) != 0) + cp = stpcpy (cp, sponsor); + if ((mask & CEN_REVISION) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, revision); + } + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + last = NULL; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + last = retval; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + retval = (struct loaded_l10nfile *) + malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) + * (1 << pop (mask)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; + + retval->filename = abs_filename; + retval->decided = (__argz_count (dirlist, dirlist_len) != 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + if (last == NULL) + { + retval->next = *l10nfile_list; + *l10nfile_list = retval; + } + else + { + retval->next = last->next; + last->next = retval; + } + + entries = 0; + /* If the DIRLIST is a real list the RETVAL entry corresponds not to + a real file. So we have to use the DIRLIST separation mechanism + of the inner loop. */ + cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; + for (; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) + && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, + language, territory, codeset, + normalized_codeset, modifier, special, + sponsor, revision, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +const char * +_nl_normalize_codeset (codeset, name_len) + const char *codeset; + size_t name_len; +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum ((unsigned char) codeset[cnt])) + { + ++len; + + if (isalpha ((unsigned char) codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha ((unsigned char) codeset[cnt])) + *wp++ = tolower ((unsigned char) codeset[cnt]); + else if (isdigit ((unsigned char) codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/intl/libgnuintl.h b/intl/libgnuintl.h new file mode 100644 index 0000000..7fd547e --- /dev/null +++ b/intl/libgnuintl.h @@ -0,0 +1,137 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* The LC_MESSAGES locale category is the category used by the functions + gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. + On systems that don't define it, use an arbitrary value instead. + On Solaris, defines __LOCALE_H then includes (i.e. + this file!) and then only defines LC_MESSAGES. To avoid a redefinition + warning, don't define LC_MESSAGES in this case. */ +#if !defined LC_MESSAGES && !defined __LOCALE_H +# define LC_MESSAGES 1729 +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +# define gettext gettext +#endif + +/* Use _INTL_PARAMS, not PARAMS, in order to avoid clashes with identifiers + used by programs. Similarly, test __PROTOTYPES, not PROTOTYPES. */ +#ifndef _INTL_PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define _INTL_PARAMS(args) args +# else +# define _INTL_PARAMS(args) () +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext _INTL_PARAMS ((const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid, + int __category)); + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +extern char *ngettext _INTL_PARAMS ((const char *__msgid1, + const char *__msgid2, + unsigned long int __n)); + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +extern char *dngettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid1, + const char *__msgid2, + unsigned long int __n)); + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +extern char *dcngettext _INTL_PARAMS ((const char *__domainname, + const char *__msgid1, + const char *__msgid2, + unsigned long int __n, + int __category)); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain _INTL_PARAMS ((const char *__domainname)); + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain _INTL_PARAMS ((const char *__domainname, + const char *__dirname)); + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +extern char *bind_textdomain_codeset _INTL_PARAMS ((const char *__domainname, + const char *__codeset)); + + +/* Optimized version of the functions above. */ +#if defined __OPTIMIZED +/* These are macros, but could also be inline functions. */ + +# define gettext(msgid) \ + dgettext (NULL, msgid) + +# define dgettext(domainname, msgid) \ + dcgettext (domainname, msgid, LC_MESSAGES) + +# define ngettext(msgid1, msgid2, n) \ + dngettext (NULL, msgid1, msgid2, n) + +# define dngettext(domainname, msgid1, msgid2, n) \ + dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES) + +#endif /* Optimizing. */ + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/intl/loadinfo.h b/intl/loadinfo.h new file mode 100644 index 0000000..d180962 --- /dev/null +++ b/intl/loadinfo.h @@ -0,0 +1,121 @@ +/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +/* Declarations of locale dependent catalog lookup functions. + Implemented in + + localealias.c Possibly replace a locale name by another. + explodename.c Split a locale name into its various fields. + l10nflist.c Generate a list of filenames of possible message catalogs. + finddomain.c Find and open the relevant message catalogs. + + The main function _nl_find_domain() in finddomain.c is declared + in gettextP.h. + */ + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +/* Separator in PATH like lists of pathnames. */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* Encoding of locale name parts. */ +#define CEN_REVISION 1 +#define CEN_SPONSOR 2 +#define CEN_SPECIAL 4 +#define XPG_NORM_CODESET 8 +#define XPG_CODESET 16 +#define TERRITORY 32 +#define CEN_AUDIENCE 64 +#define XPG_MODIFIER 128 + +#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) +#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +extern const char *_nl_normalize_codeset PARAMS ((const char *codeset, + size_t name_len)); + +extern struct loaded_l10nfile * +_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, + const char *normalized_codeset, + const char *modifier, const char *special, + const char *sponsor, const char *revision, + const char *filename, int do_allocate)); + + +extern const char *_nl_expand_alias PARAMS ((const char *name)); + +/* normalized_codeset is dynamically allocated and has to be freed by + the caller. */ +extern int _nl_explode_name PARAMS ((char *name, const char **language, + const char **modifier, + const char **territory, + const char **codeset, + const char **normalized_codeset, + const char **special, + const char **sponsor, + const char **revision)); + +extern char *_nl_find_language PARAMS ((const char *name)); + +#endif /* loadinfo.h */ diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c new file mode 100644 index 0000000..76130ed --- /dev/null +++ b/intl/loadmsgcat.c @@ -0,0 +1,445 @@ +/* Load needed message catalogs. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || (defined _LIBC && defined _POSIX_MAPPED_FILES) +# include +# undef HAVE_MMAP +# define HAVE_MMAP 1 +#else +# undef HAVE_MMAP +#endif + +#include "gmo.h" +#include "gettextP.h" +#include "plural-exp.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open __open +# define close __close +# define read __read +# define mmap __mmap +# define munmap __munmap +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +/* For systems that distinguish between text and binary I/O. + O_BINARY is usually declared in . */ +#if !defined O_BINARY && defined _O_BINARY + /* For MSC-compatible compilers. */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif +#ifdef __BEOS__ + /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ +# undef O_BINARY +# undef O_TEXT +#endif +/* On reasonable systems, binary I/O is the default. */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + + +/* Initialize the codeset dependent parts of an opened message catalog. + Return the header entry. */ +const char * +internal_function +_nl_init_domain_conv (domain_file, domain, domainbinding) + struct loaded_l10nfile *domain_file; + struct loaded_domain *domain; + struct binding *domainbinding; +{ + /* Find out about the character set the file is encoded with. + This can be found (in textual form) in the entry "". If this + entry does not exist or if this does not contain the `charset=' + information, we will assume the charset matches the one the + current locale and we don't have to perform any conversion. */ + char *nullentry; + size_t nullentrylen; + + /* Preinitialize fields, to avoid recursion during _nl_find_msg. */ + domain->codeset_cntr = + (domainbinding != NULL ? domainbinding->codeset_cntr : 0); +#ifdef _LIBC + domain->conv = (__gconv_t) -1; +#else +# if HAVE_ICONV + domain->conv = (iconv_t) -1; +# endif +#endif + domain->conv_tab = NULL; + + /* Get the header entry. */ + nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen); + + if (nullentry != NULL) + { +#if defined _LIBC || HAVE_ICONV + const char *charsetstr; + + charsetstr = strstr (nullentry, "charset="); + if (charsetstr != NULL) + { + size_t len; + char *charset; + const char *outcharset; + + charsetstr += strlen ("charset="); + len = strcspn (charsetstr, " \t\n"); + + charset = (char *) alloca (len + 1); +# if defined _LIBC || HAVE_MEMPCPY + *((char *) mempcpy (charset, charsetstr, len)) = '\0'; +# else + memcpy (charset, charsetstr, len); + charset[len] = '\0'; +# endif + + /* The output charset should normally be determined by the + locale. But sometimes the locale is not used or not correctly + set up, so we provide a possibility for the user to override + this. Moreover, the value specified through + bind_textdomain_codeset overrides both. */ + if (domainbinding != NULL && domainbinding->codeset != NULL) + outcharset = domainbinding->codeset; + else + { + outcharset = getenv ("OUTPUT_CHARSET"); + if (outcharset == NULL || outcharset[0] == '\0') + { +# ifdef _LIBC + outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string; +# else +# if HAVE_ICONV + extern const char *locale_charset PARAMS ((void)); + outcharset = locale_charset (); +# endif +# endif + } + } + +# ifdef _LIBC + /* We always want to use transliteration. */ + outcharset = norm_add_slashes (outcharset, "TRANSLIT"); + charset = norm_add_slashes (charset, NULL); + if (__gconv_open (outcharset, charset, &domain->conv, + GCONV_AVOID_NOCONV) + != __GCONV_OK) + domain->conv = (__gconv_t) -1; +# else +# if HAVE_ICONV + /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5, + we want to use transliteration. */ +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ + || _LIBICONV_VERSION >= 0x0105 + len = strlen (outcharset); + { + char *tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + } +# endif + domain->conv = iconv_open (outcharset, charset); +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ + || _LIBICONV_VERSION >= 0x0105 + freea (outcharset); +# endif +# endif +# endif + + freea (charset); + } +#endif /* _LIBC || HAVE_ICONV */ + } + + return nullentry; +} + +/* Frees the codeset dependent parts of an opened message catalog. */ +void +internal_function +_nl_free_domain_conv (domain) + struct loaded_domain *domain; +{ + if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1) + free (domain->conv_tab); + +#ifdef _LIBC + if (domain->conv != (__gconv_t) -1) + __gconv_close (domain->conv); +#else +# if HAVE_ICONV + if (domain->conv != (iconv_t) -1) + iconv_close (domain->conv); +# endif +#endif +} + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (domain_file, domainbinding) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; +{ + int fd; + size_t size; +#ifdef _LIBC + struct stat64 st; +#else + struct stat st; +#endif + struct mo_file_header *data = (struct mo_file_header *) -1; + int use_mmap = 0; + struct loaded_domain *domain; + const char *nullentry; + + domain_file->decided = 1; + domain_file->data = NULL; + + /* Note that it would be useless to store domainbinding in domain_file + because domainbinding might be == NULL now but != NULL later (after + a call to bind_textdomain_codeset). */ + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + return; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY | O_BINARY); + if (fd == -1) + return; + + /* We must know about the size of the file. */ + if ( +#ifdef _LIBC + __builtin_expect (fstat64 (fd, &st) != 0, 0) +#else + __builtin_expect (fstat (fd, &st) != 0, 0) +#endif + || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) + || __builtin_expect (size < sizeof (struct mo_file_header), 0)) + { + /* Something went wrong. */ + close (fd); + return; + } + +#ifdef HAVE_MMAP + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) + { + /* mmap() call was successful. */ + close (fd); + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + return; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb <= 0) + { +#ifdef EINTR + if (nb == -1 && errno == EINTR) + continue; +#endif + close (fd); + return; + } + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, + 0)) + { + /* The magic number is wrong: not a message catalog file. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } + + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) + return; + domain_file->data = domain; + + domain->data = (char *) data; + domain->use_mmap = use_mmap; + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + + /* Fill in the information about the available tables. */ + switch (W (domain->must_swap, data->revision)) + { + case 0: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = (nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)); + break; + default: + /* This is an invalid revision. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + return; + } + + /* Now initialize the character set converter from the character set + the file is encoded with (found in the header entry) to the domain's + specified character set or the locale's character set. */ + nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding); + + /* Also look for a plural specification. */ + EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); +} + + +#ifdef _LIBC +void +internal_function +_nl_unload_domain (domain) + struct loaded_domain *domain; +{ + if (domain->plural != &__gettext_germanic_plural) + __gettext_free_exp (domain->plural); + + _nl_free_domain_conv (domain); + +# ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else +# endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/intl/localcharset.c b/intl/localcharset.c new file mode 100644 index 0000000..bc5587b --- /dev/null +++ b/intl/localcharset.c @@ -0,0 +1,345 @@ +/* Determine a canonical name for the current locale's character encoding. + + Copyright (C) 2000-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if HAVE_STDDEF_H +# include +#endif + +#include +#if HAVE_STRING_H +# include +#else +# include +#endif +#if HAVE_STDLIB_H +# include +#endif + +#if defined _WIN32 || defined __WIN32__ +# undef WIN32 /* avoid warning on mingw32 */ +# define WIN32 +#endif + +#if defined __EMX__ +/* Assume EMX program runs on OS/2, even if compiled under DOS. */ +# define OS2 +#endif + +#if !defined WIN32 +# if HAVE_LANGINFO_CODESET +# include +# else +# if HAVE_SETLOCALE +# include +# endif +# endif +#elif defined WIN32 +# define WIN32_LEAN_AND_MEAN +# include +#endif +#if defined OS2 +# define INCL_DOS +# include +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +#ifdef HAVE_GETC_UNLOCKED +# undef getc +# define getc getc_unlocked +#endif + +/* The following static variable is declared 'volatile' to avoid a + possible multithread problem in the function get_charset_aliases. If we + are running in a threaded environment, and if two threads initialize + 'charset_aliases' simultaneously, both will produce the same value, + and everything will be ok if the two assignments to 'charset_aliases' + are atomic. But I don't know what will happen if the two assignments mix. */ +#if __STDC__ != 1 +# define volatile /* empty */ +#endif +/* Pointer to the contents of the charset.alias file, if it has already been + read, else NULL. Its format is: + ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ +static const char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases () +{ + const char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#if !defined WIN32 + FILE *fp; + const char *dir = LIBDIR; + const char *base = "charset.alias"; + char *file_name; + + /* Concatenate dir and base into freshly allocated file_name. */ + { + size_t dir_len = strlen (dir); + size_t base_len = strlen (base); + int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); + file_name = (char *) malloc (dir_len + add_slash + base_len + 1); + if (file_name != NULL) + { + memcpy (file_name, dir, dir_len); + if (add_slash) + file_name[dir_len] = DIRECTORY_SEPARATOR; + memcpy (file_name + dir_len + add_slash, base, base_len + 1); + } + } + + if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) + /* Out of memory or file not found, treat it as empty. */ + cp = ""; + else + { + /* Parse the file's contents. */ + int c; + char buf1[50+1]; + char buf2[50+1]; + char *res_ptr = NULL; + size_t res_size = 0; + size_t l1, l2; + + for (;;) + { + c = getc (fp); + if (c == EOF) + break; + if (c == '\n' || c == ' ' || c == '\t') + continue; + if (c == '#') + { + /* Skip comment, to end of line. */ + do + c = getc (fp); + while (!(c == EOF || c == '\n')); + if (c == EOF) + break; + continue; + } + ungetc (c, fp); + if (fscanf (fp, "%50s %50s", buf1, buf2) < 2) + break; + l1 = strlen (buf1); + l2 = strlen (buf2); + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = (char *) malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = (char *) realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + break; + } + strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); + strcpy (res_ptr + res_size - (l2 + 1), buf2); + } + fclose (fp); + if (res_size == 0) + cp = ""; + else + { + *(res_ptr + res_size) = '\0'; + cp = res_ptr; + } + } + + if (file_name != NULL) + free (file_name); + +#else + + /* To avoid the troubles of installing a separate file in the same + directory as the DLL and of retrieving the DLL's directory at + runtime, simply inline the aliases here. */ + +# if defined WIN32 + cp = "CP936" "\0" "GBK" "\0" + "CP1361" "\0" "JOHAB" "\0"; +# endif +#endif + + charset_aliases = cp; + } + + return cp; +} + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ + +#ifdef STATIC +STATIC +#endif +const char * +locale_charset () +{ + const char *codeset; + const char *aliases; + +#if !(defined WIN32 || defined OS2) + +# if HAVE_LANGINFO_CODESET + + /* Most systems support nl_langinfo (CODESET) nowadays. */ + codeset = nl_langinfo (CODESET); + +# else + + /* On old systems which lack it, use setlocale or getenv. */ + const char *locale = NULL; + + /* But most old systems don't have a complete set of locales. Some + (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't + use setlocale here; it would return "C" when it doesn't support the + locale name the user has set. */ +# if HAVE_SETLOCALE && 0 + locale = setlocale (LC_CTYPE, NULL); +# endif + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + } + + /* On some old systems, one used to set locale = "iso8859_1". On others, + you set it to "language_COUNTRY.charset". In any case, we resolve it + through the charset.alias file. */ + codeset = locale; + +# endif + +#elif defined WIN32 + + static char buf[2 + 10 + 1]; + + /* Win32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#elif defined OS2 + + const char *locale; + static char buf[2 + 10 + 1]; + ULONG cp[3]; + ULONG cplen; + + /* Allow user to override the codeset, as set in the operating system, + with standard language environment variables. */ + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + + /* Resolve through the charset.alias file. */ + codeset = locale; + } + else + { + /* OS/2 has a function returning the locale's codepage as a number. */ + if (DosQueryCp (sizeof (cp), cp, &cplen)) + codeset = ""; + else + { + sprintf (buf, "CP%u", cp[0]); + codeset = buf; + } + } + +#endif + + if (codeset == NULL) + /* The canonical name cannot be determined. */ + codeset = ""; + + /* Resolve alias. */ + for (aliases = get_charset_aliases (); + *aliases != '\0'; + aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) + if (strcmp (codeset, aliases) == 0 + || (aliases[0] == '*' && aliases[1] == '\0')) + { + codeset = aliases + strlen (aliases) + 1; + break; + } + + return codeset; +} diff --git a/intl/locale.alias b/intl/locale.alias new file mode 100644 index 0000000..bd7b9b3 --- /dev/null +++ b/intl/locale.alias @@ -0,0 +1,78 @@ +# Locale name alias data base. +# Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. + +# The format of this file is the same as for the corresponding file of +# the X Window System, which normally can be found in +# /usr/lib/X11/locale/locale.alias +# A single line contains two fields: an alias and a substitution value. +# All entries are case independent. + +# Note: This file is far from being complete. If you have a value for +# your own site which you think might be useful for others too, share +# it with the rest of us. Send it using the `glibcbug' script to +# bugs@gnu.org. + +# Packages using this file: + +bokmal no_NO.ISO-8859-1 +bokmål no_NO.ISO-8859-1 +catalan ca_ES.ISO-8859-1 +croatian hr_HR.ISO-8859-2 +czech cs_CZ.ISO-8859-2 +danish da_DK.ISO-8859-1 +dansk da_DK.ISO-8859-1 +deutsch de_DE.ISO-8859-1 +dutch nl_NL.ISO-8859-1 +eesti et_EE.ISO-8859-1 +estonian et_EE.ISO-8859-1 +finnish fi_FI.ISO-8859-1 +français fr_FR.ISO-8859-1 +french fr_FR.ISO-8859-1 +galego gl_ES.ISO-8859-1 +galician gl_ES.ISO-8859-1 +german de_DE.ISO-8859-1 +greek el_GR.ISO-8859-7 +hebrew he_IL.ISO-8859-8 +hrvatski hr_HR.ISO-8859-2 +hungarian hu_HU.ISO-8859-2 +icelandic is_IS.ISO-8859-1 +italian it_IT.ISO-8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +ja_JP ja_JP.eucJP +ja_JP.ujis ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +ko_KR ko_KR.eucKR +lithuanian lt_LT.ISO-8859-13 +nb_NO no_NO.ISO-8859-1 +nb_NO.ISO-8859-1 no_NO.ISO-8859-1 +norwegian no_NO.ISO-8859-1 +nynorsk nn_NO.ISO-8859-1 +polish pl_PL.ISO-8859-2 +portuguese pt_PT.ISO-8859-1 +romanian ro_RO.ISO-8859-2 +russian ru_RU.ISO-8859-5 +slovak sk_SK.ISO-8859-2 +slovene sl_SI.ISO-8859-2 +slovenian sl_SI.ISO-8859-2 +spanish es_ES.ISO-8859-1 +swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 +turkish tr_TR.ISO-8859-9 diff --git a/intl/localealias.c b/intl/localealias.c new file mode 100644 index 0000000..456e41e --- /dev/null +++ b/intl/localealias.c @@ -0,0 +1,419 @@ +/* Handle aliases for locale names. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#if defined _LIBC || defined HAVE___FSETLOCKING +# include +#endif +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#include + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 +# define HAVE___FSETLOCKING 1 + +/* We need locking here since we can be called from different places. */ +# include + +__libc_lock_define_initialized (static, lock); +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Some optimizations for glibc. */ +#ifdef _LIBC +# define FEOF(fp) feof_unlocked (fp) +# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) +#else +# define FEOF(fp) feof (fp) +# define FGETS(buf, n, fp) fgets (buf, n, fp) +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +static char *string_space; +static size_t string_space_act; +static size_t string_space_max; +static struct alias_map *map; +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) + internal_function; +static int extend_alias_table PARAMS ((void)); +static int alias_compare PARAMS ((const struct alias_map *map1, + const struct alias_map *map2)); + + +const char * +_nl_expand_alias (name) + const char *name; +{ + static const char *locale_alias_path; + struct alias_map *retval; + const char *result = NULL; + size_t added; + +#ifdef _LIBC + __libc_lock_lock (lock); +#endif + + if (locale_alias_path == NULL) + locale_alias_path = LOCALE_ALIAS_PATH; + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) PARAMS ((const void *, + const void *)) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == PATH_SEPARATOR) + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' + && locale_alias_path[0] != PATH_SEPARATOR) + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + +#ifdef _LIBC + __libc_lock_unlock (lock); +#endif + + return result; +} + + +static size_t +internal_function +read_alias_file (fname, fname_len) + const char *fname; + int fname_len; +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + + fp = fopen (full_fname, "r"); + freea (full_fname); + if (fp == NULL) + return 0; + +#ifdef HAVE___FSETLOCKING + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); +#endif + + added = 0; + while (!FEOF (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + */ + char buf[BUFSIZ]; + char *alias; + char *value; + char *cp; + + if (FGETS (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (strchr (buf, '\n') == NULL) + { + char altbuf[BUFSIZ]; + do + if (FGETS (altbuf, sizeof altbuf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (altbuf, '\n') == NULL); + } + + cp = buf; + /* Ignore leading white space. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + if (cp[0] != '\0') + { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + if (__builtin_expect (extend_alias_table (), 0)) + return added; + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + return added; + + if (__builtin_expect (string_space != new_pool, 0)) + { + size_t i; + + for (i = 0; i < nmap; i++) + { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) PARAMS ((const void *, const void *))) alias_compare); + + return added; +} + + +static int +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + if (string_space != NULL) + free (string_space); + if (map != NULL) + free (map); +} +text_set_element (__libc_subfreeres, free_mem); +#endif + + +static int +alias_compare (map1, map2) + const struct alias_map *map1; + const struct alias_map *map2; +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/intl/localename.c b/intl/localename.c new file mode 100644 index 0000000..a724198 --- /dev/null +++ b/intl/localename.c @@ -0,0 +1,694 @@ +/* Determine the current selected locale. + Copyright (C) 1995-1999, 2000-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Written by Ulrich Drepper , 1995. */ +/* Win32 code written by Tor Lillqvist . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#if defined _WIN32 || defined __WIN32__ +# undef WIN32 /* avoid warning on mingw32 */ +# define WIN32 +#endif + +#ifdef WIN32 +# define WIN32_LEAN_AND_MEAN +# include +/* Mingw headers don't have latest language and sublanguage codes. */ +# ifndef LANG_AFRIKAANS +# define LANG_AFRIKAANS 0x36 +# endif +# ifndef LANG_ALBANIAN +# define LANG_ALBANIAN 0x1c +# endif +# ifndef LANG_ARABIC +# define LANG_ARABIC 0x01 +# endif +# ifndef LANG_ARMENIAN +# define LANG_ARMENIAN 0x2b +# endif +# ifndef LANG_ASSAMESE +# define LANG_ASSAMESE 0x4d +# endif +# ifndef LANG_AZERI +# define LANG_AZERI 0x2c +# endif +# ifndef LANG_BASQUE +# define LANG_BASQUE 0x2d +# endif +# ifndef LANG_BELARUSIAN +# define LANG_BELARUSIAN 0x23 +# endif +# ifndef LANG_BENGALI +# define LANG_BENGALI 0x45 +# endif +# ifndef LANG_CATALAN +# define LANG_CATALAN 0x03 +# endif +# ifndef LANG_ESTONIAN +# define LANG_ESTONIAN 0x25 +# endif +# ifndef LANG_FAEROESE +# define LANG_FAEROESE 0x38 +# endif +# ifndef LANG_FARSI +# define LANG_FARSI 0x29 +# endif +# ifndef LANG_GEORGIAN +# define LANG_GEORGIAN 0x37 +# endif +# ifndef LANG_GUJARATI +# define LANG_GUJARATI 0x47 +# endif +# ifndef LANG_HEBREW +# define LANG_HEBREW 0x0d +# endif +# ifndef LANG_HINDI +# define LANG_HINDI 0x39 +# endif +# ifndef LANG_INDONESIAN +# define LANG_INDONESIAN 0x21 +# endif +# ifndef LANG_KANNADA +# define LANG_KANNADA 0x4b +# endif +# ifndef LANG_KASHMIRI +# define LANG_KASHMIRI 0x60 +# endif +# ifndef LANG_KAZAK +# define LANG_KAZAK 0x3f +# endif +# ifndef LANG_KONKANI +# define LANG_KONKANI 0x57 +# endif +# ifndef LANG_LATVIAN +# define LANG_LATVIAN 0x26 +# endif +# ifndef LANG_LITHUANIAN +# define LANG_LITHUANIAN 0x27 +# endif +# ifndef LANG_MACEDONIAN +# define LANG_MACEDONIAN 0x2f +# endif +# ifndef LANG_MALAY +# define LANG_MALAY 0x3e +# endif +# ifndef LANG_MALAYALAM +# define LANG_MALAYALAM 0x4c +# endif +# ifndef LANG_MANIPURI +# define LANG_MANIPURI 0x58 +# endif +# ifndef LANG_MARATHI +# define LANG_MARATHI 0x4e +# endif +# ifndef LANG_NEPALI +# define LANG_NEPALI 0x61 +# endif +# ifndef LANG_ORIYA +# define LANG_ORIYA 0x48 +# endif +# ifndef LANG_PUNJABI +# define LANG_PUNJABI 0x46 +# endif +# ifndef LANG_SANSKRIT +# define LANG_SANSKRIT 0x4f +# endif +# ifndef LANG_SERBIAN +# define LANG_SERBIAN 0x1a +# endif +# ifndef LANG_SINDHI +# define LANG_SINDHI 0x59 +# endif +# ifndef LANG_SLOVAK +# define LANG_SLOVAK 0x1b +# endif +# ifndef LANG_SWAHILI +# define LANG_SWAHILI 0x41 +# endif +# ifndef LANG_TAMIL +# define LANG_TAMIL 0x49 +# endif +# ifndef LANG_TATAR +# define LANG_TATAR 0x44 +# endif +# ifndef LANG_TELUGU +# define LANG_TELUGU 0x4a +# endif +# ifndef LANG_THAI +# define LANG_THAI 0x1e +# endif +# ifndef LANG_UKRAINIAN +# define LANG_UKRAINIAN 0x22 +# endif +# ifndef LANG_URDU +# define LANG_URDU 0x20 +# endif +# ifndef LANG_UZBEK +# define LANG_UZBEK 0x43 +# endif +# ifndef LANG_VIETNAMESE +# define LANG_VIETNAMESE 0x2a +# endif +# ifndef SUBLANG_ARABIC_SAUDI_ARABIA +# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +# endif +# ifndef SUBLANG_ARABIC_IRAQ +# define SUBLANG_ARABIC_IRAQ 0x02 +# endif +# ifndef SUBLANG_ARABIC_EGYPT +# define SUBLANG_ARABIC_EGYPT 0x03 +# endif +# ifndef SUBLANG_ARABIC_LIBYA +# define SUBLANG_ARABIC_LIBYA 0x04 +# endif +# ifndef SUBLANG_ARABIC_ALGERIA +# define SUBLANG_ARABIC_ALGERIA 0x05 +# endif +# ifndef SUBLANG_ARABIC_MOROCCO +# define SUBLANG_ARABIC_MOROCCO 0x06 +# endif +# ifndef SUBLANG_ARABIC_TUNISIA +# define SUBLANG_ARABIC_TUNISIA 0x07 +# endif +# ifndef SUBLANG_ARABIC_OMAN +# define SUBLANG_ARABIC_OMAN 0x08 +# endif +# ifndef SUBLANG_ARABIC_YEMEN +# define SUBLANG_ARABIC_YEMEN 0x09 +# endif +# ifndef SUBLANG_ARABIC_SYRIA +# define SUBLANG_ARABIC_SYRIA 0x0a +# endif +# ifndef SUBLANG_ARABIC_JORDAN +# define SUBLANG_ARABIC_JORDAN 0x0b +# endif +# ifndef SUBLANG_ARABIC_LEBANON +# define SUBLANG_ARABIC_LEBANON 0x0c +# endif +# ifndef SUBLANG_ARABIC_KUWAIT +# define SUBLANG_ARABIC_KUWAIT 0x0d +# endif +# ifndef SUBLANG_ARABIC_UAE +# define SUBLANG_ARABIC_UAE 0x0e +# endif +# ifndef SUBLANG_ARABIC_BAHRAIN +# define SUBLANG_ARABIC_BAHRAIN 0x0f +# endif +# ifndef SUBLANG_ARABIC_QATAR +# define SUBLANG_ARABIC_QATAR 0x10 +# endif +# ifndef SUBLANG_AZERI_LATIN +# define SUBLANG_AZERI_LATIN 0x01 +# endif +# ifndef SUBLANG_AZERI_CYRILLIC +# define SUBLANG_AZERI_CYRILLIC 0x02 +# endif +# ifndef SUBLANG_CHINESE_MACAU +# define SUBLANG_CHINESE_MACAU 0x05 +# endif +# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA +# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +# endif +# ifndef SUBLANG_ENGLISH_JAMAICA +# define SUBLANG_ENGLISH_JAMAICA 0x08 +# endif +# ifndef SUBLANG_ENGLISH_CARIBBEAN +# define SUBLANG_ENGLISH_CARIBBEAN 0x09 +# endif +# ifndef SUBLANG_ENGLISH_BELIZE +# define SUBLANG_ENGLISH_BELIZE 0x0a +# endif +# ifndef SUBLANG_ENGLISH_TRINIDAD +# define SUBLANG_ENGLISH_TRINIDAD 0x0b +# endif +# ifndef SUBLANG_ENGLISH_ZIMBABWE +# define SUBLANG_ENGLISH_ZIMBABWE 0x0c +# endif +# ifndef SUBLANG_ENGLISH_PHILIPPINES +# define SUBLANG_ENGLISH_PHILIPPINES 0x0d +# endif +# ifndef SUBLANG_FRENCH_LUXEMBOURG +# define SUBLANG_FRENCH_LUXEMBOURG 0x05 +# endif +# ifndef SUBLANG_FRENCH_MONACO +# define SUBLANG_FRENCH_MONACO 0x06 +# endif +# ifndef SUBLANG_GERMAN_LUXEMBOURG +# define SUBLANG_GERMAN_LUXEMBOURG 0x04 +# endif +# ifndef SUBLANG_GERMAN_LIECHTENSTEIN +# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +# endif +# ifndef SUBLANG_KASHMIRI_INDIA +# define SUBLANG_KASHMIRI_INDIA 0x02 +# endif +# ifndef SUBLANG_MALAY_MALAYSIA +# define SUBLANG_MALAY_MALAYSIA 0x01 +# endif +# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM +# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +# endif +# ifndef SUBLANG_NEPALI_INDIA +# define SUBLANG_NEPALI_INDIA 0x02 +# endif +# ifndef SUBLANG_SERBIAN_LATIN +# define SUBLANG_SERBIAN_LATIN 0x02 +# endif +# ifndef SUBLANG_SERBIAN_CYRILLIC +# define SUBLANG_SERBIAN_CYRILLIC 0x03 +# endif +# ifndef SUBLANG_SPANISH_GUATEMALA +# define SUBLANG_SPANISH_GUATEMALA 0x04 +# endif +# ifndef SUBLANG_SPANISH_COSTA_RICA +# define SUBLANG_SPANISH_COSTA_RICA 0x05 +# endif +# ifndef SUBLANG_SPANISH_PANAMA +# define SUBLANG_SPANISH_PANAMA 0x06 +# endif +# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC +# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +# endif +# ifndef SUBLANG_SPANISH_VENEZUELA +# define SUBLANG_SPANISH_VENEZUELA 0x08 +# endif +# ifndef SUBLANG_SPANISH_COLOMBIA +# define SUBLANG_SPANISH_COLOMBIA 0x09 +# endif +# ifndef SUBLANG_SPANISH_PERU +# define SUBLANG_SPANISH_PERU 0x0a +# endif +# ifndef SUBLANG_SPANISH_ARGENTINA +# define SUBLANG_SPANISH_ARGENTINA 0x0b +# endif +# ifndef SUBLANG_SPANISH_ECUADOR +# define SUBLANG_SPANISH_ECUADOR 0x0c +# endif +# ifndef SUBLANG_SPANISH_CHILE +# define SUBLANG_SPANISH_CHILE 0x0d +# endif +# ifndef SUBLANG_SPANISH_URUGUAY +# define SUBLANG_SPANISH_URUGUAY 0x0e +# endif +# ifndef SUBLANG_SPANISH_PARAGUAY +# define SUBLANG_SPANISH_PARAGUAY 0x0f +# endif +# ifndef SUBLANG_SPANISH_BOLIVIA +# define SUBLANG_SPANISH_BOLIVIA 0x10 +# endif +# ifndef SUBLANG_SPANISH_EL_SALVADOR +# define SUBLANG_SPANISH_EL_SALVADOR 0x11 +# endif +# ifndef SUBLANG_SPANISH_HONDURAS +# define SUBLANG_SPANISH_HONDURAS 0x12 +# endif +# ifndef SUBLANG_SPANISH_NICARAGUA +# define SUBLANG_SPANISH_NICARAGUA 0x13 +# endif +# ifndef SUBLANG_SPANISH_PUERTO_RICO +# define SUBLANG_SPANISH_PUERTO_RICO 0x14 +# endif +# ifndef SUBLANG_SWEDISH_FINLAND +# define SUBLANG_SWEDISH_FINLAND 0x02 +# endif +# ifndef SUBLANG_URDU_PAKISTAN +# define SUBLANG_URDU_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_URDU_INDIA +# define SUBLANG_URDU_INDIA 0x02 +# endif +# ifndef SUBLANG_UZBEK_LATIN +# define SUBLANG_UZBEK_LATIN 0x01 +# endif +# ifndef SUBLANG_UZBEK_CYRILLIC +# define SUBLANG_UZBEK_CYRILLIC 0x02 +# endif +#endif + +/* XPG3 defines the result of 'setlocale (category, NULL)' as: + "Directs 'setlocale()' to query 'category' and return the current + setting of 'local'." + However it does not specify the exact format. Neither do SUSV2 and + ISO C 99. So we can use this feature only on selected systems (e.g. + those using GNU C Library). */ +#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2) +# define HAVE_LOCALE_NULL +#endif + +/* Determine the current locale's name, and canonicalize it into XPG syntax + language[_territory[.codeset]][@modifier] + The codeset part in the result is not reliable; the locale_charset() + should be used for codeset information instead. + The result must not be freed; it is statically allocated. */ + +const char * +_nl_locale_name (category, categoryname) + int category; + const char *categoryname; +{ + const char *retval; + +#ifndef WIN32 + + /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'. + On some systems this can be done by the 'setlocale' function itself. */ +# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + retval = setlocale (category, NULL); +# else + /* Setting of LC_ALL overwrites all other. */ + retval = getenv ("LC_ALL"); + if (retval == NULL || retval[0] == '\0') + { + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval == NULL || retval[0] == '\0') + { + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval == NULL || retval[0] == '\0') + /* We use C as the default domain. POSIX says this is + implementation defined. */ + retval = "C"; + } + } +# endif + + return retval; + +#else /* WIN32 */ + + /* Return an XPG style locale name language[_territory][@modifier]. + Don't even bother determining the codeset; it's not useful in this + context, because message catalogs are not specific to a single + codeset. */ + + LCID lcid; + LANGID langid; + int primary, sub; + + /* Let the user override the system settings through environment + variables, as on POSIX systems. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Use native Win32 API locale ID. */ + lcid = GetThreadLocale (); + + /* Strip off the sorting rules, keep only the language part. */ + langid = LANGIDFROMLCID (lcid); + + /* Split into language and territory part. */ + primary = PRIMARYLANGID (langid); + sub = SUBLANGID (langid); + switch (primary) + { + case LANG_AFRIKAANS: return "af_ZA"; + case LANG_ALBANIAN: return "sq_AL"; + case LANG_ARABIC: + switch (sub) + { + case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; + case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; + case SUBLANG_ARABIC_EGYPT: return "ar_EG"; + case SUBLANG_ARABIC_LIBYA: return "ar_LY"; + case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; + case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; + case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; + case SUBLANG_ARABIC_OMAN: return "ar_OM"; + case SUBLANG_ARABIC_YEMEN: return "ar_YE"; + case SUBLANG_ARABIC_SYRIA: return "ar_SY"; + case SUBLANG_ARABIC_JORDAN: return "ar_JO"; + case SUBLANG_ARABIC_LEBANON: return "ar_LB"; + case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; + case SUBLANG_ARABIC_UAE: return "ar_AE"; + case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; + case SUBLANG_ARABIC_QATAR: return "ar_QA"; + } + return "ar"; + case LANG_ARMENIAN: return "hy_AM"; + case LANG_ASSAMESE: return "as_IN"; + case LANG_AZERI: + switch (sub) + { + /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ + case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; + case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; + } + return "az"; + case LANG_BASQUE: + return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ + case LANG_BELARUSIAN: return "be_BY"; + case LANG_BENGALI: return "bn_IN"; + case LANG_BULGARIAN: return "bg_BG"; + case LANG_CATALAN: return "ca_ES"; + case LANG_CHINESE: + switch (sub) + { + case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; + case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; + case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; + case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; + case SUBLANG_CHINESE_MACAU: return "zh_MO"; + } + return "zh"; + case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN + * What used to be called Serbo-Croatian + * should really now be two separate + * languages because of political reasons. + * (Says tml, who knows nothing about Serbian + * or Croatian.) + * (I can feel those flames coming already.) + */ + switch (sub) + { + /* FIXME: How to distinguish Croatian and Latin Serbian locales? */ + case SUBLANG_SERBIAN_LATIN: return "sr_YU"; + case SUBLANG_SERBIAN_CYRILLIC: return "sr_YU@cyrillic"; + default: return "hr_HR"; + } + case LANG_CZECH: return "cs_CZ"; + case LANG_DANISH: return "da_DK"; + case LANG_DUTCH: + switch (sub) + { + case SUBLANG_DUTCH: return "nl_NL"; + case SUBLANG_DUTCH_BELGIAN: return "nl_BE"; + } + return "nl"; + case LANG_ENGLISH: + switch (sub) + { + /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought + * English was the language spoken in England. + * Oh well. + */ + case SUBLANG_ENGLISH_US: return "en_US"; + case SUBLANG_ENGLISH_UK: return "en_GB"; + case SUBLANG_ENGLISH_AUS: return "en_AU"; + case SUBLANG_ENGLISH_CAN: return "en_CA"; + case SUBLANG_ENGLISH_NZ: return "en_NZ"; + case SUBLANG_ENGLISH_EIRE: return "en_IE"; + case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; + case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; + case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ + case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; + case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; + case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; + case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; + } + return "en"; + case LANG_ESTONIAN: return "et_EE"; + case LANG_FAEROESE: return "fo_FO"; + case LANG_FARSI: return "fa_IR"; + case LANG_FINNISH: return "fi_FI"; + case LANG_FRENCH: + switch (sub) + { + case SUBLANG_FRENCH: return "fr_FR"; + case SUBLANG_FRENCH_BELGIAN: return "fr_BE"; + case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; + case SUBLANG_FRENCH_SWISS: return "fr_CH"; + case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; + case SUBLANG_FRENCH_MONACO: return "fr_MC"; + } + return "fr"; + case LANG_GEORGIAN: return "ka_GE"; + case LANG_GERMAN: + switch (sub) + { + case SUBLANG_GERMAN: return "de_DE"; + case SUBLANG_GERMAN_SWISS: return "de_CH"; + case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; + case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; + case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; + } + return "de"; + case LANG_GREEK: return "el_GR"; + case LANG_GUJARATI: return "gu_IN"; + case LANG_HEBREW: return "he_IL"; + case LANG_HINDI: return "hi_IN"; + case LANG_HUNGARIAN: return "hu_HU"; + case LANG_ICELANDIC: return "is_IS"; + case LANG_INDONESIAN: return "id_ID"; + case LANG_ITALIAN: + switch (sub) + { + case SUBLANG_ITALIAN: return "it_IT"; + case SUBLANG_ITALIAN_SWISS: return "it_CH"; + } + return "it"; + case LANG_JAPANESE: return "ja_JP"; + case LANG_KANNADA: return "kn_IN"; + case LANG_KASHMIRI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ks_PK"; + case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; + } + return "ks"; + case LANG_KAZAK: return "kk_KZ"; + case LANG_KONKANI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "kok_IN"; + case LANG_KOREAN: return "ko_KR"; + case LANG_LATVIAN: return "lv_LV"; + case LANG_LITHUANIAN: return "lt_LT"; + case LANG_MACEDONIAN: return "mk_MK"; + case LANG_MALAY: + switch (sub) + { + case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; + case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; + } + return "ms"; + case LANG_MALAYALAM: return "ml_IN"; + case LANG_MANIPURI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "mni_IN"; + case LANG_MARATHI: return "mr_IN"; + case LANG_NEPALI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ne_NP"; + case SUBLANG_NEPALI_INDIA: return "ne_IN"; + } + return "ne"; + case LANG_NORWEGIAN: + switch (sub) + { + case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO"; + case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; + } + return "no"; + case LANG_ORIYA: return "or_IN"; + case LANG_POLISH: return "pl_PL"; + case LANG_PORTUGUESE: + switch (sub) + { + case SUBLANG_PORTUGUESE: return "pt_PT"; + /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. + Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ + case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; + } + return "pt"; + case LANG_PUNJABI: return "pa_IN"; + case LANG_ROMANIAN: return "ro_RO"; + case LANG_RUSSIAN: + return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA". */ + case LANG_SANSKRIT: return "sa_IN"; + case LANG_SINDHI: return "sd"; + case LANG_SLOVAK: return "sk_SK"; + case LANG_SLOVENIAN: return "sl_SI"; + case LANG_SORBIAN: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "wen_DE"; + case LANG_SPANISH: + switch (sub) + { + case SUBLANG_SPANISH: return "es_ES"; + case SUBLANG_SPANISH_MEXICAN: return "es_MX"; + case SUBLANG_SPANISH_MODERN: + return "es_ES@modern"; /* not seen on Unix */ + case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; + case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; + case SUBLANG_SPANISH_PANAMA: return "es_PA"; + case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; + case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; + case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; + case SUBLANG_SPANISH_PERU: return "es_PE"; + case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; + case SUBLANG_SPANISH_ECUADOR: return "es_EC"; + case SUBLANG_SPANISH_CHILE: return "es_CL"; + case SUBLANG_SPANISH_URUGUAY: return "es_UY"; + case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; + case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; + case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; + case SUBLANG_SPANISH_HONDURAS: return "es_HN"; + case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; + case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; + } + return "es"; + case LANG_SWAHILI: return "sw"; + case LANG_SWEDISH: + switch (sub) + { + case SUBLANG_DEFAULT: return "sv_SE"; + case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; + } + return "sv"; + case LANG_TAMIL: + return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ + case LANG_TATAR: return "tt"; + case LANG_TELUGU: return "te_IN"; + case LANG_THAI: return "th_TH"; + case LANG_TURKISH: return "tr_TR"; + case LANG_UKRAINIAN: return "uk_UA"; + case LANG_URDU: + switch (sub) + { + case SUBLANG_URDU_PAKISTAN: return "ur_PK"; + case SUBLANG_URDU_INDIA: return "ur_IN"; + } + return "ur"; + case LANG_UZBEK: + switch (sub) + { + /* FIXME: Adjust this when Uzbek locales appear on Unix. */ + case SUBLANG_UZBEK_LATIN: return "uz_UZ@latin"; + case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; + } + return "uz"; + case LANG_VIETNAMESE: return "vi_VN"; + default: return "C"; + } + +#endif +} diff --git a/intl/ngettext.c b/intl/ngettext.c new file mode 100644 index 0000000..fb3ec5a --- /dev/null +++ b/intl/ngettext.c @@ -0,0 +1,68 @@ +/* Implementation of ngettext(3) function. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +#include + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define NGETTEXT __ngettext +# define DCNGETTEXT __dcngettext +#else +# define NGETTEXT ngettext__ +# define DCNGETTEXT dcngettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +NGETTEXT (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__ngettext, ngettext); +#endif diff --git a/intl/os2compat.c b/intl/os2compat.c new file mode 100644 index 0000000..681e98a --- /dev/null +++ b/intl/os2compat.c @@ -0,0 +1,101 @@ +/* OS/2 compatibility functions. + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#define OS2_AWARE +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +/* A version of getenv() that works from DLLs */ +extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); + +char * +_nl_getenv (const char *name) +{ + unsigned char *value; + if (DosScanEnv (name, &value)) + return NULL; + else + return value; +} + +/* A fixed size buffer. */ +#define LOCALEDIR_MAX 260 +char _nl_default_dirname__[LOCALEDIR_MAX+1]; + +char *_os2_libdir = NULL; +char *_os2_localealiaspath = NULL; +char *_os2_localedir = NULL; + +static __attribute__((constructor)) void +os2_initialize () +{ + char *root = getenv ("UNIXROOT"); + char *gnulocaledir = getenv ("GNULOCALEDIR"); + + _os2_libdir = gnulocaledir; + if (!_os2_libdir) + { + if (root) + { + size_t sl = strlen (root); + _os2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); + memcpy (_os2_libdir, root, sl); + memcpy (_os2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); + } + else + _os2_libdir = LIBDIR; + } + + _os2_localealiaspath = gnulocaledir; + if (!_os2_localealiaspath) + { + if (root) + { + size_t sl = strlen (root); + _os2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); + memcpy (_os2_localealiaspath, root, sl); + memcpy (_os2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); + } + else + _os2_localealiaspath = LOCALE_ALIAS_PATH; + } + + _os2_localedir = gnulocaledir; + if (!_os2_localedir) + { + if (root) + { + size_t sl = strlen (root); + _os2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); + memcpy (_os2_localedir, root, sl); + memcpy (_os2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); + } + else + _os2_localedir = LOCALEDIR; + } + + { + extern const char _nl_default_dirname__[]; + if (strlen (_os2_localedir) <= LOCALEDIR_MAX) + strcpy (_nl_default_dirname__, _os2_localedir); + } +} diff --git a/intl/os2compat.h b/intl/os2compat.h new file mode 100644 index 0000000..3605e7a --- /dev/null +++ b/intl/os2compat.h @@ -0,0 +1,46 @@ +/* OS/2 compatibility defines. + This file is intended to be included from config.h + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* When included from os2compat.h we need all the original definitions */ +#ifndef OS2_AWARE + +#undef LIBDIR +#define LIBDIR _os2_libdir +extern char *_os2_libdir; + +#undef LOCALEDIR +#define LOCALEDIR _os2_localedir +extern char *_os2_localedir; + +#undef LOCALE_ALIAS_PATH +#define LOCALE_ALIAS_PATH _os2_localealiaspath +extern char *_os2_localealiaspath; + +#endif + +#undef HAVE_STRCASECMP +#define HAVE_STRCASECMP 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp + +/* We have our own getenv() which works even if library is compiled as DLL */ +#define getenv _nl_getenv + +/* Older versions of gettext used -1 as the value of LC_MESSAGES */ +#define LC_MESSAGES_COMPAT (-1) diff --git a/intl/osdep.c b/intl/osdep.c new file mode 100644 index 0000000..b372598 --- /dev/null +++ b/intl/osdep.c @@ -0,0 +1,24 @@ +/* OS dependent parts of libintl. + Copyright (C) 2001-2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#if defined __EMX__ +# include "os2compat.c" +#else +/* Avoid AIX compiler warning. */ +typedef int dummy; +#endif diff --git a/intl/plural-exp.c b/intl/plural-exp.c new file mode 100644 index 0000000..c937c01 --- /dev/null +++ b/intl/plural-exp.c @@ -0,0 +1,156 @@ +/* Expression parsing for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "plural-exp.h" + +#if (defined __GNUC__ && !defined __APPLE_CC__) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + +/* These structs are the constant expression for the germanic plural + form determination. It represents the expression "n != 1". */ +static const struct expression plvar = +{ + .nargs = 0, + .operation = var, +}; +static const struct expression plone = +{ + .nargs = 0, + .operation = num, + .val = + { + .num = 1 + } +}; +struct expression GERMANIC_PLURAL = +{ + .nargs = 2, + .operation = not_equal, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; + +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +struct expression GERMANIC_PLURAL; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.nargs = 0; + plvar.operation = var; + + plone.nargs = 0; + plone.operation = num; + plone.val.num = 1; + + GERMANIC_PLURAL.nargs = 2; + GERMANIC_PLURAL.operation = not_equal; + GERMANIC_PLURAL.val.args[0] = &plvar; + GERMANIC_PLURAL.val.args[1] = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + +void +internal_function +EXTRACT_PLURAL_EXPRESSION (nullentry, pluralp, npluralsp) + const char *nullentry; + struct expression **pluralp; + unsigned long int *npluralsp; +{ + if (nullentry != NULL) + { + const char *plural; + const char *nplurals; + + plural = strstr (nullentry, "plural="); + nplurals = strstr (nullentry, "nplurals="); + if (plural == NULL || nplurals == NULL) + goto no_plural; + else + { + char *endp; + unsigned long int n; + struct parse_args args; + + /* First get the number. */ + nplurals += 9; + while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) + ++nplurals; + if (!(*nplurals >= '0' && *nplurals <= '9')) + goto no_plural; +#if defined HAVE_STRTOUL || defined _LIBC + n = strtoul (nplurals, &endp, 10); +#else + for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) + n = n * 10 + (*endp - '0'); +#endif + if (nplurals == endp) + goto no_plural; + *npluralsp = n; + + /* Due to the restrictions bison imposes onto the interface of the + scanner function we have to put the input string and the result + passed up from the parser into the same structure which address + is passed down to the parser. */ + plural += 7; + args.cp = plural; + if (PLURAL_PARSE (&args) != 0) + goto no_plural; + *pluralp = args.res; + } + } + else + { + /* By default we are using the Germanic form: singular form only + for `one', the plural form otherwise. Yes, this is also what + English is using since English is a Germanic language. */ + no_plural: + INIT_GERMANIC_PLURAL (); + *pluralp = &GERMANIC_PLURAL; + *npluralsp = 2; + } +} diff --git a/intl/plural-exp.h b/intl/plural-exp.h new file mode 100644 index 0000000..6a4bba0 --- /dev/null +++ b/intl/plural-exp.h @@ -0,0 +1,122 @@ +/* Expression parsing and evaluation for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _PLURAL_EXP_H +#define _PLURAL_EXP_H + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + enum operator + { + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Modulo operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparison for equality. */ + not_equal, /* Comparison for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ + } operation; + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + +/* This is the data structure to pass information to the parser and get + the result in a thread-safe way. */ +struct parse_args +{ + const char *cp; + struct expression *res; +}; + + +/* Names for the libintl functions are a problem. This source code is used + 1. in the GNU C Library library, + 2. in the GNU libintl library, + 3. in the GNU gettext tools. + The function names in each situation must be different, to allow for + binary incompatible changes in 'struct expression'. Furthermore, + 1. in the GNU C Library library, the names have a __ prefix, + 2.+3. in the GNU libintl library and in the GNU gettext tools, the names + must follow ANSI C and not start with __. + So we have to distinguish the three cases. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +# define PLURAL_PARSE __gettextparse +# define GERMANIC_PLURAL __gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural +#elif defined (IN_LIBINTL) +# define FREE_EXPRESSION gettext_free_exp__ +# define PLURAL_PARSE gettextparse__ +# define GERMANIC_PLURAL gettext_germanic_plural__ +# define EXTRACT_PLURAL_EXPRESSION gettext_extract_plural__ +#else +# define FREE_EXPRESSION free_plural_expression +# define PLURAL_PARSE parse_plural_expression +# define GERMANIC_PLURAL germanic_plural +# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression +#endif + +extern void FREE_EXPRESSION PARAMS ((struct expression *exp)) + internal_function; +extern int PLURAL_PARSE PARAMS ((void *arg)); +extern struct expression GERMANIC_PLURAL; +extern void EXTRACT_PLURAL_EXPRESSION PARAMS ((const char *nullentry, + struct expression **pluralp, + unsigned long int *npluralsp)) + internal_function; + +#if !defined (_LIBC) && !defined (IN_LIBINTL) +extern unsigned long int plural_eval PARAMS ((struct expression *pexp, + unsigned long int n)); +#endif + +#endif /* _PLURAL_EXP_H */ diff --git a/intl/plural.c b/intl/plural.c new file mode 100644 index 0000000..c9ff63f --- /dev/null +++ b/intl/plural.c @@ -0,0 +1,1322 @@ + +/* A Bison parser, made from plural.y + by GNU Bison version 1.28 */ + +#define YYBISON 1 /* Identify Bison output. */ + +#define yyparse __gettextparse +#define yylex __gettextlex +#define yyerror __gettexterror +#define yylval __gettextlval +#define yychar __gettextchar +#define yydebug __gettextdebug +#define yynerrs __gettextnerrs +#define EQUOP2 257 +#define CMPOP2 258 +#define ADDOP2 259 +#define MULOP2 260 +#define NUMBER 261 + +#line 1 "plural.y" + +/* Expression parsing for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + +#line 49 "plural.y" +typedef union { + unsigned long int num; + enum operator op; + struct expression *exp; +} YYSTYPE; +#line 55 "plural.y" + +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +#include + +#ifndef __cplusplus +#ifndef __STDC__ +#define const +#endif +#endif + + + +#define YYFINAL 27 +#define YYFLAG -32768 +#define YYNTBASE 16 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18) + +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 10, 2, 2, 2, 2, 5, 2, 14, + 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 12, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 6, 7, 8, 9, + 11 +}; + +#if YYDEBUG != 0 +static const short yyprhs[] = { 0, + 0, 2, 8, 12, 16, 20, 24, 28, 32, 35, + 37, 39 +}; + +static const short yyrhs[] = { 17, + 0, 17, 3, 17, 12, 17, 0, 17, 4, 17, + 0, 17, 5, 17, 0, 17, 6, 17, 0, 17, + 7, 17, 0, 17, 8, 17, 0, 17, 9, 17, + 0, 10, 17, 0, 13, 0, 11, 0, 14, 17, + 15, 0 +}; + +#endif + +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 174, 182, 186, 190, 194, 198, 202, 206, 210, 214, + 218, 223 +}; +#endif + + +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","'?'","'|'", +"'&'","EQUOP2","CMPOP2","ADDOP2","MULOP2","'!'","NUMBER","':'","'n'","'('","')'", +"start","exp", NULL +}; +#endif + +static const short yyr1[] = { 0, + 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17 +}; + +static const short yyr2[] = { 0, + 1, 5, 3, 3, 3, 3, 3, 3, 2, 1, + 1, 3 +}; + +static const short yydefact[] = { 0, + 0, 11, 10, 0, 1, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 3, 4, 5, 6, + 7, 8, 0, 2, 0, 0, 0 +}; + +static const short yydefgoto[] = { 25, + 5 +}; + +static const short yypact[] = { -9, + -9,-32768,-32768, -9, 34,-32768, 11, -9, -9, -9, + -9, -9, -9, -9,-32768, 24, 39, 43, 16, 26, + -3,-32768, -9, 34, 21, 53,-32768 +}; + +static const short yypgoto[] = {-32768, + -1 +}; + + +#define YYLAST 53 + + +static const short yytable[] = { 6, + 1, 2, 7, 3, 4, 14, 16, 17, 18, 19, + 20, 21, 22, 8, 9, 10, 11, 12, 13, 14, + 26, 24, 12, 13, 14, 15, 8, 9, 10, 11, + 12, 13, 14, 13, 14, 23, 8, 9, 10, 11, + 12, 13, 14, 10, 11, 12, 13, 14, 11, 12, + 13, 14, 27 +}; + +static const short yycheck[] = { 1, + 10, 11, 4, 13, 14, 9, 8, 9, 10, 11, + 12, 13, 14, 3, 4, 5, 6, 7, 8, 9, + 0, 23, 7, 8, 9, 15, 3, 4, 5, 6, + 7, 8, 9, 8, 9, 12, 3, 4, 5, 6, + 7, 8, 9, 5, 6, 7, 8, 9, 6, 7, + 8, 9, 0 +}; +#define YYPURE 1 + +/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +#line 3 "/usr/local/share/bison.simple" +/* This file comes from bison-1.28. */ + +/* Skeleton output parser for bison, + Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ +#ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA +#include +#else /* not sparc */ +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ +#include +#endif +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include */ + #pragma alloca +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#endif /* __hpux */ +#endif +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ + +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif + +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY -2 +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 +/* Like YYERROR except do call yyerror. + This remains here temporarily to ease the + transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(token, value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { yychar = (token), yylval = (value); \ + yychar1 = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval, &yylloc) +#endif +#else /* not YYLSP_NEEDED */ +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval) +#endif +#endif /* not YYLSP_NEEDED */ +#endif + +/* If nonreentrant, generate the variables here */ + +#ifndef YYPURE + +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ + +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ +#endif + +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ + +#ifndef YYINITDEPTH +#define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + +#if YYMAXDEPTH == 0 +#undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +#define YYMAXDEPTH 10000 +#endif + +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + +#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ +#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) +#else /* not GNU C or C++ */ +#ifndef __cplusplus + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (to, from, count) + char *to; + char *from; + unsigned int count; +{ + register char *f = from; + register char *t = to; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (char *to, char *from, unsigned int count) +{ + register char *t = to; + register char *f = from; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif +#endif + +#line 217 "/usr/local/share/bison.simple" + +/* The user can define YYPARSE_PARAM as the name of an argument to be passed + into yyparse. The argument should have type void *. + It should actually point to an object. + Grammar actions can access the variable by casting it + to the proper pointer type. */ + +#ifdef YYPARSE_PARAM +#ifdef __cplusplus +#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +#define YYPARSE_PARAM_DECL +#else /* not __cplusplus */ +#define YYPARSE_PARAM_ARG YYPARSE_PARAM +#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +#endif /* not __cplusplus */ +#else /* not YYPARSE_PARAM */ +#define YYPARSE_PARAM_ARG +#define YYPARSE_PARAM_DECL +#endif /* not YYPARSE_PARAM */ + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + +int +yyparse(YYPARSE_PARAM_ARG) + YYPARSE_PARAM_DECL +{ + register int yystate; + register int yyn; + register short *yyssp; + register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1 = 0; /* lookahead token as an internal (translated) token number */ + + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +#define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; + +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif + + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ + + int yylen; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss - 1; + yyvsp = yyvs; +#ifdef YYLSP_NEEDED + yylsp = yyls; +#endif + +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: + + *++yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; +#ifdef YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; +#endif + + /* Get the current used size of the three stacks, in elements. */ + int size = yyssp - yyss + 1; + +#ifdef yyoverflow + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ +#ifdef YYLSP_NEEDED + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); +#else + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); +#endif + + yyss = yyss1; yyvs = yyvs1; +#ifdef YYLSP_NEEDED + yyls = yyls1; +#endif +#else /* no yyoverflow */ + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + { + yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 2; + } + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); +#ifdef YYLSP_NEEDED + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); +#endif +#endif /* no yyoverflow */ + + yyssp = yyss + size - 1; + yyvsp = yyvs + size - 1; +#ifdef YYLSP_NEEDED + yylsp = yyls + size - 1; +#endif + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif + + goto yybackup; + yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* yychar is either YYEMPTY or YYEOF + or a valid token in external form. */ + + if (yychar == YYEMPTY) + { +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif + yychar = YYLEX; + } + + /* Convert token to internal form (in yychar1) for indexing tables with */ + + if (yychar <= 0) /* This means end of input. */ + { + yychar1 = 0; + yychar = YYEOF; /* Don't call YYLEX any more */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif + } + else + { + yychar1 = YYTRANSLATE(yychar); + +#if YYDEBUG != 0 + if (yydebug) + { + fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT + YYPRINT (stderr, yychar, yylval); +#endif + fprintf (stderr, ")\n"); + } +#endif + } + + yyn += yychar1; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + goto yydefault; + + yyn = yytable[yyn]; + + /* yyn is what to do for this token type in this state. + Negative => reduce, -yyn is rule number. + Positive => shift, yyn is new state. + New state is final state => don't bother to shift, + just return success. + 0, or most negative number => error. */ + + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrlab; + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; + + yystate = yyn; + goto yynewstate; + +/* Do the default action for the current state. */ +yydefault: + + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + +/* Do a reduction. yyn is the number of a rule to reduce with. */ +yyreduce: + yylen = yyr2[yyn]; + if (yylen > 0) + yyval = yyvsp[1-yylen]; /* implement default value of the action */ + +#if YYDEBUG != 0 + if (yydebug) + { + int i; + + fprintf (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symbols being reduced, and their result. */ + for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) + fprintf (stderr, "%s ", yytname[yyrhs[i]]); + fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + + switch (yyn) { + +case 1: +#line 175 "plural.y" +{ + if (yyvsp[0].exp == NULL) + YYABORT; + ((struct parse_args *) arg)->res = yyvsp[0].exp; + ; + break;} +case 2: +#line 183 "plural.y" +{ + yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 3: +#line 187 "plural.y" +{ + yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 4: +#line 191 "plural.y" +{ + yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 5: +#line 195 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 6: +#line 199 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 7: +#line 203 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 8: +#line 207 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 9: +#line 211 "plural.y" +{ + yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); + ; + break;} +case 10: +#line 215 "plural.y" +{ + yyval.exp = new_exp_0 (var); + ; + break;} +case 11: +#line 219 "plural.y" +{ + if ((yyval.exp = new_exp_0 (num)) != NULL) + yyval.exp->val.num = yyvsp[0].num; + ; + break;} +case 12: +#line 224 "plural.y" +{ + yyval.exp = yyvsp[-1].exp; + ; + break;} +} + /* the action file gets copied in in place of this dollarsign */ +#line 543 "/usr/local/share/bison.simple" + + yyvsp -= yylen; + yyssp -= yylen; +#ifdef YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } +#endif + + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTBASE]; + + goto yynewstate; + +yyerrlab: /* here on detecting error */ + + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + int size = 0; + char *msg; + int x, count; + + count = 0; + /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); + if (msg != 0) + { + strcpy(msg, "parse error"); + + if (count < 5) + { + count = 0; + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + { + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); + count++; + } + } + yyerror(msg); + free(msg); + } + else + yyerror ("parse error; also virtual memory exceeded"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror("parse error"); + } + + goto yyerrlab1; +yyerrlab1: /* here on error raised explicitly by an action */ + + if (yyerrstatus == 3) + { + /* if just tried and failed to reuse lookahead token after an error, discard it. */ + + /* return failure if at end of input */ + if (yychar == YYEOF) + YYABORT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + + yychar = YYEMPTY; + } + + /* Else will try to reuse lookahead token + after shifting the error token. */ + + yyerrstatus = 3; /* Each real token shifted decrements this */ + + goto yyerrhandle; + +yyerrdefault: /* current state does not do anything special for the error token. */ + +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; +#endif + +yyerrpop: /* pop the current state because it cannot handle the error token */ + + if (yyssp == yyss) YYABORT; + yyvsp--; + yystate = *--yyssp; +#ifdef YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "Error: state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + +yyerrhandle: + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yyerrdefault; + + yyn += YYTERROR; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) + goto yyerrdefault; + + yyn = yytable[yyn]; + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrpop; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrpop; + + if (yyn == YYFINAL) + YYACCEPT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; +} +#line 229 "plural.y" + + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/intl/plural.y b/intl/plural.y new file mode 100644 index 0000000..616b7c1 --- /dev/null +++ b/intl/plural.y @@ -0,0 +1,409 @@ +%{ +/* Expression parsing for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 7 + +%union { + unsigned long int num; + enum operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +%} + +/* This declares that all operators have the same associativity and the + precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. + There is no unary minus and no bitwise operators. + Operators with the same syntactic behaviour have been merged into a single + token, to save space in the array generated by bison. */ +%right '?' /* ? */ +%left '|' /* || */ +%left '&' /* && */ +%left EQUOP2 /* == != */ +%left CMPOP2 /* < > <= >= */ +%left ADDOP2 /* + - */ +%left MULOP2 /* * / % */ +%right '!' /* ! */ + +%token EQUOP2 CMPOP2 ADDOP2 MULOP2 +%token NUMBER +%type exp + +%% + +start: exp + { + if ($1 == NULL) + YYABORT; + ((struct parse_args *) arg)->res = $1; + } + ; + +exp: exp '?' exp ':' exp + { + $$ = new_exp_3 (qmop, $1, $3, $5); + } + | exp '|' exp + { + $$ = new_exp_2 (lor, $1, $3); + } + | exp '&' exp + { + $$ = new_exp_2 (land, $1, $3); + } + | exp EQUOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp CMPOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp ADDOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp MULOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | '!' exp + { + $$ = new_exp_1 (lnot, $2); + } + | 'n' + { + $$ = new_exp_0 (var); + } + | NUMBER + { + if (($$ = new_exp_0 (num)) != NULL) + $$->val.num = $1; + } + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/intl/ref-add.sin b/intl/ref-add.sin new file mode 100644 index 0000000..167374e --- /dev/null +++ b/intl/ref-add.sin @@ -0,0 +1,31 @@ +# Add this package to a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + ta + :a + s/ @PACKAGE@ / @PACKAGE@ / + tb + s/ $/ @PACKAGE@ / + :b + s/^/# Packages using this file:/ +} diff --git a/intl/ref-del.sin b/intl/ref-del.sin new file mode 100644 index 0000000..613cf37 --- /dev/null +++ b/intl/ref-del.sin @@ -0,0 +1,26 @@ +# Remove this package from a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + s/ @PACKAGE@ / / + s/^/# Packages using this file:/ +} diff --git a/intl/textdomain.c b/intl/textdomain.c new file mode 100644 index 0000000..2e420ad --- /dev/null +++ b/intl/textdomain.c @@ -0,0 +1,142 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain _nl_default_default_domain__ +# define _nl_current_default_domain _nl_current_default_domain__ +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[]; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN textdomain__ +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock) + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (domainname) + const char *domainname; +{ + char *new_domain; + char *old_domain; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + __libc_rwlock_wrlock (_nl_state_lock); + + old_domain = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + { + _nl_current_default_domain = _nl_default_default_domain; + new_domain = (char *) _nl_current_default_domain; + } + else if (strcmp (domainname, old_domain) == 0) + /* This can happen and people will use it to signal that some + environment variable changed. */ + new_domain = old_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + new_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + new_domain = (char *) malloc (len); + if (new_domain != NULL) + memcpy (new_domain, domainname, len); +#endif + + if (new_domain != NULL) + _nl_current_default_domain = new_domain; + } + + /* We use this possibility to signal a change of the loaded catalogs + since this is most likely the case and there is no other easy we + to do it. Do it only when the call was successful. */ + if (new_domain != NULL) + { + ++_nl_msg_cat_cntr; + + if (old_domain != new_domain && old_domain != _nl_default_default_domain) + free (old_domain); + } + + __libc_rwlock_unlock (_nl_state_lock); + + return new_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/lib/Makefile.am b/lib/Makefile.am new file mode 100644 index 0000000..d1035a7 --- /dev/null +++ b/lib/Makefile.am @@ -0,0 +1,20 @@ +# +# Makefile.am from Wireless Access Point Utilites for Unix +# Copyright (c) 2002-2003 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +INCLUDES = -I../intl +noinst_LIBRARIES = libap.a +libap_a_SOURCES = ap-utils.h ap-curses.h reset.c snmp.c oui.c input.c menu.c scr.c wep.c wlan.c test.c stat.c set_community.c cmd.c radio.c aps.c ap_search.c sysinfo.c common.c file.c +EXTRA_libap_a_SOURCES = ber.c diff --git a/lib/Makefile.in b/lib/Makefile.in new file mode 100644 index 0000000..b118d18 --- /dev/null +++ b/lib/Makefile.in @@ -0,0 +1,440 @@ +# Makefile.in generated by automake 1.7.8 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am from Wireless Access Point Utilites for Unix +# Copyright (c) 2002-2003 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +INCLUDES = -I../intl +noinst_LIBRARIES = libap.a +libap_a_SOURCES = ap-utils.h ap-curses.h reset.c snmp.c oui.c input.c menu.c scr.c wep.c wlan.c test.c stat.c set_community.c cmd.c radio.c aps.c ap_search.c sysinfo.c common.c file.c +EXTRA_libap_a_SOURCES = ber.c +subdir = lib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) + +libap_a_AR = $(AR) cru +libap_a_LIBADD = +am_libap_a_OBJECTS = reset.$(OBJEXT) snmp.$(OBJEXT) oui.$(OBJEXT) \ + input.$(OBJEXT) menu.$(OBJEXT) scr.$(OBJEXT) wep.$(OBJEXT) \ + wlan.$(OBJEXT) test.$(OBJEXT) stat.$(OBJEXT) \ + set_community.$(OBJEXT) cmd.$(OBJEXT) radio.$(OBJEXT) \ + aps.$(OBJEXT) ap_search.$(OBJEXT) sysinfo.$(OBJEXT) \ + common.$(OBJEXT) file.$(OBJEXT) +libap_a_OBJECTS = $(am_libap_a_OBJECTS) + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ap_search.Po ./$(DEPDIR)/aps.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ber.Po ./$(DEPDIR)/cmd.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/common.Po ./$(DEPDIR)/file.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/input.Po ./$(DEPDIR)/menu.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/oui.Po ./$(DEPDIR)/radio.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/reset.Po ./$(DEPDIR)/scr.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/set_community.Po ./$(DEPDIR)/snmp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/stat.Po ./$(DEPDIR)/sysinfo.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/test.Po ./$(DEPDIR)/wep.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/wlan.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libap_a_SOURCES) $(EXTRA_libap_a_SOURCES) +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +SOURCES = $(libap_a_SOURCES) $(EXTRA_libap_a_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu lib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +AR = ar + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libap.a: $(libap_a_OBJECTS) $(libap_a_DEPENDENCIES) + -rm -f libap.a + $(libap_a_AR) libap.a $(libap_a_OBJECTS) $(libap_a_LIBADD) + $(RANLIB) libap.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap_search.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ber.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oui.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_community.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysinfo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wlan.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) + +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lib/ap-curses.h b/lib/ap-curses.h new file mode 100644 index 0000000..9817d2f --- /dev/null +++ b/lib/ap-curses.h @@ -0,0 +1,26 @@ +/* + * ap-curses.h from Access Point SNMP Utils for Linux + * definitions common for programs that use ncurses or curses libs + * + * Copyright (c) 2004 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifdef HAVE_LIBNCURSES +#include +#else +#include +#endif diff --git a/lib/ap-utils.h b/lib/ap-utils.h new file mode 100644 index 0000000..459d722 --- /dev/null +++ b/lib/ap-utils.h @@ -0,0 +1,349 @@ +/* + * ap-utils.h from Wireless Access Point Utilites for Unix + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _AP_CNF +#define _AP_CNF 1 + +#include "config.h" + +#ifdef OS_BSD +#include +#ifdef OS_X +#include +#endif /* ifdef OS_X */ +#else +#ifdef OS_SOLARIS +#include +#else +#include +#if defined (__GLIBC__) +#include +#else +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#endif /* if defined (__GLIBC__) */ +#endif /* ifdef OS_SOLARIS */ +#endif /* ifdef OS_BSD */ + +#define TITLE "Wireless Access Point Utilites for Unix" + +#define minimum(x, y) x <= y ? x : y + +#ifdef HAVE_GETTEXT +/* GNU gettext stuff*/ +#include +#include +#define _(String) gettext (String) +#else +#define _(String) (String) +#endif + +#include +#include +#include + + +#ifdef WORDS_BIGENDIAN +/* a quick-and-dirty macro to unconditionally swap bytes in 4-byte integers + * between big-endian and little-endian ordering */ +#define swap2(d) ((((d) >> 8) & 0x00ff) | (((d) << 8) & 0xff00)) +#define swap4(d) ((((d) >> 24) & 0x000000ff) | (((d) >> 8) & 0x0000ff00) | (((d) << 8) & 0x00ff0000) | (((d) << 24) & 0xff000000)) +#else +#define swap2(d) d +#define swap4(n) n +#endif + +#define rlong(a) ((a) = swap4(a)) +#define wlong(a) ((a) = swap4(a)) +#define rshort(a) ((a) = swap2(a)) +#define wshort(a) ((a) = swap2(a)) + +#define MAC _("MAC address: ") +#define TRAPS _("[S] SNMP traps: ") + +#define CHANNEL _("[C] Frequency channel: ") + +#define ANTENNA_RX _("Receive antenna:") +#define ANTENNA_RX_LEFT _("[U] Left") +#define ANTENNA_RX_RIGHT _("[I] Right") +#define ANTENNA_TX _("Transmit antenna:") +#define ANTENNA_TX_LEFT _("[O] Left") +#define ANTENNA_TX_RIGHT _("[P] Right") +#define ANTENNA_DV _("Diversity select:") +#define ANTENNA_DV_LEFT _("[T] Left") +#define ANTENNA_DV_RIGHT _("[Y] Right") + +#define YES _("Yes") +#define NO _("No") + +#define ON _("On") +#define OFF _("Off") + +#define BASIC _("Basic") + +#define ANY_KEY _("Press any key to continue.") + +#define ERR_SET _("Unable to write data to AP. Press any key to continue.") +#define ERR_RET _("Unable to retrieve data from AP. Press any key to continue.") +#define WAIT_RET _("Retrieving data from AP. Please wait...") +#define WAIT_SET _("Writing data to AP. Please wait...") +#define DONE_SET _("Configuration written to the AP. Press any key to continue.") + +#define CREATE_SOCKET_ERROR _("Create socket error. Press any key.") +#define BIND_SOCKET_ERROR _("Bind socket error. Press any key.") + +#define MAIN_MENU _("Back to main menu") +#define MENU_EXIT _("Exit program") +#define MENU_SHELL _("Run subshell. To return type 'exit'.") +#define MENU_ABOUT _("Short info about program") +#define MENU_SEARCH _("Find connected Access Points") +#define MENU_CONNECT _("Set connection options: ip and community") +#define MENU_ENCRYPT _("Set encryption; edit WEP keys") +#define MENU_MAC _("Set MAC authorization; edit MAC authorization table") +#define MENU_COMMUNITY _("Set SNMP community/password for access to the AP") +#define MENU_SYSINFO _("Get info about AP hardware and firmware") +#define MENU_WIRELESS _("Get wireless port statistics") +#define MENU_STAS _("Get list of currently associated stations (Access Point clients)") +#define MENU_INFO _("Get info and statistics from AP") +#define MENU_CONFIG _("Set various configuration options") + + +#define INT_VALUE 0x02 +#define STRING_VALUE 0x04 +#define NULL_VALUE 0x05 +#define OID_VALUE 0x06 + +#define GET 0xA0 +#define GET_NEXT 0xA1 +#define RESPONSE 0xA2 +#define SET 0xA3 +#define TRAP 0xA4 + +#define ASN_HEADER 0x30 + +#define INT_STRING 0x01 +#define HEX_STRING 0x02 +#define ANY_STRING 0x03 + +#define SIZE sizeof(struct sockaddr_in) +#define basic(i) (i & 0x80) ? BASIC : (i) ? ON : OFF + + +#define MCOLS 15 /* width of menu window */ +#define LAST_ROW LINES-5 + +/* Basic distinguished MIB (and AP) types */ +#define ATMEL410 0 +#define NWN 1 +#define ATMEL12350 2 + +typedef struct VarBind { + unsigned char *oid; + int len_oid; + unsigned char *value; + int len_val; + unsigned char type; +} varbind; + +struct umitems { + char *item; + char *help; + void (*func)(); + int is_menu; +}; + +struct EthernetRxStatistics { + uint32_t TotalBytesRx; + uint32_t TotalPacketsRx; + uint32_t PacketCRCErrorRx; + uint32_t MulticastPacketRx; + uint32_t BroadcastPacketRx; + uint32_t ControlFramesRx; + uint32_t PauseFramesRx; + uint32_t UnknownOPCodeRx; + uint32_t AlignmentRxError; + uint32_t LengthOutOfRangeRx; + uint32_t CodeErrorRx; + uint32_t FalseCarrierRx; + uint32_t UndersizePacketsRx; + uint32_t OversizePacketsRx; + uint32_t TotalFragmentsRx; + uint32_t TotalJabberRx; +}; + +struct EthernetTxStatistics { + uint32_t TotalBytesTx; + uint32_t TotalPacketsTx; + uint32_t PacketCRCErrorTx; + uint32_t MulticastPacketTx; + uint32_t BroadcastPacketTx; + uint32_t UnicastPacketTx; + uint32_t PauseFramesTx; + uint32_t SingleDeferPacketTx; + uint32_t MultiDeferPacketsTx; + uint32_t SingleCollisionsTx; + uint32_t MultiCollisionsTx; + uint32_t LateCollisionsTx; + uint32_t ExcessiveCollisionTx; + uint32_t TotalCollisionsTx; +}; + +struct WirelessStatistics { + uint32_t UnicastTransmittedPackets; + uint32_t BroadcastTransmittedPackets; + uint32_t MulticastTransmittedPackets; + uint32_t TransmittedBeacon; + uint32_t TransmittedACK; + uint32_t TransmittedRTS; + uint32_t TransmittedCTS; + uint32_t UnicastReceivedPackets; + uint32_t BroadcastReceivedPackets; + uint32_t MulticastReceivedPackets; + uint32_t ReceivedBeacon; + uint32_t ReceivedACK; + uint32_t ReceivedRTS; + uint32_t ReceivedCTS; + uint32_t ACKFailure; + uint32_t CTSFailure; + uint32_t RetryPackets; + uint32_t ReceivedDuplicate; + uint32_t FailedPackets; + uint32_t AgedPackets; + uint32_t FCSError; + uint32_t InvalidPLCP; +}; + +struct SysDeviceInfo_ATMEL410 { + /* sysDeviceInfo OID struct for ATMEL 410 */ + uint32_t StructVersion; + unsigned char MacAddress[6]; + unsigned short Reserved; + uint32_t RegulationDomain; + uint32_t ProductType; + unsigned char OEMName[32]; + uint32_t OEMID; + unsigned char ProductName[32]; + uint32_t HardwareRevision; +}; + +struct SysDeviceInfo_ATMEL12350 { + /* sysDeviceInfo OID struct for ATMEL 12350 */ + uint32_t StructVersion; + unsigned char MacAddress[6]; + unsigned char Channel; + unsigned char RegulationDomain; + uint32_t ProductType; + unsigned char OEMName[32]; + uint32_t OEMID; + unsigned char ProductName[32]; + uint32_t HardwareRevision; + /* The rest is actually dormant. */ + /* + unsigned char PID_VID[4]; + uint32_t sysOIDSize; + uint16_t sysOID[16]; + unsigned char CountryCode[3]; + unsigned char Reserved1; + uint16_t ChannelInformation; + unsigned char Reserved2[2]; + unsigned char TxPower[14]; + unsigned char Reserved3[10]; + */ +}; + +struct MacListStat { + unsigned char addr[6]; + struct MacListStat *next; + int quality; + int idle; + int rssi; + unsigned char Status; + unsigned char Port; + unsigned char ParentMacAddress[6]; + struct in_addr IP; +}; + +/* Function prototypes specific/common for both utilites */ + +/* service */ +extern char * oui2manufacturer(char *); +extern int ch_list(int, char **); +extern void connect_options(unsigned long int, int); +extern void about(void); +extern void draw_menu_win(void); +extern void main_menu(void); +extern void print_title(char *); +extern void print_viewtype(int); +extern void print_menusel(int, int, char *, char *); +extern void print_bottom(char *); +extern void print_help(char *); +extern void print_helperr(char *); +extern void clear_main(int); +extern void clear_main_new(int, int); +extern void get_mac(char *, int, int); +extern void get_ip(struct in_addr *, int, int, char *); +extern void get_mask(struct in_addr *, int, int, char *); +extern void get_value(char *, int, int, int, char, int, int, char *); +extern void get_pass(char *, int, int, int); +extern int menu_choose(int, int, char **, unsigned int); +extern int yes_no(int, int); +extern int on_off(int, int); +extern void scroll_rows(struct MacListStat *, int, int, int, int); +extern void exit_shell(void); +extern void exit_program(void); +extern int get_opts(void); +extern void save_Stations(struct MacListStat *); +extern void uni_menu(struct umitems *umenu, int num); + +/* AP */ +extern void AuthorizedSettings(void); +extern void bridging(void); +extern void wep(void); +extern void WirelessStat(void); +extern void stations(void); +extern void atmel_sysinfo(void); +extern void ap_search(void); + +/* snmp engine*/ +extern int snmp(varbind *, int, int); +extern int ber(char *, varbind *, int, int); + +/* Function prototypes specific for ATMEL utility */ +extern void reset(void); +extern void defaults(void); +extern void upload(void); +extern int SysUpload(void); +extern int SysReset(void); +extern void EthStat(void); +extern void APs(void); +extern void power(void); +extern void test(void); +extern void atmel_wireless(void); +extern void atmel_auth_mac(void); + +/* Function prototypes specific for NWN utility */ +extern void latest(void); +extern int get_RegDomain(void); +extern void advanced(void); +extern void command_menu(void); +extern void nwn_sysinfo(void); +extern void nwn_wep(void); +extern void nwn_stations(void); +extern void nwn_wireless_stat(void); +extern void nwn_wireless(void); +extern void nwn_auth_mac(void); + +#endif diff --git a/lib/ap_search.c b/lib/ap_search.c new file mode 100644 index 0000000..7c41718 --- /dev/null +++ b/lib/ap_search.c @@ -0,0 +1,461 @@ +/* + * ap_search.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * Copyright (c) 2003 Jan Rafaj + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include + +#ifdef OS_SOLARIS +#include +#endif + +#ifdef OS_X +#include +#endif + +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#if defined (__GLIBC__) +#include +#endif + + +#define MAX_APS 10 +#define SEARCH_HEADER _("# Type IP Description") + +extern int atmel410_filter; + +char q_press = 0; +int i, f_ifctr; +struct faps { + struct in_addr ip; + int type; +} fapsa[MAX_APS]; + +void scan_local_segment (struct sockaddr_in *from, struct sockaddr_in *to, + char *ifname) +{ + extern WINDOW *main_sub; + extern char *ap_types[]; + unsigned char message[1024], *start; + /* + * sysDescr OIDs used to detect AP type [in order of appearance + * according to the 'for' loop below: ATMEL410, NWN, ATMEL12350 + */ + char Wireless[3][12] = { + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x01, 0x00}, + {0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x01, 0x00} + }; + int scd_ap_type, last_searched_type=ATMEL12350; + int c, s2, errno, len, client_len = SIZE; + struct in_addr to_addr_reserv; + struct sopts { + int broad; + } opts = { 1 }; + struct ip_mreq mult = { {0}, {INADDR_ANY} }; + varbind varbinds[1]; + fd_set rds; + struct timeval timeout, starttime, curtime; + struct timezone tz; + + if (!i) + print_help(_("Please wait while scanning, or press 'Q' to quit.")); + + if ((s2 = socket(PF_INET, SOCK_DGRAM, 0)) == -1) { + print_helperr(CREATE_SOCKET_ERROR); + getch(); + return; + } + + if (bind(s2, (struct sockaddr *) from, SIZE) == -1) { + print_helperr(BIND_SOCKET_ERROR); + getch(); + goto close_ret; + } + + if (setsockopt (s2, SOL_SOCKET, SO_BROADCAST, &opts, + sizeof(struct sopts)) == -1) { + print_helperr(_("Can't set broadcast option on socket. " + "Press any key.")); + getch(); + goto close_ret; + } + + inet_aton("224.0.1.43", &mult.imr_multiaddr); + if (setsockopt(s2, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mult, + sizeof(struct ip_mreq)) == -1) { + print_helperr(_("Can't set multicast membership on socket. " + "Press any key.")); + getch(); + goto close_ret; + } + + mvwaddstr(main_sub, 15, 1, _("Scanning via network interface:")); + sprintf(message, _(" Index: %i"), f_ifctr); + mvwaddstr(main_sub, 16, 1, message); + sprintf(message, _(" Name: %s"), ifname); + mvwaddstr(main_sub, 17, 1, message); + sprintf(message, _(" IP: %s"), inet_ntoa(from->sin_addr)); + mvwaddstr(main_sub, 18, 1, message); + + if(atmel410_filter) { + last_searched_type=ATMEL410; + } + + for (scd_ap_type = ATMEL410; scd_ap_type <= last_searched_type; scd_ap_type++) { + clear_main_new(19, 20); + sprintf(message, _("Scanning for AP type: %s"), ap_types[scd_ap_type]); + mvwaddstr(main_sub, 19, 1, message); + wrefresh(main_sub); + + varbinds[0].oid = Wireless[scd_ap_type]; + varbinds[0].len_oid = + (scd_ap_type == ATMEL410 || scd_ap_type == ATMEL12350) ? + sizeof(Wireless[scd_ap_type]) : 8; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + len = ber(message, varbinds, 1, GET); + + if (scd_ap_type == NWN) { + to_addr_reserv = to->sin_addr; + to->sin_addr = mult.imr_multiaddr; + } + + errno = 0; + if (sendto(s2, message, len, 0, (struct sockaddr *) to, SIZE) == -1) { + sprintf(message, _("Failure in sendto(): %s. Press any key."), + strerror(errno)); + print_helperr(message); + getch(); + continue; + } + + timeout.tv_sec = 2; + timeout.tv_usec = 0; + gettimeofday(&starttime, &tz); + + while (1) { + + FD_ZERO(&rds); + FD_SET(s2, &rds); + FD_SET(0, &rds); + + /* + * Compute time difference. Note that for portability reasons, + * we may not rely on select() below setting up timeout to + * remaining time upon its return, although this works on Linux. + */ + gettimeofday(&curtime, &tz); + c = (curtime.tv_sec * 1000000 + curtime.tv_usec) - + (starttime.tv_sec * 1000000 + starttime.tv_usec); + if (c < (2 * 1000000 + 0)) { + c = (2 * 1000000 + 0) - c; + timeout.tv_sec = c / 1000000; + timeout.tv_usec = c - timeout.tv_sec * 1000000; + } else + /* Return if nothing has been received after timeout secs. */ + break; + + c = select(s2 + 1, &rds, NULL, NULL, &timeout); + + /* error occured */ + if (c == -1) + break; + + /* timed out */ + if (c == 0) + continue; + + /* Key pressed. If it is 'Q', return. */ + if (FD_ISSET(0, &rds)) { + c = getc(stdin); + if (c == 'q' || c == 'Q') { + q_press = 1; + goto close_ret; + } + } + + /* If data are available for reading on s2, try to read them now. */ + if (FD_ISSET(s2, &rds)) + if ((len = recvfrom(s2, message, 512, 0, + (struct sockaddr *) from, &client_len)) == -1) + continue; + + start = message; + if (*start != ASN_HEADER) + continue; + + start += (start[1] & 0x80) ? (start[1] & 0x7F) + 2 : 2; + start += *(start + 4) + 5; + + if (*start != RESPONSE) + continue; + + start += (start[1] & 0x80) ? (start[1] & 0x7F) + 2 : 2; + + if (*(start + 5) || *(start + 9) != ASN_HEADER) + continue; + + start += (start[10] & 0x80) ? (start[10] & 0x7F) + 11 : 11; + + if (*(start) != ASN_HEADER) + continue; + + start += (start[1] & 0x80) ? (start[1] & 0x7F) + 2 : 2; + start += *(start + 1) + 2; + + if (start[1] & 0x80) { + varbinds[0].len_val = start[2]; + start += (start[1] & 0x7F) + 2; + } else { + varbinds[0].len_val = start[1]; + start += 2; + } + + /* + * Dupe check. There are 2 reasons why to do this: + * 1. If interface-based IP aliases are used (f.e. on Linux), + * it may well happen that their broadcast addresses may + * inadvertedly overlap each other, so the same AP IPs would + * answer twice (for a specific interface and its alias + * device pass). + * 2. ATMEL410 devices are capable to answer both queries with + * 410 as well as 12350 IDs, while ATMEL12350 device only + * answers queries with 12350 ID. Hence, we need to check + * for duplicate responses from ATMEL410 devices, when + * ATMEL410 check has already performed and ATMEL12350 one + * is pending. + * Note, that ATMEL410 devices may, under certain circumstances, + * fail to pass the ATMEL410 check, and can be accidentally + * marked as an ATMEL12350 device. This is a known bug and + * should be eventually solved in any of upcomming releases (TODO). + */ + if (i) { + int dupcnt = 0, j = i - 1; + + do { + if (from->sin_addr.s_addr == fapsa[j].ip.s_addr) + dupcnt++; + } while (--j >= 0); + + if (dupcnt) + continue; + } + + /* new AP (unique IP/APtype pair) found */ + + fapsa[i].ip = from->sin_addr; + fapsa[i].type = scd_ap_type; + + sprintf(message, "%2X %11s %15s", i, ap_types[fapsa[i].type], + inet_ntoa(fapsa[i].ip)); + + i++; + + mvwaddstr(main_sub, i, 0, message); + for (len = 0; len < varbinds[0].len_val && start[len]; len++) + mvwaddch(main_sub, i, len + 31, start[len]); + wrefresh(main_sub); + + /* Bail out if the number of found devices exceeds sane limit. */ + if (i == MAX_APS) + goto close_ret; + } + + if (scd_ap_type == NWN) + to->sin_addr = to_addr_reserv; + + } + +close_ret: + close(s2); + return; +} + +void ap_search() +{ + extern WINDOW *main_sub; + int s1, ac; + unsigned int ilen = 256; + struct sockaddr_in from, to; + struct ifconf ifc; + struct ifreq *ifr; + char *ifbuf_ptr = NULL, *ifrec_ptr; + + print_title(_("Access Points Search")); + mvwaddstr(main_sub, 0, 0, SEARCH_HEADER); + wrefresh(main_sub); + + if ((s1 = socket(PF_INET, SOCK_DGRAM, 0)) == -1) { + print_helperr(CREATE_SOCKET_ERROR); + goto wait_quit; + } + + i = f_ifctr = 0; + + /* + * Find all IPs of locally available IPv4 interfaces and corresponding + * broadcast and/or point-to-point addresses. + */ + for (;;) { + if (!(ifbuf_ptr = realloc(ifbuf_ptr, ilen))) { + print_helperr(_("realloc() error.")); + goto wait_quit; + } + + ifc.ifc_buf = ifbuf_ptr; + ifc.ifc_len = ilen; + if (ioctl(s1, SIOCGIFCONF, &ifc) >= 0) + /* Stupid condition thx to BSD and 2 SIOCGIFCONF implementations */ + if (ifc.ifc_len + sizeof(struct ifreq) + 64 < ilen) + break; + + if (ilen > 200000) { + print_helperr(_("Network interface discovery error.")); + goto wait_quit; + } + ilen += 100 + (ilen >> 2); + } + ifrec_ptr = ifbuf_ptr; + while (ifrec_ptr < ifbuf_ptr + ifc.ifc_len) { + memset(&from.sin_addr, 0, sizeof(struct in_addr)); + memset(&to.sin_addr, 0, sizeof(struct in_addr)); + ifr = (struct ifreq *) ifrec_ptr; +#ifdef HAVE_SA_LEN + ilen = sizeof(ifr->ifr_name) + ifr->ifr_addr.sa_len; + if (ilen < sizeof(*ifr)) + ilen = sizeof(*ifr); + + if (ifr->ifr_addr.sa_family == AF_INET) + if (ioctl(s1, SIOCGIFFLAGS, ifrec_ptr) == 0) + if (ifr->ifr_flags & IFF_UP) + if (!(ifr->ifr_flags & IFF_LOOPBACK)) { + from.sin_addr = + ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr; + if (ifr->ifr_flags & IFF_POINTOPOINT) { + ioctl(s1, SIOCGIFDSTADDR, ifrec_ptr); + to.sin_addr = + ((struct sockaddr_in *)&ifr->ifr_dstaddr)->sin_addr; + } else { + ioctl(s1, SIOCGIFBRDADDR, ifrec_ptr); + to.sin_addr = + ((struct sockaddr_in *)&ifr->ifr_broadaddr)->sin_addr; + } + } +#else + ilen = sizeof(*ifr); + + if (ioctl(s1, SIOCGIFFLAGS, ifrec_ptr) == 0) + if (ifr->ifr_flags & IFF_UP) + if (!(ifr->ifr_flags & IFF_LOOPBACK)) { + if (ifr->ifr_flags & IFF_POINTOPOINT) { + ioctl(s1, SIOCGIFDSTADDR, ifrec_ptr); + to.sin_addr = + ((struct sockaddr_in *)&ifr->ifr_dstaddr)->sin_addr; + } else { + ioctl(s1, SIOCGIFBRDADDR, ifrec_ptr); + to.sin_addr = + ((struct sockaddr_in *)&ifr->ifr_broadaddr)->sin_addr; + } + if (ioctl(s1, SIOCGIFADDR, ifrec_ptr) == 0) + if (ifr->ifr_addr.sa_family == AF_INET) + from.sin_addr = + ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr; + } +#endif + if (from.sin_addr.s_addr && to.sin_addr.s_addr) { + f_ifctr++; + from.sin_family = to.sin_family = AF_INET; + from.sin_port = INADDR_ANY; + to.sin_port = htons(161); + scan_local_segment(&from, &to, ifr->ifr_name); + clear_main_new(15, 20); + } + ifrec_ptr += ilen; + /* No need to process next interfaces if the table is already full, */ + if (i == MAX_APS) + break; + + /* or if someone pressed 'Q'. */ + if (q_press) { + q_press = 0; + break; + } + } + + close(s1); + + if (!f_ifctr) { + print_helperr(_("No local network interfaces found. Press any key.")); + } else if (!i) { + print_help(_("No directly reachable Access Points found. " + "Press any key.")); + } else { + if (i == MAX_APS) + mvwaddstr(main_sub, 19, 1, _("Program-hardcoded maximum number " + "of APs found.")); + + wrefresh(main_sub); + print_help(_("# - connect to AP; Q - quit")); + while (1) + switch (ac = getch()) { + case 'Q': + case 'q': + goto quit; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (ac-'0' > (i - 1)) + continue; + print_title(""); + clear_main(0); + connect_options(fapsa[ac-'0'].ip.s_addr, + fapsa[ac-'0'].type + 1); + return; + } + } + +wait_quit: + getch(); +quit: + if (ifbuf_ptr) + free(ifbuf_ptr); + + print_help(""); + print_title(""); + clear_main(0); +} + diff --git a/lib/aps.c b/lib/aps.c new file mode 100644 index 0000000..b99ad57 --- /dev/null +++ b/lib/aps.c @@ -0,0 +1,604 @@ +/* + * aps.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +extern WINDOW *main_sub/*, *win_for_menu*/; +extern short ap_type; +extern int sockfd, atmel410_filter; +extern struct in_addr ap_ip; + +int ap_viewtype = 1; + +void APs() +{ + /* + * Structure of single record in the KnownAP table. + */ + struct ap { + unsigned char mac[6]; + unsigned char q1; + unsigned char q2; + unsigned char channel; + unsigned char x2; + unsigned char options; + unsigned char x3[5]; + unsigned char essid[32]; + } *app = NULL; + + /* + * Structure used to preserve important values of AP records learnt + * by KnownAP scan. Used to connect to a specific AP. + */ + struct known_ap { + char mac[6]; + int essid_len; + char channel; + char essid[32]; + enum { Infrastructure, AdHoc } nettype; + } ap[16]; + + /* this one is ATMEL12350 specific */ + char SiteSurveyCommand[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x01, 0x07, 0x00 + }; + + char bridgeOperationalMode[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 + }; + char bridgeRemoteBridgeBSSID[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x02, 0x00 + }; + + char operChannelID[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x01, 0x00 + }; + char operESSIDLength[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x02, 0x00 + }; + char operESSID[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x03, 0x00 + }; + char KnownAP[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x07, 0x01, 0x00 + }; + + char value[] = "", c, bridge_mode; + char essid[33], bssid[13], message[65]; + int i, j, errno, aps_num = 0, needs_opmode_restore = 0; + varbind varbinds[4]; + + if (ap_type == ATMEL12350) { + operESSIDLength[5] = 0xE0; + operESSIDLength[6] = 0x3E; + operESSID[5] = 0xE0; + operESSID[6] = 0x3E; + operChannelID[5] = 0xE0; + operChannelID[6] = 0x3E; + KnownAP[5] = 0xE0; + KnownAP[6] = 0x3E; + bridgeOperationalMode[5] = 0xE0; + bridgeOperationalMode[6] = 0x3E; + bridgeRemoteBridgeBSSID[5] = 0xE0; + bridgeRemoteBridgeBSSID[6] = 0x3E; + } + + noecho(); + print_help(WAIT_RET); + + varbinds[0].oid = bridgeOperationalMode; + varbinds[0].len_oid = sizeof(bridgeOperationalMode); + varbinds[0].value = bridgeOperationalMode; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + bridge_mode = *(varbinds[0].value); + + /* ATMEL410 firmware KnownAP scan is active in AP Client mode only */ + if (ap_type == ATMEL410 && bridge_mode != 3) { + mvwaddstr(main_sub, 3, 1, + _ + ("Your Access Point is not in \"AP client\" mode => getting")); + mvwaddstr(main_sub, 4, 1, + _ + ("up-to-date \"Known APs\" info requires your AP to be")); + mvwaddstr(main_sub, 5, 1, + _ + ("temporarily configured into \"AP client\" mode and rebooted.")); + mvwaddstr(main_sub, 6, 1, + _ + ("Your AP will be reconfigured back to original mode by this")); + mvwaddstr(main_sub, 7, 1, + _ + ("utility once you quit the \"KnownAP\" view. This, in turn, may")); + mvwaddstr(main_sub, 8, 1, + _ + ("cause loss of Access Point's current configuration.")); + wattrset(main_sub, A_BOLD); + mvwaddstr(main_sub, 9, 1, + _ + ("Do NOT answer \"Yes\" if you're connected to the Access Point")); + mvwaddstr(main_sub, 10, 1, + _ + ("via its wireless port.")); + wattrset(main_sub, A_NORMAL); + mvwaddstr(main_sub, 12, 20, _("Do you want to continue? ")); + wrefresh(main_sub); + print_help(_("(Y - Yes; N - No (it's safer to answer No)")); + i = 1; + while (i) + switch (getch()) { + case 'Y': + case 'y': + clear_main(3); + i = 0; + break; + case 'n': + case 'N': + goto quit; + } + + needs_opmode_restore = 1; + print_help(WAIT_RET); + varbinds[0].oid = bridgeOperationalMode; + varbinds[0].len_oid = sizeof(bridgeOperationalMode); + varbinds[0].type = INT_VALUE; + c = 3; + varbinds[0].value = &c; + varbinds[0].len_val = 1; + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (SysUpload()) { + print_helperr(ERR_RET); + goto restore_before_exit; + } + sleep(7); + } + +get_stats: + varbinds[0].oid = KnownAP; + varbinds[0].len_oid = sizeof(KnownAP); + varbinds[0].type = NULL_VALUE; + varbinds[0].value = value; + varbinds[0].len_val = sizeof(value); + + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto restore_before_exit; + } + + +show_stats: + print_title(_("Known Access Points")); + print_viewtype(ap_viewtype); + + /* display column info in main_sub */ + mvwin(main_sub, 0, 0); + wattrset(main_sub, COLOR_PAIR(3)); + for (i = 0; i < 64; i++) + waddch(main_sub, ' '); + switch (ap_viewtype) { + case 1: + case 2: + mvwaddstr(main_sub, 0, 0, "#"); + mvwaddstr(main_sub, 0, 2, "ESSID"); + mvwaddstr(main_sub, 0, 18, "BSSID (MAC)"); + mvwaddstr(main_sub, 0, 31, "CN"); + mvwaddstr(main_sub, 0, 34, _("NetworkType")); + mvwaddstr(main_sub, 0, 49, "P"); + mvwaddstr(main_sub, 0, 51, "WEP"); + mvwaddstr(main_sub, 0, 55, "RSSI"); + if (ap_type == ATMEL410) mvwaddstr(main_sub, 0, 62, "LQ"); + break; + case 3: + mvwaddstr(main_sub, 0, 0, "#"); + mvwaddstr(main_sub, 0, 2, "ESSID"); + mvwaddstr(main_sub, 0, 35, "BSSID (MAC)"); + mvwaddstr(main_sub, 0, 48, "CN"); + mvwaddstr(main_sub, 0, 51, "P"); + mvwaddstr(main_sub, 0, 53, "WEP"); + mvwaddstr(main_sub, 0, 57, "RSSI"); + if (ap_type == ATMEL410) mvwaddstr(main_sub, 0, 62, "LQ"); + break; + case 4: + mvwaddstr(main_sub, 0, 0, "#"); + mvwaddstr(main_sub, 0, 2, "BSSID (MAC)"); + mvwaddstr(main_sub, 0, 15, "Manufacturer OUI"); + break; + } + wattrset(main_sub, A_NORMAL); + + /* main loop */ + i = aps_num = 0; + while (1) { + app = (struct ap *) &varbinds[0].value[i]; + + j = app->mac[0] | app->mac[1] | app->mac[2] | + app->mac[3] | app->mac[4] | app->mac[5]; + + if (!app->channel || app->channel>14 || app->mac[0] == 0xFF + || j == 0 || aps_num == 16) + break; + + i += sizeof(struct ap); + aps_num++; + + /* display number */ + sprintf(message, "%c", (aps_num < 10) ? aps_num + '0' : aps_num + 55); + mvwaddstr(main_sub, aps_num+1, 0, message); + + /* get BSSID */ + sprintf(bssid, "%02X%02X%02X%02X%02X%02X", + app->mac[0] & 0xFF, app->mac[1] & 0xFF, + app->mac[2] & 0xFF, app->mac[3] & 0xFF, + app->mac[4] & 0xFF, app->mac[5] & 0xFF); + bssid[13] = '\0'; + + /* get ESSID and its length */ + for (j = 0; j < 32 && app->essid[j]; j++) { + essid[j] = app->essid[j]; + } + essid[j] = '\0'; + + /* + * fill up ap[] field member to preserve ESSID, BSSID, Channel and + * Network type of current AP record, so we may use it later + * to connect to this very AP + */ + memcpy(ap[aps_num-1].mac, app->mac, 6); + memcpy(ap[aps_num-1].essid, essid, j); + ap[aps_num-1].essid_len = j; + ap[aps_num-1].channel = app->channel; + ap[aps_num-1].nettype = (app->options & 1) ? Infrastructure : AdHoc; + + /* display ESSID, BSSID, Channel, NetworkType, Preambule and WEP */ + switch (ap_viewtype) { + case 1: + case 2: + mvwaddnstr(main_sub, aps_num+1, 2, essid, 15); + mvwaddstr(main_sub, aps_num+1, 18, bssid); + sprintf(message, "%2u", app->channel); + mvwaddstr(main_sub, aps_num+1, 31, message); + mvwaddstr(main_sub, aps_num+1, 34, + (app->options & 1) ? _("Infrastructure") : "Ad-Hoc"); + mvwaddstr(main_sub, aps_num+1, 49, + (app->options & 32) ? "S" : "L"); + mvwaddstr(main_sub, aps_num+1, 51, + (app->options & 16) ? ON : OFF); + break; + case 3: + mvwaddstr(main_sub, aps_num+1, 2, essid); + mvwaddstr(main_sub, aps_num+1, 35, bssid); + sprintf(message, "%2u", app->channel); + mvwaddstr(main_sub, aps_num+1, 48, message); + mvwaddstr(main_sub, aps_num+1, 51, + (app->options & 32) ? "S" : "L"); + mvwaddstr(main_sub, aps_num+1, 53, + (app->options & 16) ? ON : OFF); + break; + case 4: + mvwaddstr(main_sub, aps_num+1, 2, bssid); + mvwaddnstr(main_sub, aps_num+1, 15, + oui2manufacturer(app->mac), 48); + break; + } + + /* display RSSI and LQ indicators */ + switch (ap_viewtype) { + case 1: + sprintf(message, "%3d", -96 + app->q1); + mvwaddstr(main_sub, aps_num+1, 56, message); + if (ap_type == ATMEL410) { + sprintf(message, "%3d", (int)(100 - (minimum (app->q2, 40)) * (float)2.5) ); + mvwaddstr(main_sub, aps_num+1, 61, message); + } + break; + case 2: + sprintf(message, "%3d%%", + (int)((minimum (app->q1, 40)) * (float)2.5)); + mvwaddstr(main_sub, aps_num+1, 55, message); + if (ap_type == ATMEL410) { + sprintf(message, "%3d%%", + (int)(100 - (minimum (app->q2, 40)) * (float)2.5) ); + mvwaddstr(main_sub, aps_num+1, 60, message); + } + break; + case 3: + sprintf(message, "%3d", app->q1); + mvwaddstr(main_sub, aps_num+1, 57, message); + if (ap_type == ATMEL410) { + sprintf(message, "%3d", app->q2); + mvwaddstr(main_sub, aps_num+1, 61, message); + } + break; + } + + } + + /* display legend in main_sub */ + switch (ap_viewtype) { + case 2: + mvwaddstr(main_sub, LINES - 7, 0, + _("CN: Channel Name; P: Preambule Type (S: Short; L: Long);")); + mvwaddstr(main_sub, LINES - 6, 0, + _("RSSI: Radio Signal Strength Indicator [%];")); + if (ap_type == ATMEL410) + mvwaddstr(main_sub, LINES - 5, 0, _("LQ: Link Quality [%]")); + break; + case 1: + mvwaddstr(main_sub, LINES - 7, 0, + _("CN: Channel Name; P: Preambule Type (S: Short; L: Long);")); + mvwaddstr(main_sub, LINES - 6, 0, + _("RSSI: Radio Signal Strength Indicator [dBm];")); + if (ap_type == ATMEL410) + mvwaddstr(main_sub, LINES - 5, 0, _("LQ: Link Quality [%]")); + break; + case 3: + mvwaddstr(main_sub, LINES - 7, 0, + _("CN: Channel Name; P: Preambule Type (S: Short; L: Long);")); + mvwaddstr(main_sub, LINES - 6, 0, + _("RSSI: Radio Signal Strength Indicator [raw];")); + if (ap_type == ATMEL410) + mvwaddstr(main_sub, LINES - 5, 0, _("LQ: Link Quality [raw]")); + break; + } + wrefresh(main_sub); + + if (ap_type == ATMEL410) + print_help(_("# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q quit")); + else /* ATMEL12350 */ + print_help(_("# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit")); + + while (1) + switch (i = getch()) { + case 'Q': + case 'q': + goto restore_before_exit; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'a': + case 'A': + case 'b': + case 'B': + case 'c': + case 'C': + case 'd': + case 'D': + case 'e': + case 'E': + case 'f': + case 'F': + case 'g': + case 'G': + if (i >= 'a') + j = i - 87; + else if (i >= 'A') + j = i - 55; + else + j = i - '0'; + + if(j > aps_num) + break; + + /* don't attempt to connect to remote AP in Ad-Hoc net */ + if(ap[j-1].nettype == AdHoc) + break; + + print_help(WAIT_SET); + varbinds[3].oid = operChannelID; + varbinds[3].len_oid = sizeof(operChannelID); + varbinds[3].value = &ap[j-1].channel; + varbinds[3].len_val = 1; + varbinds[3].type = INT_VALUE; + varbinds[2].oid = bridgeRemoteBridgeBSSID; + varbinds[2].len_oid = sizeof(bridgeRemoteBridgeBSSID); + varbinds[2].value = ap[j-1].mac; + varbinds[2].len_val = 6; + varbinds[2].type = STRING_VALUE; + varbinds[1].oid = operESSIDLength; + varbinds[1].len_oid = sizeof(operESSIDLength); + varbinds[1].value = (char *) &ap[j-1].essid_len; + varbinds[1].len_val = 1; + varbinds[1].type = INT_VALUE; + varbinds[0].oid = operESSID; + varbinds[0].len_oid = sizeof(operESSID); + varbinds[0].value = ap[j-1].essid; + varbinds[0].len_val = ap[j-1].essid_len; + varbinds[0].type = STRING_VALUE; + if (snmp(varbinds, 4, SET) <= 0) { + print_helperr(ERR_SET); + goto restore_before_exit; + } + + if (bridge_mode != 3) { + bridge_mode = 3; + needs_opmode_restore = 1; + } + + if (SysUpload() < 0 ) { + print_helperr(ERR_SET); + getch(); + goto restore_before_exit; + } + print_help(DONE_SET); + getch(); + goto restore_before_exit; + case 'R': + case 'r': + if (ap_type == ATMEL410) { + /* force KnownAP scan by reset */ + print_help(WAIT_RET); + if (SysReset() < 0) { + print_helperr(ERR_RET); + getch(); + goto restore_before_exit; + } + clear_main(0); + sleep(7); + } else { /* ATMEL12350 */ + /* + * Init KnownAP scan by issuing SiteSurveyCommand. + * Unfortunately, we may not use snmp() here becouse + * it would time out, as buggy firmware in ATMEL12350 + * devices does not confirm our query reception + * received via wireless port, in a reasonable + * time frame. So we rather use sendto() here. + */ + struct sockaddr_in toip; + struct timeval tv; + fd_set rfd; + + varbinds[0].oid = SiteSurveyCommand; + varbinds[0].len_oid = sizeof(SiteSurveyCommand); + c = 1; + varbinds[0].value = &c; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + + memset(&toip, 0, sizeof toip); + toip.sin_family = AF_INET; + toip.sin_port = htons(161); + toip.sin_addr.s_addr = ap_ip.s_addr; +/* + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } +*/ + errno = 0; + i = ber(message, varbinds, 1, SET); + if (sendto(sockfd, message, i, 0, + (struct sockaddr *) &toip, SIZE) == -1) { + sprintf(message, _("Failure in sendto(): %s. " + "Press any key."), strerror(errno)); + print_helperr(message); + goto exit; + } + + clear_main(0); + mvwaddstr(main_sub, 3, 1, + _ + ("You have just initiated the AP scan. Be advised that it may")); + mvwaddstr(main_sub, 4, 1, + _ + ("take a few seconds for your Access Point to find out some")); + mvwaddstr(main_sub, 5, 1, + _ + ("values, so expect finishing the scan in about 5 seconds.")); + mvwaddstr(main_sub, 6, 1, + _ + ("Also note that your Access Point stops forwarding the network")); + mvwaddstr(main_sub, 7, 1, + _ + ("traffic while the scan is in progress, but restores itself")); + mvwaddstr(main_sub, 8, 1, + _ + ("to normal operation in time ranging up to 1 minute.")); + mvwaddstr(main_sub, 9, 1, + _ + ("Hence, if you are connected to target Access Point via its")); + mvwaddstr(main_sub, 10, 1, + _ + ("wireless port, you need to wait a bit longer")); + mvwaddstr(main_sub, 11, 1, + _ + ("after pressing 'S'.")); + wrefresh(main_sub); + print_help(""); + + /* + * Eat the confirmation packet from socket, if it + * has been sent by the AP. This only happens + * if we issued KnownAP scan via its ethernet + * interface. + */ + tv.tv_sec = 2; + tv.tv_usec = 0; + FD_ZERO(&rfd); + FD_SET(sockfd, &rfd); + if (select(sockfd + 1, &rfd, NULL, NULL, &tv) > 0) + recv(sockfd, message, 65, 0); + + print_help("Now, you can try pressing 'S' repeatedly " + "to watch the progress."); + getch(); + } + goto get_stats; + case 'S': + case 's': + print_help(WAIT_RET); + clear_main(0); + goto get_stats; + case 'T': + case 't': + ap_viewtype += 1; + if (ap_viewtype > 4) + ap_viewtype = 1; + clear_main(0); + goto show_stats; + } + + restore_before_exit: + if (needs_opmode_restore) { + print_help(WAIT_SET); + varbinds[0].oid = bridgeOperationalMode; + varbinds[0].len_oid = sizeof(bridgeOperationalMode); + varbinds[0].value = (char *) &bridge_mode; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (SysUpload()) { + print_helperr(ERR_RET); + goto exit; + } + } + goto quit; + + exit: + getch(); + quit: + print_title(""); + clear_main(0); +} + diff --git a/lib/ber.c b/lib/ber.c new file mode 100644 index 0000000..5c5f36a --- /dev/null +++ b/lib/ber.c @@ -0,0 +1,101 @@ +/* Author : Rahul G rahul@smartbridges.com */ + + +#include +#include +#include + +/* This function takes the oid in dot format ( 1.3.6.1.4.410.... ) and encodes + * the oid using ber rules. oid_out should be allocated by the application.. + * encode_oid returns the length of the encoded buffer. + */ +int encode_oid(char* oid, unsigned char* oid_out) +{ + char* ptr; + int count=0, oct_count=2; + int num_val=0, oct1=0; + char val[32]; + int last=0,len=0; + + oid_out[0]=0x06 ; /* 00000110 */ + while(( (ptr=strchr(oid,'.')) != 0) || last == 0 ) + { + if(ptr != 0) + len=ptr-oid; + else + len=strlen(oid); + + strncpy(val,oid,len); + val[len]='\0'; + num_val=atoi(val); +/*get the first two sub id's*/ + if(count == 0) + { + oct1=40* num_val; + count++; + oid=ptr+1; + continue; + } + if(count == 1) + { + oct1+=num_val; + oid_out[oct_count]=oct1; + oct_count++; + oid=ptr+1; + count++; + continue; + } + else + { + int i, loop, j; + for(i=31;i>= 0; i--) + { + unsigned int mask= (num_val>>(i)) & ~(~0x0000<<1); + if(mask) + { + i++; + break; + } + } + loop= i/ 7; + for(j=loop; j>= 0; j--) + { + oid_out[oct_count]= (num_val >> (j*7)) & ~(~0x0000 << 7); + oid_out[oct_count] |= 0x80; /* turn the msb to 1 */ + oct_count++; + } + oid_out[oct_count - 1] &= 0x7f; /* turn the msb back to zero for the last octect */ + } + if(ptr != 0) + { + oid=ptr+1; + } + else + { + last=1; + } + } + +//Insert the octect length + oid_out[1]=oct_count-2; + return oct_count; + +} + +/* +int main() +{ + + unsigned char oid_ut[512]; + int k,ret; +// ret=encode_oid("1.3.6.1.4.1.410.1.1.1.1.0",oid_ut); + ret=encode_oid("1.2.840.113549.1",oid_ut); + + for(k=0; k< ret; k++) + printf("%.2x ",oid_ut[k]); + printf("\n"); + return 0; +} + +*/ + diff --git a/lib/cmd.c b/lib/cmd.c new file mode 100644 index 0000000..61a5534 --- /dev/null +++ b/lib/cmd.c @@ -0,0 +1,181 @@ +/* + * cmd.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define ANSW_NO _("(Y - Yes; N - No (it's safer to answer No, unless you really need this.)") + +extern WINDOW *main_sub; +extern short ap_type; + +void defaults() +{ + char sysLoadDefaults[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, + 0x01, 0x04, 0x00 + }, enable = 1; + varbind varbinds[1]; + int i; + + if (ap_type == ATMEL12350) { + sysLoadDefaults[5] = 0xE0; + sysLoadDefaults[6] = 0x3E; + } + + print_title(_("Restore factory default configuration")); + mvwaddstr(main_sub, 3, 2, + _ + ("After restoring factory defaults your current configuration.")); + mvwaddstr(main_sub, 4, 2, _("will be lost.")); + mvwaddstr(main_sub, 6, 20, _("Do you want to continue? ")); + wrefresh(main_sub); + print_help(ANSW_NO); + i = 1; + while (i) + switch (getch()) { + case 'Y': + case 'y': + clear_main(3); + i = 0; + break; + case 'n': + case 'N': + clear_main(3); + goto quit; + } + + print_help(WAIT_SET); + + + varbinds[0].oid = sysLoadDefaults; + varbinds[0].len_oid = sizeof(sysLoadDefaults); + varbinds[0].value = &enable; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + if (snmp(varbinds, 1, SET) <= 0) + print_helperr(ERR_SET); + else + print_help + (_ + ("Factory default settings loaded. Press any key to continue.")); + getch(); + quit: + print_title(""); +} + +void reset() +{ + int i; + print_title(_("Reset Access Point")); + if(ap_type == ATMEL410) + mvwaddstr(main_sub, 3, 5, + _("By reset you'll lose all non-uploaded configuration.")); + mvwaddstr(main_sub, 5, 20, _("Do you want to continue? ")); + wrefresh(main_sub); + print_help(ANSW_NO); + i = 1; + while (i) + switch (getch()) { + case 'Y': + case 'y': + clear_main(3); + i = 0; + break; + case 'n': + case 'N': + clear_main(3); + goto quit; + } + + print_help(WAIT_SET); + if (SysReset()) + print_helperr(ERR_SET); + else + print_help(_("Access Point reset. Press any key to continue.")); + getch(); + quit: + print_title(""); +} + +int SysUpload() +{ + char sysUpload[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x06, + 0x00 + }, enable = 1; + varbind varbinds[1]; + + if (ap_type == ATMEL12350) { + sysUpload[5] = 0xE0; + sysUpload[6] = 0x3E; + } + + varbinds[0].oid = sysUpload; + varbinds[0].len_oid = sizeof(sysUpload); + varbinds[0].value = &enable; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + if (snmp(varbinds, 1, SET) <= 0) + return -1; + else + return 0; +} + +void upload() +{ + int i; + print_title(_("Upload configuration")); + mvwaddstr(main_sub, 3, 2, + _ + ("You need to upload the configuration only if you've changed")); + mvwaddstr(main_sub, 4, 2, + _ + ("some option values before. Using this option may cause loss")); + mvwaddstr(main_sub, 5, 2, _("of your current configuration.")); + mvwaddstr(main_sub, 7, 20, ("Do you want to continue? ")); + wrefresh(main_sub); + print_help(ANSW_NO); + i = 1; + while (i) + switch (getch()) { + case 'Y': + case 'y': + clear_main(3); + i = 0; + break; + case 'n': + case 'N': + clear_main(3); + goto quit; + } + + print_help(WAIT_SET); + if (SysUpload()) + print_helperr(ERR_SET); + else + print_help + (_("Configuration uploaded. Press any key to continue.")); + getch(); + quit: + print_title(""); +} + diff --git a/lib/common.c b/lib/common.c new file mode 100644 index 0000000..16f342d --- /dev/null +++ b/lib/common.c @@ -0,0 +1,290 @@ +/* + * common.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" + +#define AUTODETECT _("Autodetect AP type? ") +#define APIP _("Access Point IP-address: ") +#define APPASS _("Password (community): ") +#define APTYPE _("AP type: ") +#define SAVESETTINGS _("Save connect-settings: ") + +extern WINDOW *main_sub; +extern char *community, *prog_title; +extern short ap_type; +extern int sockfd; +extern struct in_addr ap_ip; +extern char *ap_types[]; + +void about() +{ + int nrow = 12, ncol = 47, brow = (LINES - 4 - nrow) / 2, bcol = + (COLS - MCOLS - 2 - ncol) / 2, i; + char message[100]; + + noecho(); + curs_set(0); + + print_title(_("About")); + + /* drawing the box */ + mvwaddch(main_sub, brow, bcol, ACS_ULCORNER); + mvwaddch(main_sub, brow, bcol + ncol, ACS_URCORNER); + mvwaddch(main_sub, brow + nrow, bcol, ACS_LLCORNER); + mvwaddch(main_sub, brow + nrow, bcol + ncol, ACS_LRCORNER); + for (i = 1; i < ncol; i++) { + mvwaddch(main_sub, brow, bcol + i, ACS_HLINE); + mvwaddch(main_sub, brow + nrow, bcol + i, ACS_HLINE); + } + for (i = 1; i < nrow; i++) { + mvwaddch(main_sub, brow + i, bcol, ACS_VLINE); + mvwaddch(main_sub, brow + i, bcol + ncol, ACS_VLINE); + } + + mvwaddstr(main_sub, brow + 1, bcol + 2, prog_title); + sprintf(message, _("From %s"), TITLE); + mvwaddstr(main_sub, brow + 2, bcol + 2, message); + sprintf(message, _("Version %s"), VERSION); + mvwaddstr(main_sub, brow + 3, bcol + 2, message); + mvwaddstr(main_sub, brow + 5, bcol + 2, + _("Written by Roman Festchook roma@polesye.net")); + mvwaddstr(main_sub, brow + 6, bcol + 2, + _("Copyright (c) Roman Festchook 2001-2004")); + mvwaddstr(main_sub, brow + 7, bcol + 2, "http://ap-utils.polesye.net/"); + mvwaddstr(main_sub, brow + 9, bcol + 2, + _("This program is distributed under the terms")); + mvwaddstr(main_sub, brow +10, bcol + 2, + _("of the GNU General Public License version 2.")); + mvwaddstr(main_sub, brow + 11, bcol + 2, + _("See the included COPYING file for details.")); + + + wrefresh(main_sub); + + print_help(ANY_KEY); + getch(); + print_help(""); + print_title(""); + clear_main(0); + return; +} + +void connect_options(unsigned long int ip, int type) +{ + int i; + struct sockaddr_in client; + unsigned char message[16]; + int fd; + char *home_dir; + char save_settings=1; + char sysDescr_NWN[] = { 0x2B, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00 }; + char sysDescr_ATMEL410[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, + 0x01, 0x01, 0x01, 0x01, 0x00 }; + char sysDescr_ATMEL12350[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, + 0x01, 0x01, 0x01, 0x01, 0x00 }; + varbind varbinds[1]; + + + memset(&client, 0, sizeof client); + client.sin_family = AF_INET; + client.sin_port = INADDR_ANY; + client.sin_addr.s_addr = INADDR_ANY; + + if (sockfd) + close(sockfd); + + if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { + print_helperr(CREATE_SOCKET_ERROR); + getch(); + goto exit; + } + + if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1) { + print_helperr(BIND_SOCKET_ERROR); + getch(); + goto exit; + } + + noecho(); + curs_set(0); + + print_title(_("Connect options")); + +get_all_again: + mvwaddstr(main_sub, 1, 1, APIP); + if (ip) { + ap_ip.s_addr = ip; + mvwaddstr(main_sub, 1, 1 + strlen(APIP), inet_ntoa(ap_ip)); + } else { + print_help(_("Enter IP address of your Access Point.")); + get_ip(&ap_ip, 1, 1 + strlen(APIP), NULL); + } + + mvwaddstr(main_sub, 2, 1, APPASS); + print_help(_("Entered characters will not be displayed " + "for security reason.")); + get_pass(message, 2, 1 + strlen(APPASS), 16); + if (community) + free(community); + i = strlen(message) + 1; + community = (char *) malloc(i); + strncpy(community, message, i); + + print_help(""); + if (type) { + ap_type = --type; + mvwaddstr(main_sub, 3, 1, APTYPE); + } else { + mvwaddstr(main_sub, 3, 1, AUTODETECT); + wrefresh(main_sub); + i = yes_no(3, 1 + strlen(AUTODETECT)); + clear_main_new(3, 4); + mvwaddstr(main_sub, 3, 1, APTYPE); + if (i == 2) { /* NO */ + wrefresh(main_sub); + ap_type = menu_choose(3, 1 + strlen(APTYPE), ap_types, 3); + } else { /* YES */ + print_help(_("Determining AP type. Please wait...")); + varbinds[0].oid = sysDescr_NWN; + varbinds[0].len_oid = sizeof(sysDescr_NWN); + varbinds[0].value = NULL; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET) > 0) { + ap_type = NWN; + } else { + varbinds[0].oid = sysDescr_ATMEL410; + varbinds[0].len_oid = sizeof(sysDescr_ATMEL410); + varbinds[0].value = NULL; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET) > 0) { + ap_type = ATMEL410; + } else { + varbinds[0].oid = sysDescr_ATMEL12350; + varbinds[0].len_oid = sizeof(sysDescr_ATMEL12350); + varbinds[0].value = NULL; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET) > 0) { + ap_type = ATMEL12350; + } else { + print_helperr(_("Unable to determine AP type " + "(no response). Press any key.")); + getch(); + clear_main_new(1, 4); + goto get_all_again; + } + } + } + } + wattrset(main_sub, A_BOLD); + } + waddstr(main_sub, ap_types[ap_type]); + wattrset(main_sub, A_NORMAL); + + mvwaddstr(main_sub, 4, 1, SAVESETTINGS); + wrefresh(main_sub); + save_settings = on_off(4, 1 + strlen(SAVESETTINGS)); + + print_bottom(inet_ntoa(ap_ip)); + + if(save_settings == 1) { + if ((home_dir = getenv("HOME"))) { + sprintf(message, "%s/.ap-config", home_dir); + if ((fd = open(message, O_CREAT | O_WRONLY | O_APPEND, 0600)) != -1) { + sprintf(message, "%s:%s:%d\n", inet_ntoa(ap_ip), + community, ap_type); + write(fd, message, strlen(message)); + close(fd); + } + } + } + exit: + print_help(""); + print_title(""); + clear_main(0); + return; +} + +void exit_program() +{ + endwin(); + exit(0); +} + +void exit_shell() +{ + def_prog_mode(); + endwin(); + system("sh"); + curs_set(0); + refresh(); +} + +/* + * Fill channels list string array using regulation domain + * restrictions and return number of the channels + */ +int ch_list(int regulation_domain, char **list) +{ + int FIRST_CHANNEL, LAST_CHANNEL, i; + +#ifndef NO_REG_DOMAIN + switch (regulation_domain) { + case 0x10: + case 0x20: + FIRST_CHANNEL = 1; + LAST_CHANNEL = 11; + break; + case 0x30: + FIRST_CHANNEL = 1; + LAST_CHANNEL = 13; + break; + case 0x31: + FIRST_CHANNEL = 10; + LAST_CHANNEL = 11; + break; + case 0x32: + FIRST_CHANNEL = 10; + LAST_CHANNEL = 13; + break; + default: /* also case 0x40 */ +#endif + FIRST_CHANNEL = 1; + LAST_CHANNEL = 14; +#ifndef NO_REG_DOMAIN + } +#endif + + for (i = 0; i < LAST_CHANNEL - FIRST_CHANNEL + 1; i++) { + list[i] = (char *) malloc(3); + sprintf(list[i], "%02u", FIRST_CHANNEL + i); + } + return i; +} + diff --git a/lib/file.c b/lib/file.c new file mode 100644 index 0000000..7c835a4 --- /dev/null +++ b/lib/file.c @@ -0,0 +1,344 @@ +/* + * file.c from Access Point SNMP Utils for Linux + * file accessing functions + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +extern WINDOW *main_sub, *win_for_help, *main_win; +extern char *ap_types[]; +extern short ap_type; +extern int atmel410_filter; +#define MAX_LINES LINES-6 + +struct APList { + char *ip; + char *passwd; + int type; + struct APList * next; +}; + +void +_scroll_rows(struct APList *first, int begin, int end) +{ + int i = 1; + struct APList *curr = first; + char message[50]; + + clear_main(3); + + while (i++ < begin) + curr = curr->next; + i = 0; + while (end-- > begin) { + sprintf(message, "%5u %15s %s", begin + i, curr->ip, ap_types[curr->type]); + mvwaddstr(main_sub, 2 + i, 1, message); + i++; + curr = curr->next; + } + wrefresh(main_sub); +} + +struct APList *parse_db_str(char *str) +{ + struct APList *curr=NULL; + char *ip=NULL, *passwd=NULL, mess[1024]; + int i=0, pos=0, j=0; + + while(str[i] != '\0') { + if(str[i] == ':') { + switch (pos) { + case 0: + ip = (char *) malloc(j+1); + memcpy(ip, mess, j+1); + ip[j] = '\0'; + break; + case 1: + passwd = (char *) malloc(j+1); + memcpy(passwd, mess, j+1); + passwd[j] = '\0'; + break; + } + i++; + j=0; + pos++; + + } + else + mess[j++] = str[i++]; + } + + mess[j]='\0'; + if (pos==2 && ip && passwd && ((atmel410_filter && atoi(mess)== ATMEL410) || !atmel410_filter)) { + curr = (struct APList *) malloc(sizeof(struct APList)); + curr->type = atoi(mess); + curr->next = NULL; + curr->ip = (char *) malloc(strlen(ip)+1); + strcpy(curr->ip, ip); + curr->passwd = (char *) malloc(strlen(passwd)+1); + strcpy(curr->passwd, passwd); + } + + if(passwd) + free(passwd); + if(ip) + free(ip); + + return curr; +} + + +int get_opts() +{ + extern char *community; + extern struct in_addr ap_ip; + extern int sockfd; + + char *home_dir, buf[1024], mess[64]; + int c; + int fd, rval=0, pos; + signed int j, i, begin, end, record_num=0; + char message[50]; + struct APList *first=NULL, *curr=NULL, *pmac; + struct sockaddr_in client; + + memset(&client, 0, sizeof client); + client.sin_family = AF_INET; + client.sin_port = INADDR_ANY; + client.sin_addr.s_addr = INADDR_ANY; + + + if ((home_dir = getenv("HOME")) == NULL) + return 0; + sprintf(buf, "%s/.ap-config", home_dir); + if ((fd = open(buf, O_RDONLY)) == -1) + return 0; + pos=0; + while((j = read(fd, buf, sizeof(buf)))>0) + for(i=0; i < j; i++) { + if (buf[i] == 0x0a){ + mess[pos]='\0'; + if (first == NULL) { + if ((first = parse_db_str(mess))!=NULL) { + curr=first; + record_num=1; + } + } else { + if ((curr->next = parse_db_str(mess)) != NULL) { + curr = curr->next; + record_num++; + } + } + pos=0; + } else + mess[pos++] = buf[i]; + } + + mess[pos]='\0'; + if (first == NULL) { + if ((first = parse_db_str(mess))!=NULL) { + curr=first; + record_num=1; + } + } else { + if ((curr->next = parse_db_str(mess)) != NULL) + curr = curr->next; + record_num++; + } + + close(fd); + if(!record_num) + return 0; + + mvwaddstr(main_sub, 0, 3, _("NUM IP ADDRESS TYPE")); + print_title(_("Choose an AP to connect to")); + begin = 1; + end = (MAX_LINES < record_num) ? MAX_LINES : record_num; + _scroll_rows(first, begin, end); + noecho(); + print_help(_("1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll")); + while (1) { + switch (c = getch()) { + case 'q': + case 'Q': + exit_program(); + case 'n': + case 'N': + goto quit; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + i = c - '0'; + if (record_num <= i || i <= 0) + goto wrong_num; + curr = first; + while (--i > 0) + curr = curr->next; + inet_aton(curr->ip, &ap_ip); + if (community) + free(community); + i = strlen(curr->passwd) + 1; + community = (char *) malloc(i); + strncpy(community, curr->passwd, i); + ap_type = curr->type; + rval=1; + if (sockfd) + close(sockfd); + if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) + rval=0; + if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1) + rval=0; + print_bottom(inet_ntoa(ap_ip)); + goto quit; + case 'c': + case 'C': + mvwaddstr(main_sub, 1, 1, _("Connect to AP num:")); + get_value(message, 1, 20, 6, INT_STRING, + 1, record_num - 1, NULL); + i = atoi(message); + curr = first; + while (--i > 0) + curr = curr->next; + inet_aton(curr->ip, &ap_ip); + if (community) + free(community); + i = strlen(curr->passwd) + 1; + community = (char *) malloc(i); + strncpy(community, curr->passwd, i); + ap_type = curr->type; + rval=1; + if (sockfd) + close(sockfd); + if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) + rval=0; + if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1) + rval=0; + print_bottom(inet_ntoa(ap_ip)); + goto quit; + case 'd': + case 'D': + mvwaddstr(main_sub, 1, 0, _("Delete num:")); + get_value(message, 1, 15, 6, INT_STRING, + 1, record_num - 1, NULL); + i = atoi(message); + if (i == 1) { + curr = first; + first = first->next; + free(curr); + } else { + curr = first; + while (--i > 1) + curr = curr->next; + pmac = curr->next; + curr->next = pmac->next; + free(pmac); + } + record_num--; + begin = 1; + end = (MAX_LINES < record_num) ? MAX_LINES : record_num; + _scroll_rows(first, begin, end); + wrong_num: + clear_main_new(1, 2); + continue; + case KEY_DOWN: + case KEY_RIGHT: + if (end < record_num) { + begin++; + end++; + _scroll_rows(first, begin, end); + } + + continue; + case KEY_UP: + case KEY_LEFT: + if (begin > 1) { + begin--; + end--; + _scroll_rows(first, begin, end); + } + continue; + + case 'w': + case 'W': + sprintf(buf, "%s/.ap-config", home_dir); + if ((fd = creat(buf, 0600)) != -1) { + curr=first; + while (curr) { + sprintf(buf, "%s:%s:%d\n", curr->ip, curr->passwd, curr->type); + write(fd, buf, strlen(buf)); + curr = curr->next; + } + close(fd); + } + continue; + } +} +/* + print_help(ANY_KEY); + getch(); +*/ quit: + while ((curr = first)) { + first = curr->next; + free(curr->ip); + free(curr->passwd); + free(curr); + } + print_help(""); + print_title(""); + wclear(main_sub); + wrefresh(main_sub); + return rval; +} + +void save_Stations(struct MacListStat *curr) +{ + int fd; + char *home_dir; + char message[1024]; + if ((home_dir = getenv("HOME"))) { + sprintf(message, "%s/ap-%s.stations", home_dir, + ap_types[ap_type]); + if ((fd = creat(message, 0600)) != -1) { + while (curr) { + sprintf(message, "%02X%02X%02X%02X%02X%02X\n", + curr->addr[0] & 0xFF, curr->addr[1] & 0xFF, + curr->addr[2] & 0xFF, curr->addr[3] & 0xFF, + curr->addr[4] & 0xFF, curr->addr[5] & 0xFF); + write(fd, message, 13); + curr = curr->next; + } + close(fd); + } + } +} + diff --git a/lib/input.c b/lib/input.c new file mode 100644 index 0000000..2e918ee --- /dev/null +++ b/lib/input.c @@ -0,0 +1,355 @@ +/* + * scr.c from Access Point SNMP Utils for Linux + * program input & screen related functions + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +extern WINDOW *main_sub, *win_for_help, *main_win; + +#define GEN_IV_MSG _("Invalid value. Press any key to continue.") +#define OOR_IV_MSG _("Value must be in range %i - %i. Press any key to continue.") + +#define MAC_LEN 12 +#define MAC_BYTES 6 + +void +get_mac(char *mac, int row, int col) +{ + char message[MAC_LEN+1], mess[MAC_LEN/MAC_BYTES+1]; + int i; + + get_value(message, row, col, MAC_LEN+1, HEX_STRING, 0, 0, NULL); + if (strlen(message) < 12) i = 255; + + for (i = 0; i < MAC_BYTES; i++) { + mess[0] = message[2 * i]; + mess[1] = message[2 * i + 1]; + mess[2] = '\0'; + mac[i] = strtol(mess, NULL, 16); + } +} + +#define IP_LEN 15 + +void +get_ip(struct in_addr *ip, int row, int col, char *helpmsg) +{ + char message[IP_LEN+1], *cp; + int dotc; + +get_ip_again: + get_value(message, row, col, IP_LEN+1, ANY_STRING, 0, 0, NULL); + for (cp = message, dotc = 0; *cp && (cp = index(cp, '.')); cp++, dotc++); + if (dotc < 3 || !(inet_aton(message, ip))) { + if (helpmsg) { + print_helperr(GEN_IV_MSG); + getch(); + print_help(helpmsg); + } + goto get_ip_again; + } +} + +void +get_mask(struct in_addr *ip, int row, int col, char *helpmsg) +{ + int i, bit, hmask, trans_count = 0; + +get_mask_again: + get_ip(ip, row, col, helpmsg); + hmask = ntohl(ip->s_addr); + bit = hmask & 0x00000001; + for (i = 1; i < 32; i++) + if (((hmask >> i) & 0x00000001) != bit) { + bit ^= 0x00000001; + trans_count++; + } + + if (trans_count > 1) { + print_helperr(GEN_IV_MSG); + getch(); + print_help(helpmsg); + goto get_mask_again; + } +} + +/* + * This is the main input function for all cases when user needs to enter + * a visible string. It also performs syntax correctness checks + * as well as bounds checks if required. + * + * value ....... this should keep the value, entered by the user, + * in ascii string notation + * row + * col ......... the begin coordinate, relative to the current window, + * at which the string entered by the user will appear + * len ......... maximum length of the entered string, including the + * tailing '\0' character + * vt .......... desired input value type (types INT_STRING, HEX_STRING, + * ANY_STRING) + * minv, maxv .. min/max bounds in case of integer value input. Each can be + * of value 0 - maxint. If both are 0, it means no value bounds + * checking will be performed. Used only with vt=INT_STRING. + * helpmsg ..... pointer to string that will be printed after OOR_IV_MSG + * message if the entered integer value is out of range. + * If NULL, then no 'invalid value' and subsequent status line + * message will be printed, and whole input process will be + * repeated. Used only with vt=INT_STRING. + */ +void +get_value(char *value, int row, int col, int len, + char vt, int minv, int maxv, char *helpmsg) +{ + int i; + unsigned char c, acs; + char iv_msg[128]; + + echo(); + wattrset(main_sub, COLOR_PAIR(2)); +get_value_again: + wmove(main_sub, row, col); + for (i = 0; i < len - 1; i++) + waddch(main_sub, ' '); + curs_set(1); + wmove(main_sub, row, col); + wrefresh(main_sub); + + i = 0; + while (1) { + c = getchar(); + acs = 0; + switch (vt) { + case INT_STRING: + if (c >= '0' && c <= '9') acs = 1; + break; + case HEX_STRING: + if ((c >= '0' && c <= '9') || + (c >= 'a' && c <= 'f') || + (c >= 'A' && c <= 'F')) acs = 1; + break; + case ANY_STRING: + acs = 1; + } + if (c == 0x7F) { + /* DELETE KEY */ + if (i > 0) { + value[i--] = 0; + wmove(main_sub, row, col + i); + waddch(main_sub, ' '); + /* put backspace to move cursor back */ + wechochar(main_sub, 0x08); + } + continue; + } else if (c == 0x0D) { + /* ENTER KEY */ + if (i > 0) + break; + continue; + } else if (c == 0x1B) { + /* ESCAPE KEY */ + continue; + } else if (acs && (i < len - 1)) { + value[i++] = c; + wechochar(main_sub, c); + } + } + value[i] = 0; + + noecho(); + if (vt == INT_STRING && (minv | maxv)) { + i = atoi(value); + if (i < minv || i > maxv) { + if (helpmsg) { + snprintf(iv_msg, sizeof(iv_msg) - 1, OOR_IV_MSG, minv, maxv); + print_helperr(iv_msg); + getch(); + print_help(helpmsg); + } + goto get_value_again; + } + } + + curs_set(0); + wattrset(main_sub, A_BOLD); + wmove(main_sub, row, col); + for (i = 0; i < len - 1; i++) + waddch(main_sub, ' '); + mvwaddstr(main_sub, row, col, value); + wattrset(main_sub, A_NORMAL); + wrefresh(main_sub); +} + +/* + * Note: indeed we should use get_value() for this action, but for the moment, + * we'll settle with this one. + */ + +void +get_pass(char *value, int row, int col, int len) +{ + int i, j = 0; + + wattrset(main_sub, COLOR_PAIR(2)); + wmove(main_sub, row, col); + for (i = 0; i < len - 1; i++) + waddch(main_sub, ' '); + curs_set(1); + + while (1) { + value[j] = mvwgetch(main_sub, row, col + j); + if (value[j] == 0x0A) /* NEWLINE */ + break; + if (value[j] == 0x1B) /* ESCAPE */ + continue; + if (value[j] != 0x7F) { /* BACKSPACE */ + if (j < len - 1) + mvwaddch(main_sub, row, col + j++, '*'); + } else { + if (j) + mvwaddch(main_sub, row, col + --j, ' '); + } + }; + value[j] = '\0'; + + curs_set(0); + wattrset(main_sub, A_BOLD); + wmove(main_sub, row, col); + for (i = 0; i < len - 1; i++) + waddch(main_sub, ' '); + wmove(main_sub, row, col); + for (i = 0; i < j; i++) + waddch(main_sub, '*'); + wattrset(main_sub, A_NORMAL); + wrefresh(main_sub); +} + +int +yes_no(int brow, int bcol) +{ + char *names[2] = { YES, NO }; + + return menu_choose(brow, bcol, names, 2) + 1; +} + +int +on_off(int brow, int bcol) +{ + char *names[2] = { ON, OFF }; + + return menu_choose(brow, bcol, names, 2) + 1; +} + +int menu_choose(int brow, int bcol, char **names, unsigned int num) +{ + unsigned short int c; + ITEM **menu_item = calloc(num, sizeof(ITEM)), **ip = menu_item; + MENU *menu1; + unsigned int ncol = 2, i, nrow; + WINDOW *choose_menu, *sub_choose_menu; + extern WINDOW *main_sub; + + for (i = 0; i < num; i++) { + *ip++ = new_item(names[i], ""); + if (ncol < strlen(names[i]) + 3) + ncol = strlen(names[i]) + 3; + } + *ip = (ITEM *) 0; + + + nrow = num + 2; + if (brow + 2 + nrow <= (unsigned int) LINES - 2) + choose_menu = newwin(nrow, ncol, brow + 2, bcol + MCOLS); + else + choose_menu = newwin(nrow, ncol, brow - nrow + 3, bcol + MCOLS); + sub_choose_menu = derwin(choose_menu, nrow - 2, ncol - 2, 1, 1); + attrset(COLOR_PAIR(1)); + + mvwaddch(choose_menu, 0, 0, ACS_ULCORNER); + mvwaddch(choose_menu, 0, ncol - 1, ACS_URCORNER); + mvwaddch(choose_menu, nrow - 1, 0, ACS_LLCORNER); + mvwaddch(choose_menu, nrow - 1, ncol - 1, ACS_LRCORNER); + for (i = 1; i < ncol - 1; i++) { + mvwaddch(choose_menu, 0, i, ACS_HLINE); + mvwaddch(choose_menu, nrow - 1, i, ACS_HLINE); + } + for (i = 1; i < nrow - 1; i++) { + mvwaddch(choose_menu, i, 0, ACS_VLINE); + mvwaddch(choose_menu, i, ncol - 1, ACS_VLINE); + } + wrefresh(choose_menu); + + + menu1 = new_menu(menu_item); + set_menu_win(menu1, choose_menu); + set_menu_sub(menu1, sub_choose_menu); + + set_menu_opts(menu1, O_ONEVALUE); + + curs_set(0); + post_menu(menu1); + wrefresh(sub_choose_menu); + + while (1) { + switch (getch()) { + case KEY_DOWN: + case 'j': + case 'J': + menu_driver(menu1, REQ_NEXT_ITEM); + wrefresh(sub_choose_menu); + break; + case KEY_RIGHT: + case 'l': + case 'L': + menu_driver(menu1, REQ_LAST_ITEM); + wrefresh(sub_choose_menu); + break; + case KEY_LEFT: + case 'h': + case 'H': + menu_driver(menu1, REQ_FIRST_ITEM); + wrefresh(sub_choose_menu); + break; + case KEY_UP: + case 'k': + case 'K': + menu_driver(menu1, REQ_PREV_ITEM); + wrefresh(sub_choose_menu); + break; + case 10: + i = item_index(current_item(menu1)); + unpost_menu(menu1); + free_menu(menu1); + for (c = 0; c < nrow - 2; c++) + free_item(menu_item[c]); + delwin(sub_choose_menu); + delwin(choose_menu); + redrawwin(main_sub); + free(menu_item); + return i; + + } + } +} + diff --git a/lib/menu.c b/lib/menu.c new file mode 100644 index 0000000..86ca3a1 --- /dev/null +++ b/lib/menu.c @@ -0,0 +1,118 @@ +/* + * menu.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include "ap-utils.h" + +extern WINDOW *sub_for_menu; + +void uni_menu(struct umitems *umenu, int num) +{ + ITEM **menu_item = calloc(num+1, sizeof(ITEM)); + MENU *menu; + unsigned short int idx; + int c; + + for (idx = 0; idx < num; idx++) { + menu_item[idx] = new_item(umenu[idx].item, 0); + } + menu = new_menu(menu_item); + + set_menu_opts(menu, O_ONEVALUE); + + curs_set(0); + + post_menu(menu); + + wrefresh(sub_for_menu); + print_help(umenu[0].help); + + while (1) { + switch (getch()) { + case KEY_DOWN: + case 'j': + case 'J': + menu_driver(menu, REQ_NEXT_ITEM); + wrefresh(sub_for_menu); + break; + case KEY_RIGHT: + case 'l': + case 'L': + menu_driver(menu, REQ_LAST_ITEM); + wrefresh(sub_for_menu); + break; + case KEY_LEFT: + case 'h': + case 'H': + menu_driver(menu, REQ_FIRST_ITEM); + wrefresh(sub_for_menu); + break; + case KEY_UP: + case 'k': + case 'K': + menu_driver(menu, REQ_PREV_ITEM); + wrefresh(sub_for_menu); + break; + case KEY_PPAGE: + case KEY_HOME: + menu_driver(menu, REQ_FIRST_ITEM); + wrefresh(sub_for_menu); + break; + case KEY_NPAGE: + case KEY_END: + menu_driver(menu, REQ_LAST_ITEM); + wrefresh(sub_for_menu); + break; + case 'q': + case 'Q': + idx = num - 2; + goto quitmenu; + /* Enter */ + case 10: + idx = item_index(current_item(menu)); +quitmenu: + if (idx == num - 2) { + unpost_menu(menu); + free_menu(menu); + for (c = 0; c < num; c++) + free_item(menu_item[c]); + if (umenu[idx].func) + umenu[idx].func(); + else { + free(menu_item); + return; + } + } + if (umenu[idx].is_menu) + unpost_menu(menu); + umenu[idx].func(); + if (umenu[idx].is_menu) { + post_menu(menu); + wrefresh(sub_for_menu); + } + break; + default: + continue; + } + print_help(umenu[item_index(current_item(menu))].help); + } +} diff --git a/lib/oui.c b/lib/oui.c new file mode 100644 index 0000000..47dbfc1 --- /dev/null +++ b/lib/oui.c @@ -0,0 +1,6053 @@ +/* + * oui.c from Wireless Access Point Utilites for Unix + * Transform OUI to Manufacturer name + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "unistd.h" +#include "ap-utils.h" + +char *oui2manufacturer(char *mac) +{ + + struct oui { + char oui1; + char oui2; + char oui3; + char *organization; + } oui_list[] = { + { + 0x00, 0x00, 0x00, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x01, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x02, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x03, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x04, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x05, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x06, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x07, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x08, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x09, "XEROX CORPORATION"}, { + 0x00, 0x00, 0x0A, "OMRON TATEISI ELECTRONICS CO."}, { + 0x00, 0x00, 0x0B, "MATRIX CORPORATION"}, { + 0x00, 0x00, 0x0C, "CISCO SYSTEMS, INC."}, { + 0x00, 0x00, 0x0D, "FIBRONICS LTD."}, { + 0x00, 0x00, 0x0E, "FUJITSU LIMITED"}, { + 0x00, 0x00, 0x0F, "NEXT, INC."}, { + 0x00, 0x00, 0x10, "SYTEK INC."}, { + 0x00, 0x00, 0x11, "NORMEREL SYSTEMES"}, { + 0x00, 0x00, 0x12, "INFORMATION TECHNOLOGY LIMITED"}, { + 0x00, 0x00, 0x13, "CAMEX"}, { + 0x00, 0x00, 0x14, "NETRONIX"}, { + 0x00, 0x00, 0x15, "DATAPOINT CORPORATION"}, { + 0x00, 0x00, 0x16, "DU PONT PIXEL SYSTEMS ."}, { + 0x00, 0x00, 0x18, "WEBSTER COMPUTER CORPORATION"}, { + 0x00, 0x00, 0x19, "APPLIED DYNAMICS INTERNATIONAL"}, { + 0x00, 0x00, 0x1A, "ADVANCED MICRO DEVICES"}, { + 0x00, 0x00, 0x1B, "NOVELL INC."}, { + 0x00, 0x00, 0x1C, "BELL TECHNOLOGIES"}, { + 0x00, 0x00, 0x1D, "CABLETRON SYSTEMS, INC."}, { + 0x00, 0x00, 0x1E, "TELSIST INDUSTRIA ELECTRONICA"}, { + 0x00, 0x00, 0x1F, "Telco Systems, Inc."}, { + 0x00, 0x00, 0x20, "DATAINDUSTRIER DIAB AB"}, { + 0x00, 0x00, 0x21, "SUREMAN COMP. & COMMUN. CORP."}, { + 0x00, 0x00, 0x22, "VISUAL TECHNOLOGY INC."}, { + 0x00, 0x00, 0x23, "ABB INDUSTRIAL SYSTEMS AB"}, { + 0x00, 0x00, 0x24, "CONNECT AS"}, { + 0x00, 0x00, 0x25, "RAMTEK CORP."}, { + 0x00, 0x00, 0x26, "SHA-KEN CO., LTD."}, { + 0x00, 0x00, 0x27, "JAPAN RADIO COMPANY"}, { + 0x00, 0x00, 0x28, "PRODIGY SYSTEMS CORPORATION"}, { + 0x00, 0x00, 0x29, "IMC NETWORKS CORP."}, { + 0x00, 0x00, 0x2A, "TRW - SEDD/INP"}, { + 0x00, 0x00, 0x2B, "CRISP AUTOMATION, INC"}, { + 0x00, 0x00, 0x2C, "AUTOTOTE LIMITED"}, { + 0x00, 0x00, 0x2D, "CHROMATICS INC"}, { + 0x00, 0x00, 0x2E, "SOCIETE EVIRA"}, { + 0x00, 0x00, 0x2F, "TIMEPLEX INC."}, { + 0x00, 0x00, 0x30, "VG LABORATORY SYSTEMS LTD"}, { + 0x00, 0x00, 0x31, "QPSX COMMUNICATIONS PTY LTD"}, { + 0x00, 0x00, 0x32, "Marconi plc"}, { + 0x00, 0x00, 0x33, "EGAN MACHINERY COMPANY"}, { + 0x00, 0x00, 0x34, "NETWORK RESOURCES CORPORATION"}, { + 0x00, 0x00, 0x35, "SPECTRAGRAPHICS CORPORATION"}, { + 0x00, 0x00, 0x36, "ATARI CORPORATION"}, { + 0x00, 0x00, 0x37, "OXFORD METRICS LIMITED"}, { + 0x00, 0x00, 0x38, "CSS LABS"}, { + 0x00, 0x00, 0x39, "TOSHIBA CORPORATION"}, { + 0x00, 0x00, 0x3A, "CHYRON CORPORATION"}, { + 0x00, 0x00, 0x3B, "i Controls, Inc."}, { + 0x00, 0x00, 0x3C, "AUSPEX SYSTEMS INC."}, { + 0x00, 0x00, 0x3D, "UNISYS"}, { + 0x00, 0x00, 0x3E, "SIMPACT"}, { + 0x00, 0x00, 0x3F, "SYNTREX, INC."}, { + 0x00, 0x00, 0x40, "APPLICON, INC."}, { + 0x00, 0x00, 0x41, "ICE CORPORATION"}, { + 0x00, 0x00, 0x42, "METIER MANAGEMENT SYSTEMS LTD."}, { + 0x00, 0x00, 0x43, "MICRO TECHNOLOGY"}, { + 0x00, 0x00, 0x44, "CASTELLE CORPORATION"}, { + 0x00, 0x00, 0x45, "FORD AEROSPACE & COMM. CORP."}, { + 0x00, 0x00, 0x46, "OLIVETTI NORTH AMERICA"}, { + 0x00, 0x00, 0x47, "NICOLET INSTRUMENTS CORP."}, { + 0x00, 0x00, 0x48, "SEIKO EPSON CORPORATION"}, { + 0x00, 0x00, 0x49, "APRICOT COMPUTERS, LTD"}, { + 0x00, 0x00, 0x4A, "ADC CODENOLL TECHNOLOGY CORP."}, { + 0x00, 0x00, 0x4B, "ICL DATA OY"}, { + 0x00, 0x00, 0x4C, "NEC CORPORATION"}, { + 0x00, 0x00, 0x4D, "DCI CORPORATION"}, { + 0x00, 0x00, 0x4E, "AMPEX CORPORATION"}, { + 0x00, 0x00, 0x4F, "LOGICRAFT, INC."}, { + 0x00, 0x00, 0x50, "RADISYS CORPORATION"}, { + 0x00, 0x00, 0x51, "HOB ELECTRONIC GMBH & CO. KG"}, { + 0x00, 0x00, 0x52, "Intrusion.com, Inc."}, { + 0x00, 0x00, 0x53, "COMPUCORP"}, { + 0x00, 0x00, 0x54, "MODICON, INC."}, { + 0x00, 0x00, 0x55, "COMMISSARIAT A L`ENERGIE ATOM."}, { + 0x00, 0x00, 0x56, "DR. B. STRUCK"}, { + 0x00, 0x00, 0x57, "SCITEX CORPORATION LTD."}, { + 0x00, 0x00, 0x58, "RACORE COMPUTER PRODUCTS INC."}, { + 0x00, 0x00, 0x59, "HELLIGE GMBH"}, { + 0x00, 0x00, 0x5A, "SysKonnect GmbH"}, { + 0x00, 0x00, 0x5B, "ELTEC ELEKTRONIK AG"}, { + 0x00, 0x00, 0x5C, "TELEMATICS INTERNATIONAL INC."}, { + 0x00, 0x00, 0x5D, "CS TELECOM"}, { + 0x00, 0x00, 0x5E, "USC INFORMATION SCIENCES INST"}, { + 0x00, 0x00, 0x5F, "SUMITOMO ELECTRIC IND., LTD."}, { + 0x00, 0x00, 0x60, "KONTRON ELEKTRONIK GMBH"}, { + 0x00, 0x00, 0x61, "GATEWAY COMMUNICATIONS"}, { + 0x00, 0x00, 0x62, "BULL HN INFORMATION SYSTEMS"}, { + 0x00, 0x00, 0x63, "DR.ING.SEUFERT GMBH"}, { + 0x00, 0x00, 0x64, "YOKOGAWA DIGITAL COMPUTER CORP"}, { + 0x00, 0x00, 0x65, "NETWORK ASSOCIATES, INC."}, { + 0x00, 0x00, 0x66, "TALARIS SYSTEMS, INC."}, { + 0x00, 0x00, 0x67, "SOFT * RITE, INC."}, { + 0x00, 0x00, 0x68, "ROSEMOUNT CONTROLS"}, { + 0x00, 0x00, 0x69, "CONCORD COMMUNICATIONS INC"}, { + 0x00, 0x00, 0x6A, "COMPUTER CONSOLES INC."}, { + 0x00, 0x00, 0x6B, "SILICON GRAPHICS INC./MIPS"}, { + 0x00, 0x00, 0x6D, "CRAY COMMUNICATIONS, LTD."}, { + 0x00, 0x00, 0x6E, "ARTISOFT, INC."}, { + 0x00, 0x00, 0x6F, "MADGE NETWORKS LTD."}, { + 0x00, 0x00, 0x70, "HCL LIMITED"}, { + 0x00, 0x00, 0x71, "ADRA SYSTEMS INC."}, { + 0x00, 0x00, 0x72, "MINIWARE TECHNOLOGY"}, { + 0x00, 0x00, 0x73, "SIECOR CORPORATION"}, { + 0x00, 0x00, 0x74, "RICOH COMPANY LTD."}, { + 0x00, 0x00, 0x75, "Nortel Networks"}, { + 0x00, 0x00, 0x76, "ABEKAS VIDEO SYSTEM"}, { + 0x00, 0x00, 0x77, "INTERPHASE CORPORATION"}, { + 0x00, 0x00, 0x78, "LABTAM LIMITED"}, { + 0x00, 0x00, 0x79, "NETWORTH INCORPORATED"}, { + 0x00, 0x00, 0x7A, "DANA COMPUTER INC."}, { + 0x00, 0x00, 0x7B, "RESEARCH MACHINES"}, { + 0x00, 0x00, 0x7C, "AMPERE INCORPORATED"}, { + 0x00, 0x00, 0x7D, "SUN MICROSYSTEMS, INC."}, { + 0x00, 0x00, 0x7E, "CLUSTRIX CORPORATION"}, { + 0x00, 0x00, 0x7F, "LINOTYPE-HELL AG"}, { + 0x00, 0x00, 0x80, "CRAY COMMUNICATIONS A/S"}, { + 0x00, 0x00, 0x81, "BAY NETWORKS"}, { + 0x00, 0x00, 0x82, "LECTRA SYSTEMES SA"}, { + 0x00, 0x00, 0x83, "TADPOLE TECHNOLOGY PLC"}, { + 0x00, 0x00, 0x84, "SUPERNET"}, { + 0x00, 0x00, 0x85, "CANON INC."}, { + 0x00, 0x00, 0x86, "MEGAHERTZ CORPORATION"}, { + 0x00, 0x00, 0x87, "HITACHI, LTD."}, { + 0x00, 0x00, 0x88, "COMPUTER NETWORK TECH. CORP."}, { + 0x00, 0x00, 0x89, "CAYMAN SYSTEMS INC."}, { + 0x00, 0x00, 0x8A, "DATAHOUSE INFORMATION SYSTEMS"}, { + 0x00, 0x00, 0x8B, "INFOTRON"}, { + 0x00, 0x00, 0x8C, "ALLOY COMPUTER PRODUCTS, INC."}, { + 0x00, 0x00, 0x8D, "VERDIX CORPORATION"}, { + 0x00, 0x00, 0x8E, "SOLBOURNE COMPUTER, INC."}, { + 0x00, 0x00, 0x8F, "RAYTHEON COMPANY"}, { + 0x00, 0x00, 0x90, "MICROCOM"}, { + 0x00, 0x00, 0x91, "ANRITSU CORPORATION"}, { + 0x00, 0x00, 0x92, "COGENT DATA TECHNOLOGIES"}, { + 0x00, 0x00, 0x93, "PROTEON INC."}, { + 0x00, 0x00, 0x94, "ASANTE TECHNOLOGIES"}, { + 0x00, 0x00, 0x95, "SONY TEKTRONIX CORP."}, { + 0x00, 0x00, 0x96, "MARCONI ELECTRONICS LTD."}, { + 0x00, 0x00, 0x97, "EPOCH SYSTEMS"}, { + 0x00, 0x00, 0x98, "CROSSCOMM CORPORATION"}, { + 0x00, 0x00, 0x99, "MTX, INC."}, { + 0x00, 0x00, 0x9A, "RC COMPUTER A/S"}, { + 0x00, 0x00, 0x9B, "INFORMATION INTERNATIONAL, INC"}, { + 0x00, 0x00, 0x9C, "ROLM MIL-SPEC COMPUTERS"}, { + 0x00, 0x00, 0x9D, "LOCUS COMPUTING CORPORATION"}, { + 0x00, 0x00, 0x9E, "MARLI S.A."}, { + 0x00, 0x00, 0x9F, "AMERISTAR TECHNOLOGIES INC."}, { + 0x00, 0x00, 0xA0, "TOKYO SANYO ELECTRIC CO. LTD."}, { + 0x00, 0x00, 0xA1, "MARQUETTE ELECTRIC CO."}, { + 0x00, 0x00, 0xA2, "BAY NETWORKS"}, { + 0x00, 0x00, 0xA3, "NETWORK APPLICATION TECHNOLOGY"}, { + 0x00, 0x00, 0xA4, "ACORN COMPUTERS LIMITED"}, { + 0x00, 0x00, 0xA5, "COMPATIBLE SYSTEMS CORP."}, { + 0x00, 0x00, 0xA6, "NETWORK GENERAL CORPORATION"}, { + 0x00, 0x00, 0xA7, "NETWORK COMPUTING DEVICES INC."}, { + 0x00, 0x00, 0xA8, "STRATUS COMPUTER INC."}, { + 0x00, 0x00, 0xA9, "NETWORK SYSTEMS CORP."}, { + 0x00, 0x00, 0xAA, "XEROX CORPORATION"}, { + 0x00, 0x00, 0xAB, "LOGIC MODELING CORPORATION"}, { + 0x00, 0x00, 0xAC, "CONWARE COMPUTER CONSULTING"}, { + 0x00, 0x00, 0xAD, "BRUKER INSTRUMENTS INC."}, { + 0x00, 0x00, 0xAE, "DASSAULT ELECTRONIQUE"}, { + 0x00, 0x00, 0xAF, "NUCLEAR DATA INSTRUMENTATION"}, { + 0x00, 0x00, 0xB0, "RND-RAD NETWORK DEVICES"}, { + 0x00, 0x00, 0xB1, "ALPHA MICROSYSTEMS INC."}, { + 0x00, 0x00, 0xB2, "TELEVIDEO SYSTEMS, INC."}, { + 0x00, 0x00, 0xB3, "CIMLINC INCORPORATED"}, { + 0x00, 0x00, 0xB4, "EDIMAX COMPUTER COMPANY"}, { + 0x00, 0x00, 0xB5, "DATABILITY SOFTWARE SYS. INC."}, { + 0x00, 0x00, 0xB6, "MICRO-MATIC RESEARCH"}, { + 0x00, 0x00, 0xB7, "DOVE COMPUTER CORPORATION"}, { + 0x00, 0x00, 0xB8, "SEIKOSHA CO., LTD."}, { + 0x00, 0x00, 0xB9, "MCDONNELL DOUGLAS COMPUTER SYS"}, { + 0x00, 0x00, 0xBA, "SIIG, INC."}, { + 0x00, 0x00, 0xBB, "TRI-DATA"}, { + 0x00, 0x00, 0xBC, "ALLEN-BRADLEY CO. INC."}, { + 0x00, 0x00, 0xBD, "MITSUBISHI CABLE COMPANY"}, { + 0x00, 0x00, 0xBE, "THE NTI GROUP"}, { + 0x00, 0x00, 0xBF, "SYMMETRIC COMPUTER SYSTEMS"}, { + 0x00, 0x00, 0xC0, "WESTERN DIGITAL CORPORATION"}, { + 0x00, 0x00, 0xC1, "Madge Networks Ltd."}, { + 0x00, 0x00, 0xC2, "INFORMATION PRESENTATION TECH."}, { + 0x00, 0x00, 0xC3, "HARRIS CORP COMPUTER SYS DIV"}, { + 0x00, 0x00, 0xC4, "WATERS DIV. OF MILLIPORE"}, { + 0x00, 0x00, 0xC5, "FARALLON COMPUTING/NETOPIA"}, { + 0x00, 0x00, 0xC6, "EON SYSTEMS"}, { + 0x00, 0x00, 0xC7, "ARIX CORPORATION"}, { + 0x00, 0x00, 0xC8, "ALTOS COMPUTER SYSTEMS"}, { + 0x00, 0x00, 0xC9, "EMULEX CORPORATION"}, { + 0x00, 0x00, 0xCA, "APPLITEK"}, { + 0x00, 0x00, 0xCB, "COMPU-SHACK ELECTRONIC GMBH"}, { + 0x00, 0x00, 0xCC, "DENSAN CO., LTD."}, { + 0x00, 0x00, 0xCD, "Centrecom Systems, Ltd."}, { + 0x00, 0x00, 0xCE, "MEGADATA CORP."}, { + 0x00, 0x00, 0xCF, "HAYES MICROCOMPUTER PRODUCTS"}, { + 0x00, 0x00, 0xD0, "DEVELCON ELECTRONICS LTD."}, { + 0x00, 0x00, 0xD1, "ADAPTEC INCORPORATED"}, { + 0x00, 0x00, 0xD2, "SBE, INC."}, { + 0x00, 0x00, 0xD3, "WANG LABORATORIES INC."}, { + 0x00, 0x00, 0xD4, "PURE DATA LTD."}, { + 0x00, 0x00, 0xD5, "MICROGNOSIS INTERNATIONAL"}, { + 0x00, 0x00, 0xD6, "PUNCH LINE HOLDING"}, { + 0x00, 0x00, 0xD7, "DARTMOUTH COLLEGE"}, { + 0x00, 0x00, 0xD8, "NOVELL, INC."}, { + 0x00, 0x00, 0xD9, "NIPPON TELEGRAPH & TELEPHONE"}, { + 0x00, 0x00, 0xDA, "ATEX"}, { + 0x00, 0x00, 0xDB, "BRITISH TELECOMMUNICATIONS PLC"}, { + 0x00, 0x00, 0xDC, "HAYES MICROCOMPUTER PRODUCTS"}, { + 0x00, 0x00, 0xDD, "TCL INCORPORATED"}, { + 0x00, 0x00, 0xDE, "CETIA"}, { + 0x00, 0x00, 0xDF, "BELL & HOWELL PUB SYS DIV"}, { + 0x00, 0x00, 0xE0, "QUADRAM CORP."}, { + 0x00, 0x00, 0xE1, "GRID SYSTEMS"}, { + 0x00, 0x00, 0xE2, "ACER TECHNOLOGIES CORP."}, { + 0x00, 0x00, 0xE3, "INTEGRATED MICRO PRODUCTS LTD"}, { + 0x00, 0x00, 0xE4, "IN2 GROUPE INTERTECHNIQUE"}, { + 0x00, 0x00, 0xE5, "SIGMEX LTD."}, { + 0x00, 0x00, 0xE6, "APTOR PRODUITS DE COMM INDUST"}, { + 0x00, 0x00, 0xE7, "STAR GATE TECHNOLOGIES"}, { + 0x00, 0x00, 0xE8, "ACCTON TECHNOLOGY CORP."}, { + 0x00, 0x00, 0xE9, "ISICAD, INC."}, { + 0x00, 0x00, 0xEA, "UPNOD AB"}, { + 0x00, 0x00, 0xEB, "MATSUSHITA COMM. IND. CO. LTD."}, { + 0x00, 0x00, 0xEC, "MICROPROCESS"}, { + 0x00, 0x00, 0xED, "APRIL"}, { + 0x00, 0x00, 0xEE, "NETWORK DESIGNERS, LTD."}, { + 0x00, 0x00, 0xEF, "KTI"}, { + 0x00, 0x00, 0xF0, "SAMSUNG ELECTRONICS CO., LTD."}, { + 0x00, 0x00, 0xF1, "MAGNA COMPUTER CORPORATION"}, { + 0x00, 0x00, 0xF2, "SPIDER COMMUNICATIONS"}, { + 0x00, 0x00, 0xF3, "GANDALF DATA LIMITED"}, { + 0x00, 0x00, 0xF4, "ALLIED TELESYN INTERNATIONAL"}, { + 0x00, 0x00, 0xF5, "DIAMOND SALES LIMITED"}, { + 0x00, 0x00, 0xF6, "APPLIED MICROSYSTEMS CORP."}, { + 0x00, 0x00, 0xF7, "YOUTH KEEP ENTERPRISE CO LTD"}, { + 0x00, 0x00, 0xF8, "DIGITAL EQUIPMENT CORPORATION"}, { + 0x00, 0x00, 0xF9, "QUOTRON SYSTEMS INC."}, { + 0x00, 0x00, 0xFA, "MICROSAGE COMPUTER SYSTEMS INC"}, { + 0x00, 0x00, 0xFB, "RECHNER ZUR KOMMUNIKATION"}, { + 0x00, 0x00, 0xFC, "MEIKO"}, { + 0x00, 0x00, 0xFD, "HIGH LEVEL HARDWARE"}, { + 0x00, 0x00, 0xFE, "ANNAPOLIS MICRO SYSTEMS"}, { + 0x00, 0x00, 0xFF, "CAMTEC ELECTRONICS LTD."}, { + 0x00, 0x01, 0x00, "EQUIP'TRANS"}, { + 0x00, 0x01, 0x02, "3COM CORPORATION"}, { + 0x00, 0x01, 0x03, "3COM CORPORATION"}, { + 0x00, 0x01, 0x04, "DVICO Co., Ltd."}, { + 0x00, 0x01, 0x05, "BECKHOFF GmbH"}, { + 0x00, 0x01, 0x06, "Tews Datentechnik GmbH"}, { + 0x00, 0x01, 0x07, "Leiser GmbH"}, { + 0x00, 0x01, 0x08, "AVLAB Technology, Inc."}, { + 0x00, 0x01, 0x09, "Nagano Japan Radio Co., Ltd."}, { + 0x00, 0x01, 0x0A, "CIS TECHNOLOGY INC."}, { + 0x00, 0x01, 0x0B, "Space CyberLink, Inc."}, { + 0x00, 0x01, 0x0C, "System Talks Inc."}, { + 0x00, 0x01, 0x0D, "CORECO, INC."}, { + 0x00, 0x01, 0x0E, "Bri-Link Technologies Co., Ltd"}, { + 0x00, 0x01, 0x0F, "Nishan Systems, Inc."}, { + 0x00, 0x01, 0x10, "Gotham Networks"}, { + 0x00, 0x01, 0x11, "iDigm Inc."}, { + 0x00, 0x01, 0x12, "Shark Multimedia Inc."}, { + 0x00, 0x01, 0x13, "OLYMPUS OPTICAL CO., LTD."}, { + 0x00, 0x01, 0x14, "KANDA TSUSHIN KOGYO CO., LTD."}, { + 0x00, 0x01, 0x15, "EXTRATECH CORPORATION"}, { + 0x00, 0x01, 0x16, "Netspect Technologies, Inc."}, { + 0x00, 0x01, 0x17, "CANAL +"}, { + 0x00, 0x01, 0x18, "EZ Digital Co., Ltd."}, { + 0x00, 0x01, 0x19, "Action Controls Pty. Ltd."}, { + 0x00, 0x01, 0x1A, "EEH DataLink GmbH"}, { + 0x00, 0x01, 0x1B, "Unizone Technologies, Inc."}, { + 0x00, 0x01, 0x1C, "Universal Talkware Corporation"}, { + 0x00, 0x01, 0x1D, "Centillium Communications"}, { + 0x00, 0x01, 0x1E, "Precidia Technologies, Inc."}, { + 0x00, 0x01, 0x1F, "RC Networks, Inc."}, { + 0x00, 0x01, 0x20, "OSCILLOQUARTZ S.A."}, { + 0x00, 0x01, 0x21, "RapidStream Inc."}, { + 0x00, 0x01, 0x22, "Trend Communications, Ltd."}, { + 0x00, 0x01, 0x23, "DIGITAL ELECTRONICS CORP."}, { + 0x00, 0x01, 0x24, "Acer Incorporated"}, { + 0x00, 0x01, 0x25, "YAESU MUSEN CO., LTD."}, { + 0x00, 0x01, 0x26, "PAC Labs"}, { + 0x00, 0x01, 0x27, "The OPEN Group Limited"}, { + 0x00, 0x01, 0x28, "EnjoyWeb, Inc."}, { + 0x00, 0x01, 0x29, "DFI Inc."}, { + 0x00, 0x01, 0x2A, "Telematica Sistems Inteligente"}, { + 0x00, 0x01, 0x2B, "TELENET Co., Ltd."}, { + 0x00, 0x01, 0x2C, "Aravox Technologies, Inc."}, { + 0x00, 0x01, 0x2D, "Komodo Technology"}, { + 0x00, 0x01, 0x2E, "PC Partner Ltd."}, { + 0x00, 0x01, 0x2F, "Twinhead International Corp"}, { + 0x00, 0x01, 0x30, "Extreme Networks"}, { + 0x00, 0x01, 0x31, "Detection Systems, Inc."}, { + 0x00, 0x01, 0x32, "Dranetz - BMI"}, { + 0x00, 0x01, 0x33, "KYOWA Electronic Instruments C"}, { + 0x00, 0x01, 0x34, "SIG Positec Systems AG"}, { + 0x00, 0x01, 0x35, "KDC Corp."}, { + 0x00, 0x01, 0x36, "CyberTAN Technology, Inc."}, { + 0x00, 0x01, 0x37, "IT Farm Corporation"}, { + 0x00, 0x01, 0x38, "XAVi Technologies Corp."}, { + 0x00, 0x01, 0x39, "Point Multimedia Systems"}, { + 0x00, 0x01, 0x3A, "SHELCAD COMMUNICATIONS, LTD."}, { + 0x00, 0x01, 0x3B, "BNA SYSTEMS"}, { + 0x00, 0x01, 0x3C, "TIW SYSTEMS"}, { + 0x00, 0x01, 0x3D, "RiscStation Ltd."}, { + 0x00, 0x01, 0x3E, "Ascom Tateco AB"}, { + 0x00, 0x01, 0x3F, "Neighbor World Co., Ltd."}, { + 0x00, 0x01, 0x40, "Sendtek Corporation"}, { + 0x00, 0x01, 0x41, "CABLE PRINT"}, { + 0x00, 0x01, 0x42, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0x43, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0x44, "Cereva Networks, Inc."}, { + 0x00, 0x01, 0x45, "WINSYSTEMS, INC."}, { + 0x00, 0x01, 0x46, "Tesco Controls, Inc."}, { + 0x00, 0x01, 0x47, "Zhone Technologies"}, { + 0x00, 0x01, 0x48, "X-traWeb Inc."}, { + 0x00, 0x01, 0x49, "T.D.T. Transfer Data Test GmbH"}, { + 0x00, 0x01, 0x4A, "SONY COMPUTER SCIENCE LABS., I"}, { + 0x00, 0x01, 0x4B, "Ennovate Networks, Inc."}, { + 0x00, 0x01, 0x4C, "Berkeley Process Control"}, { + 0x00, 0x01, 0x4D, "Shin Kin Enterprises Co., Ltd"}, { + 0x00, 0x01, 0x4E, "WIN Enterprises, Inc."}, { + 0x00, 0x01, 0x4F, "LUMINOUS Networks, Inc."}, { + 0x00, 0x01, 0x50, "GILAT COMMUNICATIONS, LTD."}, { + 0x00, 0x01, 0x51, "Ensemble Communications"}, { + 0x00, 0x01, 0x52, "CHROMATEK INC."}, { + 0x00, 0x01, 0x53, "ARCHTEK TELECOM CORPORATION"}, { + 0x00, 0x01, 0x54, "G3M Corporation"}, { + 0x00, 0x01, 0x55, "Promise Technology, Inc."}, { + 0x00, 0x01, 0x56, "FIREWIREDIRECT.COM, INC."}, { + 0x00, 0x01, 0x57, "SYSWAVE CO., LTD"}, { + 0x00, 0x01, 0x58, "Electro Industries/Gauge Tech"}, { + 0x00, 0x01, 0x59, "S1 Corporation"}, { + 0x00, 0x01, 0x5A, "Digital Video Broadcasting"}, { + 0x00, 0x01, 0x5B, "ITALTEL S.p.A/RF-UP-I"}, { + 0x00, 0x01, 0x5C, "CADANT INC."}, { + 0x00, 0x01, 0x5D, "Pirus Networks"}, { + 0x00, 0x01, 0x5E, "BEST TECHNOLOGY CO., LTD."}, { + 0x00, 0x01, 0x5F, "DIGITAL DESIGN GmbH"}, { + 0x00, 0x01, 0x60, "ELMEX Co., LTD."}, { + 0x00, 0x01, 0x61, "Meta Machine Technology"}, { + 0x00, 0x01, 0x62, "Cygnet Technologies, Inc."}, { + 0x00, 0x01, 0x63, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0x64, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0x65, "AirSwitch Corporation"}, { + 0x00, 0x01, 0x66, "TC GROUP A/S"}, { + 0x00, 0x01, 0x67, "HIOKI E.E. CORPORATION"}, { + 0x00, 0x01, 0x68, "VITANA CORPORATION"}, { + 0x00, 0x01, 0x69, "Celestix Networks Pte Ltd."}, { + 0x00, 0x01, 0x6A, "ALITEC"}, { + 0x00, 0x01, 0x6B, "LightChip, Inc."}, { + 0x00, 0x01, 0x6C, "FOXCONN"}, { + 0x00, 0x01, 0x6D, "Triton Network Systems"}, { + 0x00, 0x01, 0x6E, "Conklin Corporation"}, { + 0x00, 0x01, 0x6F, "HAITAI ELECTRONICS CO., LTD."}, { + 0x00, 0x01, 0x70, "ESE Embedded System Engineer'g"}, { + 0x00, 0x01, 0x71, "Allied Data Technologies"}, { + 0x00, 0x01, 0x72, "TechnoLand Co., LTD."}, { + 0x00, 0x01, 0x73, "JNI Corporation"}, { + 0x00, 0x01, 0x74, "CyberOptics Corporation"}, { + 0x00, 0x01, 0x75, "Radiant Communications Corp."}, { + 0x00, 0x01, 0x76, "Orient Silver Enterprises"}, { + 0x00, 0x01, 0x77, "EDSL"}, { + 0x00, 0x01, 0x78, "MARGI Systems, Inc."}, { + 0x00, 0x01, 0x79, "WIRELESS TECHNOLOGY, INC."}, { + 0x00, 0x01, 0x7A, "Chengdu Maipu Electric Industrial Co., Ltd."}, { + 0x00, 0x01, 0x7B, "Heidelberger Druckmaschinen AG"}, { + 0x00, 0x01, 0x7C, "AG-E GmbH"}, { + 0x00, 0x01, 0x7D, "ThermoQuest"}, { + 0x00, 0x01, 0x7E, "ADTEK System Science Co., Ltd."}, { + 0x00, 0x01, 0x7F, "Experience Music Project"}, { + 0x00, 0x01, 0x80, "AOpen, Inc."}, { + 0x00, 0x01, 0x81, "Nortel Networks"}, { + 0x00, 0x01, 0x82, "DICA TECHNOLOGIES AG"}, { + 0x00, 0x01, 0x83, "ANITE TELECOMS"}, { + 0x00, 0x01, 0x84, "SIEB & MEYER AG"}, { + 0x00, 0x01, 0x85, "Aloka Co., Ltd."}, { + 0x00, 0x01, 0x86, "DISCH GmbH"}, { + 0x00, 0x01, 0x87, "i2SE GmbH"}, { + 0x00, 0x01, 0x88, "LXCO Technologies ag"}, { + 0x00, 0x01, 0x89, "Refraction Technology, Inc."}, { + 0x00, 0x01, 0x8A, "ROI COMPUTER AG"}, { + 0x00, 0x01, 0x8B, "NetLinks Co., Ltd."}, { + 0x00, 0x01, 0x8C, "Mega Vision"}, { + 0x00, 0x01, 0x8D, "AudeSi Technologies"}, { + 0x00, 0x01, 0x8E, "Logitec Corporation"}, { + 0x00, 0x01, 0x8F, "Kenetec, Inc."}, { + 0x00, 0x01, 0x90, "SMK-M"}, { + 0x00, 0x01, 0x91, "SYRED Data Systems"}, { + 0x00, 0x01, 0x92, "Texas Digital Systems"}, { + 0x00, 0x01, 0x93, "Hanbyul Telecom Co., Ltd."}, { + 0x00, 0x01, 0x94, "Capital Equipment Corporation"}, { + 0x00, 0x01, 0x95, "Sena Technologies, Inc."}, { + 0x00, 0x01, 0x96, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0x97, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0x98, "Darim Vision"}, { + 0x00, 0x01, 0x99, "HeiSei Electronics"}, { + 0x00, 0x01, 0x9A, "LEUNIG GmbH"}, { + 0x00, 0x01, 0x9B, "Kyoto Microcomputer Co., Ltd."}, { + 0x00, 0x01, 0x9C, "JDS Uniphase Inc."}, { + 0x00, 0x01, 0x9D, "E-Control Systems, Inc."}, { + 0x00, 0x01, 0x9E, "ESS Technology, Inc."}, { + 0x00, 0x01, 0x9F, "Phonex Broadband"}, { + 0x00, 0x01, 0xA0, "Infinilink Corporation"}, { + 0x00, 0x01, 0xA1, "Mag-Tek, Inc."}, { + 0x00, 0x01, 0xA2, "Logical Co., Ltd."}, { + 0x00, 0x01, 0xA3, "GENESYS LOGIC, INC."}, { + 0x00, 0x01, 0xA4, "Microlink Corporation"}, { + 0x00, 0x01, 0xA5, "Nextcomm, Inc."}, { + 0x00, 0x01, 0xA6, "Scientific-Atlanta Arcodan A/S"}, { + 0x00, 0x01, 0xA7, "UNEX TECHNOLOGY CORPORATION"}, { + 0x00, 0x01, 0xA8, "Welltech Computer Co., Ltd."}, { + 0x00, 0x01, 0xA9, "BMW AG"}, { + 0x00, 0x01, 0xAA, "Airspan Communications, Ltd."}, { + 0x00, 0x01, 0xAB, "Main Street Networks"}, { + 0x00, 0x01, 0xAC, "Sitara Networks, Inc."}, { + 0x00, 0x01, 0xAD, + "Coach Master International d.b.a. CMI Worldwide, Inc."}, + { + 0x00, 0x01, 0xAE, "Trex Enterprises"}, { + 0x00, 0x01, 0xAF, "Motorola Computer Group"}, { + 0x00, 0x01, 0xB0, "Fulltek Technology Co., Ltd."}, { + 0x00, 0x01, 0xB1, "General Bandwidth"}, { + 0x00, 0x01, 0xB2, "Digital Processing Systems, Inc."}, { + 0x00, 0x01, 0xB3, "Precision Electronic Manufacturing"}, { + 0x00, 0x01, 0xB4, "Wayport, Inc."}, { + 0x00, 0x01, 0xB5, "Turin Networks, Inc."}, { + 0x00, 0x01, 0xB6, "SAEJIN T&M Co., Ltd."}, { + 0x00, 0x01, 0xB7, "Centos, Inc."}, { + 0x00, 0x01, 0xB8, "Netsensity, Inc."}, { + 0x00, 0x01, 0xB9, "SKF Condition Monitoring"}, { + 0x00, 0x01, 0xBA, "IC-Net, Inc."}, { + 0x00, 0x01, 0xBB, "Frequentis"}, { + 0x00, 0x01, 0xBC, "Brains Corporation"}, { + 0x00, 0x01, 0xBD, "Peterson Electro-Musical Products, Inc."}, { + 0x00, 0x01, 0xBE, "Gigalink Co., Ltd."}, { + 0x00, 0x01, 0xBF, "Teleforce Co., Ltd."}, { + 0x00, 0x01, 0xC0, "CompuLab, Ltd."}, { + 0x00, 0x01, 0xC1, "Exbit Technology"}, { + 0x00, 0x01, 0xC2, "ARK Research Corp."}, { + 0x00, 0x01, 0xC3, "Acromag, Inc."}, { + 0x00, 0x01, 0xC4, "NeoWave, Inc."}, { + 0x00, 0x01, 0xC5, "Simpler Networks"}, { + 0x00, 0x01, 0xC6, "Quarry Technologies"}, { + 0x00, 0x01, 0xC7, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0xC8, "THOMAS CONRAD CORP."}, { + 0x00, 0x01, 0xC8, "CONRAD CORP."}, { + 0x00, 0x01, 0xC9, "Cisco Systems, Inc."}, { + 0x00, 0x01, 0xCA, "Geocast Network Systems, Inc."}, { + 0x00, 0x01, 0xCB, "NetGame, Ltd."}, { + 0x00, 0x01, 0xCC, "Japan Total Design Communication Co., Ltd."}, { + 0x00, 0x01, 0xCD, "ARtem"}, { + 0x00, 0x01, 0xCE, "Custom Micro Products, Ltd."}, { + 0x00, 0x01, 0xCF, "Alpha Data Parallel Systems, Ltd."}, { + 0x00, 0x01, 0xD0, "VitalPoint, Inc."}, { + 0x00, 0x01, 0xD1, "CoNet Communications, Inc."}, { + 0x00, 0x01, 0xD2, "MacPower Peripherals, Ltd."}, { + 0x00, 0x01, 0xD3, "PAXCOMM, Inc."}, { + 0x00, 0x01, 0xD4, "Leisure Time, Inc."}, { + 0x00, 0x01, 0xD5, "HAEDONG INFO & COMM CO., LTD"}, { + 0x00, 0x01, 0xD6, "MAN Roland Druckmaschinen AG"}, { + 0x00, 0x01, 0xD7, "F5 Networks, Inc."}, { + 0x00, 0x01, 0xD8, "Teltronics, Inc."}, { + 0x00, 0x01, 0xD9, "Sigma, Inc."}, { + 0x00, 0x01, 0xDA, "WINCOMM Corporation"}, { + 0x00, 0x01, 0xDB, "Freecom Technologies GmbH"}, { + 0x00, 0x01, 0xDC, "Activetelco"}, { + 0x00, 0x01, 0xDD, "Avail Networks"}, { + 0x00, 0x01, 0xDE, "Trango Systems, Inc."}, { + 0x00, 0x01, 0xDF, "ISDN Communications, Ltd."}, { + 0x00, 0x01, 0xE0, "Fast Systems, Inc."}, { + 0x00, 0x01, 0xE1, "Kinpo Electronics, Inc."}, { + 0x00, 0x01, 0xE2, "Ando Electric Corporation"}, { + 0x00, 0x01, 0xE3, "Siemens AG"}, { + 0x00, 0x01, 0xE4, "Sitera, Inc."}, { + 0x00, 0x01, 0xE5, "Supernet, Inc."}, { + 0x00, 0x01, 0xE6, "Hewlett-Packard Company"}, { + 0x00, 0x01, 0xE7, "Hewlett-Packard Company"}, { + 0x00, 0x01, 0xE8, "Force10 Networks, Inc."}, { + 0x00, 0x01, 0xE9, "Litton Marine Systems B.V."}, { + 0x00, 0x01, 0xEA, "Cirilium Corp."}, { + 0x00, 0x01, 0xEB, "C-COM Corporation"}, { + 0x00, 0x01, 0xEC, "Ericsson Group"}, { + 0x00, 0x01, 0xED, "SETA Corp."}, { + 0x00, 0x01, 0xEE, "Comtrol Europe, Ltd."}, { + 0x00, 0x01, 0xEF, "Camtel Technology Corp."}, { + 0x00, 0x01, 0xF0, "Tridium, Inc."}, { + 0x00, 0x01, 0xF1, "Innovative Concepts, Inc."}, { + 0x00, 0x01, 0xF2, "Mark of the Unicorn, Inc."}, { + 0x00, 0x01, 0xF3, "QPS, Inc."}, { + 0x00, 0x01, 0xF4, "Enterasys Networks"}, { + 0x00, 0x01, 0xF5, "ERIM S.A."}, { + 0x00, 0x01, 0xF6, "Association of Musical Electronics Industry"}, { + 0x00, 0x01, 0xF7, "Image Display Systems, Inc."}, { + 0x00, 0x01, 0xF8, "Adherent Systems, Ltd."}, { + 0x00, 0x01, 0xF9, "TeraGlobal Communications Corp."}, { + 0x00, 0x01, 0xFA, "HOROSCAS"}, { + 0x00, 0x01, 0xFB, "DoTop Technology, Inc."}, { + 0x00, 0x01, 0xFC, "Keyence Corporation"}, { + 0x00, 0x01, 0xFD, "Digital Voice Systems, Inc."}, { + 0x00, 0x01, 0xFE, "DIGITAL EQUIPMENT CORPORATION"}, { + 0x00, 0x01, 0xFF, "Data Direct Networks, Inc."}, { + 0x00, 0x02, 0x00, "Net & Sys Co., Ltd."}, { + 0x00, 0x02, 0x01, "IFM Electronic gmbh"}, { + 0x00, 0x02, 0x02, "Amino Communications, Ltd."}, { + 0x00, 0x02, 0x03, "Woonsang Telecom, Inc."}, { + 0x00, 0x02, 0x04, "Bodmann Industries Elektronik GmbH"}, { + 0x00, 0x02, 0x05, "Hitachi Denshi, Ltd."}, { + 0x00, 0x02, 0x06, "Telital R&D Denmark A/S"}, { + 0x00, 0x02, 0x08, "Unify Networks, Inc."}, { + 0x00, 0x02, 0x09, "Shenzhen SED Information Technology Co., Ltd."}, + { + 0x00, 0x02, 0x0A, "Gefran Spa"}, { + 0x00, 0x02, 0x0B, "Native Networks, Inc."}, { + 0x00, 0x02, 0x0C, "Metro-Optix"}, { + 0x00, 0x02, 0x0D, "Micronpc.com"}, { + 0x00, 0x02, 0x0E, "Laurel Networks, Inc."}, { + 0x00, 0x02, 0x0F, "AATR"}, { + 0x00, 0x02, 0x10, "Fenecom"}, { + 0x00, 0x02, 0x11, "Nature Worldwide Technology Corp."}, { + 0x00, 0x02, 0x12, "SierraCom"}, { + 0x00, 0x02, 0x13, "S.D.E.L."}, { + 0x00, 0x02, 0x14, "DTVRO"}, { + 0x00, 0x02, 0x15, "Cotas Computer Technology A/B"}, { + 0x00, 0x02, 0x16, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0x17, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0x18, "Advanced Scientific Corp"}, { + 0x00, 0x02, 0x19, "Paralon Technologies"}, { + 0x00, 0x02, 0x1A, "Zuma Networks"}, { + 0x00, 0x02, 0x1B, "Kollmorgen-Servotronix"}, { + 0x00, 0x02, 0x1C, "Network Elements, Inc."}, { + 0x00, 0x02, 0x1D, "Data General Communication Ltd."}, { + 0x00, 0x02, 0x1E, "SIMTEL S.R.L."}, { + 0x00, 0x02, 0x1F, "Aculab PLC"}, { + 0x00, 0x02, 0x20, "Canon Aptex, Inc."}, { + 0x00, 0x02, 0x21, "DSP Application, Ltd."}, { + 0x00, 0x02, 0x22, "Chromisys, Inc."}, { + 0x00, 0x02, 0x23, "ClickTV"}, { + 0x00, 0x02, 0x24, "Lantern Communications, Inc."}, { + 0x00, 0x02, 0x25, "Certus Technology, Inc."}, { + 0x00, 0x02, 0x26, "XESystems, Inc."}, { + 0x00, 0x02, 0x27, "ESD GmbH"}, { + 0x00, 0x02, 0x28, "Necsom, Ltd."}, { + 0x00, 0x02, 0x29, "Adtec Corporation"}, { + 0x00, 0x02, 0x2A, "Asound Electronic"}, { + 0x00, 0x02, 0x2B, "Tamura Electric Works, Ltd."}, { + 0x00, 0x02, 0x2C, "ABB Bomem, Inc."}, { + 0x00, 0x02, 0x2D, "Agere Systems"}, { + 0x00, 0x02, 0x2E, "TEAC Corp. R& D"}, { + 0x00, 0x02, 0x2F, "P-Cube, Ltd."}, { + 0x00, 0x02, 0x30, "Intersoft Electronics"}, { + 0x00, 0x02, 0x31, "Ingersoll-Rand"}, { + 0x00, 0x02, 0x32, "Avision, Inc."}, { + 0x00, 0x02, 0x33, "Mantra Communications, Inc."}, { + 0x00, 0x02, 0x34, "Imperial Technology, Inc."}, { + 0x00, 0x02, 0x35, "Paragon Networks International"}, { + 0x00, 0x02, 0x36, "INIT GmbH"}, { + 0x00, 0x02, 0x37, "Cosmo Research Corp."}, { + 0x00, 0x02, 0x38, "Serome Technology, Inc."}, { + 0x00, 0x02, 0x39, "Visicom"}, { + 0x00, 0x02, 0x3A, "ZSK Stickmaschinen GmbH"}, { + 0x00, 0x02, 0x3B, "Redback Networks"}, { + 0x00, 0x02, 0x3C, "Creative Technology, Ltd."}, { + 0x00, 0x02, 0x3D, "NuSpeed, Inc."}, { + 0x00, 0x02, 0x3E, "Selta Telematica S.p.a"}, { + 0x00, 0x02, 0x3F, "Compal Electronics, Inc."}, { + 0x00, 0x02, 0x40, "Seedek Co., Ltd."}, { + 0x00, 0x02, 0x41, "Amer.com"}, { + 0x00, 0x02, 0x42, "Videoframe Systems"}, { + 0x00, 0x02, 0x43, "Raysis Co., Ltd."}, { + 0x00, 0x02, 0x44, "SURECOM Technology Co."}, { + 0x00, 0x02, 0x45, "Lampus Co, Ltd."}, { + 0x00, 0x02, 0x46, "All-Win Tech Co., Ltd."}, { + 0x00, 0x02, 0x47, + "Great Dragon Information Technology (Group) Co., Ltd."}, { + 0x00, 0x02, 0x48, "Pilz GmbH & Co."}, { + 0x00, 0x02, 0x49, "Aviv Infocom Co, Ltd."}, { + 0x00, 0x02, 0x4A, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0x4B, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0x4C, "SiByte, Inc."}, { + 0x00, 0x02, 0x4D, "Mannesman Dematic Colby Pty. Ltd."}, { + 0x00, 0x02, 0x4E, "Datacard Group"}, { + 0x00, 0x02, 0x4F, "IPM Datacom S.R.L."}, { + 0x00, 0x02, 0x50, "Geyser Networks, Inc."}, { + 0x00, 0x02, 0x51, "Soma Networks"}, { + 0x00, 0x02, 0x52, "Carrier Corporation"}, { + 0x00, 0x02, 0x53, "Televideo, Inc."}, { + 0x00, 0x02, 0x54, "WorldGate"}, { + 0x00, 0x02, 0x55, "IBM Corporation"}, { + 0x00, 0x02, 0x56, "Alpha Processor, Inc."}, { + 0x00, 0x02, 0x57, "Microcom Corp."}, { + 0x00, 0x02, 0x58, "Flying Packets Communications"}, { + 0x00, 0x02, 0x59, + "Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group"}, + { + 0x00, 0x02, 0x5A, "Catena Networks"}, { + 0x00, 0x02, 0x5B, "Cambridge Silicon Radio"}, { + 0x00, 0x02, 0x5C, "SCI Systems (Kunshan) Co., Ltd."}, { + 0x00, 0x02, 0x5D, "Calix Networks"}, { + 0x00, 0x02, 0x5E, "High Technology Ltd"}, { + 0x00, 0x02, 0x5F, "Nortel Networks"}, { + 0x00, 0x02, 0x60, "Accordion Networks, Inc."}, { + 0x00, 0x02, 0x61, "i3 Micro Technology AB"}, { + 0x00, 0x02, 0x62, "Soyo Group Soyo Com Tech Co., Ltd"}, { + 0x00, 0x02, 0x63, "UPS Manufacturing SRL"}, { + 0x00, 0x02, 0x64, "AudioRamp.com"}, { + 0x00, 0x02, 0x65, "Virditech Co. Ltd."}, { + 0x00, 0x02, 0x66, "Thermalogic Corporation"}, { + 0x00, 0x02, 0x67, "NODE RUNNER, INC."}, { + 0x00, 0x02, 0x68, "Harris Government Communications"}, { + 0x00, 0x02, 0x69, "Nadatel Co., Ltd"}, { + 0x00, 0x02, 0x6A, "Cocess Telecom Co., Ltd."}, { + 0x00, 0x02, 0x6B, "BCM Computers Co., Ltd."}, { + 0x00, 0x02, 0x6C, "Philips CFT"}, { + 0x00, 0x02, 0x6D, "Adept Telecom"}, { + 0x00, 0x02, 0x6E, "NeGeN Access, Inc."}, { + 0x00, 0x02, 0x6F, "Senao International Co., Ltd."}, { + 0x00, 0x02, 0x70, "Crewave Co., Ltd."}, { + 0x00, 0x02, 0x71, "Vpacket Communications"}, { + 0x00, 0x02, 0x72, "CC&C Technologies, Inc."}, { + 0x00, 0x02, 0x73, "Coriolis Networks"}, { + 0x00, 0x02, 0x74, "Tommy Technologies Corp."}, { + 0x00, 0x02, 0x75, "SMART Technologies, Inc."}, { + 0x00, 0x02, 0x76, "Primax Electronics Ltd."}, { + 0x00, 0x02, 0x77, "Cash Systemes Industrie"}, { + 0x00, 0x02, 0x78, "Samsung Electro-Mechanics Co., Ltd."}, { + 0x00, 0x02, 0x79, "Control Applications, Ltd."}, { + 0x00, 0x02, 0x7A, "IOI Technology Corporation"}, { + 0x00, 0x02, 0x7B, "Amplify Net, Inc."}, { + 0x00, 0x02, 0x7C, "Trilithic, Inc."}, { + 0x00, 0x02, 0x7D, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0x7E, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0x7F, "ask-technologies.com"}, { + 0x00, 0x02, 0x80, "Mu Net, Inc."}, { + 0x00, 0x02, 0x81, "Madge Networks Limited"}, { + 0x00, 0x02, 0x82, "ViaClix, Inc."}, { + 0x00, 0x02, 0x83, "Spectrum Controls, Inc."}, { + 0x00, 0x02, 0x84, "Alstom T&D P&C"}, { + 0x00, 0x02, 0x85, "Riverstone Networks"}, { + 0x00, 0x02, 0x86, "Occam Networks"}, { + 0x00, 0x02, 0x87, "Adapcom"}, { + 0x00, 0x02, 0x88, "GLOBAL VILLAGE COMMUNICATION"}, { + 0x00, 0x02, 0x89, "DNE Technologies"}, { + 0x00, 0x02, 0x8A, "Ambit Microsystems Corporation"}, { + 0x00, 0x02, 0x8B, "VDSL Systems OY"}, { + 0x00, 0x02, 0x8C, "Micrel-Synergy Semiconductor"}, { + 0x00, 0x02, 0x8D, "Movita Technologies, Inc."}, { + 0x00, 0x02, 0x8E, "Rapid 5 Networks, Inc."}, { + 0x00, 0x02, 0x8F, "Globetek, Inc."}, { + 0x00, 0x02, 0x90, "Woorigisool, Inc."}, { + 0x00, 0x02, 0x91, "Open Network Co., Ltd."}, { + 0x00, 0x02, 0x92, "Logic Innovations, Inc."}, { + 0x00, 0x02, 0x93, "Solid Data Systems"}, { + 0x00, 0x02, 0x94, "Tokyo Sokushin Co., Ltd."}, { + 0x00, 0x02, 0x95, "IP.Access Limited"}, { + 0x00, 0x02, 0x96, "Lectron Co,. Ltd."}, { + 0x00, 0x02, 0x97, "C-COR.net"}, { + 0x00, 0x02, 0x98, "Broadframe Corporation"}, { + 0x00, 0x02, 0x99, "Apex, Inc."}, { + 0x00, 0x02, 0x9A, "Storage Apps"}, { + 0x00, 0x02, 0x9B, "Kreatel Communications AB"}, { + 0x00, 0x02, 0x9C, "3COM"}, { + 0x00, 0x02, 0x9D, "Merix Corp."}, { + 0x00, 0x02, 0x9E, "Information Equipment Co., Ltd."}, { + 0x00, 0x02, 0x9F, "L-3 Communication Aviation Recorders"}, { + 0x00, 0x02, 0xA0, "Flatstack Ltd."}, { + 0x00, 0x02, 0xA1, "World Wide Packets"}, { + 0x00, 0x02, 0xA2, "Hilscher GmbH"}, { + 0x00, 0x02, 0xA3, "ABB Power Automation"}, { + 0x00, 0x02, 0xA4, "AddPac Technology Co., Ltd."}, { + 0x00, 0x02, 0xA5, "Compaq Computer Corporation"}, { + 0x00, 0x02, 0xA6, "Effinet Systems Co., Ltd."}, { + 0x00, 0x02, 0xA7, "Vivace Networks"}, { + 0x00, 0x02, 0xA8, "Air Link Technology"}, { + 0x00, 0x02, 0xA9, "RACOM, s.r.o."}, { + 0x00, 0x02, 0xAA, "PLcom Co., Ltd."}, { + 0x00, 0x02, 0xAB, "CTC Union Technologies Co., Ltd."}, { + 0x00, 0x02, 0xAC, "3PAR data"}, { + 0x00, 0x02, 0xAD, "Asahi Optical Co., Ltd."}, { + 0x00, 0x02, 0xAE, "Scannex Electronics Ltd."}, { + 0x00, 0x02, 0xAF, "TeleCruz Technology, Inc."}, { + 0x00, 0x02, 0xB0, "Hokubu Communication & Industrial Co., Ltd."}, { + 0x00, 0x02, 0xB1, "Anritsu, Ltd."}, { + 0x00, 0x02, 0xB2, "Cablevision"}, { + 0x00, 0x02, 0xB3, "Intel Corporation"}, { + 0x00, 0x02, 0xB4, "DAPHNE"}, { + 0x00, 0x02, 0xB5, "Avnet, Inc."}, { + 0x00, 0x02, 0xB6, "Acrosser Technology Co., Ltd."}, { + 0x00, 0x02, 0xB7, "Watanabe Electric Industry Co., Ltd."}, { + 0x00, 0x02, 0xB8, "WHI KONSULT AB"}, { + 0x00, 0x02, 0xB9, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0xBA, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0xBB, "Continuous Computing"}, { + 0x00, 0x02, 0xBC, "LVL 7 Systems, Inc."}, { + 0x00, 0x02, 0xBD, "Bionet Co., Ltd."}, { + 0x00, 0x02, 0xBE, "Totsu Engineering, Inc."}, { + 0x00, 0x02, 0xBF, "dotRocket, Inc."}, { + 0x00, 0x02, 0xC0, "Bencent Tzeng Industry Co., Ltd."}, { + 0x00, 0x02, 0xC1, "Innovative Electronic Designs, Inc."}, { + 0x00, 0x02, 0xC2, "Net Vision Telecom"}, { + 0x00, 0x02, 0xC3, "Arelnet Ltd."}, { + 0x00, 0x02, 0xC4, "Vector International BUBA"}, { + 0x00, 0x02, 0xC5, "Evertz Microsystems Ltd."}, { + 0x00, 0x02, 0xC6, "Data Track Technology PLC"}, { + 0x00, 0x02, 0xC7, "ALPS ELECTRIC Co., Ltd."}, { + 0x00, 0x02, 0xC8, "Technocom Communications Technology (pte) Ltd"}, + { + 0x00, 0x02, 0xC9, "Mellanox Technologies"}, { + 0x00, 0x02, 0xCA, "EndPoints, Inc."}, { + 0x00, 0x02, 0xCB, "TriState Ltd."}, { + 0x00, 0x02, 0xCC, "M.C.C.I"}, { + 0x00, 0x02, 0xCD, "TeleDream, Inc."}, { + 0x00, 0x02, 0xCE, "FoxJet, Inc."}, { + 0x00, 0x02, 0xCF, "ZyGate Communications, Inc."}, { + 0x00, 0x02, 0xD0, "Comdial Corporation"}, { + 0x00, 0x02, 0xD1, "Vivotek, Inc."}, { + 0x00, 0x02, 0xD2, "Workstation AG"}, { + 0x00, 0x02, 0xD3, "NetBotz, Inc."}, { + 0x00, 0x02, 0xD4, "PDA Peripherals, Inc."}, { + 0x00, 0x02, 0xD5, "ACR"}, { + 0x00, 0x02, 0xD6, "NICE Systems"}, { + 0x00, 0x02, 0xD7, "EMPEG Ltd"}, { + 0x00, 0x02, 0xD8, "BRECIS Communications Corporation"}, { + 0x00, 0x02, 0xD9, "Reliable Controls"}, { + 0x00, 0x02, 0xDA, "ExiO Communications, Inc."}, { + 0x00, 0x02, 0xDB, "NETSEC"}, { + 0x00, 0x02, 0xDC, "Fujitsu General Limited"}, { + 0x00, 0x02, 0xDD, "Bromax Communications, Ltd."}, { + 0x00, 0x02, 0xDE, "Astrodesign, Inc."}, { + 0x00, 0x02, 0xDF, "Net Com Systems, Inc."}, { + 0x00, 0x02, 0xE0, "ETAS GmbH"}, { + 0x00, 0x02, 0xE1, "Integrated Network Corporation"}, { + 0x00, 0x02, 0xE2, "NDC Infared Engineering"}, { + 0x00, 0x02, 0xE3, "LITE-ON Communications, Inc."}, { + 0x00, 0x02, 0xE4, "JC HYUN Systems, Inc."}, { + 0x00, 0x02, 0xE5, "Timeware Ltd."}, { + 0x00, 0x02, 0xE6, "Gould Instrument Systems, Inc."}, { + 0x00, 0x02, 0xE7, "CAB GmbH & Co KG"}, { + 0x00, 0x02, 0xE8, "E.D.&A."}, { + 0x00, 0x02, 0xE9, "CS Systemes De Securite - C3S"}, { + 0x00, 0x02, 0xEA, "Videonics, Inc."}, { + 0x00, 0x02, 0xEB, "Pico Communications"}, { + 0x00, 0x02, 0xEC, "Maschoff Design Engineering"}, { + 0x00, 0x02, 0xED, "DXO Telecom Co., Ltd."}, { + 0x00, 0x02, 0xEE, "Nokia Danmark A/S"}, { + 0x00, 0x02, 0xEF, "CCC Network Systems Group Ltd."}, { + 0x00, 0x02, 0xF0, "AME Optimedia Technology Co., Ltd."}, { + 0x00, 0x02, 0xF1, "Pinetron Co., Ltd."}, { + 0x00, 0x02, 0xF2, "eDevice, Inc."}, { + 0x00, 0x02, 0xF3, "Media Serve Co., Ltd."}, { + 0x00, 0x02, 0xF4, "PCTEL, Inc."}, { + 0x00, 0x02, 0xF5, "VIVE Synergies, Inc."}, { + 0x00, 0x02, 0xF6, "Equipe Communications"}, { + 0x00, 0x02, 0xF7, "ARM"}, { + 0x00, 0x02, 0xF8, "SEAKR Engineering, Inc."}, { + 0x00, 0x02, 0xF9, "Mimos Semiconductor SDN BHD"}, { + 0x00, 0x02, 0xFA, "DX Antenna Co., Ltd."}, { + 0x00, 0x02, 0xFB, "Baumuller Aulugen-Systemtechnik GmbH"}, { + 0x00, 0x02, 0xFC, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0xFD, "Cisco Systems, Inc."}, { + 0x00, 0x02, 0xFE, "Viditec, Inc."}, { + 0x00, 0x02, 0xFF, "Handan Broad InfoCom"}, { + 0x00, 0x03, 0x00, "NetContinuum, Inc."}, { + 0x00, 0x03, 0x01, "Avantas Networks Corporation"}, { + 0x00, 0x03, 0x02, "Oasys Telecom, Inc."}, { + 0x00, 0x03, 0x03, "JAMA Electronics Co., Ltd."}, { + 0x00, 0x03, 0x04, "Pacific Broadband Communications"}, { + 0x00, 0x03, 0x05, "Smart Network Devices GmbH"}, { + 0x00, 0x03, 0x06, "Fusion In Tech Co., Ltd."}, { + 0x00, 0x03, 0x07, "Secure Works, Inc."}, { + 0x00, 0x03, 0x08, "AM Communications, Inc."}, { + 0x00, 0x03, 0x09, "Texcel Technology PLC"}, { + 0x00, 0x03, 0x0A, "Argus Technologies"}, { + 0x00, 0x03, 0x0B, "Hunter Technology, Inc."}, { + 0x00, 0x03, 0x0C, "Telesoft Technologies Ltd."}, { + 0x00, 0x03, 0x0D, "Uniwill Computer Corp."}, { + 0x00, 0x03, 0x0E, "Core Communications Co., Ltd."}, { + 0x00, 0x03, 0x0F, "Digital China (Shanghai) Networks Ltd."}, { + 0x00, 0x03, 0x10, "Link Evolution Corp."}, { + 0x00, 0x03, 0x11, "Micro Technology Co., Ltd."}, { + 0x00, 0x03, 0x12, "TR-Systemtechnik GmbH"}, { + 0x00, 0x03, 0x13, "Access Media SPA"}, { + 0x00, 0x03, 0x14, "Teleware Network Systems"}, { + 0x00, 0x03, 0x15, "Cidco Incorporated"}, { + 0x00, 0x03, 0x16, "Nobell Communications, Inc."}, { + 0x00, 0x03, 0x17, "Merlin Systems, Inc."}, { + 0x00, 0x03, 0x18, "Cyras Systems, Inc."}, { + 0x00, 0x03, 0x19, "Infineon AG"}, { + 0x00, 0x03, 0x1A, "Beijing Broad Telecom Ltd., China"}, { + 0x00, 0x03, 0x1B, "Cellvision Systems, Inc."}, { + 0x00, 0x03, 0x1C, "Svenska Hardvarufabriken AB"}, { + 0x00, 0x03, 0x1D, "Taiwan Commate Computer, Inc."}, { + 0x00, 0x03, 0x1E, "Optranet, Inc."}, { + 0x00, 0x03, 0x1F, "Condev Ltd."}, { + 0x00, 0x03, 0x20, "Xpeed, Inc."}, { + 0x00, 0x03, 0x21, "Reco Research Co., Ltd."}, { + 0x00, 0x03, 0x22, "IDIS Co., Ltd."}, { + 0x00, 0x03, 0x23, "Cornet Technology, Inc."}, { + 0x00, 0x03, 0x24, "Tottori SANYO Electric Co., Ltd."}, { + 0x00, 0x03, 0x25, "Arima Computer Corp."}, { + 0x00, 0x03, 0x26, "Iwasaki Information Systems Co., Ltd."}, { + 0x00, 0x03, 0x27, "ACT'L"}, { + 0x00, 0x03, 0x29, "F3, Inc."}, { + 0x00, 0x03, 0x2A, "UniData Communication Systems, Inc."}, { + 0x00, 0x03, 0x2B, "GAI Datenfunksysteme GmbH"}, { + 0x00, 0x03, 0x2C, "ABB Industrie AG"}, { + 0x00, 0x03, 0x2D, "IBASE Technology, Inc."}, { + 0x00, 0x03, 0x2E, "Scope Information Management, Ltd."}, { + 0x00, 0x03, 0x2F, "Global Sun Technology, Inc."}, { + 0x00, 0x03, 0x30, "Imagenics, Co., Ltd."}, { + 0x00, 0x03, 0x31, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0x32, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0x33, "Digitel Co., Ltd."}, { + 0x00, 0x03, 0x34, "Newport Electronics"}, { + 0x00, 0x03, 0x35, "Mirae Technology"}, { + 0x00, 0x03, 0x36, "Zetes Technologies"}, { + 0x00, 0x03, 0x37, "Vaone, Inc."}, { + 0x00, 0x03, 0x38, "Oak Technology"}, { + 0x00, 0x03, 0x39, "Eurologic Systems, Ltd."}, { + 0x00, 0x03, 0x3A, "Silicon Wave, Inc."}, { + 0x00, 0x03, 0x3B, "TAMI Tech Co., Ltd."}, { + 0x00, 0x03, 0x3C, "Daiden Co., Ltd."}, { + 0x00, 0x03, 0x3D, "ILSHin Lab"}, { + 0x00, 0x03, 0x3E, "Tateyama System Laboratory Co., Ltd."}, { + 0x00, 0x03, 0x3F, "BigBand Networks, Ltd."}, { + 0x00, 0x03, 0x40, "Floware Wireless Systems, Ltd."}, { + 0x00, 0x03, 0x41, "Axon Digital Design"}, { + 0x00, 0x03, 0x42, "Nortel Networks"}, { + 0x00, 0x03, 0x43, "Martin Professional A/S"}, { + 0x00, 0x03, 0x44, "Tietech.Co., Ltd."}, { + 0x00, 0x03, 0x45, "Routrek Networks Corporation"}, { + 0x00, 0x03, 0x46, "Hitachi Kokusai Electric, Inc."}, { + 0x00, 0x03, 0x47, "Intel Corporation"}, { + 0x00, 0x03, 0x48, "Norscan Instruments, Ltd."}, { + 0x00, 0x03, 0x49, "Vidicode Datacommunicatie B.V."}, { + 0x00, 0x03, 0x4A, "RIAS Corporation"}, { + 0x00, 0x03, 0x4B, "Nortel Networks"}, { + 0x00, 0x03, 0x4C, "Shanghai DigiVision Technology Co., Ltd."}, { + 0x00, 0x03, 0x4D, "Chiaro Networks, Ltd."}, { + 0x00, 0x03, 0x4E, "Pos Data Company, Ltd."}, { + 0x00, 0x03, 0x4F, "Sur-Gard Security"}, { + 0x00, 0x03, 0x50, "BTICINO SPA"}, { + 0x00, 0x03, 0x51, "Diebold, Inc."}, { + 0x00, 0x03, 0x52, "Colubris Networks"}, { + 0x00, 0x03, 0x53, "Mitac, Inc."}, { + 0x00, 0x03, 0x54, "Fiber Logic Communications"}, { + 0x00, 0x03, 0x55, "TeraBeam Internet Systems"}, { + 0x00, 0x03, 0x56, "Wincor Nixdorf GmbH & Co KG"}, { + 0x00, 0x03, 0x57, "Intervoice-Brite, Inc."}, { + 0x00, 0x03, 0x58, "iCable System Co., Ltd."}, { + 0x00, 0x03, 0x59, "DigitalSis"}, { + 0x00, 0x03, 0x5A, "Photron Limited"}, { + 0x00, 0x03, 0x5B, "BridgeWave Communications"}, { + 0x00, 0x03, 0x5C, "Saint Song Corp."}, { + 0x00, 0x03, 0x5D, "Bosung Hi-Net Co., Ltd."}, { + 0x00, 0x03, 0x5E, "Metropolitan Area Networks, Inc."}, { + 0x00, 0x03, 0x5F, "Schuehle Mess - und. Kontrollsysteme"}, { + 0x00, 0x03, 0x60, "PAC Interactive Technology, Inc."}, { + 0x00, 0x03, 0x61, "Widcomm, Inc."}, { + 0x00, 0x03, 0x62, "Vodtel Communications, Inc."}, { + 0x00, 0x03, 0x63, "Miraesys Co., Ltd."}, { + 0x00, 0x03, 0x64, "Scenix Semiconductor, Inc."}, { + 0x00, 0x03, 0x65, "Kira Information & Communications, Ltd."}, { + 0x00, 0x03, 0x66, "ASM Pacific Technology"}, { + 0x00, 0x03, 0x67, "Jasmine Networks, Inc."}, { + 0x00, 0x03, 0x68, "Embedone Co., Ltd."}, { + 0x00, 0x03, 0x69, "Nippon Antenna Co., Ltd."}, { + 0x00, 0x03, 0x6A, "Mainnet, Ltd."}, { + 0x00, 0x03, 0x6B, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0x6C, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0x6D, "Runtop, Inc."}, { + 0x00, 0x03, 0x6E, "Nicon Systems (Pty) Limited"}, { + 0x00, 0x03, 0x6F, "Telsey SPA"}, { + 0x00, 0x03, 0x70, "NXTV, Inc."}, { + 0x00, 0x03, 0x71, "Acomz Networks Corp."}, { + 0x00, 0x03, 0x72, "ULAN"}, { + 0x00, 0x03, 0x73, "Aselsan A.S"}, { + 0x00, 0x03, 0x74, "Hunter Watertech"}, { + 0x00, 0x03, 0x75, "NetMedia, Inc."}, { + 0x00, 0x03, 0x76, "Graphtec Technology, Inc."}, { + 0x00, 0x03, 0x77, "Gigabit Wireless"}, { + 0x00, 0x03, 0x78, "HUMAX Co., Ltd."}, { + 0x00, 0x03, 0x79, "Proscend Communications, Inc."}, { + 0x00, 0x03, 0x7A, "Taiyo Yuden Co., Ltd."}, { + 0x00, 0x03, 0x7B, "IDEC IZUMI Corporation"}, { + 0x00, 0x03, 0x7C, "Coax Media"}, { + 0x00, 0x03, 0x7D, "Stellcom"}, { + 0x00, 0x03, 0x7E, "PORTech Communications, Inc."}, { + 0x00, 0x03, 0x7F, "Atheros Communications, Inc."}, { + 0x00, 0x03, 0x80, "SSH Communications Security Corp."}, { + 0x00, 0x03, 0x81, "Ingenico International"}, { + 0x00, 0x03, 0x82, "A-One Co., Ltd."}, { + 0x00, 0x03, 0x83, "Metera Networks, Inc."}, { + 0x00, 0x03, 0x84, "AETA"}, { + 0x00, 0x03, 0x85, "Actelis Networks, Inc."}, { + 0x00, 0x03, 0x86, "Ho Net, Inc."}, { + 0x00, 0x03, 0x87, "Blaze Network Products"}, { + 0x00, 0x03, 0x88, "Fastfame Technology Co., Ltd."}, { + 0x00, 0x03, 0x89, "Plantronics"}, { + 0x00, 0x03, 0x8A, "America Online, Inc."}, { + 0x00, 0x03, 0x8B, "PLUS-ONE I&T, Inc."}, { + 0x00, 0x03, 0x8C, "Total Impact"}, { + 0x00, 0x03, 0x8D, "PCS Revenue Control Systems, Inc."}, { + 0x00, 0x03, 0x8E, "Atoga Systems, Inc."}, { + 0x00, 0x03, 0x8F, "Weinschel Corporation"}, { + 0x00, 0x03, 0x90, "Digital Video Communications, Inc."}, { + 0x00, 0x03, 0x92, "Hyundai Teletek Co., Ltd."}, { + 0x00, 0x03, 0x93, "Apple Computer, Inc."}, { + 0x00, 0x03, 0x94, "Connect One"}, { + 0x00, 0x03, 0x95, "California Amplifier"}, { + 0x00, 0x03, 0x96, "EZ Cast Co., Ltd."}, { + 0x00, 0x03, 0x97, "Watchfront Electronics"}, { + 0x00, 0x03, 0x98, "WISI"}, { + 0x00, 0x03, 0x99, + "Dongju Informations & Communications Co., Ltd."}, { + 0x00, 0x03, 0x9A, "nSine, Ltd."}, { + 0x00, 0x03, 0x9B, "NetChip Technology, Inc."}, { + 0x00, 0x03, 0x9C, "OptiMight Communications, Inc."}, { + 0x00, 0x03, 0x9D, "BENQ CORPORATION"}, { + 0x00, 0x03, 0x9E, "Tera System Co., Ltd."}, { + 0x00, 0x03, 0x9F, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0xA0, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0xA1, "HIPER Information & Communication, Inc."}, { + 0x00, 0x03, 0xA2, "Catapult Communications"}, { + 0x00, 0x03, 0xA3, "MAVIX, Ltd."}, { + 0x00, 0x03, 0xA4, "Data Storage and Information Management"}, { + 0x00, 0x03, 0xA5, "Medea Corporation"}, { + 0x00, 0x03, 0xA7, "Unixtar Technology, Inc."}, { + 0x00, 0x03, 0xA8, "IDOT Computers, Inc."}, { + 0x00, 0x03, 0xA9, "AXCENT Media AG"}, { + 0x00, 0x03, 0xAA, "Watlow"}, { + 0x00, 0x03, 0xAB, "Bridge Information Systems"}, { + 0x00, 0x03, 0xAC, "Fronius Schweissmaschinen"}, { + 0x00, 0x03, 0xAD, "Emerson Energy Systems AB"}, { + 0x00, 0x03, 0xAE, "Allied Advanced Manufacturing Pte, Ltd."}, { + 0x00, 0x03, 0xAF, "Paragea Communications"}, { + 0x00, 0x03, 0xB0, "Xsense Technology Corp."}, { + 0x00, 0x03, 0xB1, "Abbott Laboratories HPD"}, { + 0x00, 0x03, 0xB2, "Radware"}, { + 0x00, 0x03, 0xB3, "IA Link Systems Co., Ltd."}, { + 0x00, 0x03, 0xB4, "Macrotek International Corp."}, { + 0x00, 0x03, 0xB5, "Entra Technology Co."}, { + 0x00, 0x03, 0xB6, "QSI Corporation"}, { + 0x00, 0x03, 0xB7, "ZACCESS Systems"}, { + 0x00, 0x03, 0xB8, "NetKit Solutions, LLC"}, { + 0x00, 0x03, 0xB9, "Hualong Telecom Co., Ltd."}, { + 0x00, 0x03, 0xBA, "Sun Microsystems"}, { + 0x00, 0x03, 0xBB, "Signal Communications Limited"}, { + 0x00, 0x03, 0xBC, "COT GmbH"}, { + 0x00, 0x03, 0xBD, "OmniCluster Technologies, Inc."}, { + 0x00, 0x03, 0xBE, "Netility"}, { + 0x00, 0x03, 0xBF, "Centerpoint Broadband Technologies, Inc."}, { + 0x00, 0x03, 0xC0, "RFTNC Co., Ltd."}, { + 0x00, 0x03, 0xC1, "Packet Dynamics Ltd"}, { + 0x00, 0x03, 0xC2, "Solphone K.K."}, { + 0x00, 0x03, 0xC3, "Micronik Multimedia"}, { + 0x00, 0x03, 0xC4, "Tomra Systems ASA"}, { + 0x00, 0x03, 0xC5, "Mobotix AG"}, { + 0x00, 0x03, 0xC6, "ICUE Systems, Inc."}, { + 0x00, 0x03, 0xC7, "hopf Elektronik GmbH"}, { + 0x00, 0x03, 0xC8, "CML Emergency Services"}, { + 0x00, 0x03, 0xC9, "TECOM Co., Ltd."}, { + 0x00, 0x03, 0xCA, "MTS Systems Corp."}, { + 0x00, 0x03, 0xCB, "Nippon Systems Development Co., Ltd."}, { + 0x00, 0x03, 0xCC, "Momentum Computer, Inc."}, { + 0x00, 0x03, 0xCD, "Clovertech, Inc."}, { + 0x00, 0x03, 0xCE, "ETEN Technologies, Inc."}, { + 0x00, 0x03, 0xCF, "Muxcom, Inc."}, { + 0x00, 0x03, 0xD0, "KOANKEISO Co., Ltd."}, { + 0x00, 0x03, 0xD1, "Takaya Corporation"}, { + 0x00, 0x03, 0xD2, "Crossbeam Systems, Inc."}, { + 0x00, 0x03, 0xD3, "Internet Energy Systems, Inc."}, { + 0x00, 0x03, 0xD4, "Alloptic, Inc."}, { + 0x00, 0x03, 0xD5, "Advanced Communications Co., Ltd."}, { + 0x00, 0x03, 0xD6, "RADVision, Ltd."}, { + 0x00, 0x03, 0xD7, "NextNet Wireless, Inc."}, { + 0x00, 0x03, 0xD8, "iMPath Networks, Inc."}, { + 0x00, 0x03, 0xD9, "Secheron SA"}, { + 0x00, 0x03, 0xDA, "Takamisawa Cybernetics Co., Ltd."}, { + 0x00, 0x03, 0xDB, "Apogee Electronics Corp."}, { + 0x00, 0x03, 0xDC, "Lexar Media, Inc."}, { + 0x00, 0x03, 0xDD, "Comark Corp."}, { + 0x00, 0x03, 0xDE, "OTC Wireless"}, { + 0x00, 0x03, 0xDF, "Desana Systems"}, { + 0x00, 0x03, 0xE0, "RadioFrame Networks, Inc."}, { + 0x00, 0x03, 0xE1, "Winmate Communication, Inc."}, { + 0x00, 0x03, 0xE2, "Comspace Corporation"}, { + 0x00, 0x03, 0xE3, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0xE4, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0xE5, "Hermstedt SG"}, { + 0x00, 0x03, 0xE6, "Entone Technologies, Inc."}, { + 0x00, 0x03, 0xE7, "Logostek Co. Ltd."}, { + 0x00, 0x03, 0xE8, "Wavelength Digital Limited"}, { + 0x00, 0x03, 0xE9, "Akara Canada, Inc."}, { + 0x00, 0x03, 0xEA, "Mega System Technologies, Inc."}, { + 0x00, 0x03, 0xEB, "Atrica"}, { + 0x00, 0x03, 0xEC, "ICG Research, Inc."}, { + 0x00, 0x03, 0xED, "Shinkawa Electric Co., Ltd."}, { + 0x00, 0x03, 0xEE, "MKNet Corporation"}, { + 0x00, 0x03, 0xEF, "Oneline AG"}, { + 0x00, 0x03, 0xF0, "Redfern Broadband Networks"}, { + 0x00, 0x03, 0xF1, "Cicada Semiconductor, Inc."}, { + 0x00, 0x03, 0xF2, "Seneca Networks"}, { + 0x00, 0x03, 0xF3, "Dazzle Multimedia, Inc."}, { + 0x00, 0x03, 0xF4, "NetBurner"}, { + 0x00, 0x03, 0xF5, "Chip2Chip"}, { + 0x00, 0x03, 0xF6, "Allegro Networks, Inc."}, { + 0x00, 0x03, 0xF7, "Plast-Control GmbH"}, { + 0x00, 0x03, 0xF8, "SanCastle Technologies, Inc."}, { + 0x00, 0x03, 0xF9, "Pleiades Communications, Inc."}, { + 0x00, 0x03, 0xFA, "TiMetra Networks"}, { + 0x00, 0x03, 0xFB, "Toko Seiki Company, Ltd."}, { + 0x00, 0x03, 0xFC, "Intertex Data AB"}, { + 0x00, 0x03, 0xFD, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0xFE, "Cisco Systems, Inc."}, { + 0x00, 0x03, 0xFF, "Connectix"}, { + 0x00, 0x04, 0x00, "LEXMARK INTERNATIONAL, INC."}, { + 0x00, 0x04, 0x01, "Osaki Electric Co., Ltd."}, { + 0x00, 0x04, 0x02, "Nexsan Technologies, Ltd."}, { + 0x00, 0x04, 0x03, "Nexsi Corporation"}, { + 0x00, 0x04, 0x04, "Makino Milling Machine Co., Ltd."}, { + 0x00, 0x04, 0x05, "ACN Technologies"}, { + 0x00, 0x04, 0x06, "Fa. Metabox AG"}, { + 0x00, 0x04, 0x07, "Topcon Positioning Systems, Inc."}, { + 0x00, 0x04, 0x08, "Sanko Electronics Co., Ltd."}, { + 0x00, 0x04, 0x09, "Cratos Networks"}, { + 0x00, 0x04, 0x0A, "Sage Systems"}, { + 0x00, 0x04, 0x0B, "3com Europe Ltd."}, { + 0x00, 0x04, 0x0C, "KANNO Work's Ltd."}, { + 0x00, 0x04, 0x0D, "Avaya, Inc."}, { + 0x00, 0x04, 0x0E, "AVM GmbH"}, { + 0x00, 0x04, 0x0F, "Asus Network Technologies, Inc."}, { + 0x00, 0x04, 0x10, "Spinnaker Networks, Inc."}, { + 0x00, 0x04, 0x11, "Inkra Networks, Inc."}, { + 0x00, 0x04, 0x12, "WaveSmith Networks, Inc."}, { + 0x00, 0x04, 0x13, "SNOM Technology AG"}, { + 0x00, 0x04, 0x14, "Umezawa Musen Denki Co., Ltd."}, { + 0x00, 0x04, 0x15, "Rasteme Systems Co., Ltd."}, { + 0x00, 0x04, 0x16, "Parks S/A Comunicacoes Digitais"}, { + 0x00, 0x04, 0x17, "ELAU AG"}, { + 0x00, 0x04, 0x18, "Teltronic S.A.U."}, { + 0x00, 0x04, 0x19, "Fibercycle Networks, Inc."}, { + 0x00, 0x04, 0x1A, "ines GmbH"}, { + 0x00, 0x04, 0x1B, "Digital Interfaces Ltd."}, { + 0x00, 0x04, 0x1C, "ipDialog, Inc."}, { + 0x00, 0x04, 0x1D, "Corega of America"}, { + 0x00, 0x04, 0x1E, "Shikoku Instrumentation Co., Ltd."}, { + 0x00, 0x04, 0x1F, "Sony Computer Entertainment, Inc."}, { + 0x00, 0x04, 0x20, "Slim Devices, Inc."}, { + 0x00, 0x04, 0x21, "Ocular Networks"}, { + 0x00, 0x04, 0x22, "Gordon Kapes, Inc."}, { + 0x00, 0x04, 0x23, "Intel Corporation"}, { + 0x00, 0x04, 0x24, "TMC s.r.l."}, { + 0x00, 0x04, 0x25, "Atmel Corporation"}, { + 0x00, 0x04, 0x26, "Autosys"}, { + 0x00, 0x04, 0x27, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x28, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x29, "Pixord Corporation"}, { + 0x00, 0x04, 0x2A, "Wireless Networks, Inc."}, { + 0x00, 0x04, 0x2B, "IT Access Co., Ltd."}, { + 0x00, 0x04, 0x2C, "Minet, Inc."}, { + 0x00, 0x04, 0x2D, "Sarian Systems, Ltd."}, { + 0x00, 0x04, 0x2E, "Netous Technologies, Ltd."}, { + 0x00, 0x04, 0x2F, "International Communications Products, Inc."}, { + 0x00, 0x04, 0x30, "Netgem"}, { + 0x00, 0x04, 0x31, "GlobalStreams, Inc."}, { + 0x00, 0x04, 0x32, "Voyetra Turtle Beach, Inc."}, { + 0x00, 0x04, 0x33, "Cyberboard A/S"}, { + 0x00, 0x04, 0x34, "Accelent Systems, Inc."}, { + 0x00, 0x04, 0x35, "Comptek International, Inc."}, { + 0x00, 0x04, 0x36, "ELANsat Technologies, Inc."}, { + 0x00, 0x04, 0x37, "Powin Information Technology, Inc."}, { + 0x00, 0x04, 0x38, "Nortel Networks"}, { + 0x00, 0x04, 0x39, "Rosco Entertainment Technology, Inc."}, { + 0x00, 0x04, 0x3A, "Intelligent Telecommunications, Inc."}, { + 0x00, 0x04, 0x3B, "Lava Computer Mfg., Inc."}, { + 0x00, 0x04, 0x3C, "SONOS Co., Ltd."}, { + 0x00, 0x04, 0x3D, "INDEL AG"}, { + 0x00, 0x04, 0x3E, "Telencomm"}, { + 0x00, 0x04, 0x3F, "Electronic Systems Technology, Inc."}, { + 0x00, 0x04, 0x40, "cyberPIXIE, Inc."}, { + 0x00, 0x04, 0x41, "Half Dome Systems, Inc."}, { + 0x00, 0x04, 0x42, "NACT"}, { + 0x00, 0x04, 0x43, "Agilent Technologies, Inc."}, { + 0x00, 0x04, 0x44, "Western Multiplex Corporation"}, { + 0x00, 0x04, 0x45, "LMS Skalar Instruments GmbH"}, { + 0x00, 0x04, 0x46, "CYZENTECH Co., Ltd."}, { + 0x00, 0x04, 0x47, "Acrowave Systems Co., Ltd."}, { + 0x00, 0x04, 0x48, "Polaroid Professional Imaging"}, { + 0x00, 0x04, 0x49, "Mapletree Networks"}, { + 0x00, 0x04, 0x4A, "iPolicy Networks, Inc."}, { + 0x00, 0x04, 0x4B, "NVIDIA"}, { + 0x00, 0x04, 0x4C, "JENOPTIK"}, { + 0x00, 0x04, 0x4D, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x4E, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x4F, "Leukhardt Systemelektronik GmbH"}, { + 0x00, 0x04, 0x50, "DMD Computers SRL"}, { + 0x00, 0x04, 0x51, "Medrad, Inc."}, { + 0x00, 0x04, 0x52, "RocketLogix, Inc."}, { + 0x00, 0x04, 0x53, "YottaYotta, Inc."}, { + 0x00, 0x04, 0x54, "Quadriga UK"}, { + 0x00, 0x04, 0x55, "ANTARA.net"}, { + 0x00, 0x04, 0x56, "PipingHot Networks"}, { + 0x00, 0x04, 0x57, "Universal Access Technology, Inc."}, { + 0x00, 0x04, 0x58, "Fusion X Co., Ltd."}, { + 0x00, 0x04, 0x59, "Veristar Corporation"}, { + 0x00, 0x04, 0x5A, "The Linksys Group, Inc."}, { + 0x00, 0x04, 0x5B, "Techsan Electronics Co., Ltd."}, { + 0x00, 0x04, 0x5C, "Mobiwave Pte Ltd"}, { + 0x00, 0x04, 0x5D, "BEKA Elektronik"}, { + 0x00, 0x04, 0x5E, "PolyTrax Information Technology AG"}, { + 0x00, 0x04, 0x5F, "Evalue Technology, Inc."}, { + 0x00, 0x04, 0x60, "Knilink Technology, Inc."}, { + 0x00, 0x04, 0x61, "EPOX Computer Co., Ltd."}, { + 0x00, 0x04, 0x62, "DAKOS Data & Communication Co., Ltd."}, { + 0x00, 0x04, 0x63, "Philips Communication Security & Imaging"}, { + 0x00, 0x04, 0x64, "Fantasma Networks, Inc."}, { + 0x00, 0x04, 0x65, "i.s.t isdn-support technik GmbH"}, { + 0x00, 0x04, 0x66, "ARMITEL Co."}, { + 0x00, 0x04, 0x67, "Wuhan Research Institute of MII"}, { + 0x00, 0x04, 0x68, "Vivity, Inc."}, { + 0x00, 0x04, 0x69, "Innocom, Inc."}, { + 0x00, 0x04, 0x6A, "Navini Networks"}, { + 0x00, 0x04, 0x6B, "Palm Wireless, Inc."}, { + 0x00, 0x04, 0x6C, "Cyber Technology Co., Ltd."}, { + 0x00, 0x04, 0x6D, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x6E, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x6F, "Digitel S/A Industria Eletronica"}, { + 0x00, 0x04, 0x70, "ipUnplugged AB"}, { + 0x00, 0x04, 0x71, "IPrad"}, { + 0x00, 0x04, 0x72, "Telelynx, Inc."}, { + 0x00, 0x04, 0x73, "Photonex Corporation"}, { + 0x00, 0x04, 0x74, "LEGRAND"}, { + 0x00, 0x04, 0x75, "3 Com Corporation"}, { + 0x00, 0x04, 0x76, "3 Com Corporation"}, { + 0x00, 0x04, 0x77, "Scalant Systems, Inc."}, { + 0x00, 0x04, 0x78, "G. Star Technology Corporation"}, { + 0x00, 0x04, 0x79, "Radius Co., Ltd."}, { + 0x00, 0x04, 0x7A, "AXXESSIT ASA"}, { + 0x00, 0x04, 0x7B, "Schlumberger"}, { + 0x00, 0x04, 0x7C, "Skidata AG"}, { + 0x00, 0x04, 0x7D, "Pelco"}, { + 0x00, 0x04, 0x7E, "NKF Electronics"}, { + 0x00, 0x04, 0x7F, "Chr. Mayr GmbH & Co. KG"}, { + 0x00, 0x04, 0x80, "Foundry Networks, Inc."}, { + 0x00, 0x04, 0x81, "Econolite Control Products, Inc."}, { + 0x00, 0x04, 0x82, "Medialogic Corp."}, { + 0x00, 0x04, 0x83, "Deltron Technology, Inc."}, { + 0x00, 0x04, 0x84, "Amann GmbH"}, { + 0x00, 0x04, 0x85, "PicoLight"}, { + 0x00, 0x04, 0x86, "ITTC, University of Kansas"}, { + 0x00, 0x04, 0x87, "Cogency Semiconductor, Inc."}, { + 0x00, 0x04, 0x88, "Eurotherm Action Incorporated."}, { + 0x00, 0x04, 0x89, "YAFO Networks, Inc."}, { + 0x00, 0x04, 0x8A, "Temia Vertriebs GmbH"}, { + 0x00, 0x04, 0x8B, "Poscon Corporation"}, { + 0x00, 0x04, 0x8C, "Nayna Networks, Inc."}, { + 0x00, 0x04, 0x8D, "Tone Commander Systems, Inc."}, { + 0x00, 0x04, 0x8E, "Ohm Tech Labs, Inc."}, { + 0x00, 0x04, 0x8F, "TD Systems Corp."}, { + 0x00, 0x04, 0x90, "Optical Access"}, { + 0x00, 0x04, 0x91, "Technovision, Inc."}, { + 0x00, 0x04, 0x92, "Hive Internet, Ltd."}, { + 0x00, 0x04, 0x93, "Tsinghua Unisplendour Co., Ltd."}, { + 0x00, 0x04, 0x94, "Breezecom, Ltd."}, { + 0x00, 0x04, 0x95, "Tejas Networks"}, { + 0x00, 0x04, 0x96, "Extreme Networks"}, { + 0x00, 0x04, 0x97, "MacroSystem Digital Video AG"}, { + 0x00, 0x04, 0x99, "Chino Corporation"}, { + 0x00, 0x04, 0x9A, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x9B, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0x9C, "Surgient Networks, Inc."}, { + 0x00, 0x04, 0x9D, "Ipanema Technologies"}, { + 0x00, 0x04, 0x9E, "Wirelink Co., Ltd."}, { + 0x00, 0x04, 0x9F, "Metrowerks"}, { + 0x00, 0x04, 0xA0, "Verity Instruments, Inc."}, { + 0x00, 0x04, 0xA1, "Pathway Connectivity"}, { + 0x00, 0x04, 0xA2, "L.S.I. Japan Co., Ltd."}, { + 0x00, 0x04, 0xA3, "Microchip Technology, Inc."}, { + 0x00, 0x04, 0xA4, "NetEnabled, Inc."}, { + 0x00, 0x04, 0xA5, "Barco Projection Systems NV"}, { + 0x00, 0x04, 0xA6, "SAF Tehnika Ltd."}, { + 0x00, 0x04, 0xA7, "FabiaTech Corporation"}, { + 0x00, 0x04, 0xA8, "Broadmax Technologies, Inc."}, { + 0x00, 0x04, 0xA9, "SandStream Technologies, Inc."}, { + 0x00, 0x04, 0xAA, "Jetstream Communications"}, { + 0x00, 0x04, 0xAB, "Comverse Network Systems, Inc."}, { + 0x00, 0x04, 0xAC, "IBM CORP."}, { + 0x00, 0x04, 0xAD, "Malibu Networks"}, { + 0x00, 0x04, 0xAE, "Liquid Metronics"}, { + 0x00, 0x04, 0xAF, "Digital Fountain, Inc."}, { + 0x00, 0x04, 0xB0, "ELESIGN Co., Ltd."}, { + 0x00, 0x04, 0xB1, "Signal Technology, Inc."}, { + 0x00, 0x04, 0xB2, "ESSEGI SRL"}, { + 0x00, 0x04, 0xB3, "Videotek, Inc."}, { + 0x00, 0x04, 0xB4, "CIAC"}, { + 0x00, 0x04, 0xB5, "Equitrac Corporation"}, { + 0x00, 0x04, 0xB6, "Tellumat (Pty) Ltd."}, { + 0x00, 0x04, 0xB7, "AMB i.t. Holding"}, { + 0x00, 0x04, 0xB8, "Kumahira Co., Ltd."}, { + 0x00, 0x04, 0xB9, "S.I. Soubou, Inc."}, { + 0x00, 0x04, 0xBA, "KDD Media Will Corporation"}, { + 0x00, 0x04, 0xBB, "Bardac Corporation"}, { + 0x00, 0x04, 0xBC, "Giantec, Inc."}, { + 0x00, 0x04, 0xBD, "Motorola BCS"}, { + 0x00, 0x04, 0xBE, "OptXCon, Inc."}, { + 0x00, 0x04, 0xBF, "VersaLogic Corp."}, { + 0x00, 0x04, 0xC0, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0xC1, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0xC2, "Magnipix, Inc."}, { + 0x00, 0x04, 0xC3, "CASTOR Informatique"}, { + 0x00, 0x04, 0xC4, "Allen & Health Limited"}, { + 0x00, 0x04, 0xC5, "ASE Technologies, USA"}, { + 0x00, 0x04, 0xC6, "Yamaha Motor Co., Ltd."}, { + 0x00, 0x04, 0xC7, "NetMount"}, { + 0x00, 0x04, 0xC8, "LIBA Maschinenfabrik GmbH"}, { + 0x00, 0x04, 0xC9, "Micro Electron Co., Ltd."}, { + 0x00, 0x04, 0xCA, "FreeMs Corp."}, { + 0x00, 0x04, 0xCB, "Tdsoft Communication, Ltd."}, { + 0x00, 0x04, 0xCC, "Peek Traffic B.V."}, { + 0x00, 0x04, 0xCD, "Informedia Research Group"}, { + 0x00, 0x04, 0xCE, "Patria Ailon"}, { + 0x00, 0x04, 0xCF, "Seagate Technology"}, { + 0x00, 0x04, 0xD0, "Softlink s.r.o."}, { + 0x00, 0x04, 0xD1, "Drew Technologies, Inc."}, { + 0x00, 0x04, 0xD2, "Adcon Telemetry AG"}, { + 0x00, 0x04, 0xD3, "Toyokeiki Co., Ltd."}, { + 0x00, 0x04, 0xD4, "Proview Electronics Co., Ltd."}, { + 0x00, 0x04, 0xD5, "Hitachi Communication Systems, Inc."}, { + 0x00, 0x04, 0xD6, "Takagi Industrial Co., Ltd."}, { + 0x00, 0x04, 0xD7, "Omitec Instrumentation Ltd."}, { + 0x00, 0x04, 0xD8, "IPWireless, Inc."}, { + 0x00, 0x04, 0xD9, "Titan Electronics, Inc."}, { + 0x00, 0x04, 0xDA, "Relax Technology, Inc."}, { + 0x00, 0x04, 0xDB, "Tellus Group Corp."}, { + 0x00, 0x04, 0xDC, "Nortel Networks"}, { + 0x00, 0x04, 0xDD, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0xDE, "Cisco Systems, Inc."}, { + 0x00, 0x04, 0xDF, "Teracom Telematica Ltda."}, { + 0x00, 0x04, 0xE0, "Procket Networks"}, { + 0x00, 0x04, 0xE1, "Infinior Microsystems"}, { + 0x00, 0x04, 0xE2, "SMC Networks, Inc."}, { + 0x00, 0x04, 0xE3, "Accton Technology Corp."}, { + 0x00, 0x04, 0xE4, "Daeryung Ind., Inc."}, { + 0x00, 0x04, 0xE5, "Glonet Systems, Inc."}, { + 0x00, 0x04, 0xE6, "Banyan Network Private Limited"}, { + 0x00, 0x04, 0xE7, "Lightpointe Communications, Inc"}, { + 0x00, 0x04, 0xE8, "IER, Inc."}, { + 0x00, 0x04, 0xE9, "Infiniswitch Corporation"}, { + 0x00, 0x04, 0xEA, "Hewlett-Packard Company"}, { + 0x00, 0x04, 0xEB, "Paxonet Communications, Inc."}, { + 0x00, 0x04, 0xEC, "Memobox SA"}, { + 0x00, 0x04, 0xED, "Billion Electric Co., Ltd."}, { + 0x00, 0x04, 0xEE, "Lincoln Electric Company"}, { + 0x00, 0x04, 0xEF, "Polestar Corp."}, { + 0x00, 0x04, 0xF0, "International Computers, Ltd"}, { + 0x00, 0x04, 0xF1, "WhereNet"}, { + 0x00, 0x04, 0xF2, "Circa Communications, Ltd."}, { + 0x00, 0x04, 0xF3, "FS FORTH-SYSTEME GmbH"}, { + 0x00, 0x04, 0xF4, "Infinite Electronics Inc."}, { + 0x00, 0x04, 0xF5, "SnowShore Networks, Inc."}, { + 0x00, 0x04, 0xF6, "Amphus"}, { + 0x00, 0x04, 0xF7, "Omega Band, Inc."}, { + 0x00, 0x04, 0xF8, "QUALICABLE TV Industria E Com., Ltda"}, { + 0x00, 0x04, 0xF9, "Xtera Communications, Inc."}, { + 0x00, 0x04, 0xFA, "MIST Inc."}, { + 0x00, 0x04, 0xFB, "Commtech, Inc."}, { + 0x00, 0x04, 0xFC, "Stratus Computer (DE), Inc."}, { + 0x00, 0x04, 0xFD, "Japan Control Engineering Co., Ltd."}, { + 0x00, 0x04, 0xFE, "Pelago Networks"}, { + 0x00, 0x04, 0xFF, "Acronet Co., Ltd."}, { + 0x00, 0x05, 0x00, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x01, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x02, "APPLE COMPUTER"}, { + 0x00, 0x05, 0x03, "ICONAG"}, { + 0x00, 0x05, 0x04, "Naray Information & Communication Enterprise"}, + { + 0x00, 0x05, 0x05, "Systems Integration Solutions, Inc."}, { + 0x00, 0x05, 0x06, "Reddo Networks AB"}, { + 0x00, 0x05, 0x07, "Fine Appliance Corp."}, { + 0x00, 0x05, 0x08, "Inetcam, Inc."}, { + 0x00, 0x05, 0x09, "AVOC Nishimura Ltd."}, { + 0x00, 0x05, 0x0A, "ICS Spa"}, { + 0x00, 0x05, 0x0B, "SICOM Systems, Inc."}, { + 0x00, 0x05, 0x0C, "Network Photonics, Inc."}, { + 0x00, 0x05, 0x0D, "Midstream Technologies, Inc."}, { + 0x00, 0x05, 0x0E, "3ware, Inc."}, { + 0x00, 0x05, 0x0F, "Tanaka S/S Ltd."}, { + 0x00, 0x05, 0x10, + "Infinite Shanghai Communication Terminals Ltd."}, { + 0x00, 0x05, 0x11, "Complementary Technologies Ltd"}, { + 0x00, 0x05, 0x12, "MeshNetworks, Inc."}, { + 0x00, 0x05, 0x13, "VTLinx Multimedia Systems, Inc."}, { + 0x00, 0x05, 0x14, "KDT Systems Co., Ltd."}, { + 0x00, 0x05, 0x15, "Nuark Co., Ltd."}, { + 0x00, 0x05, 0x16, "SMART Modular Technologies"}, { + 0x00, 0x05, 0x17, "Shellcomm, Inc."}, { + 0x00, 0x05, 0x18, "Jupiters Technology"}, { + 0x00, 0x05, 0x19, "Siemens Building Technologies AG,"}, { + 0x00, 0x05, 0x1A, "3Com Europe Ltd."}, { + 0x00, 0x05, 0x1B, "Magic Control Technology Corporation"}, { + 0x00, 0x05, 0x1C, "Xnet Technology Corp."}, { + 0x00, 0x05, 0x1D, "Airocon, Inc."}, { + 0x00, 0x05, 0x1E, "Rhapsody Networks"}, { + 0x00, 0x05, 0x1F, "Taijin Media Co., Ltd."}, { + 0x00, 0x05, 0x20, "Smartronix, Inc."}, { + 0x00, 0x05, 0x21, "Control Microsystems"}, { + 0x00, 0x05, 0x22, "LEA*D Corporation, Inc."}, { + 0x00, 0x05, 0x23, "AVL List GmbH"}, { + 0x00, 0x05, 0x24, "BTL System (HK) Limited"}, { + 0x00, 0x05, 0x25, "Puretek Industrial Co., Ltd."}, { + 0x00, 0x05, 0x26, "IPAS GmbH"}, { + 0x00, 0x05, 0x27, "SJ Tek Co. Ltd"}, { + 0x00, 0x05, 0x28, "New Focus, Inc."}, { + 0x00, 0x05, 0x29, + "Shanghai Broadan Communication Technology Co., Ltd"}, { + 0x00, 0x05, 0x2A, "Ikegami Tsushinki Co., Ltd."}, { + 0x00, 0x05, 0x2B, "HORIBA, Ltd."}, { + 0x00, 0x05, 0x2C, "Supreme Magic Corporation"}, { + 0x00, 0x05, 0x2D, "Zoltrix International Limited"}, { + 0x00, 0x05, 0x2E, "Cinta Networks"}, { + 0x00, 0x05, 0x2F, "Leviton Voice and Data"}, { + 0x00, 0x05, 0x30, "Andiamo Systems, Inc."}, { + 0x00, 0x05, 0x31, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x32, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x33, "Sanera Systems, Inc."}, { + 0x00, 0x05, 0x34, "Northstar Engineering Ltd."}, { + 0x00, 0x05, 0x35, "Chip PC Ltd."}, { + 0x00, 0x05, 0x36, "Danam Communications, Inc."}, { + 0x00, 0x05, 0x37, "Nets Technology Co., Ltd."}, { + 0x00, 0x05, 0x38, "Merilus, Inc."}, { + 0x00, 0x05, 0x39, "A Brand New World in Sweden AB"}, { + 0x00, 0x05, 0x3A, "Willowglen Services Pte Ltd"}, { + 0x00, 0x05, 0x3B, "Harbour Networks Ltd., Co. Beijing"}, { + 0x00, 0x05, 0x3C, "Xircom"}, { + 0x00, 0x05, 0x3D, "Agere Systems"}, { + 0x00, 0x05, 0x3E, "KID Systeme GmbH"}, { + 0x00, 0x05, 0x3F, "VisionTek, Inc."}, { + 0x00, 0x05, 0x40, "FAST Corporation"}, { + 0x00, 0x05, 0x41, "Advanced Systems Co., Ltd."}, { + 0x00, 0x05, 0x42, "Otari, Inc."}, { + 0x00, 0x05, 0x43, "IQ Wireless GmbH"}, { + 0x00, 0x05, 0x44, "Valley Technologies, Inc."}, { + 0x00, 0x05, 0x45, "Internet Photonics"}, { + 0x00, 0x05, 0x46, "KDD Network Systems Co., Ltd."}, { + 0x00, 0x05, 0x47, "Starent Networks"}, { + 0x00, 0x05, 0x48, "Disco Corporation"}, { + 0x00, 0x05, 0x49, "Salira Optical Network Systems"}, { + 0x00, 0x05, 0x4A, "Ario Data Networks, Inc."}, { + 0x00, 0x05, 0x4B, "Micro Innovation AG"}, { + 0x00, 0x05, 0x4C, "RF Innovations Pty Ltd"}, { + 0x00, 0x05, 0x4D, "Brans Technologies, Inc."}, { + 0x00, 0x05, 0x4E, "Philips Components"}, { + 0x00, 0x05, 0x50, "Digi-Tech Communications Limited"}, { + 0x00, 0x05, 0x51, "F & S Elektronik Systeme GmbH"}, { + 0x00, 0x05, 0x52, "Xycotec Computer GmbH"}, { + 0x00, 0x05, 0x53, "DVC Company, Inc."}, { + 0x00, 0x05, 0x54, "Rangestar Wireless"}, { + 0x00, 0x05, 0x55, "Japan Cash Machine Co., Ltd."}, { + 0x00, 0x05, 0x56, "360 Systems"}, { + 0x00, 0x05, 0x57, "Agile TV Corporation"}, { + 0x00, 0x05, 0x58, "Synchronous, Inc."}, { + 0x00, 0x05, 0x59, "Intracom S.A."}, { + 0x00, 0x05, 0x5A, "Power Dsine Ltd."}, { + 0x00, 0x05, 0x5B, "Charles Industries, Ltd."}, { + 0x00, 0x05, 0x5C, "Kowa Company, Ltd."}, { + 0x00, 0x05, 0x5D, "D-Link Systems, Inc."}, { + 0x00, 0x05, 0x5E, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x5F, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x60, "LEADER COMM.CO., LTD"}, { + 0x00, 0x05, 0x61, "nac Image Technology, Inc."}, { + 0x00, 0x05, 0x62, "Digital View Limited"}, { + 0x00, 0x05, 0x63, "J-Works, Inc."}, { + 0x00, 0x05, 0x64, "Tsinghua Bitway Co., Ltd."}, { + 0x00, 0x05, 0x65, "Tailyn Communication Company Ltd."}, { + 0x00, 0x05, 0x66, "Secui.com Corporation"}, { + 0x00, 0x05, 0x67, "Etymonic Design, Inc."}, { + 0x00, 0x05, 0x68, "Piltofish Networks AB"}, { + 0x00, 0x05, 0x69, "VMWARE, Inc."}, { + 0x00, 0x05, 0x6B, "C.P. Technology Co., Ltd."}, { + 0x00, 0x05, 0x6C, "Hung Chang Co., Ltd."}, { + 0x00, 0x05, 0x6D, "Pacific Corporation"}, { + 0x00, 0x05, 0x6E, "National Enhance Technology, Inc."}, { + 0x00, 0x05, 0x6F, "Innomedia Technologies Pvt. Ltd."}, { + 0x00, 0x05, 0x70, "Baydel Ltd."}, { + 0x00, 0x05, 0x71, "Seiwa Electronics Co."}, { + 0x00, 0x05, 0x72, "Deonet Co., Ltd."}, { + 0x00, 0x05, 0x73, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x74, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x75, "CDS-Electronics BV"}, { + 0x00, 0x05, 0x76, "NSM Technology Ltd."}, { + 0x00, 0x05, 0x77, "SM Information & Communication"}, { + 0x00, 0x05, 0x79, "Universal Control Solution Corp."}, { + 0x00, 0x05, 0x7A, "Hatteras Networks"}, { + 0x00, 0x05, 0x7B, "Chung Nam Electronic Co., Ltd."}, { + 0x00, 0x05, 0x7C, "RCO Security AB"}, { + 0x00, 0x05, 0x7D, "Sun Communications, Inc."}, { + 0x00, 0x05, 0x7E, "Eckelmann Steuerungstechnik GmbH"}, { + 0x00, 0x05, 0x7F, "Acqis Technology"}, { + 0x00, 0x05, 0x80, "Fibrolan Ltd."}, { + 0x00, 0x05, 0x81, "Snell & Wilcox Ltd."}, { + 0x00, 0x05, 0x82, "ClearCube Technology"}, { + 0x00, 0x05, 0x83, "ImageCom Limited"}, { + 0x00, 0x05, 0x84, "AbsoluteValue Systems, Inc."}, { + 0x00, 0x05, 0x85, "Juniper Networks, Inc."}, { + 0x00, 0x05, 0x86, "Lucent Technologies"}, { + 0x00, 0x05, 0x87, "Locus, Incorporated"}, { + 0x00, 0x05, 0x88, "Sensoria Corp."}, { + 0x00, 0x05, 0x89, "National Datacomputer"}, { + 0x00, 0x05, 0x8A, "Netcom Co., Ltd."}, { + 0x00, 0x05, 0x8B, "IPmental, Inc."}, { + 0x00, 0x05, 0x8C, "Opentech Inc."}, { + 0x00, 0x05, 0x8D, "Lynx Photonic Networks, Inc."}, { + 0x00, 0x05, 0x8E, "Ahead Communications System GmbH"}, { + 0x00, 0x05, 0x8F, "CLCsoft co."}, { + 0x00, 0x05, 0x90, "Swissvoice Ltd."}, { + 0x00, 0x05, 0x91, "Active Silicon Ltd."}, { + 0x00, 0x05, 0x92, "Pultek Corp."}, { + 0x00, 0x05, 0x93, "Grammar Engine Inc."}, { + 0x00, 0x05, 0x94, "IXXAT Automation GmbH"}, { + 0x00, 0x05, 0x95, "Alesis Corporation"}, { + 0x00, 0x05, 0x96, "Genotech Co., Ltd."}, { + 0x00, 0x05, 0x97, "Eagle Traffic Control Systems"}, { + 0x00, 0x05, 0x98, "CRONOS S.r.l."}, { + 0x00, 0x05, 0x99, "PEI Electronics, Inc."}, { + 0x00, 0x05, 0x9A, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x9B, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0x9C, "Kleinknecht GmbH, Ing. Buero"}, { + 0x00, 0x05, 0x9D, "Daniel Computing Systems, Inc."}, { + 0x00, 0x05, 0x9E, "Zinwell Corporation"}, { + 0x00, 0x05, 0x9F, "Yotta Networks, Inc."}, { + 0x00, 0x05, 0xA0, "MOBILINE Kft."}, { + 0x00, 0x05, 0xA1, "Zenocom"}, { + 0x00, 0x05, 0xA2, "CELOX Networks"}, { + 0x00, 0x05, 0xA3, "QEI, Inc."}, { + 0x00, 0x05, 0xA4, "Lucid Voice Ltd."}, { + 0x00, 0x05, 0xA5, "KOTT"}, { + 0x00, 0x05, 0xA6, "Extron Electronics"}, { + 0x00, 0x05, 0xA7, "Hyperchip, Inc."}, { + 0x00, 0x05, 0xA8, "WYLE ELECTRONICS"}, { + 0x00, 0x05, 0xA9, "Princeton Networks, Inc."}, { + 0x00, 0x05, 0xAA, "Moore Industries International Inc."}, { + 0x00, 0x05, 0xAB, "Cyber Fone, Inc."}, { + 0x00, 0x05, 0xAC, "Northern Digital, Inc."}, { + 0x00, 0x05, 0xAD, "Topspin Communications, Inc."}, { + 0x00, 0x05, 0xAE, "Mediaport USA"}, { + 0x00, 0x05, 0xAF, "InnoScan Computing A/S"}, { + 0x00, 0x05, 0xB0, "Korea Computer Technology Co., Ltd."}, { + 0x00, 0x05, 0xB1, "ASB Technology BV"}, { + 0x00, 0x05, 0xB2, "Medison Co., Ltd."}, { + 0x00, 0x05, 0xB3, "Asahi-Engineering Co., Ltd."}, { + 0x00, 0x05, 0xB4, "Aceex Corporation"}, { + 0x00, 0x05, 0xB5, "Broadcom Technologies"}, { + 0x00, 0x05, 0xB6, "INSYS Microelectronics GmbH"}, { + 0x00, 0x05, 0xB7, "Arbor Technology Corp."}, { + 0x00, 0x05, 0xB8, "Electronic Design Associates, Inc."}, { + 0x00, 0x05, 0xB9, "Airvana, Inc."}, { + 0x00, 0x05, 0xBA, "Area Netwoeks, Inc."}, { + 0x00, 0x05, 0xBB, "Myspace AB"}, { + 0x00, 0x05, 0xBC, "Resorsys Ltd."}, { + 0x00, 0x05, 0xBD, "ROAX BV"}, { + 0x00, 0x05, 0xBE, "Kongsberg Seatex AS"}, { + 0x00, 0x05, 0xBF, "JustEzy Technology, Inc."}, { + 0x00, 0x05, 0xC0, "Digital Network Alacarte Co., Ltd."}, { + 0x00, 0x05, 0xC1, "A-Kyung Motion, Inc."}, { + 0x00, 0x05, 0xC2, "Digital Archway, Inc."}, { + 0x00, 0x05, 0xC3, "Pacific Instruments, Inc."}, { + 0x00, 0x05, 0xC4, "Telect, Inc."}, { + 0x00, 0x05, 0xC5, "Flaga HF"}, { + 0x00, 0x05, 0xC6, "Triz Communications"}, { + 0x00, 0x05, 0xC7, "I/F-COM A/S"}, { + 0x00, 0x05, 0xC8, "VERYTECH"}, { + 0x00, 0x05, 0xC9, "LG Innotek"}, { + 0x00, 0x05, 0xCA, "Hitron Technology, Inc."}, { + 0x00, 0x05, 0xCB, "ROIS Technologies, Inc."}, { + 0x00, 0x05, 0xCC, "Sumtel Communications, Inc."}, { + 0x00, 0x05, 0xCD, "Denon, Ltd."}, { + 0x00, 0x05, 0xCE, "Prolink Microsystems Corporation"}, { + 0x00, 0x05, 0xCF, "Thunder River Technologies, Inc."}, { + 0x00, 0x05, 0xD0, "Solinet Systems"}, { + 0x00, 0x05, 0xD1, "Metavector Technologies"}, { + 0x00, 0x05, 0xD2, "DAP Technologies"}, { + 0x00, 0x05, 0xD3, "eProduction Solutions, Inc."}, { + 0x00, 0x05, 0xD4, "FutureSmart Networks, Inc."}, { + 0x00, 0x05, 0xD5, "Speedcom Wireless"}, { + 0x00, 0x05, 0xD6, "Titan Wireless"}, { + 0x00, 0x05, 0xD7, "Vista Imaging, Inc."}, { + 0x00, 0x05, 0xD8, "Arescom, Inc."}, { + 0x00, 0x05, 0xD9, "Techno Valley, Inc."}, { + 0x00, 0x05, 0xDA, "Apex Automationstechnik"}, { + 0x00, 0x05, 0xDB, "Nentec GmbH"}, { + 0x00, 0x05, 0xDC, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0xDD, "Cisco Systems, Inc."}, { + 0x00, 0x05, 0xDE, "Gi Fone Korea, Inc."}, { + 0x00, 0x05, 0xDF, "Electronic Innovation, Inc."}, { + 0x00, 0x05, 0xE0, "Empirix Corp."}, { + 0x00, 0x05, 0xE1, "Trellis Photonics, Ltd."}, { + 0x00, 0x05, 0xE2, "Creativ Network Technologies"}, { + 0x00, 0x05, 0xE3, "LightSand Communications, Inc."}, { + 0x00, 0x05, 0xE4, "Red Lion Controls L.P."}, { + 0x00, 0x05, 0xE5, "Renishaw PLC"}, { + 0x00, 0x05, 0xE6, "Egenera, Inc."}, { + 0x00, 0x05, 0xE7, "Netrake Corp."}, { + 0x00, 0x05, 0xE8, "TurboWave, Inc."}, { + 0x00, 0x05, 0xE9, "Unicess Network, Inc."}, { + 0x00, 0x05, 0xEA, "Rednix"}, { + 0x00, 0x05, 0xEB, "Blue Ridge Networks, Inc."}, { + 0x00, 0x05, 0xEC, "Mosaic Systems Inc."}, { + 0x00, 0x05, 0xED, "Technikum Joanneum GmbH"}, { + 0x00, 0x05, 0xEE, "BEWATOR Group"}, { + 0x00, 0x05, 0xEF, "ADOIR Digital Technology"}, { + 0x00, 0x05, 0xF0, "SATEC"}, { + 0x00, 0x05, 0xF1, "Vrcom, Inc."}, { + 0x00, 0x05, 0xF2, "Power R, Inc."}, { + 0x00, 0x05, 0xF3, "Weboyn"}, { + 0x00, 0x05, 0xF4, "System Base Co., Ltd."}, { + 0x00, 0x05, 0xF5, "OYO Geospace Corp."}, { + 0x00, 0x05, 0xF6, "Young Chang Co. Ltd."}, { + 0x00, 0x05, 0xF7, "Analog Devices, Inc."}, { + 0x00, 0x05, 0xF8, "Real Time Access, Inc."}, { + 0x00, 0x05, 0xF9, "TOA Corporation"}, { + 0x00, 0x05, 0xFA, "IPOptical, Inc."}, { + 0x00, 0x05, 0xFB, "ShareGate, Inc."}, { + 0x00, 0x05, 0xFC, "Schenck Pegasus Corp."}, { + 0x00, 0x05, 0xFD, "PacketLight Networks Ltd."}, { + 0x00, 0x05, 0xFE, "Traficon N.V."}, { + 0x00, 0x05, 0xFF, "SNS Solutions, Inc."}, { + 0x00, 0x06, 0x00, "Tokyo Electronic Industry Co., Ltd."}, { + 0x00, 0x06, 0x01, "Otanikeiki Co., Ltd."}, { + 0x00, 0x06, 0x02, "Cirkitech Electronics Co."}, { + 0x00, 0x06, 0x03, "Baker Hughes Inc."}, { + 0x00, 0x06, 0x04, "@Track Communications, Inc."}, { + 0x00, 0x06, 0x05, "Inncom International, Inc."}, { + 0x00, 0x06, 0x06, "RapidWAN, Inc."}, { + 0x00, 0x06, 0x07, "Omni Directional Control Technology Inc."}, { + 0x00, 0x06, 0x08, "At-Sky SAS"}, { + 0x00, 0x06, 0x09, "Crossport Systems"}, { + 0x00, 0x06, 0x0A, "Blue2space"}, { + 0x00, 0x06, 0x0B, "Paceline Systems Corporation"}, { + 0x00, 0x06, 0x0C, "Melco Industries, Inc."}, { + 0x00, 0x06, 0x0D, "Wave7 Optics"}, { + 0x00, 0x06, 0x0E, "IGYS Systems, Inc."}, { + 0x00, 0x06, 0x0F, "Narad Networks Inc"}, { + 0x00, 0x06, 0x10, "Abeona Networks Inc"}, { + 0x00, 0x06, 0x11, "Zeus Wireless, Inc."}, { + 0x00, 0x06, 0x12, "Accusys, Inc."}, { + 0x00, 0x06, 0x13, "Kawasaki Microelectronics Incorporated"}, { + 0x00, 0x06, 0x14, "Prism Holdings"}, { + 0x00, 0x06, 0x15, "Kimoto Electric Co., Ltd."}, { + 0x00, 0x06, 0x16, "Tel Net Co., Ltd."}, { + 0x00, 0x06, 0x17, "Redswitch Inc."}, { + 0x00, 0x06, 0x18, "DigiPower Manufacturing Inc."}, { + 0x00, 0x06, 0x19, "Connection Technology Systems"}, { + 0x00, 0x06, 0x1A, "Zetari Inc."}, { + 0x00, 0x06, 0x1B, "Portable Systems, IBM Japan Co, Ltd"}, { + 0x00, 0x06, 0x1C, "Hoshino Metal Industries, Ltd."}, { + 0x00, 0x06, 0x1D, "MIP Telecom, Inc."}, { + 0x00, 0x06, 0x1E, "Maxan Systems"}, { + 0x00, 0x06, 0x1F, "Vision Components GmbH"}, { + 0x00, 0x06, 0x20, "Serial System Ltd."}, { + 0x00, 0x06, 0x21, "Hinox, Co., Ltd."}, { + 0x00, 0x06, 0x22, "Chung Fu Chen Yeh Enterprise Corp."}, { + 0x00, 0x06, 0x23, "MGE UPS Systems France"}, { + 0x00, 0x06, 0x24, "Gentner Communications Corp."}, { + 0x00, 0x06, 0x25, "The Linksys Group, Inc."}, { + 0x00, 0x06, 0x26, "MWE GmbH"}, { + 0x00, 0x06, 0x27, "Uniwide Technologies, Inc."}, { + 0x00, 0x06, 0x28, "Cisco Systems, Inc."}, { + 0x00, 0x06, 0x29, "IBM CORPORATION"}, { + 0x00, 0x06, 0x2A, "Cisco Systems, Inc."}, { + 0x00, 0x06, 0x2B, "INTRASERVER TECHNOLOGY"}, { + 0x00, 0x06, 0x2C, "Network Robots, Inc."}, { + 0x00, 0x06, 0x2D, "TouchStar Technologies, L.L.C."}, { + 0x00, 0x06, 0x2E, "Aristos Logic Corp."}, { + 0x00, 0x06, 0x2F, "Pivotech Systems Inc."}, { + 0x00, 0x06, 0x30, "Adtranz Sweden"}, { + 0x00, 0x06, 0x31, "Optical Solutions, Inc."}, { + 0x00, 0x06, 0x32, "Mesco Engineering GmbH"}, { + 0x00, 0x06, 0x33, "Heimann Biometric Systems GmbH"}, { + 0x00, 0x06, 0x34, "GTE Airfone Inc."}, { + 0x00, 0x06, 0x35, "PacketAir Networks, Inc."}, { + 0x00, 0x06, 0x36, "Jedai Broadband Networks"}, { + 0x00, 0x06, 0x37, "Toptrend-Meta Information (ShenZhen) Inc."}, { + 0x00, 0x06, 0x38, "Sungjin C&C Co., Ltd."}, { + 0x00, 0x06, 0x39, "Newtec"}, { + 0x00, 0x06, 0x3A, "Dura Micro, Inc."}, { + 0x00, 0x06, 0x3B, "Arcturus Networks, Inc."}, { + 0x00, 0x06, 0x3C, "NMI Electronics Ltd"}, { + 0x00, 0x06, 0x3D, "Microwave Data Systems Inc."}, { + 0x00, 0x06, 0x3E, "Opthos Inc."}, { + 0x00, 0x06, 0x3F, "Everex Communications Inc."}, { + 0x00, 0x06, 0x40, "White Rock Networks"}, { + 0x00, 0x06, 0x41, "ITCN"}, { + 0x00, 0x06, 0x42, "Genetel Systems Inc."}, { + 0x00, 0x06, 0x43, "SONO Computer Co., Ltd."}, { + 0x00, 0x06, 0x44, "NEIX Inc."}, { + 0x00, 0x06, 0x45, "Meisei Electric Co. Ltd."}, { + 0x00, 0x06, 0x46, "ShenZhen XunBao Network Technology Co Ltd"}, { + 0x00, 0x06, 0x47, "Etrali S.A."}, { + 0x00, 0x06, 0x48, "Seedsware, Inc."}, { + 0x00, 0x06, 0x49, "Quante"}, { + 0x00, 0x06, 0x4A, "Honeywell Co., Ltd. (KOREA)"}, { + 0x00, 0x06, 0x4B, "Alexon Co., Ltd."}, { + 0x00, 0x06, 0x4C, "Invicta Networks, Inc."}, { + 0x00, 0x06, 0x4D, "Sencore"}, { + 0x00, 0x06, 0x4E, "Broad Net Technology Inc."}, { + 0x00, 0x06, 0x4F, "PRO-NETS Technology Corporation"}, { + 0x00, 0x06, 0x50, "Tiburon Networks, Inc."}, { + 0x00, 0x06, 0x51, "Aspen Networks Inc."}, { + 0x00, 0x06, 0x52, "Cisco Systems, Inc."}, { + 0x00, 0x06, 0x53, "Cisco Systems, Inc."}, { + 0x00, 0x06, 0x54, "Maxxio Technologies"}, { + 0x00, 0x06, 0x55, "Yipee, Inc."}, { + 0x00, 0x06, 0x56, "Tactel AB"}, { + 0x00, 0x06, 0x57, "Market Central, Inc."}, { + 0x00, 0x06, 0x58, "Helmut Fischer GmbH & Co. KG"}, { + 0x00, 0x06, 0x59, "EAL (Apeldoorn) B.V."}, { + 0x00, 0x06, 0x5A, "Strix Systems"}, { + 0x00, 0x06, 0x5B, "Dell Computer Corp."}, { + 0x00, 0x06, 0x5C, "Malachite Technologies, Inc."}, { + 0x00, 0x06, 0x5D, "Heidelberg Web Systems"}, { + 0x00, 0x06, 0x5E, "Photuris, Inc."}, { + 0x00, 0x06, 0x5F, "ECI Telecom - NGTS Ltd."}, { + 0x00, 0x06, 0x60, "NADEX Co., Ltd."}, { + 0x00, 0x06, 0x61, "NIA Home Technologies Corp."}, { + 0x00, 0x06, 0x62, "MBM Technology Ltd."}, { + 0x00, 0x06, 0x63, "Human Technology Co., Ltd."}, { + 0x00, 0x06, 0x64, "Fostex Corporation"}, { + 0x00, 0x06, 0x65, "Sunny Giken, Inc."}, { + 0x00, 0x06, 0x66, "Roving Networks"}, { + 0x00, 0x06, 0x67, "Tripp Lite"}, { + 0x00, 0x06, 0x68, "Vicon Industries Inc."}, { + 0x00, 0x06, 0x69, "Datasound Laboratories Ltd"}, { + 0x00, 0x06, 0x6A, "InfiniCon Systems, Inc."}, { + 0x00, 0x06, 0x6B, "Sysmex Corporation"}, { + 0x00, 0x06, 0x6C, "Robinson Corporation"}, { + 0x00, 0x06, 0x6D, "Compuprint S.P.A."}, { + 0x00, 0x06, 0x6E, "Delta Electronics, Inc."}, { + 0x00, 0x06, 0x6F, "Korea Data Systems"}, { + 0x00, 0x06, 0x70, "Upponetti Oy"}, { + 0x00, 0x06, 0x71, "Softing AG"}, { + 0x00, 0x06, 0x72, "Netezza"}, { + 0x00, 0x06, 0x73, "Optelecom, Inc."}, { + 0x00, 0x06, 0x74, "Spectrum Control, Inc."}, { + 0x00, 0x06, 0x75, "Banderacom, Inc."}, { + 0x00, 0x06, 0x76, "Novra Technologies Inc."}, { + 0x00, 0x06, 0x77, "SICK AG"}, { + 0x00, 0x06, 0x78, "Marantz Japan, Inc."}, { + 0x00, 0x06, 0x79, "Konami Corporation"}, { + 0x00, 0x06, 0x7A, "JMP Systems"}, { + 0x00, 0x06, 0x7B, "Toplink C&C Corporation"}, { + 0x00, 0x06, 0x7C, "CISCO SYSTEMS, INC."}, { + 0x00, 0x06, 0x7D, "Takasago Ltd."}, { + 0x00, 0x06, 0x7E, "WinCom Systems, Inc."}, { + 0x00, 0x06, 0x7F, "Rearden Steel Technologies"}, { + 0x00, 0x06, 0x80, "Card Access, Inc."}, { + 0x00, 0x06, 0x81, "Goepel Electronic GmbH"}, { + 0x00, 0x06, 0x82, "Convedia"}, { + 0x00, 0x06, 0x83, "Bravara Communications, Inc."}, { + 0x00, 0x06, 0x84, "Biacore AB"}, { + 0x00, 0x06, 0x85, "NetNearU Corporation"}, { + 0x00, 0x06, 0x86, "ZARDCOM Co., Ltd."}, { + 0x00, 0x06, 0x87, "Omnitron Systems Technology, Inc."}, { + 0x00, 0x06, 0x88, "Telways Communication Co., Ltd."}, { + 0x00, 0x06, 0x89, "yLez Technologies Pte Ltd"}, { + 0x00, 0x06, 0x8A, "NeuronNet Co. Ltd. R&D Center"}, { + 0x00, 0x06, 0x8B, "AirRunner Technologies, Inc."}, { + 0x00, 0x06, 0x8C, "3Com Corporation"}, { + 0x00, 0x06, 0x8D, "SANgate Systems"}, { + 0x00, 0x06, 0x8E, "HID Corporation"}, { + 0x00, 0x06, 0x8F, "Telemonitor, Inc."}, { + 0x00, 0x06, 0x90, "Euracom Communication GmbH"}, { + 0x00, 0x06, 0x91, "PT Inovacao"}, { + 0x00, 0x06, 0x92, "Intruvert Networks, Inc."}, { + 0x00, 0x06, 0x93, "Flexus Computer Technology, Inc."}, { + 0x00, 0x06, 0x94, "Mobillian Corporation"}, { + 0x00, 0x06, 0x95, "Ensure Technologies, Inc."}, { + 0x00, 0x06, 0x96, "Advent Networks"}, { + 0x00, 0x06, 0x97, "R & D Center"}, { + 0x00, 0x06, 0x98, "egnite Software GmbH"}, { + 0x00, 0x06, 0x99, "Vida Design Co."}, { + 0x00, 0x06, 0x9A, "e & Tel"}, { + 0x00, 0x06, 0x9B, "AVT Audio Video Technologies GmbH"}, { + 0x00, 0x06, 0x9C, "Transmode Systems AB"}, { + 0x00, 0x06, 0x9D, "Petards Mobile Intelligence"}, { + 0x00, 0x06, 0x9E, "UNIQA, Inc."}, { + 0x00, 0x06, 0x9F, "Kuokoa Networks"}, { + 0x00, 0x06, 0xA0, "Mx Imaging"}, { + 0x00, 0x06, 0xA1, "Celsian Technologies, Inc."}, { + 0x00, 0x06, 0xA2, "Transilica, Inc."}, { + 0x00, 0x06, 0xA3, "Bitran Corporation"}, { + 0x00, 0x06, 0xA4, "INNOWELL Corp."}, { + 0x00, 0x06, 0xA5, "PINON Corp."}, { + 0x00, 0x06, 0xA6, "Artistic Licence (UK) Ltd"}, { + 0x00, 0x06, 0xA7, "Primarion"}, { + 0x00, 0x06, 0xA8, "KC Technology, Inc."}, { + 0x00, 0x06, 0xA9, "Universal Instruments Corp."}, { + 0x00, 0x06, 0xAA, "Miltope Corporation"}, { + 0x00, 0x06, 0xAB, "W-Link Systems, Inc."}, { + 0x00, 0x06, 0xAC, "Intersoft Co."}, { + 0x00, 0x06, 0xAD, "KB Electronics Ltd."}, { + 0x00, 0x06, 0xAE, "Himachal Futuristic Communications Ltd"}, { + 0x00, 0x06, 0xB0, "Comtech EF Data Corp."}, { + 0x00, 0x06, 0xB1, "Sonicwall"}, { + 0x00, 0x06, 0xB2, "Linxtek Co."}, { + 0x00, 0x06, 0xB3, "Diagraph Corporation"}, { + 0x00, 0x06, 0xB4, "Vorne Industries, Inc."}, { + 0x00, 0x06, 0xB5, "Luminent, Inc."}, { + 0x00, 0x06, 0xB6, "Nir-Or Israel Ltd."}, { + 0x00, 0x06, 0xB7, "TELEM GmbH"}, { + 0x00, 0x06, 0xB8, "Bandspeed Pty Ltd"}, { + 0x00, 0x06, 0xB9, "A5TEK Corp."}, { + 0x00, 0x06, 0xBA, "Westwave Communications"}, { + 0x00, 0x06, 0xBB, "ATI Technologies Inc."}, { + 0x00, 0x06, 0xBC, "Macrolink, Inc."}, { + 0x00, 0x06, 0xBD, "BNTECHNOLOGY Co., Ltd."}, { + 0x00, 0x06, 0xBE, "Baumer Optronic GmbH"}, { + 0x00, 0x06, 0xBF, "Accella Technologies Co., Ltd."}, { + 0x00, 0x06, 0xC0, "United Internetworks, Inc."}, { + 0x00, 0x06, 0xC1, "CISCO SYSTEMS, INC."}, { + 0x00, 0x06, 0xC2, "Smartmatic Corporation"}, { + 0x00, 0x06, 0xC3, "Schindler Elevators Ltd."}, { + 0x00, 0x06, 0xC4, "Piolink Inc."}, { + 0x00, 0x06, 0xC5, "INNOVI Technologies Limited"}, { + 0x00, 0x06, 0xC6, "lesswire AG"}, { + 0x00, 0x06, 0xC7, "RFNET Technologies Pte Ltd (S)"}, { + 0x00, 0x06, 0xC8, "Sumitomo Metal Micro Devices, Inc."}, { + 0x00, 0x06, 0xC9, "Technical Marketing Research, Inc."}, { + 0x00, 0x06, 0xCA, + "American Computer & Digital Components, Inc. (ACDC)"}, { + 0x00, 0x06, 0xCB, "Jotron Electronics A/S"}, { + 0x00, 0x06, 0xCC, "JMI Electronics Co., Ltd."}, { + 0x00, 0x06, 0xCD, "CreoScitex Corporation Ltd."}, { + 0x00, 0x06, 0xCE, "DATENO"}, { + 0x00, 0x06, 0xCF, "Thales Avionics In-Flight Systems, LLC"}, { + 0x00, 0x06, 0xD0, "Elgar Electronics Corp."}, { + 0x00, 0x06, 0xD1, "Tahoe Networks, Inc."}, { + 0x00, 0x06, 0xD2, "Tundra Semiconductor Corp."}, { + 0x00, 0x06, 0xD3, "Alpha Telecom, Inc. U.S.A."}, { + 0x00, 0x06, 0xD4, "Interactive Objects, Inc."}, { + 0x00, 0x06, 0xD5, "Diamond Systems Corp."}, { + 0x00, 0x06, 0xD6, "Cisco Systems, Inc."}, { + 0x00, 0x06, 0xD7, "Cisco Systems, Inc."}, { + 0x00, 0x06, 0xD8, "Maple Optical Systems"}, { + 0x00, 0x06, 0xD9, "IPM-Net S.p.A."}, { + 0x00, 0x06, 0xDA, "ITRAN Communications Ltd."}, { + 0x00, 0x06, 0xDB, "ICHIPS Co., Ltd."}, { + 0x00, 0x06, 0xDC, "Syabas Technology (Amquest)"}, { + 0x00, 0x06, 0xDD, "AT & T Laboratories - Cambridge Ltd"}, { + 0x00, 0x06, 0xDE, "Flash Technology"}, { + 0x00, 0x06, 0xDF, "AIDONIC Corporation"}, { + 0x00, 0x06, 0xE0, "MAT Co., Ltd."}, { + 0x00, 0x06, 0xE1, "Techno Trade s.a"}, { + 0x00, 0x06, 0xE2, "Ceemax Technology Co., Ltd."}, { + 0x00, 0x06, 0xE3, "Quantitative Imaging Corporation"}, { + 0x00, 0x06, 0xE4, "Citel Technologies Ltd."}, { + 0x00, 0x06, 0xE5, "Fujian Newland Computer Ltd. Co."}, { + 0x00, 0x06, 0xE6, "DongYang Telecom Co., Ltd."}, { + 0x00, 0x06, 0xE7, "Bit Blitz Communications Inc."}, { + 0x00, 0x06, 0xE8, "Optical Network Testing, Inc."}, { + 0x00, 0x06, 0xE9, "Intime Corp."}, { + 0x00, 0x06, 0xEA, "ELZET80 Mikrocomputer GmbH&Co. KG"}, { + 0x00, 0x06, 0xEB, "Global Data"}, { + 0x00, 0x06, 0xEC, "M/A COM Private Radio System Inc."}, { + 0x00, 0x06, 0xED, "Inara Networks"}, { + 0x00, 0x06, 0xEE, + "Shenyang Neu-era Information & Technology Stock Co., Ltd"}, + { + 0x00, 0x06, 0xEF, "Maxxan Systems, Inc."}, { + 0x00, 0x06, 0xF0, "Digeo, Inc."}, { + 0x00, 0x06, 0xF1, "Optillion"}, { + 0x00, 0x06, 0xF2, "Platys Communications"}, { + 0x00, 0x06, 0xF3, "AcceLight Networks"}, { + 0x00, 0x06, 0xF4, "Prime Electronics & Satellitics Inc."}, { + 0x00, 0x06, 0xF9, "Mitsui Zosen Systems Research Inc."}, { + 0x00, 0x06, 0xFA, "IP SQUARE Co, Ltd."}, { + 0x00, 0x06, 0xFB, "Hitachi Koki Co., Ltd."}, { + 0x00, 0x06, 0xFC, "Fnet Co., Ltd."}, { + 0x00, 0x06, 0xFD, "Comjet Information Systems Corp."}, { + 0x00, 0x06, 0xFE, "Celion Networks, Inc."}, { + 0x00, 0x06, 0xFF, "Sheba Systems Co., Ltd."}, { + 0x00, 0x07, 0x00, "Zettamedia Korea"}, { + 0x00, 0x07, 0x01, "RACAL-DATACOM"}, { + 0x00, 0x07, 0x02, "Varian Medical Systems"}, { + 0x00, 0x07, 0x03, "CSEE Transport"}, { + 0x00, 0x07, 0x05, "Endress & Hauser GmbH & Co"}, { + 0x00, 0x07, 0x06, "Sanritz Corporation"}, { + 0x00, 0x07, 0x07, "Interalia Inc."}, { + 0x00, 0x07, 0x08, "Bitrage Inc."}, { + 0x00, 0x07, 0x09, "Westerstrand Urfabrik AB"}, { + 0x00, 0x07, 0x0A, "Unicom Automation Co., Ltd."}, { + 0x00, 0x07, 0x0B, "Octal, SA"}, { + 0x00, 0x07, 0x0C, "SVA-Intrusion.com Co. Ltd."}, { + 0x00, 0x07, 0x0D, "Cisco Systems Inc."}, { + 0x00, 0x07, 0x0E, "Cisco Systems Inc."}, { + 0x00, 0x07, 0x0F, "Fujant, Inc."}, { + 0x00, 0x07, 0x10, "Adax, Inc."}, { + 0x00, 0x07, 0x11, "Acterna"}, { + 0x00, 0x07, 0x12, "JAL Information Technology"}, { + 0x00, 0x07, 0x13, "IP One, Inc."}, { + 0x00, 0x07, 0x14, "Brightcom"}, { + 0x00, 0x07, 0x15, "General Research of Electronics, Inc."}, { + 0x00, 0x07, 0x16, "J & S Marine Ltd."}, { + 0x00, 0x07, 0x17, "Wieland Electric GmbH"}, { + 0x00, 0x07, 0x18, "iCanTek Co., Ltd."}, { + 0x00, 0x07, 0x19, "Mobiis Co., Ltd."}, { + 0x00, 0x07, 0x1A, "Finedigital Inc."}, { + 0x00, 0x07, 0x1B, "Position Technology Inc."}, { + 0x00, 0x07, 0x1C, "AT&T Fixed Wireless Services"}, { + 0x00, 0x07, 0x1D, + "Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A."}, + { + 0x00, 0x07, 0x1E, "Tri-M Engineering / Nupak Dev. Corp."}, { + 0x00, 0x07, 0x1F, "European Systems Integration"}, { + 0x00, 0x07, 0x20, "Trutzschler GmbH & Co. KG"}, { + 0x00, 0x07, 0x21, "Formac Elektronik GmbH"}, { + 0x00, 0x07, 0x22, "Nielsen Media Research"}, { + 0x00, 0x07, 0x23, "ELCON Systemtechnik GmbH"}, { + 0x00, 0x07, 0x24, "Telemax Co., Ltd."}, { + 0x00, 0x07, 0x25, "Bematech International Corp."}, { + 0x00, 0x07, 0x27, "Zi Corporation (HK) Ltd."}, { + 0x00, 0x07, 0x28, "Neo Telecom"}, { + 0x00, 0x07, 0x29, "Kistler Instrumente AG"}, { + 0x00, 0x07, 0x2A, "Innovance Networks"}, { + 0x00, 0x07, 0x2B, "Jung Myung Telecom Co., Ltd."}, { + 0x00, 0x07, 0x2C, "Fabricom"}, { + 0x00, 0x07, 0x2D, "CNSystems"}, { + 0x00, 0x07, 0x2E, "North Node AB"}, { + 0x00, 0x07, 0x2F, "Instransa, Inc."}, { + 0x00, 0x07, 0x30, "Hutchison OPTEL Telecom Technology Co., Ltd."}, + { + 0x00, 0x07, 0x31, "Spiricon, Inc."}, { + 0x00, 0x07, 0x32, "AAEON Technology Inc."}, { + 0x00, 0x07, 0x33, "DANCONTROL Engineering"}, { + 0x00, 0x07, 0x34, "Agile Storage, Inc."}, { + 0x00, 0x07, 0x35, "Flarion Technologies, Inc."}, { + 0x00, 0x07, 0x36, "Data Video Technologies Co., Ltd."}, { + 0x00, 0x07, 0x37, "Soriya Co. Ltd."}, { + 0x00, 0x07, 0x38, "Young Technology Co., Ltd."}, { + 0x00, 0x07, 0x39, "Motion Media Technology Ltd."}, { + 0x00, 0x07, 0x3A, "Inventel Systemes"}, { + 0x00, 0x07, 0x3B, "Tenovis GmbH & Co KG"}, { + 0x00, 0x07, 0x3C, "Telecom Design"}, { + 0x00, 0x07, 0x3D, "Nanjing Postel Telecommunications Co., Ltd."}, { + 0x00, 0x07, 0x3E, "China Great-Wall Computer Shenzhen Co., Ltd."}, + { + 0x00, 0x07, 0x3F, "Woojyun Systec Co., Ltd."}, { + 0x00, 0x07, 0x40, "Melco Inc."}, { + 0x00, 0x07, 0x41, "Sierra Automated Systems"}, { + 0x00, 0x07, 0x42, "Current Technologies"}, { + 0x00, 0x07, 0x43, "Chelsio Communications"}, { + 0x00, 0x07, 0x44, "Unico, Inc."}, { + 0x00, 0x07, 0x45, "Radlan Computer Communications Ltd."}, { + 0x00, 0x07, 0x46, "Interlink BT, LLC"}, { + 0x00, 0x07, 0x47, "Mecalc"}, { + 0x00, 0x07, 0x48, "The Imaging Source Europe"}, { + 0x00, 0x07, 0x49, "CENiX Inc."}, { + 0x00, 0x07, 0x4A, "Carl Valentin GmbH"}, { + 0x00, 0x07, 0x4B, "Daihen Corporation"}, { + 0x00, 0x07, 0x4C, "Beicom Inc."}, { + 0x00, 0x07, 0x4D, "Zebra Technologies Corp."}, { + 0x00, 0x07, 0x4E, "Naughty boy co., Ltd."}, { + 0x00, 0x07, 0x4F, "Cisco Systems, Inc."}, { + 0x00, 0x07, 0x50, "Cisco Systems, Inc."}, { + 0x00, 0x07, 0x51, "m.u.t. - GmbH"}, { + 0x00, 0x07, 0x52, "Rhythm Watch Co., Ltd."}, { + 0x00, 0x07, 0x53, "Beijing Qxcomm Technology Co., Ltd."}, { + 0x00, 0x07, 0x54, "Xyterra Computing, Inc."}, { + 0x00, 0x07, 0x55, "Lafon SA"}, { + 0x00, 0x07, 0x56, "Juyoung Telecom"}, { + 0x00, 0x07, 0x57, "Topcall International AG"}, { + 0x00, 0x07, 0x58, "Dragonwave"}, { + 0x00, 0x07, 0x59, "Boris Manufacturing Corp."}, { + 0x00, 0x07, 0x5A, "Air Products and Chemicals, Inc."}, { + 0x00, 0x07, 0x5B, "Gibson Guitars"}, { + 0x00, 0x07, 0x5C, "ENCAD, Inc."}, { + 0x00, 0x07, 0x5D, "Celleritas Inc."}, { + 0x00, 0x07, 0x5E, "Pulsar Technologies, Inc."}, { + 0x00, 0x07, 0x5F, "VCS Video Communication Systems AG"}, { + 0x00, 0x07, 0x60, "TOMIS Information & Telecom Corp."}, { + 0x00, 0x07, 0x61, "Logitech SA"}, { + 0x00, 0x07, 0x62, "Group Sense Limited"}, { + 0x00, 0x07, 0x63, "Sunniwell Cyber Tech. Co., Ltd."}, { + 0x00, 0x07, 0x64, "YoungWoo Telecom Co. Ltd."}, { + 0x00, 0x07, 0x65, "Jade Quantum Technologies, Inc."}, { + 0x00, 0x07, 0x66, "Chou Chin Industrial Co., Ltd."}, { + 0x00, 0x07, 0x67, "Yuxing Electronics Company Limited"}, { + 0x00, 0x07, 0x68, "Danfoss A/S"}, { + 0x00, 0x07, 0x69, "Italiana Macchi SpA"}, { + 0x00, 0x07, 0x6A, "NEXTEYE Co., Ltd."}, { + 0x00, 0x07, 0x6B, "Stralfors AB"}, { + 0x00, 0x07, 0x6C, "Daehanet, Inc."}, { + 0x00, 0x07, 0x6D, "Flexlight Networks"}, { + 0x00, 0x07, 0x6E, "Sinetica Corporation Ltd."}, { + 0x00, 0x07, 0x6F, "Synoptics Limited"}, { + 0x00, 0x07, 0x70, "Locusnetworks Corporation"}, { + 0x00, 0x07, 0x71, "Embedded System Corporation"}, { + 0x00, 0x07, 0x72, "Shanghai Bell Company Limited"}, { + 0x00, 0x07, 0x73, "Ascom Powerline Communications Ltd."}, { + 0x00, 0x07, 0x74, "GuangZhou Thinker Technology Co. Ltd."}, { + 0x00, 0x07, 0x75, "Valence Semiconductor, Inc."}, { + 0x00, 0x07, 0x76, "Federal APD"}, { + 0x00, 0x07, 0x77, "Motah Ltd."}, { + 0x00, 0x07, 0x78, "GERSTEL GmbH & Co. KG"}, { + 0x00, 0x07, 0x79, "Sungil Telecom Co., Ltd."}, { + 0x00, 0x07, 0x7A, "Infoware System Co., Ltd."}, { + 0x00, 0x07, 0x7B, "Millimetrix Broadband Networks"}, { + 0x00, 0x07, 0x7C, "OnTime Networks"}, { + 0x00, 0x07, 0x7E, "Elrest GmbH"}, { + 0x00, 0x07, 0x7F, "J Communications Co., Ltd."}, { + 0x00, 0x07, 0x80, "Bluegiga Technologies OY"}, { + 0x00, 0x07, 0x81, "Itron Inc."}, { + 0x00, 0x07, 0x82, "Nauticus Networks, Inc."}, { + 0x00, 0x07, 0x83, "SynCom Network, Inc."}, { + 0x00, 0x07, 0x84, "Cisco Systems Inc."}, { + 0x00, 0x07, 0x85, "Cisco Systems Inc."}, { + 0x00, 0x07, 0x86, "Wireless Networks Inc."}, { + 0x00, 0x07, 0x87, "Idea System Co., Ltd."}, { + 0x00, 0x07, 0x88, "Clipcomm, Inc."}, { + 0x00, 0x07, 0x89, "Eastel Systems Corporation"}, { + 0x00, 0x07, 0x8A, "Mentor Data System Inc."}, { + 0x00, 0x07, 0x8B, "Wegener Communications, Inc."}, { + 0x00, 0x07, 0x8C, "Elektronikspecialisten i Borlange AB"}, { + 0x00, 0x07, 0x8D, "NetEngines Ltd."}, { + 0x00, 0x07, 0x8E, "Garz & Friche GmbH"}, { + 0x00, 0x07, 0x8F, "Emkay Innovative Products"}, { + 0x00, 0x07, 0x90, "Tri-M Technologies (s) Limited"}, { + 0x00, 0x07, 0x91, "International Data Communications, Inc."}, { + 0x00, 0x07, 0x92, "Suetron Electronic GmbH"}, { + 0x00, 0x07, 0x94, "Simple Devices, Inc."}, { + 0x00, 0x07, 0x95, "Elitegroup Computer System Co. (ECS)"}, { + 0x00, 0x07, 0x96, "LSI Systems, Inc."}, { + 0x00, 0x07, 0x97, "Netpower Co., Ltd."}, { + 0x00, 0x07, 0x98, "Selea SRL"}, { + 0x00, 0x07, 0x99, "Tipping Point Technologies, Inc."}, { + 0x00, 0x07, 0x9A, "SmartSight Networks Inc."}, { + 0x00, 0x07, 0x9B, "Aurora Networks"}, { + 0x00, 0x07, 0x9C, "Golden Electronics Technology Co., Ltd."}, { + 0x00, 0x07, 0x9D, "Musashi Co., Ltd."}, { + 0x00, 0x07, 0x9E, "Ilinx Co., Ltd."}, { + 0x00, 0x07, 0x9F, "Action Digital Inc."}, { + 0x00, 0x07, 0xA0, "e-Watch Inc."}, { + 0x00, 0x07, 0xA1, "Viasys Critical Care"}, { + 0x00, 0x07, 0xA2, "Opteon Corporation"}, { + 0x00, 0x07, 0xA3, "Ositis Software, Inc."}, { + 0x00, 0x07, 0xA4, "GN Netcom Ltd."}, { + 0x00, 0x07, 0xA5, "Y.D.K Co. Ltd."}, { + 0x00, 0x07, 0xA6, "Home Automation, Inc."}, { + 0x00, 0x07, 0xA7, "A-Z Inc."}, { + 0x00, 0x07, 0xA8, "Haier Group Technologies Ltd."}, { + 0x00, 0x07, 0xA9, "Novasonics"}, { + 0x00, 0x07, 0xAA, "Quantum Data Inc."}, { + 0x00, 0x07, 0xAC, "Eolring"}, { + 0x00, 0x07, 0xAD, "Pentacon GmbH Foto-und Feinwerktechnik"}, { + 0x00, 0x07, 0xAE, "Layer N Networks"}, { + 0x00, 0x07, 0xAF, "N-Tron Corp."}, { + 0x00, 0x07, 0xB0, "Office Details, Inc."}, { + 0x00, 0x07, 0xB1, "Equator Technologies"}, { + 0x00, 0x07, 0xB2, "Transaccess S.A."}, { + 0x00, 0x07, 0xB3, "Cisco Systems Inc."}, { + 0x00, 0x07, 0xB4, "Cisco Systems Inc."}, { + 0x00, 0x07, 0xB5, "Any One Wireless Ltd."}, { + 0x00, 0x07, 0xB6, "Telecom Technology Ltd."}, { + 0x00, 0x07, 0xB7, "Samurai Ind. Prods Eletronicos Ltda"}, { + 0x00, 0x07, 0xB8, "American Predator Corp."}, { + 0x00, 0x07, 0xB9, "Ginganet Corporation"}, { + 0x00, 0x07, 0xBA, "Xebeo Communications, Inc."}, { + 0x00, 0x07, 0xBB, "Confluence Networks"}, { + 0x00, 0x07, 0xBC, "Identix Inc."}, { + 0x00, 0x07, 0xBD, "Radionet Ltd."}, { + 0x00, 0x07, 0xBE, "DataLogic SpA"}, { + 0x00, 0x07, 0xBF, "Armillaire Technologies, Inc."}, { + 0x00, 0x07, 0xC0, "NetZerver Inc."}, { + 0x00, 0x07, 0xC1, "Overture Networks, Inc."}, { + 0x00, 0x07, 0xC2, "Netsys Telecom"}, { + 0x00, 0x07, 0xC3, "Cirpack"}, { + 0x00, 0x07, 0xC4, "JEAN Co. Ltd."}, { + 0x00, 0x07, 0xC5, "Gcom, Inc."}, { + 0x00, 0x07, 0xC6, "VDS Vosskuhler GmbH"}, { + 0x00, 0x07, 0xC7, "Synectics Systems Limited"}, { + 0x00, 0x07, 0xC8, "Brain21, Inc."}, { + 0x00, 0x07, 0xC9, "Technol Seven Co., Ltd."}, { + 0x00, 0x07, 0xCA, + "Creatix Polymedia Ges Fur Kommunikaitonssysteme"}, { + 0x00, 0x07, 0xCB, "Freebox SA"}, { + 0x00, 0x07, 0xCC, "Kaba Benzing GmbH"}, { + 0x00, 0x07, 0xCD, "NMTEL Co., Ltd."}, { + 0x00, 0x07, 0xCE, "Cabletime Limited"}, { + 0x00, 0x07, 0xCF, "Anoto AB"}, { + 0x00, 0x07, 0xD0, "Automat Engenharia de Automaoa Ltda."}, { + 0x00, 0x07, 0xD1, "Spectrum Signal Processing Inc."}, { + 0x00, 0x07, 0xD2, "Logopak Systeme"}, { + 0x00, 0x07, 0xD3, "Stork Digital Imaging B.V."}, { + 0x00, 0x07, 0xD4, "Zhejiang Yutong Network Communication Co Ltd."}, + { + 0x00, 0x07, 0xD5, "3e Technologies Int;., Inc."}, { + 0x00, 0x07, 0xD6, "Commil Ltd."}, { + 0x00, 0x07, 0xD7, "Caporis Networks AG"}, { + 0x00, 0x07, 0xD8, "Hitron Systems Inc."}, { + 0x00, 0x07, 0xD9, "Splicecom"}, { + 0x00, 0x07, 0xDA, "Neuro Telecom Co., Ltd."}, { + 0x00, 0x07, 0xDB, "Kirana Networks, Inc."}, { + 0x00, 0x07, 0xDC, "Atek Co, Ltd."}, { + 0x00, 0x07, 0xDD, "Cradle Technologies"}, { + 0x00, 0x07, 0xDE, "eCopilt AB"}, { + 0x00, 0x07, 0xDF, "Vbrick Systems Inc."}, { + 0x00, 0x07, 0xE0, "Palm Inc."}, { + 0x00, 0x07, 0xE1, "WIS Communications Co. Ltd."}, { + 0x00, 0x07, 0xE2, "Bitworks, Inc."}, { + 0x00, 0x07, 0xE3, "Navcom Technology, Inc."}, { + 0x00, 0x07, 0xE4, "SoftRadio Co., Ltd."}, { + 0x00, 0x07, 0xE5, "Coup Corporation"}, { + 0x00, 0x07, 0xE6, "edgeflow Canada Inc."}, { + 0x00, 0x07, 0xE7, "FreeWave Technologies"}, { + 0x00, 0x07, 0xE8, "St. Bernard Software"}, { + 0x00, 0x07, 0xE9, "Intel Corporation"}, { + 0x00, 0x07, 0xEA, "Massana, Inc."}, { + 0x00, 0x07, 0xEB, "Cisco Systems Inc."}, { + 0x00, 0x07, 0xEC, "Cisco Systems Inc."}, { + 0x00, 0x07, 0xED, "Altera Corporation"}, { + 0x00, 0x07, 0xEE, "telco Informationssysteme GmbH"}, { + 0x00, 0x07, 0xEF, "Lockheed Martin Tactical Systems"}, { + 0x00, 0x07, 0xF0, "LogiSync Corporation"}, { + 0x00, 0x07, 0xF1, "TeraBurst Networks Inc."}, { + 0x00, 0x07, 0xF2, "IOA Corporation"}, { + 0x00, 0x07, 0xF3, "Think Engine Networks"}, { + 0x00, 0x07, 0xF4, "Eletex Co., Ltd."}, { + 0x00, 0x07, 0xF5, "Bridgeco Co AG"}, { + 0x00, 0x07, 0xF6, "Qqest Software Systems"}, { + 0x00, 0x07, 0xF7, "Galtronics"}, { + 0x00, 0x07, 0xF8, "ITDevices, Inc."}, { + 0x00, 0x07, 0xF9, "Phonetics, Inc."}, { + 0x00, 0x07, 0xFA, "ITT Co., Ltd."}, { + 0x00, 0x07, 0xFB, "Giga Stream UMTS Technologies GmbH"}, { + 0x00, 0x07, 0xFC, "Adept Systems Inc."}, { + 0x00, 0x07, 0xFD, "LANergy Ltd."}, { + 0x00, 0x07, 0xFE, "Rigaku Corporation"}, { + 0x00, 0x07, 0xFF, "Gluon Networks"}, { + 0x00, 0x08, 0x00, "MULTITECH SYSTEMS, INC."}, { + 0x00, 0x08, 0x01, "HighSpeed Surfing Inc."}, { + 0x00, 0x08, 0x02, "Compaq Computer Corporation"}, { + 0x00, 0x08, 0x03, "Cos Tron"}, { + 0x00, 0x08, 0x04, "ICA Inc."}, { + 0x00, 0x08, 0x05, "Techno-Holon Corporation"}, { + 0x00, 0x08, 0x06, "Raonet Systems, Inc."}, { + 0x00, 0x08, 0x07, "Access Devices Limited"}, { + 0x00, 0x08, 0x08, "PPT Vision, Inc."}, { + 0x00, 0x08, 0x09, "Systemonic AG"}, { + 0x00, 0x08, 0x0A, "Espera-Werke GmbH"}, { + 0x00, 0x08, 0x0B, "Birka BPA Informationssystem AB"}, { + 0x00, 0x08, 0x0C, "VDA elettronica SrL"}, { + 0x00, 0x08, 0x0D, "Toshiba"}, { + 0x00, 0x08, 0x0E, "Motorola, BCS"}, { + 0x00, 0x08, 0x0F, "Proximion Fiber Optics AB"}, { + 0x00, 0x08, 0x10, "Key Technology, Inc."}, { + 0x00, 0x08, 0x11, "VOIX Corporation"}, { + 0x00, 0x08, 0x12, "GM-2 Corporation"}, { + 0x00, 0x08, 0x13, "Diskbank, Inc."}, { + 0x00, 0x08, 0x14, "TIL Technologies"}, { + 0x00, 0x08, 0x15, "CATS Co., Ltd."}, { + 0x00, 0x08, 0x16, "Bluetags A/S"}, { + 0x00, 0x08, 0x17, "EmergeCore Networks LLC"}, { + 0x00, 0x08, 0x18, "Pixelworks, Inc."}, { + 0x00, 0x08, 0x19, "Banksys"}, { + 0x00, 0x08, 0x1A, + "Sanrad Intelligence Storage Communications (2000) Ltd."}, + { + 0x00, 0x08, 0x1B, "Windigo Systems"}, { + 0x00, 0x08, 0x1C, "@pos.com"}, { + 0x00, 0x08, 0x1D, "Ipsil, Incorporated"}, { + 0x00, 0x08, 0x1E, "Repeatit AB"}, { + 0x00, 0x08, 0x1F, "Pou Yuen Tech Corp. Ltd."}, { + 0x00, 0x08, 0x20, "Cisco Systems Inc."}, { + 0x00, 0x08, 0x21, "Cisco Systems Inc."}, { + 0x00, 0x08, 0x22, "InPro Comm"}, { + 0x00, 0x08, 0x23, "Texa Corp."}, { + 0x00, 0x08, 0x24, "Promatek Industries Ltd."}, { + 0x00, 0x08, 0x25, "Acme Packet"}, { + 0x00, 0x08, 0x26, "Colorado Med Tech"}, { + 0x00, 0x08, 0x27, "Pirelli Cables & Systems"}, { + 0x00, 0x08, 0x28, "Koei Engineering Ltd."}, { + 0x00, 0x08, 0x29, "Aval Nagasaki Corporation"}, { + 0x00, 0x08, 0x2A, "Powerwallz Network Security"}, { + 0x00, 0x08, 0x2B, "Wooksung Electronics, Inc."}, { + 0x00, 0x08, 0x2C, "Homag AG"}, { + 0x00, 0x08, 0x2D, "Indus Teqsite Private Limited"}, { + 0x00, 0x08, 0x2E, "Multitone Electronics PLC"}, { + 0x00, 0x08, 0x4E, "DivergeNet, Inc."}, { + 0x00, 0x08, 0x4F, "Qualstar Corporation"}, { + 0x00, 0x08, 0x50, "Arizona Instrument Corp."}, { + 0x00, 0x08, 0x51, "Canadian Bank Note Company, Ltd."}, { + 0x00, 0x08, 0x52, "Davolink Co. Inc."}, { + 0x00, 0x08, 0x53, "Schleicher GmbH & Co. Relaiswerke KG"}, { + 0x00, 0x08, 0x54, "Netronix, Inc."}, { + 0x00, 0x08, 0x55, "NASA-Goddard Space Flight Center"}, { + 0x00, 0x08, 0x56, "Gamatronic Electronic Industries Ltd."}, { + 0x00, 0x08, 0x57, "Polaris Networks, Inc."}, { + 0x00, 0x08, 0x58, "Novatechnology Inc."}, { + 0x00, 0x08, 0x59, "ShenZhen Unitone Electronics Co., Ltd."}, { + 0x00, 0x08, 0x5A, "IntiGate Inc."}, { + 0x00, 0x08, 0x5B, "Hanbit Electronics Co., Ltd."}, { + 0x00, 0x08, 0x5C, "Shanghai Dare Technologies Co. Ltd."}, { + 0x00, 0x08, 0x5D, "Aastra"}, { + 0x00, 0x08, 0x5E, "PCO Computer Optics GmbH"}, { + 0x00, 0x08, 0x5F, "Picanol N.V."}, { + 0x00, 0x08, 0x60, "LodgeNet Entertainment Corp."}, { + 0x00, 0x08, 0x61, "SoftEnergy Co., Ltd."}, { + 0x00, 0x08, 0x62, "NEC Eluminant Technologies, Inc."}, { + 0x00, 0x08, 0x63, "Entrisphere Inc."}, { + 0x00, 0x08, 0x64, "Fasy S.p.A."}, { + 0x00, 0x08, 0x65, "JASCOM CO., LTD"}, { + 0x00, 0x08, 0x66, "DSX Access Systems, Inc."}, { + 0x00, 0x08, 0x67, "Uptime Devices"}, { + 0x00, 0x08, 0x68, "PurOptix"}, { + 0x00, 0x08, 0x69, "Command-e Technology Co.,Ltd."}, { + 0x00, 0x08, 0x6A, "Industrie Technik IPS GmbH"}, { + 0x00, 0x08, 0x6B, "MIPSYS"}, { + 0x00, 0x08, 0x6C, "Plasmon LMS"}, { + 0x00, 0x08, 0x6D, "Missouri FreeNet"}, { + 0x00, 0x08, 0x6E, "Hyglo AB"}, { + 0x00, 0x08, 0x6F, "Resources Computer Network Ltd."}, { + 0x00, 0x08, 0x70, "Rasvia Systems, Inc."}, { + 0x00, 0x08, 0x71, "NORTHDATA Co., Ltd."}, { + 0x00, 0x08, 0x72, "Sorenson Technologies, Inc."}, { + 0x00, 0x08, 0x73, "DAP Design B.V."}, { + 0x00, 0x08, 0x74, "Dell Computer Corp."}, { + 0x00, 0x08, 0x75, "Acorp Electronics Corp."}, { + 0x00, 0x08, 0x76, "SDSystem"}, { + 0x00, 0x08, 0x77, "Liebert HIROSS S.p.A."}, { + 0x00, 0x08, 0x78, "Benchmark Storage Innovations"}, { + 0x00, 0x08, 0x79, "CEM Corporation"}, { + 0x00, 0x08, 0x7A, "Wipotec GmbH"}, { + 0x00, 0x08, 0x7B, "RTX Telecom A/S"}, { + 0x00, 0x08, 0x7C, "Cisco Systems, Inc."}, { + 0x00, 0x08, 0x7D, "Cisco Systems Inc."}, { + 0x00, 0x08, 0x7E, "Bon Electro-Telecom Inc."}, { + 0x00, 0x08, 0x7F, "SPAUN electronic GmbH & Co. KG"}, { + 0x00, 0x08, 0x80, "BroadTel Canada Communications inc."}, { + 0x00, 0x08, 0x81, "DIGITAL HANDS CO.,LTD."}, { + 0x00, 0x08, 0x82, "SIGMA CORPORATION"}, { + 0x00, 0x08, 0x83, "Hewlett-Packard Company"}, { + 0x00, 0x08, 0x84, "Index Braille AB"}, { + 0x00, 0x08, 0x85, "EMS Dr. Thomas Wuensche"}, { + 0x00, 0x08, 0x86, "Hansung Teliann, Inc."}, { + 0x00, 0x08, 0x88, "OULLIM Information Technology Inc,."}, { + 0x00, 0x08, 0x89, "Echostar Technologies Corp"}, { + 0x00, 0x08, 0x8A, "Minds@Work"}, { + 0x00, 0x08, 0x8B, "Tropic Networks Inc."}, { + 0x00, 0x08, 0x8C, "Quanta Network Systems Inc."}, { + 0x00, 0x08, 0x8D, "Sigma-Links Inc."}, { + 0x00, 0x08, 0x8E, "Nihon Computer Co., Ltd."}, { + 0x00, 0x08, 0x8F, "ADVANCED DIGITAL TECHNOLOGY"}, { + 0x00, 0x08, 0x90, "AVILINKS SA"}, { + 0x00, 0x08, 0x91, "Lyan Inc."}, { + 0x00, 0x08, 0x92, "EM Solutions"}, { + 0x00, 0x08, 0x94, "InnoVISION Multimedia Ltd."}, { + 0x00, 0x08, 0x96, "Printronix, Inc."}, { + 0x00, 0x08, 0x97, "Quake Technologies"}, { + 0x00, 0x08, 0x98, "Gigabit Optics Corporation"}, { + 0x00, 0x08, 0x99, "Netbind, Inc."}, { + 0x00, 0x08, 0x9A, "Alcatel Microelectronics"}, { + 0x00, 0x08, 0x9B, "ICP Electronics Inc."}, { + 0x00, 0x08, 0x9C, "Elecs Industry Co., Ltd."}, { + 0x00, 0x08, 0x9D, "UHD-Elektronik"}, { + 0x00, 0x08, 0x9E, "Beijing Enter-Net co.LTD"}, { + 0x00, 0x08, 0x9F, "EFM Networks"}, { + 0x00, 0x08, 0xA0, "Stotz Feinmesstechnik GmbH"}, { + 0x00, 0x08, 0xA1, "CNet Technology Inc."}, { + 0x00, 0x08, 0xA2, "ADI Engineering, Inc."}, { + 0x00, 0x08, 0xA3, "Cisco Systems"}, { + 0x00, 0x08, 0xA4, "Cisco Systems"}, { + 0x00, 0x08, 0xA5, "Peninsula Systems Inc."}, { + 0x00, 0x08, 0xA6, "Multiware & Image Co., Ltd."}, { + 0x00, 0x08, 0xA7, "iLogic Inc."}, { + 0x00, 0x08, 0xA8, "Systec Co., Ltd."}, { + 0x00, 0x08, 0xA9, "SangSang Technology, Inc."}, { + 0x00, 0x08, 0xAA, "KARAM"}, { + 0x00, 0x08, 0xAB, "EnerLinx.com, Inc."}, { + 0x00, 0x08, 0xAD, "Toyo-Linx Co., Ltd."}, { + 0x00, 0x08, 0xAE, "Packetfront"}, { + 0x00, 0x08, 0xAF, "Novatec Corporation"}, { + 0x00, 0x08, 0xB0, "BKtel communications GmbH"}, { + 0x00, 0x08, 0xB1, "ProQuent Systems"}, { + 0x00, 0x08, 0xB2, + "SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD"}, { + 0x00, 0x08, 0xB3, "Fastwel"}, { + 0x00, 0x08, 0xB4, "SYSPOL"}, { + 0x00, 0x08, 0xB5, "TAI GUEN ENTERPRISE CO., LTD"}, { + 0x00, 0x08, 0xB6, "RouteFree, Inc."}, { + 0x00, 0x08, 0xB7, "HIT Incorporated"}, { + 0x00, 0x08, 0xB8, "E.F. Johnson"}, { + 0x00, 0x08, 0xB9, "KAON MEDIA Co., Ltd."}, { + 0x00, 0x08, 0xBA, "Erskine Systems Ltd"}, { + 0x00, 0x08, 0xBB, "NetExcell"}, { + 0x00, 0x08, 0xBC, "Ilevo AB"}, { + 0x00, 0x08, 0xBD, "TEPG-US"}, { + 0x00, 0x08, 0xBE, "XENPAK MSA Group"}, { + 0x00, 0x08, 0xBF, "Aptus Elektronik AB"}, { + 0x00, 0x08, 0xC0, "ASA SYSTEMS"}, { + 0x00, 0x08, 0xC1, "Avistar Communications Corporation"}, { + 0x00, 0x08, 0xC2, "Cisco Systems"}, { + 0x00, 0x08, 0xC3, "Contex A/S"}, { + 0x00, 0x08, 0xC5, "Liontech Co., Ltd."}, { + 0x00, 0x08, 0xC6, "Philips Consumer Communications"}, { + 0x00, 0x08, 0xC7, "COMPAQ COMPUTER CORPORATION"}, { + 0x00, 0x08, 0xC8, "Soneticom, Inc."}, { + 0x00, 0x08, 0xC9, "TechniSat Digital GmbH"}, { + 0x00, 0x08, 0xCA, "TwinHan Technology Co.,Ltd"}, { + 0x00, 0x08, 0xCB, "Zeta Broadband Inc."}, { + 0x00, 0x08, 0xCC, "Remotec, Inc."}, { + 0x00, 0x08, 0xCD, "With-Net Inc"}, { + 0x00, 0x08, 0xCF, "Nippon Koei Power Systems Co., Ltd."}, { + 0x00, 0x08, 0xD0, "Musashi Engineering Co., LTD."}, { + 0x00, 0x08, 0xD1, "KAREL INC."}, { + 0x00, 0x08, 0xD2, "ZOOM Networks Inc."}, { + 0x00, 0x08, 0xD3, "Hercules Technologies S.A."}, { + 0x00, 0x08, 0xD4, "IneoQuest Technologies, Inc"}, { + 0x00, 0x08, 0xD5, "Vanguard Managed Solutions"}, { + 0x00, 0x08, 0xD6, "HASSNET Inc."}, { + 0x00, 0x08, 0xD7, "HOW CORPORATION"}, { + 0x00, 0x08, 0xD8, "Dowkey Microwave"}, { + 0x00, 0x08, 0xD9, "Mitadenshi Co.,LTD"}, { + 0x00, 0x08, 0xDA, "SofaWare Technologies Ltd."}, { + 0x00, 0x08, 0xDB, "Corrigent Systems"}, { + 0x00, 0x08, 0xDC, "Wiznet"}, { + 0x00, 0x08, 0xDD, "Telena Communications, Inc."}, { + 0x00, 0x08, 0xDE, "3UP Systems"}, { + 0x00, 0x08, 0xDF, "Alistel Inc."}, { + 0x00, 0x08, 0xE0, "ATO Technology Ltd."}, { + 0x00, 0x08, 0xE1, "Barix AG"}, { + 0x00, 0x08, 0xE2, "Cisco Systems"}, { + 0x00, 0x08, 0xE3, "Cisco Systems"}, { + 0x00, 0x08, 0xE4, "Envenergy Inc"}, { + 0x00, 0x08, 0xE5, "IDK Corporation"}, { + 0x00, 0x08, 0xE6, "Littlefeet"}, { + 0x00, 0x08, 0xE7, "SHI ControlSystems,Ltd."}, { + 0x00, 0x08, 0xE8, "Excel Master Ltd."}, { + 0x00, 0x08, 0xE9, "NextGig"}, { + 0x00, 0x08, 0xEA, "Motion Control Engineering, Inc"}, { + 0x00, 0x08, 0xEB, "ROMWin Co.,Ltd."}, { + 0x00, 0x08, 0xEC, "Zonu, Inc."}, { + 0x00, 0x08, 0xED, "ST&T Instrument Corp."}, { + 0x00, 0x08, 0xEE, "Logic Product Development"}, { + 0x00, 0x08, 0xEF, "DIBAL,S.A."}, { + 0x00, 0x08, 0xF0, "Next Generation Systems, Inc."}, { + 0x00, 0x08, 0xF1, "Voltaire"}, { + 0x00, 0x08, 0xF3, "WANY"}, { + 0x00, 0x08, 0xF4, "Bluetake Technology Co., Ltd."}, { + 0x00, 0x08, 0xF5, "YESTECHNOLOGY Co.,Ltd."}, { + 0x00, 0x08, 0xF6, "SUMITOMO ELECTRIC HIGHTECHS.co.,ltd."}, { + 0x00, 0x08, 0xF7, + "Hitachi Ltd, Semiconductor & Integrated Circuits Gr"}, + { + 0x00, 0x08, 0xF8, "Guardall Ltd"}, { + 0x00, 0x08, 0xF9, "Padcom, Inc."}, { + 0x00, 0x08, 0xFA, "Karl E.Brinkmann GmbH"}, { + 0x00, 0x08, 0xFC, "Gigaphoton Inc."}, { + 0x00, 0x08, 0xFD, "BlueKorea Co., Ltd."}, { + 0x00, 0x08, 0xFF, "Trilogy Broadcast (Holdings) Ltd"}, { + 0x00, 0x09, 0x00, "TMT"}, { + 0x00, 0x09, 0x01, + "Shenzhen Shixuntong Information & Technoligy Co"}, { + 0x00, 0x09, 0x02, "Redline Communications Inc."}, { + 0x00, 0x09, 0x03, "Panasas, Inc"}, { + 0x00, 0x09, 0x04, "MONDIAL electronic"}, { + 0x00, 0x09, 0x05, "iTEC Technologies Ltd."}, { + 0x00, 0x09, 0x06, "Esteem Networks"}, { + 0x00, 0x09, 0x07, "Chrysalis Development"}, { + 0x00, 0x09, 0x08, "VTech Technology Corp."}, { + 0x00, 0x09, 0x09, "Telenor Connect A/S"}, { + 0x00, 0x09, 0x0A, "SnedFar Technology Co., Ltd."}, { + 0x00, 0x09, 0x0B, "MTL Instruments PLC"}, { + 0x00, 0x09, 0x0C, "Mayekawa Mfg. Co. Ltd."}, { + 0x00, 0x09, 0x0E, "Helix Technology Inc."}, { + 0x00, 0x09, 0x10, "Simple Access Inc."}, { + 0x00, 0x09, 0x11, "Cisco Systems"}, { + 0x00, 0x09, 0x12, "Cisco Systems"}, { + 0x00, 0x09, 0x14, "COMPUTROLS INC."}, { + 0x00, 0x09, 0x15, "CAS Corp."}, { + 0x00, 0x09, 0x16, "Listman Home Technologies, Inc."}, { + 0x00, 0x09, 0x17, "WEM Technology Inc"}, { + 0x00, 0x09, 0x18, "SAMSUNG TECHWIN CO.,LTD"}, { + 0x00, 0x09, 0x19, "MDS Gateways"}, { + 0x00, 0x09, 0x1A, "Macat Optics & Electronics Co., Ltd."}, { + 0x00, 0x09, 0x1B, "Digital Generation Inc."}, { + 0x00, 0x09, 0x1C, "CacheVision, Inc"}, { + 0x00, 0x09, 0x1D, "Proteam Computer Corporation"}, { + 0x00, 0x09, 0x1E, "Firstech Technology Corp."}, { + 0x00, 0x09, 0x1F, "A&D Co., Ltd."}, { + 0x00, 0x09, 0x21, "Planmeca Oy"}, { + 0x00, 0x09, 0x22, "Touchless Sensor Technology AG"}, { + 0x00, 0x09, 0x23, "Heaman System Co., Ltd"}, { + 0x00, 0x09, 0x24, "Telebau GmbH"}, { + 0x00, 0x09, 0x25, "VSN Systemen BV"}, { + 0x00, 0x09, 0x26, "YODA COMMUNICATIONS, INC."}, { + 0x00, 0x09, 0x27, "TOYOKEIKI CO.,LTD."}, { + 0x00, 0x09, 0x28, "Telecore Inc"}, { + 0x00, 0x09, 0x29, "Sanyo Industries (UK) Limited"}, { + 0x00, 0x09, 0x2A, "MYTECS Co.,Ltd."}, { + 0x00, 0x09, 0x2B, "iQstor Networks, Inc."}, { + 0x00, 0x09, 0x2C, "Hitpoint Inc."}, { + 0x00, 0x09, 0x2D, "High Tech Computer, Corp."}, { + 0x00, 0x09, 0x2E, "B&Tech System Inc."}, { + 0x00, 0x09, 0x2F, "Akom Technology Corporation"}, { + 0x00, 0x09, 0x30, "AeroConcierge Inc."}, { + 0x00, 0x09, 0x31, "Future Internet, Inc."}, { + 0x00, 0x09, 0x32, "Omnilux"}, { + 0x00, 0x09, 0x33, "OPTOVALLEY Co. Ltd."}, { + 0x00, 0x09, 0x34, "Dream-Multimedia-Tv GmbH"}, { + 0x00, 0x09, 0x35, "Sandvine Incorporated"}, { + 0x00, 0x09, 0x36, "Ipetronik GmbH & Co.KG"}, { + 0x00, 0x09, 0x37, "Inventec Appliance Corp"}, { + 0x00, 0x09, 0x38, "Allot Communications"}, { + 0x00, 0x09, 0x39, "ShibaSoku Co.,Ltd."}, { + 0x00, 0x09, 0x3A, "Molex Fiber Optics"}, { + 0x00, 0x09, 0x3B, "HYUNDAI NETWORKS INC."}, { + 0x00, 0x09, 0x3C, "Jacques Technologies P/L"}, { + 0x00, 0x09, 0x3E, "C&I Technologies"}, { + 0x00, 0x09, 0x3F, "Double-Win Enterpirse CO., LTD"}, { + 0x00, 0x09, 0x40, "AGFEO GmbH & Co. KG"}, { + 0x00, 0x09, 0x41, "Allied Telesis K.K."}, { + 0x00, 0x09, 0x42, "CRESCO, LTD."}, { + 0x00, 0x09, 0x43, "Cisco Systems"}, { + 0x00, 0x09, 0x44, "Cisco Systems"}, { + 0x00, 0x09, 0x45, "Palmmicro Communications Inc"}, { + 0x00, 0x09, 0x46, "Cluster Labs GmbH"}, { + 0x00, 0x09, 0x47, "Aztek, Inc."}, { + 0x00, 0x09, 0x48, "Vista Control Systems, Corp."}, { + 0x00, 0x09, 0x49, "Glyph Technologies Inc."}, { + 0x00, 0x09, 0x4A, "Homenet Communications"}, { + 0x00, 0x09, 0x4B, "FillFactory NV"}, { + 0x00, 0x09, 0x4C, "Communication Weaver Co.,Ltd."}, { + 0x00, 0x09, 0x4D, "Braintree Communications Pty Ltd"}, { + 0x00, 0x09, 0x4E, "BARTECH SYSTEMS INTERNATIONAL, INC"}, { + 0x00, 0x09, 0x50, "Independent Storage Corporation"}, { + 0x00, 0x09, 0x52, "Auerswald GmbH & Co. KG"}, { + 0x00, 0x09, 0x53, "Linkage System Integration Co.Ltd."}, { + 0x00, 0x09, 0x54, "AMiT spol. s. r. o."}, { + 0x00, 0x09, 0x55, "Young Generation International Corp."}, { + 0x00, 0x09, 0x56, "Network Systems Group, Ltd. (NSG)"}, { + 0x00, 0x09, 0x57, "Supercaller, Inc."}, { + 0x00, 0x09, 0x58, "INTELNET S.A."}, { + 0x00, 0x09, 0x59, "Sitecsoft"}, { + 0x00, 0x09, 0x5A, "RACEWOOD TECHNOLOGY"}, { + 0x00, 0x09, 0x5B, "Netgear, Inc."}, { + 0x00, 0x09, 0x5D, "Dialogue Technology Corp."}, { + 0x00, 0x09, 0x5E, "Masstech Group Inc."}, { + 0x00, 0x09, 0x5F, "Telebyte, Inc."}, { + 0x00, 0x09, 0x60, "YOZAN Inc."}, { + 0x00, 0x09, 0x61, "Switchgear and Instrumentation Ltd"}, { + 0x00, 0x09, 0x62, "Filetrac AS"}, { + 0x00, 0x09, 0x64, "Hi-Techniques"}, { + 0x00, 0x09, 0x66, "Thales Navigation"}, { + 0x00, 0x09, 0x67, "Tachyon, Inc"}, { + 0x00, 0x09, 0x68, "TECHNOVENTURE, INC."}, { + 0x00, 0x09, 0x69, "Meret Optical Communications"}, { + 0x00, 0x09, 0x6A, "Cloverleaf Communications Inc."}, { + 0x00, 0x09, 0x6B, "IBM Corporation"}, { + 0x00, 0x09, 0x6C, "Imedia Semiconductor Corp."}, { + 0x00, 0x09, 0x6D, "Powernet Technologies Corp."}, { + 0x00, 0x09, 0x6E, "GIANT ELECTRONICS LTD."}, { + 0x00, 0x09, 0x6F, "Beijing Zhongqing Elegant Tech. Corp.,Limited"}, + { + 0x00, 0x09, 0x70, "Vibration Research Corporation"}, { + 0x00, 0x09, 0x71, "Time Management, Inc."}, { + 0x00, 0x09, 0x72, "Securebase,Inc"}, { + 0x00, 0x09, 0x73, "Lenten Technology Co., Ltd."}, { + 0x00, 0x09, 0x74, "Innopia Technologies, Inc."}, { + 0x00, 0x09, 0x75, "fSONA Communications Corporation"}, { + 0x00, 0x09, 0x77, "Brunner Elektronik AG"}, { + 0x00, 0x09, 0x78, "AIJI System Co., Ltd."}, { + 0x00, 0x09, 0x79, "Advanced Television Systems Committee, Inc."}, { + 0x00, 0x09, 0x7A, "Louis Design Labs."}, { + 0x00, 0x09, 0x7B, "Cisco Systems"}, { + 0x00, 0x09, 0x7C, "Cisco Systems"}, { + 0x00, 0x09, 0x7D, "SecWell Networks Oy"}, { + 0x00, 0x09, 0x7E, "IMI TECHNOLOGY CO., LTD"}, { + 0x00, 0x09, 0x80, "Power Zenith Inc."}, { + 0x00, 0x09, 0x81, "Newport Networks"}, { + 0x00, 0x09, 0x82, "Loewe Opta GmbH"}, { + 0x00, 0x09, 0x83, "Gvision Incorporated"}, { + 0x00, 0x09, 0x84, "MyCasa Network Inc."}, { + 0x00, 0x09, 0x85, "Auto Telecom Company"}, { + 0x00, 0x09, 0x86, "Metalink LTD."}, { + 0x00, 0x09, 0x87, "NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD."}, { + 0x00, 0x09, 0x88, "Nudian Electron Co., Ltd."}, { + 0x00, 0x09, 0x89, "VividLogic Inc."}, { + 0x00, 0x09, 0x8A, "EqualLogic Inc"}, { + 0x00, 0x09, 0x8B, "Entropic Communications, Inc."}, { + 0x00, 0x09, 0x8C, "Possio AB"}, { + 0x00, 0x09, 0x8D, + "DCT Ltd (Digital Communication Technologies Ltd)"}, { + 0x00, 0x09, 0x8E, "ipcas GmbH"}, { + 0x00, 0x09, 0x8F, "Cetacean Networks"}, { + 0x00, 0x09, 0x90, "ACKSYS Communications & systems"}, { + 0x00, 0x09, 0x91, "GE Fanuc Automation Manufacturing, Inc."}, { + 0x00, 0x09, 0x92, "InterEpoch Technology,INC."}, { + 0x00, 0x09, 0x93, "Visteon Corporation"}, { + 0x00, 0x09, 0x94, "Cronyx Engineering"}, { + 0x00, 0x09, 0x95, "Castle Technology Ltd"}, { + 0x00, 0x09, 0x96, "RDI"}, { + 0x00, 0x09, 0x97, "Nortel Networks"}, { + 0x00, 0x09, 0x99, "CP GEORGES RENAULT"}, { + 0x00, 0x09, 0x9A, "ELMO COMPANY, LIMITED"}, { + 0x00, 0x09, 0x9B, "Western Telematic Inc."}, { + 0x00, 0x09, 0x9C, "Naval Research Laboratory"}, { + 0x00, 0x09, 0x9D, "Haliplex Communications"}, { + 0x00, 0x09, 0x9E, "Testech, Inc."}, { + 0x00, 0x09, 0xA0, "Microtechno Corporation"}, { + 0x00, 0x09, 0xA1, "Telewise Communications, Inc."}, { + 0x00, 0x09, 0xA2, "Interface Co., Ltd."}, { + 0x00, 0x09, 0xA3, "Leadfly Techologies Corp. Ltd."}, { + 0x00, 0x09, 0xA4, "HARTEC Corporation"}, { + 0x00, 0x09, 0xA5, + "HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD"}, { + 0x00, 0x09, 0xA6, "Ignis Optics, Inc."}, { + 0x00, 0x09, 0xA7, "Bang & Olufsen A/S"}, { + 0x00, 0x09, 0xA8, "Eastmode Pte Ltd"}, { + 0x00, 0x09, 0xA9, "Ikanos Communications"}, { + 0x00, 0x09, 0xAA, "Data Comm for Business, Inc."}, { + 0x00, 0x09, 0xAB, "Netcontrol Oy"}, { + 0x00, 0x09, 0xAC, "LANVOICE"}, { + 0x00, 0x09, 0xAD, "HYUNDAI SYSCOMM, INC."}, { + 0x00, 0x09, 0xAE, "OKANO ELECTRIC CO.,LTD"}, { + 0x00, 0x09, 0xAF, "e-generis"}, { + 0x00, 0x09, 0xB0, "Onkyo Corporation"}, { + 0x00, 0x09, 0xB1, "Kanematsu Electronics, Ltd."}, { + 0x00, 0x09, 0xB2, "L&F Inc."}, { + 0x00, 0x09, 0xB3, "MCM Systems Ltd"}, { + 0x00, 0x09, 0xB4, "KISAN TELECOM CO., LTD."}, { + 0x00, 0x09, 0xB5, "3J Tech. Co., Ltd."}, { + 0x00, 0x09, 0xB6, "Cisco Systems"}, { + 0x00, 0x09, 0xB7, "Cisco Systems"}, { + 0x00, 0x09, 0xB8, "Entise Systems"}, { + 0x00, 0x09, 0xB9, "Action Imaging Solutions"}, { + 0x00, 0x09, 0xBA, "MAKU Informationstechik GmbH"}, { + 0x00, 0x09, 0xBB, "MathStar, Inc."}, { + 0x00, 0x09, 0xBD, "Epygi Technologies, Ltd."}, { + 0x00, 0x09, 0xBE, "Mamiya-OP Co.,Ltd."}, { + 0x00, 0x09, 0xBF, "Nintendo Co.,Ltd."}, { + 0x00, 0x09, 0xC0, "6WIND"}, { + 0x00, 0x09, 0xC1, "PROCES-DATA A/S"}, { + 0x00, 0x09, 0xC3, "NETAS"}, { + 0x00, 0x09, 0xC4, "Medicore Co., Ltd"}, { + 0x00, 0x09, 0xC5, "KINGENE Technology Corporation"}, { + 0x00, 0x09, 0xC6, "Visionics Corporation"}, { + 0x00, 0x09, 0xC7, "Movistec"}, { + 0x00, 0x09, 0xC8, "SINAGAWA TSUSHIN KEISOU SERVICE"}, { + 0x00, 0x09, 0xC9, "BlueWINC Co., Ltd."}, { + 0x00, 0x09, 0xCA, "iMaxNetworks(Shenzhen)Limited."}, { + 0x00, 0x09, 0xCB, "HBrain"}, { + 0x00, 0x09, 0xCC, "Moog GmbH"}, { + 0x00, 0x09, 0xCD, "HUDSON SOFT CO.,LTD."}, { + 0x00, 0x09, 0xCE, "SpaceBridge Semiconductor Corp."}, { + 0x00, 0x09, 0xCF, "iAd GmbH"}, { + 0x00, 0x09, 0xD0, "Versatel Networks"}, { + 0x00, 0x09, 0xD1, "SERANOA NETWORKS INC"}, { + 0x00, 0x09, 0xD2, "Mai Logic Inc."}, { + 0x00, 0x09, 0xD3, "Western DataCom Co., Inc."}, { + 0x00, 0x09, 0xD4, "Transtech Networks"}, { + 0x00, 0x09, 0xD5, "Signal Communication, Inc."}, { + 0x00, 0x09, 0xD6, "KNC One GmbH"}, { + 0x00, 0x09, 0xD7, "DC Security Products"}, { + 0x00, 0x09, 0xDA, "Control Module Inc."}, { + 0x00, 0x09, 0xDB, "eSpace"}, { + 0x00, 0x09, 0xDC, "Galaxis Technology AG"}, { + 0x00, 0x09, 0xDD, "Mavin Technology Inc."}, { + 0x00, 0x09, 0xDE, "Samjin Information & Communications Co., Ltd."}, + { + 0x00, 0x09, 0xDF, "Vestel Komunikasyon Sanayi ve Ticaret A.S."}, { + 0x00, 0x09, 0xE0, "XEMICS S.A."}, { + 0x00, 0x09, 0xE1, "Gemtek Technology Co., Ltd."}, { + 0x00, 0x09, 0xE2, "Sinbon Electronics Co., Ltd."}, { + 0x00, 0x09, 0xE3, "Angel Iglesias S.A."}, { + 0x00, 0x09, 0xE4, "K Tech Infosystem Inc."}, { + 0x00, 0x09, 0xE5, "Hottinger Baldwin Messtechnik GmbH"}, { + 0x00, 0x09, 0xE6, "Cyber Switching Inc."}, { + 0x00, 0x09, 0xE7, "ADC Techonology"}, { + 0x00, 0x09, 0xE8, "Cisco Systems"}, { + 0x00, 0x09, 0xE9, "Cisco Systems"}, { + 0x00, 0x09, 0xEA, "YEM Inc."}, { + 0x00, 0x09, 0xEB, "HuMANDATA LTD."}, { + 0x00, 0x09, 0xEC, "Daktronics, Inc."}, { + 0x00, 0x09, 0xED, "CipherOptics"}, { + 0x00, 0x09, 0xEE, "MEIKYO ELECTRIC CO.,LTD"}, { + 0x00, 0x09, 0xEF, "Vocera Communications"}, { + 0x00, 0x09, 0xF0, "Shimizu Technology Inc."}, { + 0x00, 0x09, 0xF1, "Yamaki Electric Corporation"}, { + 0x00, 0x09, 0xF2, "Cohu, Inc., Electronics Division"}, { + 0x00, 0x09, 0xF3, "WELL Communication Corp."}, { + 0x00, 0x09, 0xF4, "Alcon Laboratories, Inc."}, { + 0x00, 0x09, 0xF5, "Emerson Network Power Co.,Ltd"}, { + 0x00, 0x09, 0xF6, "Shenzhen Eastern Digital Tech Ltd."}, { + 0x00, 0x09, 0xF7, "SED, a division of Calian"}, { + 0x00, 0x09, 0xF8, "UNIMO TECHNOLOGY CO., LTD."}, { + 0x00, 0x09, 0xF9, "ART JAPAN CO., LTD."}, { + 0x00, 0x09, 0xFB, "Philips Medizinsysteme Boeblingen GmbH"}, { + 0x00, 0x09, 0xFC, "IPFLEX Inc."}, { + 0x00, 0x09, 0xFD, "Ubinetics Limited"}, { + 0x00, 0x09, 0xFE, "Daisy Technologies, Inc."}, { + 0x00, 0x09, 0xFF, "X.net 2000 GmbH"}, { + 0x00, 0x0A, 0x00, "Mediatek Corp."}, { + 0x00, 0x0A, 0x01, "SOHOware, Inc."}, { + 0x00, 0x0A, 0x02, "ANNSO CO., LTD."}, { + 0x00, 0x0A, 0x03, "ENDESA SERVICIOS, S.L."}, { + 0x00, 0x0A, 0x04, "3Com Europe Ltd"}, { + 0x00, 0x0A, 0x05, "Widax Corp."}, { + 0x00, 0x0A, 0x06, "Teledex LLC"}, { + 0x00, 0x0A, 0x07, "Beijing Comsys Technologies Co.,Ltd."}, { + 0x00, 0x0A, 0x08, "ALPINE ELECTRONICS, INC."}, { + 0x00, 0x0A, 0x0A, "SUNIX Co., Ltd."}, { + 0x00, 0x0A, 0x0B, "Sealevel Systems, Inc."}, { + 0x00, 0x0A, 0x0C, "Scientific Research Corporation"}, { + 0x00, 0x0A, 0x0D, "MergeOptics GmbH"}, { + 0x00, 0x0A, 0x0E, "Invivo Research Inc."}, { + 0x00, 0x0A, 0x0F, "Ilryung Telesys, Inc"}, { + 0x00, 0x0A, 0x10, "FAST media integrations AG"}, { + 0x00, 0x0A, 0x11, "ExPet Technologies, Inc"}, { + 0x00, 0x0A, 0x12, "Azylex Technology, Inc"}, { + 0x00, 0x0A, 0x13, "Silent Witness"}, { + 0x00, 0x0A, 0x14, "TECO a.s."}, { + 0x00, 0x0A, 0x15, "Silicon Data, Inc"}, { + 0x00, 0x0A, 0x16, "Lassen Research"}, { + 0x00, 0x0A, 0x17, "NESTAR COMMUNICATIONS, INC"}, { + 0x00, 0x0A, 0x18, "Vichel Inc."}, { + 0x00, 0x0A, 0x19, "Valere Power, Inc."}, { + 0x00, 0x0A, 0x1A, "Imerge Ltd"}, { + 0x00, 0x0A, 0x1B, "Stream Labs"}, { + 0x00, 0x0A, 0x1C, "Bridge Information Co., Ltd."}, { + 0x00, 0x0A, 0x1D, "Optical Communications Products Inc."}, { + 0x00, 0x0A, 0x1E, "Red-M (Communications) Limited"}, { + 0x00, 0x0A, 0x1F, "ART WARE Telecommunication Co., Ltd."}, { + 0x00, 0x0A, 0x20, "SVA Networks, Inc."}, { + 0x00, 0x0A, 0x21, "Integra Telecom Co. Ltd"}, { + 0x00, 0x0A, 0x22, "Amperion Inc"}, { + 0x00, 0x0A, 0x23, "Parama Networks Inc"}, { + 0x00, 0x0A, 0x24, "Octave Communications"}, { + 0x00, 0x0A, 0x25, "CERAGON NETWORKS"}, { + 0x00, 0x0A, 0x27, "Apple Computer, Inc."}, { + 0x00, 0x0A, 0x28, "Motorola Personal Communications Sector"}, { + 0x00, 0x0A, 0x29, "Pan Dacom Networking AG"}, { + 0x00, 0x0A, 0x2A, "QSI Systems Inc."}, { + 0x00, 0x0A, 0x2B, "Etherstuff"}, { + 0x00, 0x0A, 0x2C, "Active Tchnology Corporation"}, { + 0x00, 0x0A, 0x2E, "MAPLE NETWORKS CO., LTD"}, { + 0x00, 0x0A, 0x30, "Johnson Controls-ASG"}, { + 0x00, 0x0A, 0x31, "HCV Wireless"}, { + 0x00, 0x0A, 0x32, "Xsido Corporation"}, { + 0x00, 0x0A, 0x33, "Sierra Logic, Inc."}, { + 0x00, 0x0A, 0x34, "Identicard Systems Incorporated"}, { + 0x00, 0x0A, 0x35, "Xilinx"}, { + 0x00, 0x0A, 0x36, "Synelec Telecom Multimedia"}, { + 0x00, 0x0A, 0x37, "Procera Networks, Inc."}, { + 0x00, 0x0A, 0x38, "Netlock Technologies, Inc."}, { + 0x00, 0x0A, 0x3A, "J-THREE INTERNATIONAL Holding Co., Ltd."}, { + 0x00, 0x0A, 0x3B, "GCT Semiconductor, Inc"}, { + 0x00, 0x0A, 0x3C, "Enerpoint Ltd."}, { + 0x00, 0x0A, 0x3D, "Elo Sistemas Eletronicos S.A."}, { + 0x00, 0x0A, 0x3E, "EADS Telecom"}, { + 0x00, 0x0A, 0x3F, "Data East Corporation"}, { + 0x00, 0x0A, 0x40, "Crown Audio"}, { + 0x00, 0x0A, 0x41, "Cisco Systems"}, { + 0x00, 0x0A, 0x42, "Cisco Systems"}, { + 0x00, 0x0A, 0x43, "Chunghwa Telecom Co., Ltd."}, { + 0x00, 0x0A, 0x44, "Avery Dennison Deutschland GmbH"}, { + 0x00, 0x0A, 0x45, "Audio-Technica Corp."}, { + 0x00, 0x0A, 0x46, "ARO Controls SAS"}, { + 0x00, 0x0A, 0x47, "Allied Vision Technologies"}, { + 0x00, 0x0A, 0x48, "Albatron Technology"}, { + 0x00, 0x0A, 0x49, "Acopia Networks"}, { + 0x00, 0x0A, 0x4A, "Targa Systems Ltd."}, { + 0x00, 0x0A, 0x4B, "DataPower Technology, Inc."}, { + 0x00, 0x0A, 0x4C, "Molecular Devices Corporation"}, { + 0x00, 0x0A, 0x4D, "Noritz Corporation"}, { + 0x00, 0x0A, 0x4E, "UNITEK Electronics INC."}, { + 0x00, 0x0A, 0x4F, "Brain Boxes Limited"}, { + 0x00, 0x0A, 0x50, "REMOTEK CORPORATION"}, { + 0x00, 0x0A, 0x51, "GyroSignal Technology Co., Ltd."}, { + 0x00, 0x0A, 0x52, "Venitek Co. Ltd."}, { + 0x00, 0x0A, 0x53, "Intronics, Incorporated"}, { + 0x00, 0x0A, 0x54, "Laguna Hills, Inc."}, { + 0x00, 0x0A, 0x55, "MARKEM Corporation"}, { + 0x00, 0x0A, 0x56, "HITACHI Maxell Ltd."}, { + 0x00, 0x0A, 0x57, "Hewlett-Packard Company - Standards"}, { + 0x00, 0x0A, 0x58, "Ingenieur-Buero Freyer & Siegel"}, { + 0x00, 0x0A, 0x59, "HW server"}, { + 0x00, 0x0A, 0x5A, "GreenNET Technologies Co.,Ltd."}, { + 0x00, 0x0A, 0x5B, "Power-One as"}, { + 0x00, 0x0A, 0x5C, "Carel s.p.a."}, { + 0x00, 0x0A, 0x5D, "PUC Founder (MSC) Berhad"}, { + 0x00, 0x0A, 0x5E, "3COM Corporation"}, { + 0x00, 0x0A, 0x5F, "almedio inc."}, { + 0x00, 0x0A, 0x60, "Autostar Technology Pte Ltd"}, { + 0x00, 0x0A, 0x61, "Cellinx Systems Inc."}, { + 0x00, 0x0A, 0x62, "Crinis Networks, Inc."}, { + 0x00, 0x0A, 0x63, "DHD GmbH"}, { + 0x00, 0x0A, 0x64, "Eracom Technologies"}, { + 0x00, 0x0A, 0x65, "GentechMedia.co.,ltd."}, { + 0x00, 0x0A, 0x66, "MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD."}, + { + 0x00, 0x0A, 0x67, "OngCorp"}, { + 0x00, 0x0A, 0x68, "SolarFlare Communications, Inc."}, { + 0x00, 0x0A, 0x69, "SUNNY bell Technology Co., Ltd."}, { + 0x00, 0x0A, 0x6A, "SVM Microwaves s.r.o."}, { + 0x00, 0x0A, 0x6B, "Tadiran Telecom Business Systems LTD"}, { + 0x00, 0x0A, 0x6C, "Walchem Corporation"}, { + 0x00, 0x0A, 0x6D, "EKS Elektronikservice GmbH"}, { + 0x00, 0x0A, 0x6E, "Broadcast Technology Limited"}, { + 0x00, 0x0A, 0x6F, "ZyTera Technologies Inc."}, { + 0x00, 0x0A, 0x70, "MPLS Forum"}, { + 0x00, 0x0A, 0x71, "Avrio Technologies, Inc"}, { + 0x00, 0x0A, 0x72, "SimpleTech, Inc."}, { + 0x00, 0x0A, 0x73, "Scientific Atlanta"}, { + 0x00, 0x0A, 0x74, "Manticom Networks Inc."}, { + 0x00, 0x0A, 0x75, "Cat Electronics"}, { + 0x00, 0x0A, 0x76, "Beida Jade Bird Huaguang Technology Co.,Ltd"}, { + 0x00, 0x0A, 0x77, "Bluewire Technologies LLC"}, { + 0x00, 0x0A, 0x78, "OLITEC"}, { + 0x00, 0x0A, 0x79, "corega K.K."}, { + 0x00, 0x0A, 0x7A, "Kyoritsu Electric Co., Ltd."}, { + 0x00, 0x0A, 0x7C, "Tecton Ltd"}, { + 0x00, 0x0A, 0x7D, "Valo, Inc."}, { + 0x00, 0x0A, 0x7E, "The Advantage Group"}, { + 0x00, 0x0A, 0x7F, "Teradon Industries, Inc"}, { + 0x00, 0x0A, 0x80, "Telkonet Inc."}, { + 0x00, 0x0A, 0x81, "TEIMA Audiotex S.L."}, { + 0x00, 0x0A, 0x82, "TATSUTA SYSTEM ELECTRONICS CO.,LTD."}, { + 0x00, 0x0A, 0x83, "SALTO SYSTEMS S.L."}, { + 0x00, 0x0A, 0x84, "Rainsun Enterprise Co., Ltd."}, { + 0x00, 0x0A, 0x85, "PLAT'C2,Inc"}, { + 0x00, 0x0A, 0x86, "Lenze"}, { + 0x00, 0x0A, 0x87, "Integrated Micromachines Inc."}, { + 0x00, 0x0A, 0x88, "InCypher S.A."}, { + 0x00, 0x0A, 0x89, "Creval Systems, Inc."}, { + 0x00, 0x0A, 0x8A, "Cisco Systems"}, { + 0x00, 0x0A, 0x8B, "Cisco Systems"}, { + 0x00, 0x0A, 0x8C, "Guardware Systems Ltd."}, { + 0x00, 0x0A, 0x8D, "EUROTHERM LIMITED"}, { + 0x00, 0x0A, 0x8E, "Invacom Ltd"}, { + 0x00, 0x0A, 0x8F, "Aska International Inc."}, { + 0x00, 0x0A, 0x90, "Bayside Interactive, Inc."}, { + 0x00, 0x0A, 0x91, "HemoCue AB"}, { + 0x00, 0x0A, 0x92, "Presonus Corporation"}, { + 0x00, 0x0A, 0x93, "W2 Networks, Inc."}, { + 0x00, 0x0A, 0x94, "ShangHai cellink CO., LTD"}, { + 0x00, 0x0A, 0x95, "Apple Computer, Inc."}, { + 0x00, 0x0A, 0x96, "MEWTEL TECHNOLOGY INC."}, { + 0x00, 0x0A, 0x97, "SONICblue, Inc."}, { + 0x00, 0x0A, 0x98, "M+F Gwinner GmbH & Co"}, { + 0x00, 0x0A, 0x99, "Dataradio Inc."}, { + 0x00, 0x0A, 0x9A, "Aiptek International Inc"}, { + 0x00, 0x0A, 0x9B, "Towa Meccs Corporation"}, { + 0x00, 0x0A, 0x9C, "Server Technology, Inc."}, { + 0x00, 0x0A, 0x9D, "King Young Technology Co. Ltd."}, { + 0x00, 0x0A, 0x9E, "BroadWeb Corportation"}, { + 0x00, 0x0A, 0xA0, "Cedar Point Communications"}, { + 0x00, 0x0A, 0xA1, "V V S Limited"}, { + 0x00, 0x0A, 0xA2, "SYSTEK INC."}, { + 0x00, 0x0A, 0xA3, "SHIMAFUJI ELECTRIC CO.,LTD."}, { + 0x00, 0x0A, 0xA4, "SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD"}, { + 0x00, 0x0A, 0xA5, "MAXLINK INDUSTRIES LIMITED"}, { + 0x00, 0x0A, 0xA6, "Hochiki Corporation"}, { + 0x00, 0x0A, 0xA7, "FEI Company"}, { + 0x00, 0x0A, 0xA8, "ePipe Pty. Ltd."}, { + 0x00, 0x0A, 0xA9, "Brooks Automation GmbH"}, { + 0x00, 0x0A, 0xAA, "AltiGen Communications Inc."}, { + 0x00, 0x0A, 0xAB, "TOYOTA MACS, INC."}, { + 0x00, 0x0A, 0xAC, "TerraTec Electronic GmbH"}, { + 0x00, 0x0A, 0xAD, "Stargames Corporation"}, { + 0x00, 0x0A, 0xAE, "Rosemount Process Analytical"}, { + 0x00, 0x0A, 0xB0, "LOYTEC electronics GmbH"}, { + 0x00, 0x0A, 0xB1, "GENETEC Corporation"}, { + 0x00, 0x0A, 0xB2, "Fresnel Wireless Systems"}, { + 0x00, 0x0A, 0xB3, "Fa. GIRA"}, { + 0x00, 0x0A, 0xB4, "ETIC Telecommunications"}, { + 0x00, 0x0A, 0xB5, "Digital Electronic Network"}, { + 0x00, 0x0A, 0xB6, "COMPUNETIX, INC"}, { + 0x00, 0x0A, 0xB7, "Cisco Systems"}, { + 0x00, 0x0A, 0xB8, "Cisco Systems"}, { + 0x00, 0x0A, 0xB9, "Astera Technologies Corp."}, { + 0x00, 0x0A, 0xBA, "Arcon Technology Limited"}, { + 0x00, 0x0A, 0xBB, "Taiwan Secom Co,. Ltd"}, { + 0x00, 0x0A, 0xBC, "Seabridge Ltd."}, { + 0x00, 0x0A, 0xBE, "OPNET Technologies CO., LTD."}, { + 0x00, 0x0A, 0xBF, "HIROTA SS"}, { + 0x00, 0x0A, 0xC0, "Fuyoh Video Industry CO., LTD."}, { + 0x00, 0x0A, 0xC1, "Futuretel"}, { + 0x00, 0x0A, 0xC2, + "FiberHome Telecommunication Technologies CO.,LTD"}, { + 0x00, 0x0A, 0xC3, "eM Technics Co., Ltd."}, { + 0x00, 0x0A, 0xC4, "Daewoo Teletech Co., Ltd"}, { + 0x00, 0x0A, 0xC5, "Color Kinetics"}, { + 0x00, 0x0A, 0xC7, "Unication Group"}, { + 0x00, 0x0C, 0x30, "Cisco"}, { + 0x00, 0x0C, 0x41, "The Linksys Group, Inc."}, { + 0x00, 0x0C, 0xCE, "Cisco Systems"}, { + 0x00, 0x10, 0x00, "CABLE TELEVISION LABORATIES, INC."}, { + 0x00, 0x10, 0x01, "MCK COMMUNICATIONS"}, { + 0x00, 0x10, 0x02, "ACTIA"}, { + 0x00, 0x10, 0x03, "IMATRON, INC."}, { + 0x00, 0x10, 0x04, "THE BRANTLEY COILE COMPANY,INC"}, { + 0x00, 0x10, 0x05, "UEC COMMERCIAL"}, { + 0x00, 0x10, 0x06, "Thales Contact Solutions Ltd."}, { + 0x00, 0x10, 0x07, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x08, "VIENNA SYSTEMS CORPORATION"}, { + 0x00, 0x10, 0x09, "HORO QUARTZ"}, { + 0x00, 0x10, 0x0A, "WILLIAMS COMMUNICATIONS GROUP"}, { + 0x00, 0x10, 0x0B, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x0C, "ITO CO., LTD."}, { + 0x00, 0x10, 0x0D, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x0E, "MICRO LINEAR COPORATION"}, { + 0x00, 0x10, 0x0F, "INDUSTRIAL CPU SYSTEMS"}, { + 0x00, 0x10, 0x10, "INITIO CORPORATION"}, { + 0x00, 0x10, 0x11, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x12, "PROCESSOR SYSTEMS (I) PVT LTD"}, { + 0x00, 0x10, 0x13, "INDUSTRIAL COMPUTER SOURCE"}, { + 0x00, 0x10, 0x14, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x15, "OOmon Inc."}, { + 0x00, 0x10, 0x16, "T.SQWARE"}, { + 0x00, 0x10, 0x17, "MICOS GmbH"}, { + 0x00, 0x10, 0x18, "BROADCOM CORPORATION"}, { + 0x00, 0x10, 0x19, "SIRONA DENTAL SYSTEMS GmbH & Co. KG"}, { + 0x00, 0x10, 0x1A, "PictureTel Corp."}, { + 0x00, 0x10, 0x1B, "CORNET TECHNOLOGY, INC."}, { + 0x00, 0x10, 0x1C, "OHM TECHNOLOGIES INTL, LLC"}, { + 0x00, 0x10, 0x1D, "WINBOND ELECTRONICS CORP."}, { + 0x00, 0x10, 0x1E, "MATSUSHITA ELECTRONIC INSTRUMENTS CORP."}, { + 0x00, 0x10, 0x1F, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x20, "WELCH ALLYN, DATA COLLECTION"}, { + 0x00, 0x10, 0x21, "ENCANTO NETWORKS, INC."}, { + 0x00, 0x10, 0x22, "SatCom Media Corporation"}, { + 0x00, 0x10, 0x23, "FLOWWISE NETWORKS, INC."}, { + 0x00, 0x10, 0x24, "NAGOYA ELECTRIC WORKS CO., LTD"}, { + 0x00, 0x10, 0x25, "GRAYHILL INC."}, { + 0x00, 0x10, 0x26, "ACCELERATED NETWORKS, INC."}, { + 0x00, 0x10, 0x27, "L-3 COMMUNICATIONS EAST"}, { + 0x00, 0x10, 0x28, "COMPUTER TECHNICA, INC."}, { + 0x00, 0x10, 0x29, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x2A, "ZF MICROSYSTEMS, INC."}, { + 0x00, 0x10, 0x2B, "UMAX DATA SYSTEMS, INC."}, { + 0x00, 0x10, 0x2C, "Lasat Networks A/S"}, { + 0x00, 0x10, 0x2D, "HITACHI SOFTWARE ENGINEERING"}, { + 0x00, 0x10, 0x2E, "NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD."}, { + 0x00, 0x10, 0x2F, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x30, "Wi-LAN, Inc."}, { + 0x00, 0x10, 0x31, "OBJECTIVE COMMUNICATIONS, INC."}, { + 0x00, 0x10, 0x32, "ALTA TECHNOLOGY"}, { + 0x00, 0x10, 0x33, "ACCESSLAN COMMUNICATIONS, INC."}, { + 0x00, 0x10, 0x34, "GNP COMPUTERS"}, { + 0x00, 0x10, 0x35, "ELITEGROUP COMPUTER SYSTEMS CO., LTD"}, { + 0x00, 0x10, 0x36, "INTER-TEL INTEGRATED SYSTEMS"}, { + 0x00, 0x10, 0x37, "CYQ've Technology Co., Ltd."}, { + 0x00, 0x10, 0x38, "MICRO RESEARCH INSTITUTE, INC."}, { + 0x00, 0x10, 0x39, "Vectron Systems AG"}, { + 0x00, 0x10, 0x3A, "DIAMOND NETWORK TECH"}, { + 0x00, 0x10, 0x3B, "HIPPI NETWORKING FORUM"}, { + 0x00, 0x10, 0x3C, "IC ENSEMBLE, INC."}, { + 0x00, 0x10, 0x3D, "PHASECOM, LTD."}, { + 0x00, 0x10, 0x3E, "NETSCHOOLS CORPORATION"}, { + 0x00, 0x10, 0x3F, "TOLLGRADE COMMUNICATIONS, INC."}, { + 0x00, 0x10, 0x40, "INTERMEC CORPORATION"}, { + 0x00, 0x10, 0x41, "BRISTOL BABCOCK, INC."}, { + 0x00, 0x10, 0x42, "AlacriTech"}, { + 0x00, 0x10, 0x43, "A2 CORPORATION"}, { + 0x00, 0x10, 0x44, "InnoLabs Corporation"}, { + 0x00, 0x10, 0x45, "Nortel Networks"}, { + 0x00, 0x10, 0x46, "ALCORN MCBRIDE INC."}, { + 0x00, 0x10, 0x47, "ECHO ELETRIC CO. LTD."}, { + 0x00, 0x10, 0x48, "HTRC AUTOMATION, INC."}, { + 0x00, 0x10, 0x49, "SHORELINE TELEWORKS, INC."}, { + 0x00, 0x10, 0x4A, "THE PARVUC CORPORATION"}, { + 0x00, 0x10, 0x4B, "3COM CORPORATION"}, { + 0x00, 0x10, 0x4C, "COMPUTER ACCESS TECHNOLOGY"}, { + 0x00, 0x10, 0x4D, "SURTEC INDUSTRIES, INC."}, { + 0x00, 0x10, 0x4E, "CEOLOGIC"}, { + 0x00, 0x10, 0x4F, "STORAGE TECHNOLOGY CORPORATION"}, { + 0x00, 0x10, 0x50, "RION CO., LTD."}, { + 0x00, 0x10, 0x51, "CMICRO CORPORATION"}, { + 0x00, 0x10, 0x52, "METTLER-TOLEDO (ALBSTADT) GMBH"}, { + 0x00, 0x10, 0x53, "COMPUTER TECHNOLOGY CORP."}, { + 0x00, 0x10, 0x54, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x55, "FUJITSU MICROELECTRONICS, INC."}, { + 0x00, 0x10, 0x56, "SODICK CO., LTD."}, { + 0x00, 0x10, 0x57, "Rebel.com, Inc."}, { + 0x00, 0x10, 0x58, "ArrowPoint Communications"}, { + 0x00, 0x10, 0x59, "DIABLO RESEARCH CO. LLC"}, { + 0x00, 0x10, 0x5A, "3COM CORPORATION"}, { + 0x00, 0x10, 0x5B, "NET INSIGHT AB"}, { + 0x00, 0x10, 0x5C, "QUANTUM DESIGNS (H.K.) LTD."}, { + 0x00, 0x10, 0x5D, "DRAGER, BUSINESS UNIT MONITORING"}, { + 0x00, 0x10, 0x5E, "HEKIMIAN LABORATORIES, INC."}, { + 0x00, 0x10, 0x5F, "IN-SNEC"}, { + 0x00, 0x10, 0x60, "BILLIONTON SYSTEMS, INC."}, { + 0x00, 0x10, 0x61, "HOSTLINK CORP."}, { + 0x00, 0x10, 0x62, "NX SERVER, ILNC."}, { + 0x00, 0x10, 0x63, "STARGUIDE DIGITAL NETWORKS"}, { + 0x00, 0x10, 0x64, "DIGITAL EQUIPMENT CORP."}, { + 0x00, 0x10, 0x65, "RADYNE CORPORATION"}, { + 0x00, 0x10, 0x66, "ADVANCED CONTROL SYSTEMS, INC."}, { + 0x00, 0x10, 0x67, "REDBACK NETWORKS, INC."}, { + 0x00, 0x10, 0x68, "COMOS TELECOM"}, { + 0x00, 0x10, 0x69, "HELIOSS COMMUNICATIONS, INC."}, { + 0x00, 0x10, 0x6A, "DIGITAL MICROWAVE CORPORATION"}, { + 0x00, 0x10, 0x6B, "SONUS NETWORKS, INC."}, { + 0x00, 0x10, 0x6C, "INFRATEC PLUS GmbH"}, { + 0x00, 0x10, 0x6D, "INTEGRITY COMMUNICATIONS, INC."}, { + 0x00, 0x10, 0x6E, "TADIRAN COM. LTD."}, { + 0x00, 0x10, 0x6F, "TRENTON TECHNOLOGY INC."}, { + 0x00, 0x10, 0x70, "CARADON TREND LTD."}, { + 0x00, 0x10, 0x71, "ADVANET INC."}, { + 0x00, 0x10, 0x72, "GVN TECHNOLOGIES, INC."}, { + 0x00, 0x10, 0x73, "TECHNOBOX, INC."}, { + 0x00, 0x10, 0x74, "ATEN INTERNATIONAL CO., LTD."}, { + 0x00, 0x10, 0x75, "Maxtor Corporation"}, { + 0x00, 0x10, 0x76, "EUREM GmbH"}, { + 0x00, 0x10, 0x77, "SAF DRIVE SYSTEMS, LTD."}, { + 0x00, 0x10, 0x78, "NUERA COMMUNICATIONS, INC."}, { + 0x00, 0x10, 0x79, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x7A, "AmbiCom, Inc."}, { + 0x00, 0x10, 0x7B, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0x7C, "P-COM, INC."}, { + 0x00, 0x10, 0x7D, "AURORA COMMUNICATIONS, LTD."}, { + 0x00, 0x10, 0x7E, "BACHMANN ELECTRONIC GmbH"}, { + 0x00, 0x10, 0x7F, "CRESTRON ELECTRONICS, INC."}, { + 0x00, 0x10, 0x80, "METAWAVE COMMUNICATIONS"}, { + 0x00, 0x10, 0x81, "DPS, INC."}, { + 0x00, 0x10, 0x82, "JNA TELECOMMUNICATIONS LIMITED"}, { + 0x00, 0x10, 0x83, "HEWLETT-PACKARD COMPANY"}, { + 0x00, 0x10, 0x84, "K-BOT COMMUNICATIONS"}, { + 0x00, 0x10, 0x85, "POLARIS COMMUNICATIONS, INC."}, { + 0x00, 0x10, 0x86, "ATTO TECHNOLOGY, INC."}, { + 0x00, 0x10, 0x87, "Xstreamis PLC"}, { + 0x00, 0x10, 0x88, "AMERICAN NETWORKS INC."}, { + 0x00, 0x10, 0x89, "WebSonic"}, { + 0x00, 0x10, 0x8A, "TeraLogic, Inc."}, { + 0x00, 0x10, 0x8B, "LASERANIMATION SOLLINGER GmbH"}, { + 0x00, 0x10, 0x8C, "FUJITSU TELECOMMUNICATIONS EUROPE, LTD."}, { + 0x00, 0x10, 0x8D, "JOHNSON CONTROLS, INC."}, { + 0x00, 0x10, 0x8E, "HUGH SYMONS CONCEPT Technologies Ltd."}, { + 0x00, 0x10, 0x8F, "RAPTOR SYSTEMS"}, { + 0x00, 0x10, 0x90, "CIMETRICS, INC."}, { + 0x00, 0x10, 0x91, "NO WIRES NEEDED BV"}, { + 0x00, 0x10, 0x92, "NETCORE INC."}, { + 0x00, 0x10, 0x93, "CMS COMPUTERS, LTD."}, { + 0x00, 0x10, 0x94, "ADTECH, INC."}, { + 0x00, 0x10, 0x95, "Thomson Multimedia, Inc."}, { + 0x00, 0x10, 0x96, "TRACEWELL SYSTEMS, INC."}, { + 0x00, 0x10, 0x97, + "WinNet Metropolitan Communications Systems, Inc."}, { + 0x00, 0x10, 0x98, "STARNET TECHNOLOGIES, INC."}, { + 0x00, 0x10, 0x99, "InnoMedia, Inc."}, { + 0x00, 0x10, 0x9A, "NETLINE"}, { + 0x00, 0x10, 0x9B, "VIXEL CORPORATION"}, { + 0x00, 0x10, 0x9C, "M-SYSTEM CO., LTD."}, { + 0x00, 0x10, 0x9D, "CLARINET SYSTEMS, INC."}, { + 0x00, 0x10, 0x9E, "AWARE, INC."}, { + 0x00, 0x10, 0x9F, "PAVO, INC."}, { + 0x00, 0x10, 0xA0, "INNOVEX TECHNOLOGIES, INC."}, { + 0x00, 0x10, 0xA1, "KENDIN SEMICONDUCTOR, INC."}, { + 0x00, 0x10, 0xA2, "TNS"}, { + 0x00, 0x10, 0xA3, "OMNITRONIX, INC."}, { + 0x00, 0x10, 0xA4, "XIRCOM"}, { + 0x00, 0x10, 0xA5, "OXFORD INSTRUMENTS"}, { + 0x00, 0x10, 0xA6, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0xA7, "UNEX TECHNOLOGY CORPORATION"}, { + 0x00, 0x10, 0xA8, "RELIANCE COMPUTER CORP."}, { + 0x00, 0x10, 0xA9, "ADHOC TECHNOLOGIES"}, { + 0x00, 0x10, 0xAA, "MEDIA4, INC."}, { + 0x00, 0x10, 0xAB, "KOITO INDUSTRIES, LTD."}, { + 0x00, 0x10, 0xAC, "IMCI TECHNOLOGIES"}, { + 0x00, 0x10, 0xAD, "SOFTRONICS USB, INC."}, { + 0x00, 0x10, 0xAE, "SHINKO ELECTRIC INDUSTRIES CO."}, { + 0x00, 0x10, 0xAF, "TAC SYSTEMS, INC."}, { + 0x00, 0x10, 0xB0, "MERIDIAN TECHNOLOGY CORP."}, { + 0x00, 0x10, 0xB1, "FOR-A CO., LTD."}, { + 0x00, 0x10, 0xB2, "COACTIVE AESTHETICS"}, { + 0x00, 0x10, 0xB3, "NOKIA MULTIMEDIA TERMINALS"}, { + 0x00, 0x10, 0xB4, "ATMOSPHERE NETWORKS"}, { + 0x00, 0x10, 0xB5, "ACCTON TECHNOLOGY CORPORATION"}, { + 0x00, 0x10, 0xB6, "ENTRATA COMMUNICATIONS CORP."}, { + 0x00, 0x10, 0xB7, "COYOTE TECHNOLOGIES, LLC"}, { + 0x00, 0x10, 0xB8, "ISHIGAKI COMPUTER SYSTEM CO."}, { + 0x00, 0x10, 0xB9, "MAXTOR CORP."}, { + 0x00, 0x10, 0xBA, "MARTINHO-DAVIS SYSTEMS, INC."}, { + 0x00, 0x10, 0xBB, "DATA & INFORMATION TECHNOLOGY"}, { + 0x00, 0x10, 0xBC, "Nortel Networks"}, { + 0x00, 0x10, 0xBD, "THE TELECOMMUNICATION TECHNOLOGY COMMITTEE"}, { + 0x00, 0x10, 0xBE, "TELEXIS CORP."}, { + 0x00, 0x10, 0xBF, "InterAir Wireless"}, { + 0x00, 0x10, 0xC0, "ARMA, INC."}, { + 0x00, 0x10, 0xC1, "OI ELECTRIC CO., LTD."}, { + 0x00, 0x10, 0xC2, "WILLNET, INC."}, { + 0x00, 0x10, 0xC3, "CSI-CONTROL SYSTEMS"}, { + 0x00, 0x10, 0xC4, "MEDIA LINKS CO., LTD."}, { + 0x00, 0x10, 0xC5, "PROTOCOL TECHNOLOGIES, INC."}, { + 0x00, 0x10, 0xC6, "USI"}, { + 0x00, 0x10, 0xC7, "DATA TRANSMISSION NETWORK"}, { + 0x00, 0x10, 0xC8, "COMMUNICATIONS ELECTRONICS SECURITY GROUP"}, { + 0x00, 0x10, 0xC9, "MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO."}, { + 0x00, 0x10, 0xCA, "INTEGRAL ACCESS"}, { + 0x00, 0x10, 0xCB, "FACIT K.K."}, { + 0x00, 0x10, 0xCC, "CLP COMPUTER LOGISTIK PLANUNG GmbH"}, { + 0x00, 0x10, 0xCD, "INTERFACE CONCEPT"}, { + 0x00, 0x10, 0xCE, "VOLAMP, LTD."}, { + 0x00, 0x10, 0xCF, "FIBERLANE COMMUNICATIONS"}, { + 0x00, 0x10, 0xD0, "WITCOM, LTD."}, { + 0x00, 0x10, 0xD1, "Top Layer Networks, Inc."}, { + 0x00, 0x10, 0xD2, "NITTO TSUSHINKI CO., LTD"}, { + 0x00, 0x10, 0xD3, "GRIPS ELECTRONIC GMBH"}, { + 0x00, 0x10, 0xD4, "STORAGE COMPUTER CORPORATION"}, { + 0x00, 0x10, 0xD5, "IMASDE CANARIAS, S.A."}, { + 0x00, 0x10, 0xD6, "ITT - A/CD"}, { + 0x00, 0x10, 0xD7, "ARGOSY RESEARCH INC."}, { + 0x00, 0x10, 0xD8, "CALISTA"}, { + 0x00, 0x10, 0xD9, "IBM JAPAN, FUJISAWA MT+D"}, { + 0x00, 0x10, 0xDA, "MOTION ENGINEERING, INC."}, { + 0x00, 0x10, 0xDB, "NetScreen Technologies, Inc."}, { + 0x00, 0x10, 0xDC, "MICRO-STAR INTERNATIONAL CO., LTD."}, { + 0x00, 0x10, 0xDD, "ENABLE SEMICONDUCTOR, INC."}, { + 0x00, 0x10, 0xDE, "INTERNATIONAL DATACASTING CORPORATION"}, { + 0x00, 0x10, 0xDF, "RISE COMPUTER INC."}, { + 0x00, 0x10, 0xE0, "COBALT MICROSERVER, INC."}, { + 0x00, 0x10, 0xE1, "S.I. TECH, INC."}, { + 0x00, 0x10, 0xE2, "ArrayComm, Inc."}, { + 0x00, 0x10, 0xE3, "COMPAQ COMPUTER CORPORATION"}, { + 0x00, 0x10, 0xE4, "NSI CORPORATION"}, { + 0x00, 0x10, 0xE5, "SOLECTRON TEXAS"}, { + 0x00, 0x10, 0xE6, "APPLIED INTELLIGENT SYSTEMS, INC."}, { + 0x00, 0x10, 0xE7, "BreezeCom"}, { + 0x00, 0x10, 0xE8, "TELOCITY, INCORPORATED"}, { + 0x00, 0x10, 0xE9, "RAIDTEC LTD."}, { + 0x00, 0x10, 0xEA, "ADEPT TECHNOLOGY"}, { + 0x00, 0x10, 0xEB, "SELSIUS SYSTEMS, INC."}, { + 0x00, 0x10, 0xEC, "RPCG, LLC"}, { + 0x00, 0x10, 0xED, "SUNDANCE TECHNOLOGY, INC."}, { + 0x00, 0x10, 0xEE, "CTI PRODUCTS, INC."}, { + 0x00, 0x10, 0xEF, "DBTEL INCORPORATED"}, { + 0x00, 0x10, 0xF1, "I-O CORPORATION"}, { + 0x00, 0x10, 0xF2, "ANTEC"}, { + 0x00, 0x10, 0xF3, "NEXCOM INTERNATIONAL CO., LTD."}, { + 0x00, 0x10, 0xF4, "VERTICAL NETWORKS, INC."}, { + 0x00, 0x10, 0xF5, "AMHERST SYSTEMS, INC."}, { + 0x00, 0x10, 0xF6, "CISCO SYSTEMS, INC."}, { + 0x00, 0x10, 0xF7, "IRIICHI TECHNOLOGIES Inc."}, { + 0x00, 0x10, 0xF8, "KENWOOD TMI CORPORATION"}, { + 0x00, 0x10, 0xF9, "UNIQUE SYSTEMS, INC."}, { + 0x00, 0x10, 0xFA, "ZAYANTE, INC."}, { + 0x00, 0x10, 0xFB, "ZIDA TECHNOLOGIES LIMITED"}, { + 0x00, 0x10, 0xFC, "BROADBAND NETWORKS, INC."}, { + 0x00, 0x10, 0xFD, "COCOM A/S"}, { + 0x00, 0x10, 0xFE, "DIGITAL EQUIPMENT CORPORATION"}, { + 0x00, 0x10, 0xFF, "CISCO SYSTEMS, INC."}, { + 0x00, 0x1C, 0x7C, "PERQ SYSTEMS CORPORATION"}, { + 0x00, 0x20, 0x00, "LEXMARK INTERNATIONAL, INC."}, { + 0x00, 0x20, 0x01, "DSP SOLUTIONS, INC."}, { + 0x00, 0x20, 0x02, "SERITECH ENTERPRISE CO., LTD."}, { + 0x00, 0x20, 0x03, "PIXEL POWER LTD."}, { + 0x00, 0x20, 0x04, "YAMATAKE-HONEYWELL CO., LTD."}, { + 0x00, 0x20, 0x05, "SIMPLE TECHNOLOGY"}, { + 0x00, 0x20, 0x06, "GARRETT COMMUNICATIONS, INC."}, { + 0x00, 0x20, 0x07, "SFA, INC."}, { + 0x00, 0x20, 0x08, "CABLE & COMPUTER TECHNOLOGY"}, { + 0x00, 0x20, 0x09, "PACKARD BELL ELEC., INC."}, { + 0x00, 0x20, 0x0A, "SOURCE-COMM CORP."}, { + 0x00, 0x20, 0x0B, "OCTAGON SYSTEMS CORP."}, { + 0x00, 0x20, 0x0C, "ADASTRA SYSTEMS CORP."}, { + 0x00, 0x20, 0x0D, "CARL ZEISS"}, { + 0x00, 0x20, 0x0E, "SATELLITE TECHNOLOGY MGMT, INC"}, { + 0x00, 0x20, 0x0F, "TANBAC CO., LTD."}, { + 0x00, 0x20, 0x10, "JEOL SYSTEM TECHNOLOGY CO. LTD"}, { + 0x00, 0x20, 0x11, "CANOPUS CO., LTD."}, { + 0x00, 0x20, 0x12, "CAMTRONICS MEDICAL SYSTEMS"}, { + 0x00, 0x20, 0x13, "DIVERSIFIED TECHNOLOGY, INC."}, { + 0x00, 0x20, 0x14, "GLOBAL VIEW CO., LTD."}, { + 0x00, 0x20, 0x15, "ACTIS COMPUTER SA"}, { + 0x00, 0x20, 0x16, "SHOWA ELECTRIC WIRE & CABLE CO"}, { + 0x00, 0x20, 0x17, "ORBOTECH"}, { + 0x00, 0x20, 0x18, "CIS TECHNOLOGY INC."}, { + 0x00, 0x20, 0x19, "OHLER GmbH"}, { + 0x00, 0x20, 0x1A, "N-BASE SWITCH COMMUNICATIONS"}, { + 0x00, 0x20, 0x1B, "NORTHERN TELECOM/NETWORK"}, { + 0x00, 0x20, 0x1C, "EXCEL, INC."}, { + 0x00, 0x20, 0x1D, "KATANA PRODUCTS"}, { + 0x00, 0x20, 0x1E, "NETQUEST CORPORATION"}, { + 0x00, 0x20, 0x1F, "BEST POWER TECHNOLOGY, INC."}, { + 0x00, 0x20, 0x20, "MEGATRON COMPUTER INDUSTRIES PTY, LTD."}, { + 0x00, 0x20, 0x21, "ALGORITHMS SOFTWARE PVT. LTD."}, { + 0x00, 0x20, 0x22, "TEKNIQUE, INC."}, { + 0x00, 0x20, 0x23, "T.C. TECHNOLOGIES PTY. LTD"}, { + 0x00, 0x20, 0x24, "PACIFIC COMMUNICATION SCIENCES"}, { + 0x00, 0x20, 0x25, "CONTROL TECHNOLOGY, INC."}, { + 0x00, 0x20, 0x26, "AMKLY SYSTEMS, INC."}, { + 0x00, 0x20, 0x27, "MING FORTUNE INDUSTRY CO., LTD"}, { + 0x00, 0x20, 0x28, "WEST EGG SYSTEMS, INC."}, { + 0x00, 0x20, 0x29, "TELEPROCESSING PRODUCTS, INC."}, { + 0x00, 0x20, 0x2A, "N.V. DZINE"}, { + 0x00, 0x20, 0x2B, "ADVANCED TELECOMMUNICATIONS MODULES, LTD."}, { + 0x00, 0x20, 0x2C, "WELLTRONIX CO., LTD."}, { + 0x00, 0x20, 0x2D, "TAIYO CORPORATION"}, { + 0x00, 0x20, 0x2E, "DAYSTAR DIGITAL"}, { + 0x00, 0x20, 0x2F, "ZETA COMMUNICATIONS, LTD."}, { + 0x00, 0x20, 0x30, "ANALOG & DIGITAL SYSTEMS"}, { + 0x00, 0x20, 0x31, "ERTEC GmbH"}, { + 0x00, 0x20, 0x32, "ALCATEL TAISEL"}, { + 0x00, 0x20, 0x33, "SYNAPSE TECHNOLOGIES, INC."}, { + 0x00, 0x20, 0x34, "ROTEC INDUSTRIEAUTOMATION GMBH"}, { + 0x00, 0x20, 0x35, "IBM CORPORATION"}, { + 0x00, 0x20, 0x36, "BMC SOFTWARE"}, { + 0x00, 0x20, 0x37, "SEAGATE TECHNOLOGY"}, { + 0x00, 0x20, 0x38, "VME MICROSYSTEMS INTERNATIONAL CORPORATION"}, { + 0x00, 0x20, 0x39, "SCINETS"}, { + 0x00, 0x20, 0x3A, "DIGITAL BI0METRICS INC."}, { + 0x00, 0x20, 0x3B, "WISDM LTD."}, { + 0x00, 0x20, 0x3C, "EUROTIME AB"}, { + 0x00, 0x20, 0x3D, "NOVAR ELECTRONICS CORPORATION"}, { + 0x00, 0x20, 0x3E, "LogiCan Technologies, Inc."}, { + 0x00, 0x20, 0x3F, "JUKI CORPORATION"}, { + 0x00, 0x20, 0x40, "Motorola Broadband Communications Sector"}, { + 0x00, 0x20, 0x41, "DATA NET"}, { + 0x00, 0x20, 0x42, "DATAMETRICS CORP."}, { + 0x00, 0x20, 0x43, "NEURON COMPANY LIMITED"}, { + 0x00, 0x20, 0x44, "GENITECH PTY LTD"}, { + 0x00, 0x20, 0x45, "ION Networks, Inc."}, { + 0x00, 0x20, 0x46, "CIPRICO, INC."}, { + 0x00, 0x20, 0x47, "STEINBRECHER CORP."}, { + 0x00, 0x20, 0x48, "Marconi Communications"}, { + 0x00, 0x20, 0x49, "COMTRON, INC."}, { + 0x00, 0x20, 0x4A, "PRONET GMBH"}, { + 0x00, 0x20, 0x4B, "AUTOCOMPUTER CO., LTD."}, { + 0x00, 0x20, 0x4C, "MITRON COMPUTER PTE LTD."}, { + 0x00, 0x20, 0x4D, "INOVIS GMBH"}, { + 0x00, 0x20, 0x4E, "NETWORK SECURITY SYSTEMS, INC."}, { + 0x00, 0x20, 0x4F, "DEUTSCHE AEROSPACE AG"}, { + 0x00, 0x20, 0x50, "KOREA COMPUTER INC."}, { + 0x00, 0x20, 0x51, "PHOENIX DATA COMMUNUNICATIONS"}, { + 0x00, 0x20, 0x52, "RAGULA SYSTEMS"}, { + 0x00, 0x20, 0x53, "HUNTSVILLE MICROSYSTEMS, INC."}, { + 0x00, 0x20, 0x54, "EASTERN RESEARCH, INC."}, { + 0x00, 0x20, 0x55, "ALTECH CO., LTD."}, { + 0x00, 0x20, 0x56, "NEOPRODUCTS"}, { + 0x00, 0x20, 0x57, "TITZE DATENTECHNIK GmbH"}, { + 0x00, 0x20, 0x58, "ALLIED SIGNAL INC."}, { + 0x00, 0x20, 0x59, "MIRO COMPUTER PRODUCTS AG"}, { + 0x00, 0x20, 0x5A, "COMPUTER IDENTICS"}, { + 0x00, 0x20, 0x5B, "SKYLINE TECHNOLOGY"}, { + 0x00, 0x20, 0x5C, "InterNet Systems of Florida, Inc."}, { + 0x00, 0x20, 0x5D, "NANOMATIC OY"}, { + 0x00, 0x20, 0x5E, "CASTLE ROCK, INC."}, { + 0x00, 0x20, 0x5F, "GAMMADATA COMPUTER GMBH"}, { + 0x00, 0x20, 0x60, "ALCATEL ITALIA S.p.A."}, { + 0x00, 0x20, 0x61, "DYNATECH COMMUNICATIONS, INC."}, { + 0x00, 0x20, 0x62, "SCORPION LOGIC, LTD."}, { + 0x00, 0x20, 0x63, "WIPRO INFOTECH LTD."}, { + 0x00, 0x20, 0x64, "PROTEC MICROSYSTEMS, INC."}, { + 0x00, 0x20, 0x65, "SUPERNET NETWORKING INC."}, { + 0x00, 0x20, 0x66, "GENERAL MAGIC, INC."}, { + 0x00, 0x20, 0x68, "ISDYNE"}, { + 0x00, 0x20, 0x69, "ISDN SYSTEMS CORPORATION"}, { + 0x00, 0x20, 0x6A, "OSAKA COMPUTER CORP."}, { + 0x00, 0x20, 0x6B, "MINOLTA CAMERA CO., LTD."}, { + 0x00, 0x20, 0x6C, "EVERGREEN TECHNOLOGY CORP."}, { + 0x00, 0x20, 0x6D, "DATA RACE, INC."}, { + 0x00, 0x20, 0x6E, "XACT, INC."}, { + 0x00, 0x20, 0x6F, "FLOWPOINT CORPORATION"}, { + 0x00, 0x20, 0x70, "HYNET, LTD."}, { + 0x00, 0x20, 0x71, "IBR GMBH"}, { + 0x00, 0x20, 0x72, "WORKLINK INNOVATIONS"}, { + 0x00, 0x20, 0x73, "FUSION SYSTEMS CORPORATION"}, { + 0x00, 0x20, 0x74, "SUNGWOON SYSTEMS"}, { + 0x00, 0x20, 0x75, "MOTOROLA COMMUNICATION ISRAEL"}, { + 0x00, 0x20, 0x76, "REUDO CORPORATION"}, { + 0x00, 0x20, 0x77, "KARDIOS SYSTEMS CORP."}, { + 0x00, 0x20, 0x78, "RUNTOP, INC."}, { + 0x00, 0x20, 0x79, "MIKRON GMBH"}, { + 0x00, 0x20, 0x7A, "WiSE Communications, Inc."}, { + 0x00, 0x20, 0x7B, "Intel Corporation"}, { + 0x00, 0x20, 0x7C, "AUTEC GmbH"}, { + 0x00, 0x20, 0x7D, "ADVANCED COMPUTER APPLICATIONS"}, { + 0x00, 0x20, 0x7E, "FINECOM Co., Ltd."}, { + 0x00, 0x20, 0x7F, "KYOEI SANGYO CO., LTD."}, { + 0x00, 0x20, 0x80, "SYNERGY (UK) LTD."}, { + 0x00, 0x20, 0x81, "TITAN ELECTRONICS"}, { + 0x00, 0x20, 0x82, "ONEAC CORPORATION"}, { + 0x00, 0x20, 0x83, "PRESTICOM INCORPORATED"}, { + 0x00, 0x20, 0x84, "OCE PRINTING SYSTEMS, GMBH"}, { + 0x00, 0x20, 0x85, "EXIDE ELECTRONICS"}, { + 0x00, 0x20, 0x86, "MICROTECH ELECTRONICS LIMITED"}, { + 0x00, 0x20, 0x87, "MEMOTEC COMMUNICATIONS CORP."}, { + 0x00, 0x20, 0x88, "GLOBAL VILLAGE COMMUNICATION"}, { + 0x00, 0x20, 0x89, "T3PLUS NETWORKING, INC."}, { + 0x00, 0x20, 0x8A, "SONIX COMMUNICATIONS, LTD."}, { + 0x00, 0x20, 0x8B, "LAPIS TECHNOLOGIES, INC."}, { + 0x00, 0x20, 0x8C, "GALAXY NETWORKS, INC."}, { + 0x00, 0x20, 0x8D, "CMD TECHNOLOGY"}, { + 0x00, 0x20, 0x8E, "CHEVIN SOFTWARE ENG. LTD."}, { + 0x00, 0x20, 0x8F, "ECI TELECOM LTD."}, { + 0x00, 0x20, 0x90, "ADVANCED COMPRESSION TECHNOLOGY, INC."}, { + 0x00, 0x20, 0x91, "J125, NATIONAL SECURITY AGENCY"}, { + 0x00, 0x20, 0x92, "CHESS ENGINEERING B.V."}, { + 0x00, 0x20, 0x93, "LANDINGS TECHNOLOGY CORP."}, { + 0x00, 0x20, 0x94, "CUBIX CORPORATION"}, { + 0x00, 0x20, 0x95, "RIVA ELECTRONICS"}, { + 0x00, 0x20, 0x96, "Invensys"}, { + 0x00, 0x20, 0x97, "APPLIED SIGNAL TECHNOLOGY"}, { + 0x00, 0x20, 0x98, "HECTRONIC AB"}, { + 0x00, 0x20, 0x99, "BON ELECTRIC CO., LTD."}, { + 0x00, 0x20, 0x9A, "THE 3DO COMPANY"}, { + 0x00, 0x20, 0x9B, "ERSAT ELECTRONIC GMBH"}, { + 0x00, 0x20, 0x9C, "PRIMARY ACCESS CORP."}, { + 0x00, 0x20, 0x9D, "LIPPERT AUTOMATIONSTECHNIK"}, { + 0x00, 0x20, 0x9E, "BROWN'S OPERATING SYSTEM SERVICES, LTD."}, { + 0x00, 0x20, 0x9F, "MERCURY COMPUTER SYSTEMS, INC."}, { + 0x00, 0x20, 0xA0, "OA LABORATORY CO., LTD."}, { + 0x00, 0x20, 0xA1, "DOVATRON"}, { + 0x00, 0x20, 0xA2, "GALCOM NETWORKING LTD."}, { + 0x00, 0x20, 0xA3, "DIVICOM INC."}, { + 0x00, 0x20, 0xA4, "MULTIPOINT NETWORKS"}, { + 0x00, 0x20, 0xA5, "API ENGINEERING"}, { + 0x00, 0x20, 0xA6, "PROXIM, INC."}, { + 0x00, 0x20, 0xA7, "PAIRGAIN TECHNOLOGIES, INC."}, { + 0x00, 0x20, 0xA8, "SAST TECHNOLOGY CORP."}, { + 0x00, 0x20, 0xA9, "WHITE HORSE INDUSTRIAL"}, { + 0x00, 0x20, 0xAA, "DIGIMEDIA VISION LTD."}, { + 0x00, 0x20, 0xAB, "MICRO INDUSTRIES CORP."}, { + 0x00, 0x20, 0xAC, "INTERFLEX DATENSYSTEME GMBH"}, { + 0x00, 0x20, 0xAD, "LINQ SYSTEMS"}, { + 0x00, 0x20, 0xAE, "ORNET DATA COMMUNICATION TECH."}, { + 0x00, 0x20, 0xAF, "3COM CORPORATION"}, { + 0x00, 0x20, 0xB0, "GATEWAY DEVICES, INC."}, { + 0x00, 0x20, 0xB1, "COMTECH RESEARCH INC."}, { + 0x00, 0x20, 0xB2, + "GKD Gesellschaft Fur Kommunikation Und Datentechnik"}, { + 0x00, 0x20, 0xB3, "SCLTEC COMMUNICATIONS SYSTEMS"}, { + 0x00, 0x20, 0xB4, "TERMA ELEKTRONIK AS"}, { + 0x00, 0x20, 0xB5, "YASKAWA ELECTRIC CORPORATION"}, { + 0x00, 0x20, 0xB6, "AGILE NETWORKS, INC."}, { + 0x00, 0x20, 0xB7, "NAMAQUA COMPUTERWARE"}, { + 0x00, 0x20, 0xB8, "PRIME OPTION, INC."}, { + 0x00, 0x20, 0xB9, "METRICOM, INC."}, { + 0x00, 0x20, 0xBA, "CENTER FOR HIGH PERFORMANCE"}, { + 0x00, 0x20, 0xBB, "ZAX CORPORATION"}, { + 0x00, 0x20, 0xBC, "JTEC PTY LTD."}, { + 0x00, 0x20, 0xBD, "NIOBRARA R & D CORPORATION"}, { + 0x00, 0x20, 0xBE, "LAN ACCESS CORP."}, { + 0x00, 0x20, 0xBF, "AEHR TEST SYSTEMS"}, { + 0x00, 0x20, 0xC0, "PULSE ELECTRONICS, INC."}, { + 0x00, 0x20, 0xC1, "TAIKO ELECTRIC WORKS, LTD."}, { + 0x00, 0x20, 0xC2, "TEXAS MEMORY SYSTEMS, INC."}, { + 0x00, 0x20, 0xC3, "COUNTER SOLUTIONS LTD."}, { + 0x00, 0x20, 0xC4, "INET,INC."}, { + 0x00, 0x20, 0xC5, "EAGLE TECHNOLOGY"}, { + 0x00, 0x20, 0xC6, "NECTEC"}, { + 0x00, 0x20, 0xC7, "AKAI Professional M.I. Corp."}, { + 0x00, 0x20, 0xC8, "LARSCOM INCORPORATED"}, { + 0x00, 0x20, 0xC9, "VICTRON BV"}, { + 0x00, 0x20, 0xCA, "DIGITAL OCEAN"}, { + 0x00, 0x20, 0xCB, "PRETEC ELECTRONICS CORP."}, { + 0x00, 0x20, 0xCC, "DIGITAL SERVICES, LTD."}, { + 0x00, 0x20, 0xCD, "HYBRID NETWORKS, INC."}, { + 0x00, 0x20, 0xCE, "LOGICAL DESIGN GROUP, INC."}, { + 0x00, 0x20, 0xCF, "TEST & MEASUREMENT SYSTEMS INC"}, { + 0x00, 0x20, 0xD0, "VERSALYNX CORPORATION"}, { + 0x00, 0x20, 0xD1, "MICROCOMPUTER SYSTEMS (M) SDN."}, { + 0x00, 0x20, 0xD2, "RAD DATA COMMUNICATIONS, LTD."}, { + 0x00, 0x20, 0xD3, "OST (OUEST STANDARD TELEMATIQU"}, { + 0x00, 0x20, 0xD4, "CABLETRON - ZEITTNET INC."}, { + 0x00, 0x20, 0xD5, "VIPA GMBH"}, { + 0x00, 0x20, 0xD6, "BREEZECOM"}, { + 0x00, 0x20, 0xD7, "JAPAN MINICOMPUTER SYSTEMS CO., Ltd."}, { + 0x00, 0x20, 0xD8, "Nortel Networks"}, { + 0x00, 0x20, 0xD9, "PANASONIC TECHNOLOGIES, INC./MIECO-US"}, { + 0x00, 0x20, 0xDA, "XYLAN CORPORATION"}, { + 0x00, 0x20, 0xDB, "XNET TECHNOLOGY, INC."}, { + 0x00, 0x20, 0xDC, "DENSITRON TAIWAN LTD."}, { + 0x00, 0x20, 0xDD, "AWA LTD."}, { + 0x00, 0x20, 0xDE, "JAPAN DIGITAL LABORAT'Y CO.LTD"}, { + 0x00, 0x20, 0xDF, "KYOSAN ELECTRIC MFG. CO., LTD."}, { + 0x00, 0x20, 0xE0, "PREMAX ELECTRONICS, INC."}, { + 0x00, 0x20, 0xE1, "ALAMAR ELECTRONICS"}, { + 0x00, 0x20, 0xE2, "INFORMATION RESOURCE ENGINEERING"}, { + 0x00, 0x20, 0xE3, "MCD KENCOM CORPORATION"}, { + 0x00, 0x20, 0xE4, "HSING TECH ENTERPRISE CO., LTD"}, { + 0x00, 0x20, 0xE5, "APEX DATA, INC."}, { + 0x00, 0x20, 0xE6, "LIDKOPING MACHINE TOOLS AB"}, { + 0x00, 0x20, 0xE7, "B&W NUCLEAR SERVICE COMPANY"}, { + 0x00, 0x20, 0xE8, "DATATREK CORPORATION"}, { + 0x00, 0x20, 0xE9, "DANTEL"}, { + 0x00, 0x20, 0xEA, "EFFICIENT NETWORKS, INC."}, { + 0x00, 0x20, 0xEB, "CINCINNATI MICROWAVE, INC."}, { + 0x00, 0x20, 0xEC, "TECHWARE SYSTEMS CORP."}, { + 0x00, 0x20, 0xED, "GIGA-BYTE TECHNOLOGY CO., LTD."}, { + 0x00, 0x20, 0xEE, "GTECH CORPORATION"}, { + 0x00, 0x20, 0xEF, "USC CORPORATION"}, { + 0x00, 0x20, 0xF0, "UNIVERSAL MICROELECTRONICS CO."}, { + 0x00, 0x20, 0xF1, "ALTOS INDIA LIMITED"}, { + 0x00, 0x20, 0xF2, "SUN MICROSYSTEMS, INC."}, { + 0x00, 0x20, 0xF3, "RAYNET CORPORATION"}, { + 0x00, 0x20, 0xF4, "SPECTRIX CORPORATION"}, { + 0x00, 0x20, 0xF5, "PANDATEL AG"}, { + 0x00, 0x20, 0xF6, "NET TEK AND KARLNET, INC."}, { + 0x00, 0x20, 0xF7, "CYBERDATA"}, { + 0x00, 0x20, 0xF8, "CARRERA COMPUTERS, INC."}, { + 0x00, 0x20, 0xF9, "PARALINK NETWORKS, INC."}, { + 0x00, 0x20, 0xFA, "GDE SYSTEMS, INC."}, { + 0x00, 0x20, 0xFB, "OCTEL COMMUNICATIONS CORP."}, { + 0x00, 0x20, 0xFC, "MATROX"}, { + 0x00, 0x20, 0xFD, "ITV TECHNOLOGIES, INC."}, { + 0x00, 0x20, 0xFE, "TOPWARE INC. / GRAND COMPUTER"}, { + 0x00, 0x20, 0xFF, "SYMMETRICAL TECHNOLOGIES"}, { + 0x00, 0x30, 0x00, "ALLWELL TECHNOLOGY CORP."}, { + 0x00, 0x30, 0x01, "SMP"}, { + 0x00, 0x30, 0x02, "Expand Networks"}, { + 0x00, 0x30, 0x03, "Phasys Ltd."}, { + 0x00, 0x30, 0x04, "LEADTEK RESEARCH INC."}, { + 0x00, 0x30, 0x05, "Fujitsu Siemens Computers"}, { + 0x00, 0x30, 0x06, "SUPERPOWER COMPUTER"}, { + 0x00, 0x30, 0x07, "OPTI, INC."}, { + 0x00, 0x30, 0x08, "AVIO DIGITAL, INC."}, { + 0x00, 0x30, 0x09, "Tachion Networks, Inc."}, { + 0x00, 0x30, 0x0A, "AZTECH SYSTEMS LTD."}, { + 0x00, 0x30, 0x0B, "mPHASE Technologies, Inc."}, { + 0x00, 0x30, 0x0C, "CONGRUENCY, LTD."}, { + 0x00, 0x30, 0x0D, "MMC Technology, Inc."}, { + 0x00, 0x30, 0x0E, "Klotz Digital AG"}, { + 0x00, 0x30, 0x0F, "IMT - Information Management T"}, { + 0x00, 0x30, 0x10, "VISIONETICS INTERNATIONAL"}, { + 0x00, 0x30, 0x11, "HMS FIELDBUS SYSTEMS AB"}, { + 0x00, 0x30, 0x12, "DIGITAL ENGINEERING LTD."}, { + 0x00, 0x30, 0x13, "NEC Corporation"}, { + 0x00, 0x30, 0x14, "DIVIO, INC."}, { + 0x00, 0x30, 0x15, "CP CLARE CORP."}, { + 0x00, 0x30, 0x16, "ISHIDA CO., LTD."}, { + 0x00, 0x30, 0x17, "TERASTACK LTD."}, { + 0x00, 0x30, 0x18, "Jetway Information Co., Ltd."}, { + 0x00, 0x30, 0x19, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0x1A, "SMARTBRIDGES PTE. LTD."}, { + 0x00, 0x30, 0x1B, "SHUTTLE, INC."}, { + 0x00, 0x30, 0x1C, "ALTVATER AIRDATA SYSTEMS"}, { + 0x00, 0x30, 0x1D, "SKYSTREAM, INC."}, { + 0x00, 0x30, 0x1E, "3COM Europe Ltd."}, { + 0x00, 0x30, 0x1F, "OPTICAL NETWORKS, INC."}, { + 0x00, 0x30, 0x20, "TSI, Inc.."}, { + 0x00, 0x30, 0x21, "HSING TECH. ENTERPRISE CO.,LTD"}, { + 0x00, 0x30, 0x22, "Fong Kai Industrial Co., Ltd."}, { + 0x00, 0x30, 0x23, "COGENT COMPUTER SYSTEMS, INC."}, { + 0x00, 0x30, 0x24, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0x25, "CHECKOUT COMPUTER SYSTEMS, LTD"}, { + 0x00, 0x30, 0x26, "HEITEL"}, { + 0x00, 0x30, 0x27, "KERBANGO, INC."}, { + 0x00, 0x30, 0x28, "FASE Saldatura srl"}, { + 0x00, 0x30, 0x29, "OPICOM"}, { + 0x00, 0x30, 0x2A, "SOUTHERN INFORMATION"}, { + 0x00, 0x30, 0x2B, "INALP NETWORKS, INC."}, { + 0x00, 0x30, 0x2C, "SYLANTRO SYSTEMS CORPORATION"}, { + 0x00, 0x30, 0x2D, "QUANTUM BRIDGE COMMUNICATIONS"}, { + 0x00, 0x30, 0x2E, "Hoft & Wessel AG"}, { + 0x00, 0x30, 0x2F, "Smiths Industries"}, { + 0x00, 0x30, 0x30, "HARMONIX CORPORATION"}, { + 0x00, 0x30, 0x31, "LIGHTWAVE COMMUNICATIONS, INC."}, { + 0x00, 0x30, 0x32, "MagicRam, Inc."}, { + 0x00, 0x30, 0x33, "ORIENT TELECOM CO., LTD."}, { + 0x00, 0x30, 0x36, "RMP ELEKTRONIKSYSTEME GMBH"}, { + 0x00, 0x30, 0x37, "Packard Bell Nec Services"}, { + 0x00, 0x30, 0x38, "XCP, INC."}, { + 0x00, 0x30, 0x39, "SOFTBOOK PRESS"}, { + 0x00, 0x30, 0x3A, "MAATEL"}, { + 0x00, 0x30, 0x3B, "PowerCom Technology"}, { + 0x00, 0x30, 0x3C, "ONNTO CORP."}, { + 0x00, 0x30, 0x3D, "IVA CORPORATION"}, { + 0x00, 0x30, 0x3E, "Radcom Ltd."}, { + 0x00, 0x30, 0x3F, "TurboComm Tech Inc."}, { + 0x00, 0x30, 0x40, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0x41, "SAEJIN T & M CO., LTD."}, { + 0x00, 0x30, 0x42, "DeTeWe-Deutsche Telephonwerke"}, { + 0x00, 0x30, 0x43, "IDREAM TECHNOLOGIES, PTE. LTD."}, { + 0x00, 0x30, 0x44, "Portsmith LLC"}, { + 0x00, 0x30, 0x45, "Village Networks, Inc. (VNI)"}, { + 0x00, 0x30, 0x46, "Controlled Electronic Manageme"}, { + 0x00, 0x30, 0x47, "NISSEI ELECTRIC CO., LTD."}, { + 0x00, 0x30, 0x48, "Supermicro Computer, Inc."}, { + 0x00, 0x30, 0x49, "BRYANT TECHNOLOGY, LTD."}, { + 0x00, 0x30, 0x4A, "FRAUNHOFER INSTITUTE IMS"}, { + 0x00, 0x30, 0x4B, "ORBACOM SYSTEMS, INC."}, { + 0x00, 0x30, 0x4C, "APPIAN COMMUNICATIONS, INC."}, { + 0x00, 0x30, 0x4D, "ESI"}, { + 0x00, 0x30, 0x4E, "BUSTEC PRODUCTION LTD."}, { + 0x00, 0x30, 0x4F, "PLANET Technology Corporation"}, { + 0x00, 0x30, 0x50, "Versa Technology"}, { + 0x00, 0x30, 0x51, "ORBIT AVIONIC & COMMUNICATION"}, { + 0x00, 0x30, 0x52, "ELASTIC NETWORKS"}, { + 0x00, 0x30, 0x53, "Basler AG"}, { + 0x00, 0x30, 0x54, "CASTLENET TECHNOLOGY, INC."}, { + 0x00, 0x30, 0x55, "Hitachi Semiconductor America,"}, { + 0x00, 0x30, 0x56, "Beck IPC GmbH"}, { + 0x00, 0x30, 0x57, "E-Tel Corporation"}, { + 0x00, 0x30, 0x58, "API MOTION"}, { + 0x00, 0x30, 0x59, "DIGITAL-LOGIC AG"}, { + 0x00, 0x30, 0x5A, "TELGEN CORPORATION"}, { + 0x00, 0x30, 0x5B, "MODULE DEPARTMENT"}, { + 0x00, 0x30, 0x5C, "SMAR Laboratories Corp."}, { + 0x00, 0x30, 0x5D, "DIGITRA SYSTEMS, INC."}, { + 0x00, 0x30, 0x5E, "Abelko Innovation"}, { + 0x00, 0x30, 0x5F, "IMACON APS"}, { + 0x00, 0x30, 0x60, "STARMATIX, INC."}, { + 0x00, 0x30, 0x61, "MobyTEL"}, { + 0x00, 0x30, 0x62, "PATH 1 NETWORK TECHNOL'S INC."}, { + 0x00, 0x30, 0x63, "SANTERA SYSTEMS, INC."}, { + 0x00, 0x30, 0x64, "ADLINK TECHNOLOGY, INC."}, { + 0x00, 0x30, 0x65, "APPLE COMPUTER, INC."}, { + 0x00, 0x30, 0x66, "DIGITAL WIRELESS CORPORATION"}, { + 0x00, 0x30, 0x67, "BIOSTAR MICROTECH INT'L CORP."}, { + 0x00, 0x30, 0x68, "CYBERNETICS TECH. CO., LTD."}, { + 0x00, 0x30, 0x69, "IMPACCT TECHNOLOGY CORP."}, { + 0x00, 0x30, 0x6A, "PENTA MEDIA CO., LTD."}, { + 0x00, 0x30, 0x6B, "CMOS SYSTEMS, INC."}, { + 0x00, 0x30, 0x6C, "Hitex Holding GmbH"}, { + 0x00, 0x30, 0x6D, "LUCENT TECHNOLOGIES"}, { + 0x00, 0x30, 0x6E, "HEWLETT PACKARD"}, { + 0x00, 0x30, 0x6F, "SEYEON TECH. CO., LTD."}, { + 0x00, 0x30, 0x70, "1Net Corporation"}, { + 0x00, 0x30, 0x71, "Cisco Systems, Inc."}, { + 0x00, 0x30, 0x72, "INTELLIBYTE INC."}, { + 0x00, 0x30, 0x73, "International Microsystems, In"}, { + 0x00, 0x30, 0x74, "EQUIINET LTD."}, { + 0x00, 0x30, 0x75, "ADTECH"}, { + 0x00, 0x30, 0x76, "Akamba Corporation"}, { + 0x00, 0x30, 0x77, "ONPREM NETWORKS"}, { + 0x00, 0x30, 0x78, "Cisco Systems, Inc."}, { + 0x00, 0x30, 0x79, "CQOS, INC."}, { + 0x00, 0x30, 0x7A, "Advanced Technology & Systems"}, { + 0x00, 0x30, 0x7B, "Cisco Systems, Inc."}, { + 0x00, 0x30, 0x7C, "ADID SA"}, { + 0x00, 0x30, 0x7D, "GRE AMERICA, INC."}, { + 0x00, 0x30, 0x7E, "Redflex Communication Systems"}, { + 0x00, 0x30, 0x7F, "IRLAN LTD."}, { + 0x00, 0x30, 0x80, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0x81, "ALTOS C&C"}, { + 0x00, 0x30, 0x82, "TAIHAN ELECTRIC WIRE CO., LTD."}, { + 0x00, 0x30, 0x83, "Ivron Systems"}, { + 0x00, 0x30, 0x84, "ALLIED TELESYN INTERNAIONAL"}, { + 0x00, 0x30, 0x85, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0x86, "Transistor Devices, Inc."}, { + 0x00, 0x30, 0x87, "VEGA GRIESHABER KG"}, { + 0x00, 0x30, 0x88, "Siara Systems, Inc."}, { + 0x00, 0x30, 0x89, "Spectrapoint Wireless, LLC"}, { + 0x00, 0x30, 0x8A, "NICOTRA SISTEMI S.P.A"}, { + 0x00, 0x30, 0x8B, "Brix Networks"}, { + 0x00, 0x30, 0x8C, "ADVANCED DIGITAL INFORMATION"}, { + 0x00, 0x30, 0x8D, "PINNACLE SYSTEMS, INC."}, { + 0x00, 0x30, 0x8E, "CROSS MATCH TECHNOLOGIES, INC."}, { + 0x00, 0x30, 0x8F, "MICRILOR, Inc."}, { + 0x00, 0x30, 0x90, "CYRA TECHNOLOGIES, INC."}, { + 0x00, 0x30, 0x91, "TAIWAN FIRST LINE ELEC. CORP."}, { + 0x00, 0x30, 0x92, "ModuNORM GmbH"}, { + 0x00, 0x30, 0x93, "SONNET TECHNOLOGIES, INC."}, { + 0x00, 0x30, 0x94, "Cisco Systems, Inc."}, { + 0x00, 0x30, 0x95, "Procomp Informatics, Ltd."}, { + 0x00, 0x30, 0x96, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0x97, "EXOMATIC AB"}, { + 0x00, 0x30, 0x98, "Global Converging Technologies"}, { + 0x00, 0x30, 0x99, "BOENIG UND KALLENBACH OHG"}, { + 0x00, 0x30, 0x9A, "ASTRO TERRA CORP."}, { + 0x00, 0x30, 0x9B, "Smartware"}, { + 0x00, 0x30, 0x9C, "Timing Applications, Inc."}, { + 0x00, 0x30, 0x9D, "Nimble Microsystems, Inc."}, { + 0x00, 0x30, 0x9E, "WORKBIT CORPORATION."}, { + 0x00, 0x30, 0x9F, "AMBER NETWORKS"}, { + 0x00, 0x30, 0xA0, "TYCO SUBMARINE SYSTEMS, LTD."}, { + 0x00, 0x30, 0xA1, "OPTI TECH CO., LTD."}, { + 0x00, 0x30, 0xA2, "Lightner Engineering"}, { + 0x00, 0x30, 0xA3, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0xA4, "Woodwind Communications System"}, { + 0x00, 0x30, 0xA5, "ACTIVE POWER"}, { + 0x00, 0x30, 0xA6, "VIANET TECHNOLOGIES, LTD."}, { + 0x00, 0x30, 0xA7, "SCHWEITZER ENGINEERING"}, { + 0x00, 0x30, 0xA8, "OL'E COMMUNICATIONS, INC."}, { + 0x00, 0x30, 0xA9, "Netiverse, Inc."}, { + 0x00, 0x30, 0xAA, "AXUS MICROSYSTEMS, INC."}, { + 0x00, 0x30, 0xAB, "DELTA NETWORKS, INC."}, { + 0x00, 0x30, 0xAC, "Systeme Lauer GmbH & Co., Ltd."}, { + 0x00, 0x30, 0xAD, "SHANGHAI COMMUNICATION"}, { + 0x00, 0x30, 0xAE, "Times N System, Inc."}, { + 0x00, 0x30, 0xAF, "Honeywell Reqelsysteme GmbH"}, { + 0x00, 0x30, 0xB0, "Convergenet Technologies"}, { + 0x00, 0x30, 0xB1, "GOC GESELLSCHAFT FUR OPTISCHE"}, { + 0x00, 0x30, 0xB2, "WESCAM - HEALDSBURG"}, { + 0x00, 0x30, 0xB3, "San Valley Systems, Inc."}, { + 0x00, 0x30, 0xB4, "INTERSIL CORP."}, { + 0x00, 0x30, 0xB5, "Tadiran Microwave Networks"}, { + 0x00, 0x30, 0xB6, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0xB7, "Teletrol Systems, Inc."}, { + 0x00, 0x30, 0xB8, "RiverDelta Networks"}, { + 0x00, 0x30, 0xB9, "ECTEL"}, { + 0x00, 0x30, 0xBA, "AC&T SYSTEM CO., LTD."}, { + 0x00, 0x30, 0xBB, "CacheFlow, Inc."}, { + 0x00, 0x30, 0xBC, "Optronic AG"}, { + 0x00, 0x30, 0xBD, "BELKIN COMPONENTS"}, { + 0x00, 0x30, 0xBE, "City-Net Technology, Inc."}, { + 0x00, 0x30, 0xBF, "MULTIDATA GMBH"}, { + 0x00, 0x30, 0xC0, "Lara Technology, Inc."}, { + 0x00, 0x30, 0xC1, "HEWLETT-PACKARD"}, { + 0x00, 0x30, 0xC2, "COMONE"}, { + 0x00, 0x30, 0xC3, "FLUECKIGER ELEKTRONIK AG"}, { + 0x00, 0x30, 0xC4, "Niigata Canotec Co., Inc."}, { + 0x00, 0x30, 0xC5, "CADENCE DESIGN SYSTEMS"}, { + 0x00, 0x30, 0xC6, "CONTROL SOLUTIONS, INC."}, { + 0x00, 0x30, 0xC7, "MACROMATE CORP."}, { + 0x00, 0x30, 0xC8, "GAD LINE, LTD."}, { + 0x00, 0x30, 0xC9, "LuxN, N"}, { + 0x00, 0x30, 0xCA, "Discovery Com"}, { + 0x00, 0x30, 0xCB, "OMNI FLOW COMPUTERS, INC."}, { + 0x00, 0x30, 0xCC, "Tenor Networks, Inc."}, { + 0x00, 0x30, 0xCD, "CONEXANT SYSTEMS, INC."}, { + 0x00, 0x30, 0xCE, "Zaffire"}, { + 0x00, 0x30, 0xCF, "TWO TECHNOLOGIES, INC."}, { + 0x00, 0x30, 0xD1, "INOVA CORPORATION"}, { + 0x00, 0x30, 0xD2, "WIN TECHNOLOGIES, CO., LTD."}, { + 0x00, 0x30, 0xD3, "Agilent Technologies"}, { + 0x00, 0x30, 0xD4, "COMTIER"}, { + 0x00, 0x30, 0xD5, "DResearch GmbH"}, { + 0x00, 0x30, 0xD6, "MSC VERTRIEBS GMBH"}, { + 0x00, 0x30, 0xD7, "Innovative Systems, L.L.C."}, { + 0x00, 0x30, 0xD8, "SITEK"}, { + 0x00, 0x30, 0xD9, "DATACORE SOFTWARE CORP."}, { + 0x00, 0x30, 0xDA, "COMTREND CO."}, { + 0x00, 0x30, 0xDB, "Mindready Solutions, Inc."}, { + 0x00, 0x30, 0xDC, "RIGHTECH CORPORATION"}, { + 0x00, 0x30, 0xDD, "INDIGITA CORPORATION"}, { + 0x00, 0x30, 0xDE, "WAGO Kontakttechnik GmbH"}, { + 0x00, 0x30, 0xDF, "KB/TEL TELECOMUNICACIONES"}, { + 0x00, 0x30, 0xE0, "OXFORD SEMICONDUCTOR LTD."}, { + 0x00, 0x30, 0xE1, "ACROTRON SYSTEMS, INC."}, { + 0x00, 0x30, 0xE2, "GARNET SYSTEMS CO., LTD."}, { + 0x00, 0x30, 0xE3, "SEDONA NETWORKS CORP."}, { + 0x00, 0x30, 0xE4, "CHIYODA SYSTEM RIKEN"}, { + 0x00, 0x30, 0xE5, "Amper Datos S.A."}, { + 0x00, 0x30, 0xE6, "SIEMENS MEDICAL SYSTEMS"}, { + 0x00, 0x30, 0xE7, "CNF MOBILE SOLUTIONS, INC."}, { + 0x00, 0x30, 0xE8, "ENSIM CORP."}, { + 0x00, 0x30, 0xE9, "GMA COMMUNICATION MANUFACT'G"}, { + 0x00, 0x30, 0xEA, "TeraForce Technology Corporation"}, { + 0x00, 0x30, 0xEB, "TURBONET COMMUNICATIONS, INC."}, { + 0x00, 0x30, 0xEC, "BORGARDT"}, { + 0x00, 0x30, 0xED, "Expert Magnetics Corp."}, { + 0x00, 0x30, 0xEE, "DSG Technology, Inc."}, { + 0x00, 0x30, 0xEF, "NEON TECHNOLOGY, INC."}, { + 0x00, 0x30, 0xF0, "Uniform Industrial Corp."}, { + 0x00, 0x30, 0xF1, "Accton Technology Corp."}, { + 0x00, 0x30, 0xF2, "CISCO SYSTEMS, INC."}, { + 0x00, 0x30, 0xF3, "At Work Computers"}, { + 0x00, 0x30, 0xF4, "STARDOT TECHNOLOGIES"}, { + 0x00, 0x30, 0xF5, "Wild Lab. Ltd."}, { + 0x00, 0x30, 0xF6, "SECURELOGIX CORPORATION"}, { + 0x00, 0x30, 0xF7, "RAMIX INC."}, { + 0x00, 0x30, 0xF8, "Dynapro Systems, Inc."}, { + 0x00, 0x30, 0xF9, "Sollae Systems Co., Ltd."}, { + 0x00, 0x30, 0xFA, "TELICA, INC."}, { + 0x00, 0x30, 0xFB, "AZS Technology AG"}, { + 0x00, 0x30, 0xFC, "Terawave Communications, Inc."}, { + 0x00, 0x30, 0xFD, "INTEGRATED SYSTEMS DESIGN"}, { + 0x00, 0x30, 0xFE, "DSA GmbH"}, { + 0x00, 0x30, 0xFF, "DATAFAB SYSTEMS, INC."}, { + 0x00, 0x40, 0x00, "PCI COMPONENTES DA AMZONIA LTD"}, { + 0x00, 0x40, 0x01, "ZYXEL COMMUNICATIONS, INC."}, { + 0x00, 0x40, 0x02, "PERLE SYSTEMS LIMITED"}, { + 0x00, 0x40, 0x03, "WESTINGHOUSE PROCESS CONTROL"}, { + 0x00, 0x40, 0x04, "ICM CO. LTD."}, { + 0x00, 0x40, 0x05, "ANI COMMUNICATIONS INC."}, { + 0x00, 0x40, 0x06, "SAMPO TECHNOLOGY CORPORATION"}, { + 0x00, 0x40, 0x07, "TELMAT INFORMATIQUE"}, { + 0x00, 0x40, 0x08, "A PLUS INFO CORPORATION"}, { + 0x00, 0x40, 0x09, "TACHIBANA TECTRON CO., LTD."}, { + 0x00, 0x40, 0x0A, "PIVOTAL TECHNOLOGIES, INC."}, { + 0x00, 0x40, 0x0B, "CISCO SYSTEMS, INC."}, { + 0x00, 0x40, 0x0C, "GENERAL MICRO SYSTEMS, INC."}, { + 0x00, 0x40, 0x0D, "LANNET DATA COMMUNICATIONS,LTD"}, { + 0x00, 0x40, 0x0E, "MEMOTEC COMMUNICATIONS, INC."}, { + 0x00, 0x40, 0x0F, "DATACOM TECHNOLOGIES"}, { + 0x00, 0x40, 0x10, "SONIC SYSTEMS, INC."}, { + 0x00, 0x40, 0x11, "ANDOVER CONTROLS CORPORATION"}, { + 0x00, 0x40, 0x12, "WINDATA, INC."}, { + 0x00, 0x40, 0x13, "NTT DATA COMM. SYSTEMS CORP."}, { + 0x00, 0x40, 0x14, "COMSOFT GMBH"}, { + 0x00, 0x40, 0x15, "ASCOM INFRASYS AG"}, { + 0x00, 0x40, 0x16, "HADAX ELECTRONICS, INC."}, { + 0x00, 0x40, 0x17, "XCD INC."}, { + 0x00, 0x40, 0x18, "ADOBE SYSTEMS, INC."}, { + 0x00, 0x40, 0x19, "AEON SYSTEMS, INC."}, { + 0x00, 0x40, 0x1A, "FUJI ELECTRIC CO., LTD."}, { + 0x00, 0x40, 0x1B, "PRINTER SYSTEMS CORP."}, { + 0x00, 0x40, 0x1C, "AST RESEARCH, INC."}, { + 0x00, 0x40, 0x1D, "INVISIBLE SOFTWARE, INC."}, { + 0x00, 0x40, 0x1E, "ICC"}, { + 0x00, 0x40, 0x1F, "COLORGRAPH LTD"}, { + 0x00, 0x40, 0x20, "PINACL COMMUNICATION"}, { + 0x00, 0x40, 0x21, "RASTER GRAPHICS"}, { + 0x00, 0x40, 0x22, "KLEVER COMPUTERS, INC."}, { + 0x00, 0x40, 0x23, "LOGIC CORPORATION"}, { + 0x00, 0x40, 0x24, "COMPAC INC."}, { + 0x00, 0x40, 0x25, "MOLECULAR DYNAMICS"}, { + 0x00, 0x40, 0x26, "MELCO, INC."}, { + 0x00, 0x40, 0x27, "SMC MASSACHUSETTS, INC."}, { + 0x00, 0x40, 0x28, "NETCOMM LIMITED"}, { + 0x00, 0x40, 0x29, "COMPEX"}, { + 0x00, 0x40, 0x2A, "CANOGA-PERKINS"}, { + 0x00, 0x40, 0x2B, "TRIGEM COMPUTER, INC."}, { + 0x00, 0x40, 0x2C, "ISIS DISTRIBUTED SYSTEMS, INC."}, { + 0x00, 0x40, 0x2D, "HARRIS ADACOM CORPORATION"}, { + 0x00, 0x40, 0x2E, "PRECISION SOFTWARE, INC."}, { + 0x00, 0x40, 0x2F, "XLNT DESIGNS INC."}, { + 0x00, 0x40, 0x30, "GK COMPUTER"}, { + 0x00, 0x40, 0x31, "KOKUSAI ELECTRIC CO., LTD"}, { + 0x00, 0x40, 0x32, "DIGITAL COMMUNICATIONS"}, { + 0x00, 0x40, 0x33, "ADDTRON TECHNOLOGY CO., LTD."}, { + 0x00, 0x40, 0x34, "BUSTEK CORPORATION"}, { + 0x00, 0x40, 0x35, "OPCOM"}, { + 0x00, 0x40, 0x36, "TRIBE COMPUTER WORKS, INC."}, { + 0x00, 0x40, 0x37, "SEA-ILAN, INC."}, { + 0x00, 0x40, 0x38, "TALENT ELECTRIC INCORPORATED"}, { + 0x00, 0x40, 0x39, "OPTEC DAIICHI DENKO CO., LTD."}, { + 0x00, 0x40, 0x3A, "IMPACT TECHNOLOGIES"}, { + 0x00, 0x40, 0x3B, "SYNERJET INTERNATIONAL CORP."}, { + 0x00, 0x40, 0x3C, "FORKS, INC."}, { + 0x00, 0x40, 0x3D, "TERADATA"}, { + 0x00, 0x40, 0x3E, "RASTER OPS CORPORATION"}, { + 0x00, 0x40, 0x3F, "SSANGYONG COMPUTER SYSTEMS"}, { + 0x00, 0x40, 0x40, "RING ACCESS, INC."}, { + 0x00, 0x40, 0x41, "FUJIKURA LTD."}, { + 0x00, 0x40, 0x42, "N.A.T. GMBH"}, { + 0x00, 0x40, 0x43, "NOKIA TELECOMMUNICATIONS"}, { + 0x00, 0x40, 0x44, "QNIX COMPUTER CO., LTD."}, { + 0x00, 0x40, 0x45, "TWINHEAD CORPORATION"}, { + 0x00, 0x40, 0x46, "UDC RESEARCH LIMITED"}, { + 0x00, 0x40, 0x47, "WIND RIVER SYSTEMS"}, { + 0x00, 0x40, 0x48, "SMD INFORMATICA S.A."}, { + 0x00, 0x40, 0x49, "TEGIMENTA AG"}, { + 0x00, 0x40, 0x4A, "WEST AUSTRALIAN DEPARTMENT"}, { + 0x00, 0x40, 0x4B, "MAPLE COMPUTER SYSTEMS"}, { + 0x00, 0x40, 0x4C, "HYPERTEC PTY LTD."}, { + 0x00, 0x40, 0x4D, "TELECOMMUNICATIONS TECHNIQUES"}, { + 0x00, 0x40, 0x4E, "FLUENT, INC."}, { + 0x00, 0x40, 0x4F, "SPACE & NAVAL WARFARE SYSTEMS"}, { + 0x00, 0x40, 0x50, "IRONICS, INCORPORATED"}, { + 0x00, 0x40, 0x51, "GRACILIS, INC."}, { + 0x00, 0x40, 0x52, "STAR TECHNOLOGIES, INC."}, { + 0x00, 0x40, 0x53, "AMPRO COMPUTERS"}, { + 0x00, 0x40, 0x54, "CONNECTION MACHINES SERVICES"}, { + 0x00, 0x40, 0x55, "METRONIX GMBH"}, { + 0x00, 0x40, 0x56, "MCM JAPAN LTD."}, { + 0x00, 0x40, 0x57, "LOCKHEED - SANDERS"}, { + 0x00, 0x40, 0x58, "KRONOS, INC."}, { + 0x00, 0x40, 0x59, "YOSHIDA KOGYO K. K."}, { + 0x00, 0x40, 0x5A, "GOLDSTAR INFORMATION & COMM."}, { + 0x00, 0x40, 0x5B, "FUNASSET LIMITED"}, { + 0x00, 0x40, 0x5C, "FUTURE SYSTEMS, INC."}, { + 0x00, 0x40, 0x5D, "STAR-TEK, INC."}, { + 0x00, 0x40, 0x5E, "NORTH HILLS ISRAEL"}, { + 0x00, 0x40, 0x5F, "AFE COMPUTERS LTD."}, { + 0x00, 0x40, 0x60, "COMENDEC LTD"}, { + 0x00, 0x40, 0x61, "DATATECH ENTERPRISES CO., LTD."}, { + 0x00, 0x40, 0x62, "E-SYSTEMS, INC./GARLAND DIV."}, { + 0x00, 0x40, 0x63, "VIA TECHNOLOGIES, INC."}, { + 0x00, 0x40, 0x64, "KLA INSTRUMENTS CORPORATION"}, { + 0x00, 0x40, 0x65, "GTE SPACENET"}, { + 0x00, 0x40, 0x66, "HITACHI CABLE, LTD."}, { + 0x00, 0x40, 0x67, "OMNIBYTE CORPORATION"}, { + 0x00, 0x40, 0x68, "EXTENDED SYSTEMS"}, { + 0x00, 0x40, 0x69, "LEMCOM SYSTEMS, INC."}, { + 0x00, 0x40, 0x6A, "KENTEK INFORMATION SYSTEMS,INC"}, { + 0x00, 0x40, 0x6B, "SYSGEN"}, { + 0x00, 0x40, 0x6C, "COPERNIQUE"}, { + 0x00, 0x40, 0x6D, "LANCO, INC."}, { + 0x00, 0x40, 0x6E, "COROLLARY, INC."}, { + 0x00, 0x40, 0x6F, "SYNC RESEARCH INC."}, { + 0x00, 0x40, 0x70, "INTERWARE CO., LTD."}, { + 0x00, 0x40, 0x71, "ATM COMPUTER GMBH"}, { + 0x00, 0x40, 0x72, "APPLIED INNOVATION, INC."}, { + 0x00, 0x40, 0x73, "BASS ASSOCIATES"}, { + 0x00, 0x40, 0x74, "CABLE AND WIRELESS"}, { + 0x00, 0x40, 0x75, "M-TRADE (UK) LTD"}, { + 0x00, 0x40, 0x76, "Sun Conversion Technologies"}, { + 0x00, 0x40, 0x77, "MAXTON TECHNOLOGY CORPORATION"}, { + 0x00, 0x40, 0x78, "WEARNES AUTOMATION PTE LTD"}, { + 0x00, 0x40, 0x79, "JUKO MANUFACTURE COMPANY, LTD."}, { + 0x00, 0x40, 0x7A, "SOCIETE D'EXPLOITATION DU CNIT"}, { + 0x00, 0x40, 0x7B, "SCIENTIFIC ATLANTA"}, { + 0x00, 0x40, 0x7C, "QUME CORPORATION"}, { + 0x00, 0x40, 0x7D, "EXTENSION TECHNOLOGY CORP."}, { + 0x00, 0x40, 0x7E, "EVERGREEN SYSTEMS, INC."}, { + 0x00, 0x40, 0x7F, "FLIR Systems"}, { + 0x00, 0x40, 0x80, "ATHENIX CORPORATION"}, { + 0x00, 0x40, 0x81, "MANNESMANN SCANGRAPHIC GMBH"}, { + 0x00, 0x40, 0x82, "LABORATORY EQUIPMENT CORP."}, { + 0x00, 0x40, 0x83, "TDA INDUSTRIA DE PRODUTOS"}, { + 0x00, 0x40, 0x84, "HONEYWELL INC."}, { + 0x00, 0x40, 0x85, "SAAB INSTRUMENTS AB"}, { + 0x00, 0x40, 0x86, "MICHELS & KLEBERHOFF COMPUTER"}, { + 0x00, 0x40, 0x87, "UBITREX CORPORATION"}, { + 0x00, 0x40, 0x88, "MOBIUS TECHNOLOGIES, INC."}, { + 0x00, 0x40, 0x89, "MEIDENSHA CORPORATION"}, { + 0x00, 0x40, 0x8A, "TPS TELEPROCESSING SYS. GMBH"}, { + 0x00, 0x40, 0x8B, "RAYLAN CORPORATION"}, { + 0x00, 0x40, 0x8C, "AXIS COMMUNICATIONS AB"}, { + 0x00, 0x40, 0x8D, "THE GOODYEAR TIRE & RUBBER CO."}, { + 0x00, 0x40, 0x8E, "DIGILOG, INC."}, { + 0x00, 0x40, 0x8F, "WM-DATA MINFO AB"}, { + 0x00, 0x40, 0x90, "ANSEL COMMUNICATIONS"}, { + 0x00, 0x40, 0x91, "PROCOMP INDUSTRIA ELETRONICA"}, { + 0x00, 0x40, 0x92, "ASP COMPUTER PRODUCTS, INC."}, { + 0x00, 0x40, 0x93, "PAXDATA NETWORKS LTD."}, { + 0x00, 0x40, 0x94, "SHOGRAPHICS, INC."}, { + 0x00, 0x40, 0x95, "R.P.T. INTERGROUPS INT'L LTD."}, { + 0x00, 0x40, 0x96, "Aironet Wireless Communication"}, { + 0x00, 0x40, 0x97, "DATEX DIVISION OF"}, { + 0x00, 0x40, 0x98, "DRESSLER GMBH & CO."}, { + 0x00, 0x40, 0x99, "NEWGEN SYSTEMS CORP."}, { + 0x00, 0x40, 0x9A, "NETWORK EXPRESS, INC."}, { + 0x00, 0x40, 0x9B, "HAL COMPUTER SYSTEMS INC."}, { + 0x00, 0x40, 0x9C, "TRANSWARE"}, { + 0x00, 0x40, 0x9D, "DIGIBOARD, INC."}, { + 0x00, 0x40, 0x9E, "CONCURRENT TECHNOLOGIES LTD."}, { + 0x00, 0x40, 0x9F, "LANCAST/CASAT TECHNOLOGY, INC."}, { + 0x00, 0x40, 0xA0, "GOLDSTAR CO., LTD."}, { + 0x00, 0x40, 0xA1, "ERGO COMPUTING"}, { + 0x00, 0x40, 0xA2, "KINGSTAR TECHNOLOGY INC."}, { + 0x00, 0x40, 0xA3, "MICROUNITY SYSTEMS ENGINEERING"}, { + 0x00, 0x40, 0xA4, "ROSE ELECTRONICS"}, { + 0x00, 0x40, 0xA5, "CLINICOMP INTL."}, { + 0x00, 0x40, 0xA6, "Cray, Inc."}, { + 0x00, 0x40, 0xA7, "ITAUTEC PHILCO S.A."}, { + 0x00, 0x40, 0xA8, "IMF INTERNATIONAL LTD."}, { + 0x00, 0x40, 0xA9, "DATACOM INC."}, { + 0x00, 0x40, 0xAA, "VALMET AUTOMATION INC."}, { + 0x00, 0x40, 0xAB, "ROLAND DG CORPORATION"}, { + 0x00, 0x40, 0xAC, "SUPER WORKSTATION, INC."}, { + 0x00, 0x40, 0xAD, "SMA REGELSYSTEME GMBH"}, { + 0x00, 0x40, 0xAE, "DELTA CONTROLS, INC."}, { + 0x00, 0x40, 0xAF, "DIGITAL PRODUCTS, INC."}, { + 0x00, 0x40, 0xB0, "BYTEX CORPORATION, ENGINEERING"}, { + 0x00, 0x40, 0xB1, "CODONICS INC."}, { + 0x00, 0x40, 0xB2, "SYSTEMFORSCHUNG"}, { + 0x00, 0x40, 0xB3, "PAR MICROSYSTEMS CORPORATION"}, { + 0x00, 0x40, 0xB4, "NEXTCOM K.K."}, { + 0x00, 0x40, 0xB5, "VIDEO TECHNOLOGY COMPUTERS LTD"}, { + 0x00, 0x40, 0xB6, "COMPUTERM CORPORATION"}, { + 0x00, 0x40, 0xB7, "STEALTH COMPUTER SYSTEMS"}, { + 0x00, 0x40, 0xB8, "IDEA ASSOCIATES"}, { + 0x00, 0x40, 0xB9, "MACQ ELECTRONIQUE SA"}, { + 0x00, 0x40, 0xBA, "ALLIANT COMPUTER SYSTEMS CORP."}, { + 0x00, 0x40, 0xBB, "GOLDSTAR CABLE CO., LTD."}, { + 0x00, 0x40, 0xBC, "ALGORITHMICS LTD."}, { + 0x00, 0x40, 0xBD, "STARLIGHT NETWORKS, INC."}, { + 0x00, 0x40, 0xBE, "BOEING DEFENSE & SPACE"}, { + 0x00, 0x40, 0xBF, "CHANNEL SYSTEMS INTERN'L INC."}, { + 0x00, 0x40, 0xC0, "VISTA CONTROLS CORPORATION"}, { + 0x00, 0x40, 0xC1, "BIZERBA-WERKE WILHEIM KRAUT"}, { + 0x00, 0x40, 0xC2, "APPLIED COMPUTING DEVICES"}, { + 0x00, 0x40, 0xC3, "FISCHER AND PORTER CO."}, { + 0x00, 0x40, 0xC4, "KINKEI SYSTEM CORPORATION"}, { + 0x00, 0x40, 0xC5, "MICOM COMMUNICATIONS INC."}, { + 0x00, 0x40, 0xC6, "FIBERNET RESEARCH, INC."}, { + 0x00, 0x40, 0xC7, "RUBY TECH CORPORATION"}, { + 0x00, 0x40, 0xC8, "MILAN TECHNOLOGY CORPORATION"}, { + 0x00, 0x40, 0xC9, "NCUBE"}, { + 0x00, 0x40, 0xCA, "FIRST INTERNAT'L COMPUTER, INC"}, { + 0x00, 0x40, 0xCB, "LANWAN TECHNOLOGIES"}, { + 0x00, 0x40, 0xCC, "SILCOM MANUF'G TECHNOLOGY INC."}, { + 0x00, 0x40, 0xCD, "TERA MICROSYSTEMS, INC."}, { + 0x00, 0x40, 0xCE, "NET-SOURCE, INC."}, { + 0x00, 0x40, 0xCF, "STRAWBERRY TREE, INC."}, { + 0x00, 0x40, 0xD0, "MITAC INTERNATIONAL CORP."}, { + 0x00, 0x40, 0xD1, "FUKUDA DENSHI CO., LTD."}, { + 0x00, 0x40, 0xD2, "PAGINE CORPORATION"}, { + 0x00, 0x40, 0xD3, "KIMPSION INTERNATIONAL CORP."}, { + 0x00, 0x40, 0xD4, "GAGE TALKER CORP."}, { + 0x00, 0x40, 0xD5, "SARTORIUS AG"}, { + 0x00, 0x40, 0xD6, "LOCAMATION B.V."}, { + 0x00, 0x40, 0xD7, "STUDIO GEN INC."}, { + 0x00, 0x40, 0xD8, "OCEAN OFFICE AUTOMATION LTD."}, { + 0x00, 0x40, 0xD9, "AMERICAN MEGATRENDS INC."}, { + 0x00, 0x40, 0xDA, "TELSPEC LTD"}, { + 0x00, 0x40, 0xDB, "ADVANCED TECHNICAL SOLUTIONS"}, { + 0x00, 0x40, 0xDC, "TRITEC ELECTRONIC GMBH"}, { + 0x00, 0x40, 0xDD, "HONG TECHNOLOGIES"}, { + 0x00, 0x40, 0xDE, "ELETTRONICA SAN GIORGIO"}, { + 0x00, 0x40, 0xDF, "DIGALOG SYSTEMS, INC."}, { + 0x00, 0x40, 0xE0, "ATOMWIDE LTD."}, { + 0x00, 0x40, 0xE1, "MARNER INTERNATIONAL, INC."}, { + 0x00, 0x40, 0xE2, "MESA RIDGE TECHNOLOGIES, INC."}, { + 0x00, 0x40, 0xE3, "QUIN SYSTEMS LTD"}, { + 0x00, 0x40, 0xE4, "E-M TECHNOLOGY, INC."}, { + 0x00, 0x40, 0xE5, "SYBUS CORPORATION"}, { + 0x00, 0x40, 0xE6, "C.A.E.N."}, { + 0x00, 0x40, 0xE7, "ARNOS INSTRUMENTS & COMPUTER"}, { + 0x00, 0x40, 0xE8, "CHARLES RIVER DATA SYSTEMS,INC"}, { + 0x00, 0x40, 0xE9, "ACCORD SYSTEMS, INC."}, { + 0x00, 0x40, 0xEA, "PLAIN TREE SYSTEMS INC"}, { + 0x00, 0x40, 0xEB, "MARTIN MARIETTA CORPORATION"}, { + 0x00, 0x40, 0xEC, "MIKASA SYSTEM ENGINEERING"}, { + 0x00, 0x40, 0xED, "NETWORK CONTROLS INT'NATL INC."}, { + 0x00, 0x40, 0xEE, "OPTIMEM"}, { + 0x00, 0x40, 0xEF, "HYPERCOM, INC."}, { + 0x00, 0x40, 0xF0, "MICRO SYSTEMS, INC."}, { + 0x00, 0x40, 0xF1, "CHUO ELECTRONICS CO., LTD."}, { + 0x00, 0x40, 0xF2, "JANICH & KLASS COMPUTERTECHNIK"}, { + 0x00, 0x40, 0xF3, "NETCOR"}, { + 0x00, 0x40, 0xF4, "CAMEO COMMUNICATIONS, INC."}, { + 0x00, 0x40, 0xF5, "OEM ENGINES"}, { + 0x00, 0x40, 0xF6, "KATRON COMPUTERS INC."}, { + 0x00, 0x40, 0xF7, "POLAROID MEDICAL IMAGING SYS."}, { + 0x00, 0x40, 0xF8, "SYSTEMHAUS DISCOM"}, { + 0x00, 0x40, 0xF9, "COMBINET"}, { + 0x00, 0x40, 0xFA, "MICROBOARDS, INC."}, { + 0x00, 0x40, 0xFB, "CASCADE COMMUNICATIONS CORP."}, { + 0x00, 0x40, 0xFC, "IBR COMPUTER TECHNIK GMBH"}, { + 0x00, 0x40, 0xFD, "LXE"}, { + 0x00, 0x40, 0xFE, "SYMPLEX COMMUNICATIONS"}, { + 0x00, 0x40, 0xFF, "TELEBIT CORPORATION"}, { + 0x00, 0x42, 0x52, "RLX Technologies"}, { + 0x00, 0x50, 0x00, "NEXO COMMUNICATIONS, INC."}, { + 0x00, 0x50, 0x01, "YAMASHITA SYSTEMS CORP."}, { + 0x00, 0x50, 0x02, "OMNISEC AG"}, { + 0x00, 0x50, 0x03, "GRETAG MACBETH AG"}, { + 0x00, 0x50, 0x04, "3COM CORPORATION"}, { + 0x00, 0x50, 0x06, "TAC AB"}, { + 0x00, 0x50, 0x07, "SIEMENS TELECOMMUNICATION SYSTEMS LIMITED"}, { + 0x00, 0x50, 0x08, "TIVA MICROCOMPUTER CORP. (TMC)"}, { + 0x00, 0x50, 0x09, "PHILIPS BROADBAND NETWORKS"}, { + 0x00, 0x50, 0x0A, "IRIS TECHNOLOGIES, INC."}, { + 0x00, 0x50, 0x0B, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x0C, "e-Tek Labs, Inc."}, { + 0x00, 0x50, 0x0D, "SATORI ELECTORIC CO., LTD."}, { + 0x00, 0x50, 0x0E, "CHROMATIS NETWORKS, INC."}, { + 0x00, 0x50, 0x0F, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x10, "NovaNET Learning, Inc."}, { + 0x00, 0x50, 0x12, "CBL - GMBH"}, { + 0x00, 0x50, 0x13, "Chaparral Network Storage"}, { + 0x00, 0x50, 0x14, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x15, "BRIGHT STAR ENGINEERING"}, { + 0x00, 0x50, 0x16, "SST/WOODHEAD INDUSTRIES"}, { + 0x00, 0x50, 0x17, "RSR S.R.L."}, { + 0x00, 0x50, 0x18, "ADVANCED MULTIMEDIA INTERNET TECHNOLOGY INC."}, + { + 0x00, 0x50, 0x19, "SPRING TIDE NETWORKS, INC."}, { + 0x00, 0x50, 0x1A, "UISIQN"}, { + 0x00, 0x50, 0x1B, "ABL CANADA, INC."}, { + 0x00, 0x50, 0x1C, "JATOM SYSTEMS, INC."}, { + 0x00, 0x50, 0x1E, "MIRANDA TECHNOLOGIES, INC."}, { + 0x00, 0x50, 0x1F, "MRG SYSTEMS, LTD."}, { + 0x00, 0x50, 0x20, "MEDIASTAR CO., LTD."}, { + 0x00, 0x50, 0x21, "EIS INTERNATIONAL, INC."}, { + 0x00, 0x50, 0x22, "ZONET TECHNOLOGY, INC."}, { + 0x00, 0x50, 0x23, "PG DESIGN ELECTRONICS, INC."}, { + 0x00, 0x50, 0x24, "NAVIC SYSTEMS, INC."}, { + 0x00, 0x50, 0x26, "COSYSTEMS, INC."}, { + 0x00, 0x50, 0x27, "GENICOM CORPORATION"}, { + 0x00, 0x50, 0x28, "AVAL COMMUNICATIONS"}, { + 0x00, 0x50, 0x29, "1394 PRINTER WORKING GROUP"}, { + 0x00, 0x50, 0x2A, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x2B, "GENRAD LTD."}, { + 0x00, 0x50, 0x2C, "SOYO COMPUTER, INC."}, { + 0x00, 0x50, 0x2D, "ACCEL, INC."}, { + 0x00, 0x50, 0x2E, "CAMBEX CORPORATION"}, { + 0x00, 0x50, 0x2F, "TollBridge Technologies, Inc."}, { + 0x00, 0x50, 0x30, "FUTURE PLUS SYSTEMS"}, { + 0x00, 0x50, 0x31, "AEROFLEX LABORATORIES, INC."}, { + 0x00, 0x50, 0x32, "PICAZO COMMUNICATIONS, INC."}, { + 0x00, 0x50, 0x33, "MAYAN NETWORKS"}, { + 0x00, 0x50, 0x36, "NETCAM, LTD."}, { + 0x00, 0x50, 0x37, "KOGA ELECTRONICS CO."}, { + 0x00, 0x50, 0x38, "DAIN TELECOM CO., LTD."}, { + 0x00, 0x50, 0x39, "MARINER NETWORKS"}, { + 0x00, 0x50, 0x3A, "DATONG ELECTRONICS LTD."}, { + 0x00, 0x50, 0x3B, "MEDIAFIRE CORPORATION"}, { + 0x00, 0x50, 0x3C, "TSINGHUA NOVEL ELECTRONICS"}, { + 0x00, 0x50, 0x3E, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x3F, "ANCHOR GAMES"}, { + 0x00, 0x50, 0x40, "EMWARE, INC."}, { + 0x00, 0x50, 0x41, "CTX OPTO ELECTRONIC CORP."}, { + 0x00, 0x50, 0x42, "SCI MANUFACTURING SINGAPORE PTE, LTD."}, { + 0x00, 0x50, 0x43, "MARVELL SEMICONDUCTOR, INC."}, { + 0x00, 0x50, 0x44, "ASACA CORPORATION"}, { + 0x00, 0x50, 0x45, "RIOWORKS SOLUTIONS, INC."}, { + 0x00, 0x50, 0x46, "MENICX INTERNATIONAL CO., LTD."}, { + 0x00, 0x50, 0x48, "INFOLIBRIA"}, { + 0x00, 0x50, 0x49, "ELLACOYA NETWORKS, INC."}, { + 0x00, 0x50, 0x4A, "ELTECO A.S."}, { + 0x00, 0x50, 0x4B, "BARCONET N.V."}, { + 0x00, 0x50, 0x4C, "GALIL MOTION CONTROL, INC."}, { + 0x00, 0x50, 0x4D, "TOKYO ELECTRON DEVICE LTD."}, { + 0x00, 0x50, 0x4E, "SIERRA MONITOR CORP."}, { + 0x00, 0x50, 0x4F, "OLENCOM ELECTRONICS"}, { + 0x00, 0x50, 0x50, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x51, "IWATSU ELECTRIC CO., LTD."}, { + 0x00, 0x50, 0x52, "TIARA NETWORKS, INC."}, { + 0x00, 0x50, 0x53, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x54, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x55, "DOMS A/S"}, { + 0x00, 0x50, 0x56, "VMWare, Inc."}, { + 0x00, 0x50, 0x57, "BROADBAND ACCESS SYSTEMS"}, { + 0x00, 0x50, 0x58, "VEGASTREAM LIMITED"}, { + 0x00, 0x50, 0x59, "SUITE TECHNOLOGY SYSTEMS NETWORK"}, { + 0x00, 0x50, 0x5A, "NETWORK ALCHEMY, INC."}, { + 0x00, 0x50, 0x5B, "KAWASAKI LSI U.S.A., INC."}, { + 0x00, 0x50, 0x5C, "TUNDO CORPORATION"}, { + 0x00, 0x50, 0x5E, "DIGITEK MICROLOGIC S.A."}, { + 0x00, 0x50, 0x5F, "BRAND INNOVATORS"}, { + 0x00, 0x50, 0x60, "TANDBERG TELECOM AS"}, { + 0x00, 0x50, 0x62, "KOUWELL ELECTRONICS CORP. **"}, { + 0x00, 0x50, 0x63, "OY COMSEL SYSTEM AB"}, { + 0x00, 0x50, 0x64, "CAE ELECTRONICS"}, { + 0x00, 0x50, 0x65, "DENSEI-LAMBAD Co., Ltd."}, { + 0x00, 0x50, 0x66, "AtecoM GmbH advanced telecomunication modules"}, + { + 0x00, 0x50, 0x67, "AEROCOMM, INC."}, { + 0x00, 0x50, 0x68, "ELECTRONIC INDUSTRIES ASSOCIATION"}, { + 0x00, 0x50, 0x69, "PixStream Incorporated"}, { + 0x00, 0x50, 0x6A, "EDEVA, INC."}, { + 0x00, 0x50, 0x6B, "SPX-ATEG"}, { + 0x00, 0x50, 0x6C, "G & L BEIJER ELECTRONICS AB"}, { + 0x00, 0x50, 0x6D, "VIDEOJET SYSTEMS"}, { + 0x00, 0x50, 0x6E, "CORDER ENGINEERING CORPORATION"}, { + 0x00, 0x50, 0x6F, "G-CONNECT"}, { + 0x00, 0x50, 0x70, "CHAINTECH COMPUTER CO., LTD."}, { + 0x00, 0x50, 0x71, "AIWA CO., LTD."}, { + 0x00, 0x50, 0x72, "CORVIS CORPORATION"}, { + 0x00, 0x50, 0x73, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x74, "ADVANCED HI-TECH CORP."}, { + 0x00, 0x50, 0x75, "KESTREL SOLUTIONS"}, { + 0x00, 0x50, 0x76, "IBM"}, { + 0x00, 0x50, 0x77, "PROLIFIC TECHNOLOGY, INC."}, { + 0x00, 0x50, 0x78, "MEGATON HOUSE, LTD."}, { + 0x00, 0x50, 0x7A, "XPEED, INC."}, { + 0x00, 0x50, 0x7B, "MERLOT COMMUNICATIONS"}, { + 0x00, 0x50, 0x7C, "VIDEOCON AG"}, { + 0x00, 0x50, 0x7D, "IFP"}, { + 0x00, 0x50, 0x7E, "NEWER TECHNOLOGY"}, { + 0x00, 0x50, 0x7F, "DrayTek Corp."}, { + 0x00, 0x50, 0x80, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0x81, "MURATA MACHINERY, LTD."}, { + 0x00, 0x50, 0x82, "FORESSON CORPORATION"}, { + 0x00, 0x50, 0x83, "GILBARCO, INC."}, { + 0x00, 0x50, 0x84, "ATL PRODUCTS"}, { + 0x00, 0x50, 0x86, "TELKOM SA, LTD."}, { + 0x00, 0x50, 0x87, "TERASAKI ELECTRIC CO., LTD."}, { + 0x00, 0x50, 0x88, "AMANO CORPORATION"}, { + 0x00, 0x50, 0x89, "SAFETY MANAGEMENT SYSTEMS"}, { + 0x00, 0x50, 0x8B, "COMPAQ COMPUTER CORPORATION"}, { + 0x00, 0x50, 0x8C, "RSI SYSTEMS"}, { + 0x00, 0x50, 0x8D, "ABIT COMPUTER CORPORATION"}, { + 0x00, 0x50, 0x8E, "OPTIMATION, INC."}, { + 0x00, 0x50, 0x8F, "ASITA TECHNOLOGIES INT'L LTD."}, { + 0x00, 0x50, 0x90, "DCTRI"}, { + 0x00, 0x50, 0x91, "NETACCESS, INC."}, { + 0x00, 0x50, 0x92, "RIGAKU INDUSTRIAL CORPORATION"}, { + 0x00, 0x50, 0x93, "BOEING"}, { + 0x00, 0x50, 0x94, "PACE MICRO TECHNOLOGY PLC"}, { + 0x00, 0x50, 0x95, "PERACOM NETWORKS"}, { + 0x00, 0x50, 0x96, "SALIX TECHNOLOGIES, INC."}, { + 0x00, 0x50, 0x97, "MMC-EMBEDDED COMPUTERTECHNIK GmbH"}, { + 0x00, 0x50, 0x98, "GLOBALOOP, LTD."}, { + 0x00, 0x50, 0x99, "3COM EUROPE, LTD."}, { + 0x00, 0x50, 0x9A, "TAG ELECTRONIC SYSTEMS"}, { + 0x00, 0x50, 0x9B, "SWITCHCORE AB"}, { + 0x00, 0x50, 0x9C, "BETA RESEARCH"}, { + 0x00, 0x50, 0x9D, "THE INDUSTREE B.V."}, { + 0x00, 0x50, 0x9E, "Les Technologies SoftAcoustik Inc."}, { + 0x00, 0x50, 0x9F, "HORIZON COMPUTER"}, { + 0x00, 0x50, 0xA0, "DELTA COMPUTER SYSTEMS, INC."}, { + 0x00, 0x50, 0xA1, "CARLO GAVAZZI, INC."}, { + 0x00, 0x50, 0xA2, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0xA3, "TransMedia Communications, Inc."}, { + 0x00, 0x50, 0xA4, "IO TECH, INC."}, { + 0x00, 0x50, 0xA5, "CAPITOL BUSINESS SYSTEMS, LTD."}, { + 0x00, 0x50, 0xA6, "OPTRONICS"}, { + 0x00, 0x50, 0xA7, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0xA8, "OpenCon Systems, Inc."}, { + 0x00, 0x50, 0xA9, "MOLDAT WIRELESS TECHNOLGIES"}, { + 0x00, 0x50, 0xAA, "KONICA CORPORATION"}, { + 0x00, 0x50, 0xAB, "NALTEC, INC."}, { + 0x00, 0x50, 0xAC, "MAPLE COMPUTER CORPORATION"}, { + 0x00, 0x50, 0xAD, "CommUnique Wireless Corp."}, { + 0x00, 0x50, 0xAE, "IWAKI ELECTRONICS CO., LTD."}, { + 0x00, 0x50, 0xAF, "INTERGON, INC."}, { + 0x00, 0x50, 0xB0, "TECHNOLOGY ATLANTA CORPORATION"}, { + 0x00, 0x50, 0xB1, "GIDDINGS & LEWIS"}, { + 0x00, 0x50, 0xB2, "BRODEL AUTOMATION"}, { + 0x00, 0x50, 0xB3, "VOICEBOARD CORPORATION"}, { + 0x00, 0x50, 0xB4, "SATCHWELL CONTROL SYSTEMS, LTD"}, { + 0x00, 0x50, 0xB5, "FICHET-BAUCHE"}, { + 0x00, 0x50, 0xB6, "GOOD WAY IND. CO., LTD."}, { + 0x00, 0x50, 0xB7, "BOSER TECHNOLOGY CO., LTD."}, { + 0x00, 0x50, 0xB8, "INOVA COMPUTERS GMBH & CO. KG"}, { + 0x00, 0x50, 0xB9, "XITRON TECHNOLOGIES, INC."}, { + 0x00, 0x50, 0xBA, "D-LINK"}, { + 0x00, 0x50, 0xBB, "CMS TECHNOLOGIES"}, { + 0x00, 0x50, 0xBC, "HAMMER STORAGE SOLUTIONS"}, { + 0x00, 0x50, 0xBD, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0xBE, "FAST MULTIMEDIA AG"}, { + 0x00, 0x50, 0xBF, "MOTOTECH INC."}, { + 0x00, 0x50, 0xC0, "GATAN, INC."}, { + 0x00, 0x50, 0xC1, "GEMFLEX NETWORKS, LTD."}, { + 0x00, 0x50, 0xC2, "IEEE REGISTRATION AUTHORITY"}, { + 0x00, 0x50, 0xC4, "IMD"}, { + 0x00, 0x50, 0xC5, "ADS TECHNOLOGIES, INC."}, { + 0x00, 0x50, 0xC6, "LOOP TELECOMMUNICATION INTERNATIONAL, INC."}, { + 0x00, 0x50, 0xC8, "ADDONICS COMMUNICATIONS, INC."}, { + 0x00, 0x50, 0xC9, "MASPRO DENKOH CORP."}, { + 0x00, 0x50, 0xCA, "NET TO NET TECHNOLOGIES"}, { + 0x00, 0x50, 0xCB, "JETTER"}, { + 0x00, 0x50, 0xCC, "XYRATEX"}, { + 0x00, 0x50, 0xCD, "DIGIANSWER A/S"}, { + 0x00, 0x50, 0xCE, "LG INTERNATIONAL CORP."}, { + 0x00, 0x50, 0xCF, + "VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE"}, { + 0x00, 0x50, 0xD0, "MINERVA SYSTEMS"}, { + 0x00, 0x50, 0xD1, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0xD2, "BAE Systems Canada, Inc."}, { + 0x00, 0x50, 0xD3, "DIGITAL AUDIO PROCESSING PTY. LTD."}, { + 0x00, 0x50, 0xD4, "JOOHONG INFORMATION &"}, { + 0x00, 0x50, 0xD5, "AD SYSTEMS CORP."}, { + 0x00, 0x50, 0xD6, "ATLAS COPCO TOOLS AB"}, { + 0x00, 0x50, 0xD7, "TELSTRAT"}, { + 0x00, 0x50, 0xD8, "UNICORN COMPUTER CORP."}, { + 0x00, 0x50, 0xD9, + "ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA"}, { + 0x00, 0x50, 0xDA, "3COM CORPORATION"}, { + 0x00, 0x50, 0xDB, "CONTEMPORARY CONTROL"}, { + 0x00, 0x50, 0xDC, "TAS TELEFONBAU A. SCHWABE GMBH & CO. KG"}, { + 0x00, 0x50, 0xDD, "SERRA SOLDADURA, S.A."}, { + 0x00, 0x50, 0xDE, "SIGNUM SYSTEMS CORP."}, { + 0x00, 0x50, 0xDF, "AirFiber, Inc."}, { + 0x00, 0x50, 0xE1, "NS TECH ELECTRONICS SDN BHD"}, { + 0x00, 0x50, 0xE2, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0xE3, "TELEGATE"}, { + 0x00, 0x50, 0xE4, "APPLE COMPUTER, INC."}, { + 0x00, 0x50, 0xE6, "HAKUSAN CORPORATION"}, { + 0x00, 0x50, 0xE7, "PARADISE INNOVATIONS (ASIA)"}, { + 0x00, 0x50, 0xE8, "NOMADIX INC."}, { + 0x00, 0x50, 0xEA, "XEL COMMUNICATIONS, INC."}, { + 0x00, 0x50, 0xEB, "ALPHA-TOP CORPORATION"}, { + 0x00, 0x50, 0xEC, "OLICOM A/S"}, { + 0x00, 0x50, 0xED, "ANDA NETWORKS"}, { + 0x00, 0x50, 0xEE, "TEK DIGITEL CORPORATION"}, { + 0x00, 0x50, 0xEF, "SPE Systemhaus GmbH"}, { + 0x00, 0x50, 0xF0, "CISCO SYSTEMS, INC."}, { + 0x00, 0x50, 0xF1, "LIBIT SIGNAL PROCESSING, LTD."}, { + 0x00, 0x50, 0xF2, "MICROSOFT CORP."}, { + 0x00, 0x50, 0xF3, "GLOBAL NET INFORMATION CO., Ltd."}, { + 0x00, 0x50, 0xF4, "SIGMATEK GMBH & CO. KG"}, { + 0x00, 0x50, 0xF6, "PAN-INTERNATIONAL INDUSTRIAL CORP."}, { + 0x00, 0x50, 0xF7, "VENTURE MANUFACTURING (SINGAPORE) LTD."}, { + 0x00, 0x50, 0xF8, "ENTREGA TECHNOLOGIES, INC."}, { + 0x00, 0x50, 0xFA, "OXTEL, LTD."}, { + 0x00, 0x50, 0xFB, "VSK ELECTRONICS"}, { + 0x00, 0x50, 0xFC, "EDIMAX TECHNOLOGY CO., LTD."}, { + 0x00, 0x50, 0xFD, "VISIONCOMM CO., LTD."}, { + 0x00, 0x50, 0xFE, "PCTVnet ASA"}, { + 0x00, 0x50, 0xFF, "HAKKO ELECTRONICS CO., LTD."}, { + 0x00, 0x60, 0x00, "XYCOM INC."}, { + 0x00, 0x60, 0x01, "InnoSys, Inc."}, { + 0x00, 0x60, 0x02, "SCREEN SUBTITLING SYSTEMS, LTD"}, { + 0x00, 0x60, 0x03, "TERAOKA WEIGH SYSTEM PTE, LTD."}, { + 0x00, 0x60, 0x04, "COMPUTADORES MODULARES SA"}, { + 0x00, 0x60, 0x05, "FEEDBACK DATA LTD."}, { + 0x00, 0x60, 0x06, "SOTEC CO., LTD"}, { + 0x00, 0x60, 0x07, "ACRES GAMING, INC."}, { + 0x00, 0x60, 0x08, "3COM CORPORATION"}, { + 0x00, 0x60, 0x09, "CISCO SYSTEMS, INC."}, { + 0x00, 0x60, 0x0A, "SORD COMPUTER CORPORATION"}, { + 0x00, 0x60, 0x0B, "LOGWARE GmbH"}, { + 0x00, 0x60, 0x0C, "APPLIED DATA SYSTEMS, INC."}, { + 0x00, 0x60, 0x0D, "Digital Logic GmbH"}, { + 0x00, 0x60, 0x0E, "WAVENET INTERNATIONAL, INC."}, { + 0x00, 0x60, 0x0F, "WESTELL, INC."}, { + 0x00, 0x60, 0x10, "NETWORK MACHINES, INC."}, { + 0x00, 0x60, 0x11, "CRYSTAL SEMICONDUCTOR CORP."}, { + 0x00, 0x60, 0x12, "POWER COMPUTING CORPORATION"}, { + 0x00, 0x60, 0x13, "NETSTAL MASCHINEN AG"}, { + 0x00, 0x60, 0x14, "EDEC CO., LTD."}, { + 0x00, 0x60, 0x15, "NET2NET CORPORATION"}, { + 0x00, 0x60, 0x16, "CLARIION"}, { + 0x00, 0x60, 0x17, "TOKIMEC INC."}, { + 0x00, 0x60, 0x18, "STELLAR ONE CORPORATION"}, { + 0x00, 0x60, 0x19, "BOEHRINGER MANNHEIM CORP."}, { + 0x00, 0x60, 0x1A, "KEITHLEY INSTRUMENTS"}, { + 0x00, 0x60, 0x1B, "MESA ELECTRONICS"}, { + 0x00, 0x60, 0x1C, "TELXON CORPORATION"}, { + 0x00, 0x60, 0x1D, "LUCENT TECHNOLOGIES"}, { + 0x00, 0x60, 0x1E, "SOFTLAB, INC."}, { + 0x00, 0x60, 0x1F, "STALLION TECHNOLOGIES"}, { + 0x00, 0x60, 0x20, "PIVOTAL NETWORKING, INC."}, { + 0x00, 0x60, 0x21, "DSC CORPORATION"}, { + 0x00, 0x60, 0x22, "VICOM SYSTEMS, INC."}, { + 0x00, 0x60, 0x23, "PERICOM SEMICONDUCTOR CORP."}, { + 0x00, 0x60, 0x24, "GRADIENT TECHNOLOGIES, INC."}, { + 0x00, 0x60, 0x25, "ACTIVE IMAGING PLC"}, { + 0x00, 0x60, 0x26, "VIKING COMPONENTS, INC."}, { + 0x00, 0x60, 0x27, "Superior Modular Products"}, { + 0x00, 0x60, 0x28, "MACROVISION CORPORATION"}, { + 0x00, 0x60, 0x29, "CARY PERIPHERALS INC."}, { + 0x00, 0x60, 0x2A, "SYMICRON COMPUTER COMMUNICATIONS, LTD."}, { + 0x00, 0x60, 0x2B, "PEAK AUDIO"}, { + 0x00, 0x60, 0x2C, "LINX Data Terminals, Inc."}, { + 0x00, 0x60, 0x2D, "ALERTON TECHNOLOGIES, INC."}, { + 0x00, 0x60, 0x2E, "CYCLADES CORPORATION"}, { + 0x00, 0x60, 0x2F, "CISCO SYSTEMS, INC."}, { + 0x00, 0x60, 0x30, "VILLAGE TRONIC ENTWICKLUNG"}, { + 0x00, 0x60, 0x31, "HRK SYSTEMS"}, { + 0x00, 0x60, 0x32, "I-CUBE, INC."}, { + 0x00, 0x60, 0x33, "ACUITY IMAGING, INC."}, { + 0x00, 0x60, 0x34, "ROBERT BOSCH GmbH"}, { + 0x00, 0x60, 0x35, "DALLAS SEMICONDUCTOR, INC."}, { + 0x00, 0x60, 0x36, "AUSTRIAN RESEARCH CENTER SEIBERSDORF"}, { + 0x00, 0x60, 0x37, "PHILIPS SEMICONDUCTORS"}, { + 0x00, 0x60, 0x38, "Nortel Networks"}, { + 0x00, 0x60, 0x39, "SanCom Technology, Inc."}, { + 0x00, 0x60, 0x3A, "QUICK CONTROLS LTD."}, { + 0x00, 0x60, 0x3B, "AMTEC spa"}, { + 0x00, 0x60, 0x3C, "HAGIWARA SYS-COM CO., LTD."}, { + 0x00, 0x60, 0x3D, "3CX"}, { + 0x00, 0x60, 0x3E, "CISCO SYSTEMS, INC."}, { + 0x00, 0x60, 0x3F, "PATAPSCO DESIGNS"}, { + 0x00, 0x60, 0x40, "NETRO CORP."}, { + 0x00, 0x60, 0x41, "Yokogawa Electric Corporation"}, { + 0x00, 0x60, 0x42, "TKS (USA), INC."}, { + 0x00, 0x60, 0x43, "ComSoft Systems, Inc."}, { + 0x00, 0x60, 0x44, "LITTON/POLY-SCIENTIFIC"}, { + 0x00, 0x60, 0x45, "PATHLIGHT TECHNOLOGIES"}, { + 0x00, 0x60, 0x46, "VMETRO, INC."}, { + 0x00, 0x60, 0x47, "CISCO SYSTEMS, INC."}, { + 0x00, 0x60, 0x48, "EMC CORPORATION"}, { + 0x00, 0x60, 0x49, "VINA TECHNOLOGIES"}, { + 0x00, 0x60, 0x4A, "SAIC IDEAS GROUP"}, { + 0x00, 0x60, 0x4B, "BIODATA GmbH"}, { + 0x00, 0x60, 0x4C, "SAT"}, { + 0x00, 0x60, 0x4D, "MMC NETWORKS, INC."}, { + 0x00, 0x60, 0x4E, "CYCLE COMPUTER CORPORATION, INC."}, { + 0x00, 0x60, 0x4F, "SUZUKI MFG. CO., LTD."}, { + 0x00, 0x60, 0x50, "INTERNIX INC."}, { + 0x00, 0x60, 0x51, "QUALITY SEMICONDUCTOR"}, { + 0x00, 0x60, 0x52, "PERIPHERALS ENTERPRISE CO., Ltd."}, { + 0x00, 0x60, 0x53, "TOYODA MACHINE WORKS, LTD."}, { + 0x00, 0x60, 0x54, "CONTROLWARE GMBH"}, { + 0x00, 0x60, 0x55, "CORNELL UNIVERSITY"}, { + 0x00, 0x60, 0x56, "NETWORK TOOLS, INC."}, { + 0x00, 0x60, 0x57, "MURATA MANUFACTURING CO., LTD."}, { + 0x00, 0x60, 0x58, "COPPER MOUNTAIN COMMUNICATIONS, INC."}, { + 0x00, 0x60, 0x59, "TECHNICAL COMMUNICATIONS CORP."}, { + 0x00, 0x60, 0x5A, "CELCORE, INC."}, { + 0x00, 0x60, 0x5B, "IntraServer Technology, Inc."}, { + 0x00, 0x60, 0x5C, "CISCO SYSTEMS, INC."}, { + 0x00, 0x60, 0x5D, "SCANIVALVE CORP."}, { + 0x00, 0x60, 0x5E, "LIBERTY TECHNOLOGY NETWORKING"}, { + 0x00, 0x60, 0x5F, "NIPPON UNISOFT CORPORATION"}, { + 0x00, 0x60, 0x60, "DAWNING TECHNOLOGIES, INC."}, { + 0x00, 0x60, 0x61, "WHISTLE COMMUNICATIONS CORP."}, { + 0x00, 0x60, 0x62, "TELESYNC, INC."}, { + 0x00, 0x60, 0x63, "PSION DACOM PLC."}, { + 0x00, 0x60, 0x64, "NETCOMM LIMITED"}, { + 0x00, 0x60, 0x65, "BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH"}, + { + 0x00, 0x60, 0x66, "LACROIX TECHNOLGIE"}, { + 0x00, 0x60, 0x67, "ACER NETXUS INC."}, { + 0x00, 0x60, 0x68, "EICON TECHNOLOGY CORPORATION"}, { + 0x00, 0x60, 0x69, "BROCADE COMMUNICATIONS SYSTEMS, Inc."}, { + 0x00, 0x60, 0x6A, "MITSUBISHI WIRELESS COMMUNICATIONS. INC."}, { + 0x00, 0x60, 0x6B, "AICHI ELECTRONICS CO., LTD."}, { + 0x00, 0x60, 0x6C, "ARESCOM"}, { + 0x00, 0x60, 0x6D, "DIGITAL EQUIPMENT CORP."}, { + 0x00, 0x60, 0x6E, "DAVICOM SEMICONDUCTOR, INC."}, { + 0x00, 0x60, 0x6F, "CLARION CORPORATION OF AMERICA"}, { + 0x00, 0x60, 0x70, "CISCO SYSTEMS, INC."}, { + 0x00, 0x60, 0x71, "MIDAS LAB, INC."}, { + 0x00, 0x60, 0x72, "VXL INSTRUMENTS, LIMITED"}, { + 0x00, 0x60, 0x73, "REDCREEK COMMUNICATIONS, INC."}, { + 0x00, 0x60, 0x74, "QSC AUDIO PRODUCTS"}, { + 0x00, 0x60, 0x75, "PENTEK, INC."}, { + 0x00, 0x60, 0x76, + "SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS"}, { + 0x00, 0x60, 0x77, "PRISA NETWORKS"}, { + 0x00, 0x60, 0x78, "POWER MEASUREMENT LTD."}, { + 0x00, 0x60, 0x79, "WAVEPHORE NETWORKS, INC."}, { + 0x00, 0x60, 0x7A, "DVS GmbH"}, { + 0x00, 0x60, 0x7B, "FORE SYSTEMS, INC."}, { + 0x00, 0x60, 0x7C, "WaveAccess, Ltd."}, { + 0x00, 0x60, 0x7D, "SENTIENT NETWORKS INC."}, { + 0x00, 0x60, 0x7E, "GIGALABS, INC."}, { + 0x00, 0x60, 0x7F, "AURORA TECHNOLOGIES, INC."}, { + 0x00, 0x60, 0x80, "MICROTRONIX DATACOM LTD."}, { + 0x00, 0x60, 0x81, "TV/COM INTERNATIONAL"}, { + 0x00, 0x60, 0x82, "NOVALINK TECHNOLOGIES, INC."}, { + 0x00, 0x60, 0x83, "CISCO SYSTEMS, INC."}, { + 0x00, 0x60, 0x84, "DIGITAL VIDEO"}, { + 0x00, 0x60, 0x85, "Storage Concepts"}, { + 0x00, 0x60, 0x86, "LOGIC REPLACEMENT TECH. LTD."}, { + 0x00, 0x60, 0x87, "KANSAI ELECTRIC CO., LTD."}, { + 0x00, 0x60, 0x88, "WHITE MOUNTAIN DSP, INC."}, { + 0x00, 0x60, 0x89, "XATA"}, { + 0x00, 0x60, 0x8A, "CITADEL COMPUTER"}, { + 0x00, 0x60, 0x8B, "ConferTech International"}, { + 0x00, 0x60, 0x8C, "3COM CORPORATION"}, { + 0x00, 0x60, 0x8D, "UNIPULSE CORP."}, { + 0x00, 0x60, 0x8E, + "HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH"}, { + 0x00, 0x60, 0x8F, "TEKRAM TECHNOLOGY CO., LTD."}, { + 0x00, 0x60, 0x90, "ABLE COMMUNICATIONS, INC."}, { + 0x00, 0x60, 0x91, "FIRST PACIFIC NETWORKS, INC."}, { + 0x00, 0x60, 0x92, "MICRO/SYS, INC."}, { + 0x00, 0x60, 0x93, "VARIAN"}, { + 0x00, 0x60, 0x94, "IBM CORP."}, { + 0x00, 0x60, 0x95, "ACCU-TIME SYSTEMS, INC."}, { + 0x00, 0x60, 0x96, "T.S. MICROTECH INC."}, { + 0x00, 0x60, 0x97, "3COM CORPORATION"}, { + 0x00, 0x60, 0x98, "HT COMMUNICATIONS"}, { + 0x00, 0x60, 0x99, "LAN MEDIA CORPORATION"}, { + 0x00, 0x60, 0x9A, "NJK TECHNO CO."}, { + 0x00, 0x60, 0x9B, "ASTRO-MED, INC."}, { + 0x00, 0x60, 0x9C, "Perkin-Elmer Incorporated"}, { + 0x00, 0x60, 0x9D, "PMI FOOD EQUIPMENT GROUP"}, { + 0x00, 0x60, 0x9E, + "ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS"}, + { + 0x00, 0x60, 0x9F, "PHAST CORPORATION"}, { + 0x00, 0x60, 0xA0, "SWITCHED NETWORK TECHNOLOGIES, INC."}, { + 0x00, 0x60, 0xA1, "VPNet, Inc."}, { + 0x00, 0x60, 0xA2, "NIHON UNISYS LIMITED CO."}, { + 0x00, 0x60, 0xA3, "CONTINUUM TECHNOLOGY CORP."}, { + 0x00, 0x60, 0xA4, "GRINAKER SYSTEM TECHNOLOGIES"}, { + 0x00, 0x60, 0xA5, "PERFORMANCE TELECOM CORP."}, { + 0x00, 0x60, 0xA6, "PARTICLE MEASURING SYSTEMS"}, { + 0x00, 0x60, 0xA7, "MICROSENS GmbH & CO. KG"}, { + 0x00, 0x60, 0xA8, "TIDOMAT AB"}, { + 0x00, 0x60, 0xA9, "GESYTEC MbH"}, { + 0x00, 0x60, 0xAA, "INTELLIGENT DEVICES INC. (IDI)"}, { + 0x00, 0x60, 0xAB, "LARSCOM INCORPORATED"}, { + 0x00, 0x60, 0xAC, "RESILIENCE CORPORATION"}, { + 0x00, 0x60, 0xAD, "MegaChips Corporation"}, { + 0x00, 0x60, 0xAE, "TRIO INFORMATION SYSTEMS AB"}, { + 0x00, 0x60, 0xAF, "PACIFIC MICRO DATA, INC."}, { + 0x00, 0x60, 0xB0, "HEWLETT-PACKARD CO."}, { + 0x00, 0x60, 0xB1, "INPUT/OUTPUT, INC."}, { + 0x00, 0x60, 0xB2, "PROCESS CONTROL CORP."}, { + 0x00, 0x60, 0xB3, "Z-COM, INC."}, { + 0x00, 0x60, 0xB4, "GLENAYRE R&D INC."}, { + 0x00, 0x60, 0xB5, "KEBA GmbH"}, { + 0x00, 0x60, 0xB6, "LAND COMPUTER CO., LTD."}, { + 0x00, 0x60, 0xB7, "CHANNELMATIC, INC."}, { + 0x00, 0x60, 0xB8, "CORELIS INC."}, { + 0x00, 0x60, 0xB9, "NITSUKO CORPORATION"}, { + 0x00, 0x60, 0xBA, "SAHARA NETWORKS, INC."}, { + 0x00, 0x60, 0xBB, "CABLETRON - NETLINK, INC."}, { + 0x00, 0x60, 0xBC, + "KeunYoung Electronics & Communication Co., Ltd."}, { + 0x00, 0x60, 0xBD, "HUBBELL-PULSECOM"}, { + 0x00, 0x60, 0xBE, "WEBTRONICS"}, { + 0x00, 0x60, 0xBF, "MACRAIGOR SYSTEMS, INC."}, { + 0x00, 0x60, 0xC0, "NERA AS"}, { + 0x00, 0x60, 0xC1, "WaveSpan Corporation"}, { + 0x00, 0x60, 0xC2, "MPL AG"}, { + 0x00, 0x60, 0xC3, "NETVISION CORPORATION"}, { + 0x00, 0x60, 0xC4, "SOLITON SYSTEMS K.K."}, { + 0x00, 0x60, 0xC5, "ANCOT CORP."}, { + 0x00, 0x60, 0xC6, "DCS AG"}, { + 0x00, 0x60, 0xC7, "AMATI COMMUNICATIONS CORP."}, { + 0x00, 0x60, 0xC8, "KUKA WELDING SYSTEMS & ROBOTS"}, { + 0x00, 0x60, 0xC9, "ControlNet, Inc."}, { + 0x00, 0x60, 0xCA, "HARMONIC SYSTEMS INCORPORATED"}, { + 0x00, 0x60, 0xCB, "HITACHI ZOSEN CORPORATION"}, { + 0x00, 0x60, 0xCC, "EMTRAK, INCORPORATED"}, { + 0x00, 0x60, 0xCD, "VideoServer, Inc."}, { + 0x00, 0x60, 0xCE, "ACCLAIM COMMUNICATIONS"}, { + 0x00, 0x60, 0xCF, "ALTEON NETWORKS, INC."}, { + 0x00, 0x60, 0xD0, "SNMP RESEARCH INCORPORATED"}, { + 0x00, 0x60, 0xD1, "CASCADE COMMUNICATIONS"}, { + 0x00, 0x60, 0xD2, + "LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD."}, + { + 0x00, 0x60, 0xD3, "AT&T"}, { + 0x00, 0x60, 0xD4, "ELDAT COMMUNICATION LTD."}, { + 0x00, 0x60, 0xD5, "MIYACHI TECHNOS CORP."}, { + 0x00, 0x60, 0xD6, "NovAtel Wireless Technologies Ltd."}, { + 0x00, 0x60, 0xD7, + "ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)"}, { + 0x00, 0x60, 0xD8, "ELMIC SYSTEMS, INC."}, { + 0x00, 0x60, 0xD9, "TRANSYS NETWORKS INC."}, { + 0x00, 0x60, 0xDA, "JBM ELECTRONICS CO."}, { + 0x00, 0x60, 0xDB, "NTP ELEKTRONIK A/S"}, { + 0x00, 0x60, 0xDC, "TOYO COMMUNICATION EQUIPMENT Co., Ltd."}, { + 0x00, 0x60, 0xDD, "MYRICOM, INC."}, { + 0x00, 0x60, 0xDE, "KAYSER-THREDE GmbH"}, { + 0x00, 0x60, 0xDF, "INRANGE TECHNOLOGIES CORP."}, { + 0x00, 0x60, 0xE0, "AXIOM TECHNOLOGY CO., LTD."}, { + 0x00, 0x60, 0xE1, "ORCKIT COMMUNICATIONS LTD."}, { + 0x00, 0x60, 0xE2, "QUEST ENGINEERING & DEVELOPMENT"}, { + 0x00, 0x60, 0xE3, "ARBIN INSTRUMENTS"}, { + 0x00, 0x60, 0xE4, "COMPUSERVE, INC."}, { + 0x00, 0x60, 0xE5, "FUJI AUTOMATION CO., LTD."}, { + 0x00, 0x60, 0xE6, "SHOMITI SYSTEMS INCORPORATED"}, { + 0x00, 0x60, 0xE7, "RANDATA"}, { + 0x00, 0x60, 0xE8, "HITACHI COMPUTER PRODUCTS (AMERICA), INC."}, { + 0x00, 0x60, 0xE9, "ATOP TECHNOLOGIES, INC."}, { + 0x00, 0x60, 0xEA, "StreamLogic"}, { + 0x00, 0x60, 0xEB, "FOURTHTRACK SYSTEMS"}, { + 0x00, 0x60, 0xEC, "HERMARY OPTO ELECTRONICS INC."}, { + 0x00, 0x60, 0xED, "RICARDO TEST AUTOMATION LTD."}, { + 0x00, 0x60, 0xEE, "APOLLO"}, { + 0x00, 0x60, 0xEF, "FLYTECH TECHNOLOGY CO., LTD."}, { + 0x00, 0x60, 0xF0, "JOHNSON & JOHNSON MEDICAL, INC"}, { + 0x00, 0x60, 0xF1, "EXP COMPUTER, INC."}, { + 0x00, 0x60, 0xF2, "LASERGRAPHICS, INC."}, { + 0x00, 0x60, 0xF3, "NETCOM SYSTEMS, INC."}, { + 0x00, 0x60, 0xF4, "ADVANCED COMPUTER SOLUTIONS, Inc."}, { + 0x00, 0x60, 0xF5, "ICON WEST, INC."}, { + 0x00, 0x60, 0xF6, "NEXTEST COMMUNICATIONS PRODUCTS, INC."}, { + 0x00, 0x60, 0xF7, "DATAFUSION SYSTEMS"}, { + 0x00, 0x60, 0xF8, "Loran International Technologies Inc."}, { + 0x00, 0x60, 0xF9, "DIAMOND LANE COMMUNICATIONS"}, { + 0x00, 0x60, 0xFA, "EDUCATIONAL TECHNOLOGY RESOURCES, INC."}, { + 0x00, 0x60, 0xFB, "PACKETEER, INC."}, { + 0x00, 0x60, 0xFC, "CONSERVATION THROUGH INNOVATION LTD."}, { + 0x00, 0x60, 0xFD, "NetICs, Inc."}, { + 0x00, 0x60, 0xFE, "LYNX SYSTEM DEVELOPERS, INC."}, { + 0x00, 0x60, 0xFF, "QuVis, Inc."}, { + 0x00, 0x70, 0xB0, "M/A-COM INC. COMPANIES"}, { + 0x00, 0x70, 0xB3, "DATA RECALL LTD."}, { + 0x00, 0x80, 0x00, "MULTITECH SYSTEMS, INC."}, { + 0x00, 0x80, 0x01, "PERIPHONICS CORPORATION"}, { + 0x00, 0x80, 0x02, "SATELCOM (UK) LTD"}, { + 0x00, 0x80, 0x03, "HYTEC ELECTRONICS LTD."}, { + 0x00, 0x80, 0x04, "ANTLOW COMMUNICATIONS, LTD."}, { + 0x00, 0x80, 0x05, "CACTUS COMPUTER INC."}, { + 0x00, 0x80, 0x06, "COMPUADD CORPORATION"}, { + 0x00, 0x80, 0x07, "DLOG NC-SYSTEME"}, { + 0x00, 0x80, 0x08, "DYNATECH COMPUTER SYSTEMS"}, { + 0x00, 0x80, 0x09, "JUPITER SYSTEMS, INC."}, { + 0x00, 0x80, 0x0A, "JAPAN COMPUTER CORP."}, { + 0x00, 0x80, 0x0B, "CSK CORPORATION"}, { + 0x00, 0x80, 0x0C, "VIDECOM LIMITED"}, { + 0x00, 0x80, 0x0D, "VOSSWINKEL F.U."}, { + 0x00, 0x80, 0x0E, "ATLANTIX CORPORATION"}, { + 0x00, 0x80, 0x0F, "STANDARD MICROSYSTEMS"}, { + 0x00, 0x80, 0x10, "COMMODORE INTERNATIONAL"}, { + 0x00, 0x80, 0x11, "DIGITAL SYSTEMS INT'L. INC."}, { + 0x00, 0x80, 0x12, "INTEGRATED MEASUREMENT SYSTEMS"}, { + 0x00, 0x80, 0x13, "THOMAS-CONRAD CORPORATION"}, { + 0x00, 0x80, 0x14, "ESPRIT SYSTEMS"}, { + 0x00, 0x80, 0x15, "SEIKO SYSTEMS, INC."}, { + 0x00, 0x80, 0x16, "WANDEL AND GOLTERMANN"}, { + 0x00, 0x80, 0x17, "PFU LIMITED"}, { + 0x00, 0x80, 0x18, "KOBE STEEL, LTD."}, { + 0x00, 0x80, 0x19, "DAYNA COMMUNICATIONS, INC."}, { + 0x00, 0x80, 0x1A, "BELL ATLANTIC"}, { + 0x00, 0x80, 0x1B, "KODIAK TECHNOLOGY"}, { + 0x00, 0x80, 0x1C, "NEWPORT SYSTEMS SOLUTIONS"}, { + 0x00, 0x80, 0x1D, "INTEGRATED INFERENCE MACHINES"}, { + 0x00, 0x80, 0x1E, "XINETRON, INC."}, { + 0x00, 0x80, 0x1F, "KRUPP ATLAS ELECTRONIK GMBH"}, { + 0x00, 0x80, 0x20, "NETWORK PRODUCTS"}, { + 0x00, 0x80, 0x21, "NEWBRIDGE RESEARCH CORP."}, { + 0x00, 0x80, 0x22, "SCAN-OPTICS"}, { + 0x00, 0x80, 0x23, "INTEGRATED BUSINESS NETWORKS"}, { + 0x00, 0x80, 0x24, "KALPANA, INC."}, { + 0x00, 0x80, 0x25, "STOLLMANN GMBH"}, { + 0x00, 0x80, 0x26, "NETWORK PRODUCTS CORPORATION"}, { + 0x00, 0x80, 0x27, "ADAPTIVE SYSTEMS, INC."}, { + 0x00, 0x80, 0x28, "TRADPOST (HK) LTD"}, { + 0x00, 0x80, 0x29, "EAGLE TECHNOLOGY, INC."}, { + 0x00, 0x80, 0x2A, "TEST SYSTEMS & SIMULATIONS INC"}, { + 0x00, 0x80, 0x2B, "INTEGRATED MARKETING CO"}, { + 0x00, 0x80, 0x2C, "THE SAGE GROUP PLC"}, { + 0x00, 0x80, 0x2D, "XYLOGICS INC"}, { + 0x00, 0x80, 0x2E, "CASTLE ROCK COMPUTING"}, { + 0x00, 0x80, 0x2F, "NATIONAL INSTRUMENTS CORP."}, { + 0x00, 0x80, 0x30, "NEXUS ELECTRONICS"}, { + 0x00, 0x80, 0x31, "BASYS, CORP."}, { + 0x00, 0x80, 0x32, "ACCESS CO., LTD."}, { + 0x00, 0x80, 0x33, "FORMATION, INC."}, { + 0x00, 0x80, 0x34, "SMT GOUPIL"}, { + 0x00, 0x80, 0x35, "TECHNOLOGY WORKS, INC."}, { + 0x00, 0x80, 0x36, "REFLEX MANUFACTURING SYSTEMS"}, { + 0x00, 0x80, 0x37, "Ericsson Group"}, { + 0x00, 0x80, 0x38, "DATA RESEARCH & APPLICATIONS"}, { + 0x00, 0x80, 0x39, "ALCATEL STC AUSTRALIA"}, { + 0x00, 0x80, 0x3A, "VARITYPER, INC."}, { + 0x00, 0x80, 0x3B, "APT COMMUNICATIONS, INC."}, { + 0x00, 0x80, 0x3C, "TVS ELECTRONICS LTD"}, { + 0x00, 0x80, 0x3D, "SURIGIKEN CO., LTD."}, { + 0x00, 0x80, 0x3E, "SYNERNETICS"}, { + 0x00, 0x80, 0x3F, "TATUNG COMPANY"}, { + 0x00, 0x80, 0x40, "JOHN FLUKE MANUFACTURING CO."}, { + 0x00, 0x80, 0x41, "VEB KOMBINAT ROBOTRON"}, { + 0x00, 0x80, 0x42, "FORCE COMPUTERS"}, { + 0x00, 0x80, 0x43, "NETWORLD, INC."}, { + 0x00, 0x80, 0x44, "SYSTECH COMPUTER CORP."}, { + 0x00, 0x80, 0x45, "MATSUSHITA ELECTRIC IND. CO"}, { + 0x00, 0x80, 0x46, "UNIVERSITY OF TORONTO"}, { + 0x00, 0x80, 0x47, "IN-NET CORP."}, { + 0x00, 0x80, 0x48, "COMPEX INCORPORATED"}, { + 0x00, 0x80, 0x49, "NISSIN ELECTRIC CO., LTD."}, { + 0x00, 0x80, 0x4A, "PRO-LOG"}, { + 0x00, 0x80, 0x4B, "EAGLE TECHNOLOGIES PTY.LTD."}, { + 0x00, 0x80, 0x4C, "CONTEC CO., LTD."}, { + 0x00, 0x80, 0x4D, "CYCLONE MICROSYSTEMS, INC."}, { + 0x00, 0x80, 0x4E, "APEX COMPUTER COMPANY"}, { + 0x00, 0x80, 0x4F, "DAIKIN INDUSTRIES, LTD."}, { + 0x00, 0x80, 0x50, "ZIATECH CORPORATION"}, { + 0x00, 0x80, 0x51, "FIBERMUX"}, { + 0x00, 0x80, 0x52, "TECHNICALLY ELITE CONCEPTS"}, { + 0x00, 0x80, 0x53, "INTELLICOM, INC."}, { + 0x00, 0x80, 0x54, "FRONTIER TECHNOLOGIES CORP."}, { + 0x00, 0x80, 0x55, "FERMILAB"}, { + 0x00, 0x80, 0x56, "SPHINX ELEKTRONIK GMBH"}, { + 0x00, 0x80, 0x57, "ADSOFT, LTD."}, { + 0x00, 0x80, 0x58, "PRINTER SYSTEMS CORPORATION"}, { + 0x00, 0x80, 0x59, "STANLEY ELECTRIC CO., LTD"}, { + 0x00, 0x80, 0x5A, "TULIP COMPUTERS INTERNAT'L B.V"}, { + 0x00, 0x80, 0x5B, "CONDOR SYSTEMS, INC."}, { + 0x00, 0x80, 0x5C, "AGILIS CORPORATION"}, { + 0x00, 0x80, 0x5D, "CANSTAR"}, { + 0x00, 0x80, 0x5E, "LSI LOGIC CORPORATION"}, { + 0x00, 0x80, 0x5F, "COMPAQ COMPUTER CORPORATION"}, { + 0x00, 0x80, 0x60, "NETWORK INTERFACE CORPORATION"}, { + 0x00, 0x80, 0x61, "LITTON SYSTEMS, INC."}, { + 0x00, 0x80, 0x62, "INTERFACE CO."}, { + 0x00, 0x80, 0x63, "RICHARD HIRSCHMANN GMBH & CO."}, { + 0x00, 0x80, 0x64, "WYSE TECHNOLOGY"}, { + 0x00, 0x80, 0x65, "CYBERGRAPHIC SYSTEMS PTY LTD."}, { + 0x00, 0x80, 0x66, "ARCOM CONTROL SYSTEMS, LTD."}, { + 0x00, 0x80, 0x67, "SQUARE D COMPANY"}, { + 0x00, 0x80, 0x68, "YAMATECH SCIENTIFIC LTD."}, { + 0x00, 0x80, 0x69, "COMPUTONE SYSTEMS"}, { + 0x00, 0x80, 0x6A, "ERI (EMPAC RESEARCH INC.)"}, { + 0x00, 0x80, 0x6B, "SCHMID TELECOMMUNICATION"}, { + 0x00, 0x80, 0x6C, "CEGELEC PROJECTS LTD"}, { + 0x00, 0x80, 0x6D, "CENTURY SYSTEMS CORP."}, { + 0x00, 0x80, 0x6E, "NIPPON STEEL CORPORATION"}, { + 0x00, 0x80, 0x6F, "ONELAN LTD."}, { + 0x00, 0x80, 0x70, "COMPUTADORAS MICRON"}, { + 0x00, 0x80, 0x71, "SAI TECHNOLOGY"}, { + 0x00, 0x80, 0x72, "MICROPLEX SYSTEMS LTD."}, { + 0x00, 0x80, 0x73, "DWB ASSOCIATES"}, { + 0x00, 0x80, 0x74, "FISHER CONTROLS"}, { + 0x00, 0x80, 0x75, "PARSYTEC GMBH"}, { + 0x00, 0x80, 0x76, "MCNC"}, { + 0x00, 0x80, 0x77, "BROTHER INDUSTRIES, LTD."}, { + 0x00, 0x80, 0x78, "PRACTICAL PERIPHERALS, INC."}, { + 0x00, 0x80, 0x79, "MICROBUS DESIGNS LTD."}, { + 0x00, 0x80, 0x7A, "AITECH SYSTEMS LTD."}, { + 0x00, 0x80, 0x7B, "ARTEL COMMUNICATIONS CORP."}, { + 0x00, 0x80, 0x7C, "FIBERCOM, INC."}, { + 0x00, 0x80, 0x7D, "EQUINOX SYSTEMS INC."}, { + 0x00, 0x80, 0x7E, "SOUTHERN PACIFIC LTD."}, { + 0x00, 0x80, 0x7F, "DY-4 INCORPORATED"}, { + 0x00, 0x80, 0x80, "DATAMEDIA CORPORATION"}, { + 0x00, 0x80, 0x81, "KENDALL SQUARE RESEARCH CORP."}, { + 0x00, 0x80, 0x82, "PEP MODULAR COMPUTERS GMBH"}, { + 0x00, 0x80, 0x83, "AMDAHL"}, { + 0x00, 0x80, 0x84, "THE CLOUD INC."}, { + 0x00, 0x80, 0x85, "H-THREE SYSTEMS CORPORATION"}, { + 0x00, 0x80, 0x86, "COMPUTER GENERATION INC."}, { + 0x00, 0x80, 0x87, "OKI ELECTRIC INDUSTRY CO., LTD"}, { + 0x00, 0x80, 0x88, "VICTOR COMPANY OF JAPAN, LTD."}, { + 0x00, 0x80, 0x89, "TECNETICS (PTY) LTD."}, { + 0x00, 0x80, 0x8A, "SUMMIT MICROSYSTEMS CORP."}, { + 0x00, 0x80, 0x8B, "DACOLL LIMITED"}, { + 0x00, 0x80, 0x8C, "NetScout Systems, Inc."}, { + 0x00, 0x80, 0x8D, "WESTCOAST TECHNOLOGY B.V."}, { + 0x00, 0x80, 0x8E, "RADSTONE TECHNOLOGY"}, { + 0x00, 0x80, 0x8F, "C. ITOH ELECTRONICS, INC."}, { + 0x00, 0x80, 0x90, "MICROTEK INTERNATIONAL, INC."}, { + 0x00, 0x80, 0x91, "TOKYO ELECTRIC CO.,LTD"}, { + 0x00, 0x80, 0x92, "JAPAN COMPUTER INDUSTRY, INC."}, { + 0x00, 0x80, 0x93, "XYRON CORPORATION"}, { + 0x00, 0x80, 0x94, "ALFA LAVAL AUTOMATION AB"}, { + 0x00, 0x80, 0x95, "BASIC MERTON HANDELSGES.M.B.H."}, { + 0x00, 0x80, 0x96, "HUMAN DESIGNED SYSTEMS, INC."}, { + 0x00, 0x80, 0x97, "CENTRALP AUTOMATISMES"}, { + 0x00, 0x80, 0x98, "TDK CORPORATION"}, { + 0x00, 0x80, 0x99, "KLOCKNER MOELLER IPC"}, { + 0x00, 0x80, 0x9A, "NOVUS NETWORKS LTD"}, { + 0x00, 0x80, 0x9B, "JUSTSYSTEM CORPORATION"}, { + 0x00, 0x80, 0x9C, "LUXCOM, INC."}, { + 0x00, 0x80, 0x9D, "Commscraft Ltd."}, { + 0x00, 0x80, 0x9E, "DATUS GMBH"}, { + 0x00, 0x80, 0x9F, "ALCATEL BUSINESS SYSTEMS"}, { + 0x00, 0x80, 0xA0, "EDISA HEWLETT PACKARD S/A"}, { + 0x00, 0x80, 0xA1, "MICROTEST, INC."}, { + 0x00, 0x80, 0xA2, "CREATIVE ELECTRONIC SYSTEMS"}, { + 0x00, 0x80, 0xA3, "LANTRONIX"}, { + 0x00, 0x80, 0xA4, "LIBERTY ELECTRONICS"}, { + 0x00, 0x80, 0xA5, "SPEED INTERNATIONAL"}, { + 0x00, 0x80, 0xA6, "REPUBLIC TECHNOLOGY, INC."}, { + 0x00, 0x80, 0xA7, "MEASUREX CORP."}, { + 0x00, 0x80, 0xA8, "VITACOM CORPORATION"}, { + 0x00, 0x80, 0xA9, "CLEARPOINT RESEARCH"}, { + 0x00, 0x80, 0xAA, "MAXPEED"}, { + 0x00, 0x80, 0xAB, "DUKANE NETWORK INTEGRATION"}, { + 0x00, 0x80, 0xAC, "IMLOGIX, DIVISION OF GENESYS"}, { + 0x00, 0x80, 0xAD, "CNET TECHNOLOGY, INC."}, { + 0x00, 0x80, 0xAE, "HUGHES NETWORK SYSTEMS"}, { + 0x00, 0x80, 0xAF, "ALLUMER CO., LTD."}, { + 0x00, 0x80, 0xB0, "ADVANCED INFORMATION"}, { + 0x00, 0x80, 0xB1, "SOFTCOM A/S"}, { + 0x00, 0x80, 0xB2, "NETWORK EQUIPMENT TECHNOLOGIES"}, { + 0x00, 0x80, 0xB3, "AVAL DATA CORPORATION"}, { + 0x00, 0x80, 0xB4, "SOPHIA SYSTEMS"}, { + 0x00, 0x80, 0xB5, "UNITED NETWORKS INC."}, { + 0x00, 0x80, 0xB6, "THEMIS COMPUTER"}, { + 0x00, 0x80, 0xB7, "STELLAR COMPUTER"}, { + 0x00, 0x80, 0xB8, "BUG, INCORPORATED"}, { + 0x00, 0x80, 0xB9, "ARCHE TECHNOLIGIES INC."}, { + 0x00, 0x80, 0xBA, "SPECIALIX (ASIA) PTE, LTD"}, { + 0x00, 0x80, 0xBB, "HUGHES LAN SYSTEMS"}, { + 0x00, 0x80, 0xBC, "HITACHI ENGINEERING CO., LTD"}, { + 0x00, 0x80, 0xBD, "THE FURUKAWA ELECTRIC CO., LTD"}, { + 0x00, 0x80, 0xBE, "ARIES RESEARCH"}, { + 0x00, 0x80, 0xBF, "TAKAOKA ELECTRIC MFG. CO. LTD."}, { + 0x00, 0x80, 0xC0, "PENRIL DATACOMM"}, { + 0x00, 0x80, 0xC1, "LANEX CORPORATION"}, { + 0x00, 0x80, 0xC2, "IEEE 802 COMMITTEE"}, { + 0x00, 0x80, 0xC3, "BICC INFORMATION SYSTEMS & SVC"}, { + 0x00, 0x80, 0xC4, "DOCUMENT TECHNOLOGIES, INC."}, { + 0x00, 0x80, 0xC5, "NOVELLCO DE MEXICO"}, { + 0x00, 0x80, 0xC6, "NATIONAL DATACOMM CORPORATION"}, { + 0x00, 0x80, 0xC7, "XIRCOM"}, { + 0x00, 0x80, 0xC8, "D-LINK SYSTEMS, INC."}, { + 0x00, 0x80, 0xC9, "ALBERTA MICROELECTRONIC CENTRE"}, { + 0x00, 0x80, 0xCA, "NETCOM RESEARCH INCORPORATED"}, { + 0x00, 0x80, 0xCB, "FALCO DATA PRODUCTS"}, { + 0x00, 0x80, 0xCC, "MICROWAVE BYPASS SYSTEMS"}, { + 0x00, 0x80, 0xCD, "MICRONICS COMPUTER, INC."}, { + 0x00, 0x80, 0xCE, "BROADCAST TELEVISION SYSTEMS"}, { + 0x00, 0x80, 0xCF, "EMBEDDED PERFORMANCE INC."}, { + 0x00, 0x80, 0xD0, "COMPUTER PERIPHERALS, INC."}, { + 0x00, 0x80, 0xD1, "KIMTRON CORPORATION"}, { + 0x00, 0x80, 0xD2, "SHINNIHONDENKO CO., LTD."}, { + 0x00, 0x80, 0xD3, "SHIVA CORP."}, { + 0x00, 0x80, 0xD4, "CHASE RESEARCH LTD."}, { + 0x00, 0x80, 0xD5, "CADRE TECHNOLOGIES"}, { + 0x00, 0x80, 0xD6, "NUVOTECH, INC."}, { + 0x00, 0x80, 0xD7, "Fantum Engineering"}, { + 0x00, 0x80, 0xD8, "NETWORK PERIPHERALS INC."}, { + 0x00, 0x80, 0xD9, "EMK ELEKTRONIK"}, { + 0x00, 0x80, 0xDA, "BRUEL & KJAER"}, { + 0x00, 0x80, 0xDB, "GRAPHON CORPORATION"}, { + 0x00, 0x80, 0xDC, "PICKER INTERNATIONAL"}, { + 0x00, 0x80, 0xDD, "GMX INC/GIMIX"}, { + 0x00, 0x80, 0xDE, "GIPSI S.A."}, { + 0x00, 0x80, 0xDF, "ADC CODENOLL TECHNOLOGY CORP."}, { + 0x00, 0x80, 0xE0, "XTP SYSTEMS, INC."}, { + 0x00, 0x80, 0xE1, "STMICROELECTRONICS"}, { + 0x00, 0x80, 0xE2, "T.D.I. CO., LTD."}, { + 0x00, 0x80, 0xE3, "CORAL NETWORK CORPORATION"}, { + 0x00, 0x80, 0xE4, "NORTHWEST DIGITAL SYSTEMS, INC"}, { + 0x00, 0x80, 0xE5, "MYLEX CORPORATION"}, { + 0x00, 0x80, 0xE6, "PEER NETWORKS, INC."}, { + 0x00, 0x80, 0xE7, "LYNWOOD SCIENTIFIC DEV. LTD."}, { + 0x00, 0x80, 0xE8, "CUMULUS CORPORATIION"}, { + 0x00, 0x80, 0xE9, "MADGE NETWORKS"}, { + 0x00, 0x80, 0xEA, "ADVA Optical Networking Ltd."}, { + 0x00, 0x80, 0xEB, "COMPCONTROL B.V."}, { + 0x00, 0x80, 0xEC, "SUPERCOMPUTING SOLUTIONS, INC."}, { + 0x00, 0x80, 0xED, "IQ TECHNOLOGIES, INC."}, { + 0x00, 0x80, 0xEE, "THOMSON CSF"}, { + 0x00, 0x80, 0xEF, "RATIONAL"}, { + 0x00, 0x80, 0xF0, "KYUSHU MATSUSHITA ELECTRIC CO."}, { + 0x00, 0x80, 0xF1, "OPUS SYSTEMS"}, { + 0x00, 0x80, 0xF2, "RAYCOM SYSTEMS INC"}, { + 0x00, 0x80, 0xF3, "SUN ELECTRONICS CORP."}, { + 0x00, 0x80, 0xF4, "TELEMECANIQUE ELECTRIQUE"}, { + 0x00, 0x80, 0xF5, "QUANTEL LTD"}, { + 0x00, 0x80, 0xF6, "SYNERGY MICROSYSTEMS"}, { + 0x00, 0x80, 0xF7, "ZENITH ELECTRONICS"}, { + 0x00, 0x80, 0xF8, "MIZAR, INC."}, { + 0x00, 0x80, 0xF9, "HEURIKON CORPORATION"}, { + 0x00, 0x80, 0xFA, "RWT GMBH"}, { + 0x00, 0x80, 0xFB, "BVM LIMITED"}, { + 0x00, 0x80, 0xFC, "AVATAR CORPORATION"}, { + 0x00, 0x80, 0xFD, "EXSCEED CORPRATION"}, { + 0x00, 0x80, 0xFE, "AZURE TECHNOLOGIES, INC."}, { + 0x00, 0x80, 0xFF, "SOC. DE TELEINFORMATIQUE RTC"}, { + 0x00, 0x90, 0x00, "DIAMOND MULTIMEDIA"}, { + 0x00, 0x90, 0x01, "NISHIMU ELECTRONICS INDUSTRIES CO., LTD."}, { + 0x00, 0x90, 0x02, "ALLGON AB"}, { + 0x00, 0x90, 0x03, "APLIO"}, { + 0x00, 0x90, 0x04, "3COM EUROPE LTD."}, { + 0x00, 0x90, 0x05, "PROTECH SYSTEMS CO., LTD."}, { + 0x00, 0x90, 0x06, "HAMAMATSU PHOTONICS K.K."}, { + 0x00, 0x90, 0x07, "DOMEX TECHNOLOGY CORP."}, { + 0x00, 0x90, 0x08, "HanA Systems Inc."}, { + 0x00, 0x90, 0x09, "i Controls, Inc."}, { + 0x00, 0x90, 0x0A, "PROTON ELECTRONIC INDUSTRIAL CO., LTD."}, { + 0x00, 0x90, 0x0B, "LANNER ELECTRONICS, INC."}, { + 0x00, 0x90, 0x0C, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x0D, "OVERLAND DATA INC."}, { + 0x00, 0x90, 0x0E, "HANDLINK TECHNOLOGIES, INC."}, { + 0x00, 0x90, 0x0F, "KAWASAKI HEAVY INDUSTRIES, LTD"}, { + 0x00, 0x90, 0x10, "SIMULATION LABORATORIES, INC."}, { + 0x00, 0x90, 0x11, "WAVTrace, Inc."}, { + 0x00, 0x90, 0x12, "GLOBESPAN SEMICONDUCTOR, INC."}, { + 0x00, 0x90, 0x13, "SAMSAN CORP."}, { + 0x00, 0x90, 0x14, "ROTORK INSTRUMENTS, LTD."}, { + 0x00, 0x90, 0x15, "CENTIGRAM COMMUNICATIONS CORP."}, { + 0x00, 0x90, 0x16, "ZAC"}, { + 0x00, 0x90, 0x17, "ZYPCOM, INC."}, { + 0x00, 0x90, 0x18, "ITO ELECTRIC INDUSTRY CO, LTD."}, { + 0x00, 0x90, 0x19, "HERMES ELECTRONICS CO., LTD."}, { + 0x00, 0x90, 0x1A, "UNISPHERE SOLUTIONS"}, { + 0x00, 0x90, 0x1B, "DIGITAL CONTROLS"}, { + 0x00, 0x90, 0x1C, "mps Software Gmbh"}, { + 0x00, 0x90, 0x1D, "PEC (NZ) LTD."}, { + 0x00, 0x90, 0x1E, "SELESTA INGEGNE RIA S.P.A."}, { + 0x00, 0x90, 0x1F, "ADTEC PRODUCTIONS, INC."}, { + 0x00, 0x90, 0x20, "PHILIPS ANALYTICAL X-RAY B.V."}, { + 0x00, 0x90, 0x21, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x22, "IVEX"}, { + 0x00, 0x90, 0x23, "ZILOG INC."}, { + 0x00, 0x90, 0x24, "PIPELINKS, INC."}, { + 0x00, 0x90, 0x25, "VISION SYSTEMS LTD. PTY"}, { + 0x00, 0x90, 0x26, "ADVANCED SWITCHING COMMUNICATIONS, INC."}, { + 0x00, 0x90, 0x27, "INTEL CORPORATION"}, { + 0x00, 0x90, 0x28, "NIPPON SIGNAL CO., LTD."}, { + 0x00, 0x90, 0x29, "CRYPTO AG"}, { + 0x00, 0x90, 0x2A, "COMMUNICATION DEVICES, INC."}, { + 0x00, 0x90, 0x2B, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x2C, "DATA & CONTROL EQUIPMENT LTD."}, { + 0x00, 0x90, 0x2D, "DATA ELECTRONICS (AUST.) PTY, LTD."}, { + 0x00, 0x90, 0x2E, "NAMCO LIMITED"}, { + 0x00, 0x90, 0x2F, "NETCORE SYSTEMS, INC."}, { + 0x00, 0x90, 0x30, "HONEYWELL-DATING"}, { + 0x00, 0x90, 0x31, "MYSTICOM, LTD."}, { + 0x00, 0x90, 0x32, "PELCOMBE GROUP LTD."}, { + 0x00, 0x90, 0x33, "INNOVAPHONE GmbH"}, { + 0x00, 0x90, 0x34, "IMAGIC, INC."}, { + 0x00, 0x90, 0x35, "ALPHA TELECOM, INC."}, { + 0x00, 0x90, 0x36, "ens, inc."}, { + 0x00, 0x90, 0x37, "ACUCOMM, INC."}, { + 0x00, 0x90, 0x38, "FOUNTAIN TECHNOLOGIES, INC."}, { + 0x00, 0x90, 0x39, "SHASTA NETWORKS"}, { + 0x00, 0x90, 0x3A, "NIHON MEDIA TOOL INC."}, { + 0x00, 0x90, 0x3B, "TriEMS Research Lab, Inc."}, { + 0x00, 0x90, 0x3C, "ATLANTIC NETWORK SYSTEMS"}, { + 0x00, 0x90, 0x3D, "BIOPAC SYSTEMS, INC."}, { + 0x00, 0x90, 0x3E, "N.V. PHILIPS INDUSTRIAL ACTIVITIES"}, { + 0x00, 0x90, 0x3F, "AZTEC RADIOMEDIA"}, { + 0x00, 0x90, 0x40, "CASTLE NETWORKS, INC."}, { + 0x00, 0x90, 0x41, "APPLIED DIGITAL ACCESS"}, { + 0x00, 0x90, 0x42, "ECCS, Inc."}, { + 0x00, 0x90, 0x43, "NICHIBEI DENSHI CO., LTD."}, { + 0x00, 0x90, 0x44, "ASSURED DIGITAL, INC."}, { + 0x00, 0x90, 0x45, "Marconi Communications"}, { + 0x00, 0x90, 0x46, "DEXDYNE, LTD."}, { + 0x00, 0x90, 0x47, "GIGA FAST E. LTD."}, { + 0x00, 0x90, 0x48, "ZEAL CORPORATION"}, { + 0x00, 0x90, 0x49, "ENTRIDIA CORPORATION"}, { + 0x00, 0x90, 0x4A, "CONCUR SYSTEM TECHNOLOGIES"}, { + 0x00, 0x90, 0x4B, "GemTek Technology Co., Ltd."}, { + 0x00, 0x90, 0x4C, "EPIGRAM, INC."}, { + 0x00, 0x90, 0x4D, "SPEC S.A."}, { + 0x00, 0x90, 0x4E, "DELEM BV"}, { + 0x00, 0x90, 0x4F, "ABB POWER T&D COMPANY, INC."}, { + 0x00, 0x90, 0x50, "TELESTE OY"}, { + 0x00, 0x90, 0x51, "ULTIMATE TECHNOLOGY CORP."}, { + 0x00, 0x90, 0x52, "SELCOM ELETTRONICA S.R.L."}, { + 0x00, 0x90, 0x53, "DAEWOO ELECTRONICS CO., LTD."}, { + 0x00, 0x90, 0x54, "INNOVATIVE SEMICONDUCTORS, INC"}, { + 0x00, 0x90, 0x55, + "PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION"}, { + 0x00, 0x90, 0x56, "TELESTREAM, INC."}, { + 0x00, 0x90, 0x57, "AANetcom, Inc."}, { + 0x00, 0x90, 0x58, + "Ultra Electronics Ltd., Command and Control Systems"}, { + 0x00, 0x90, 0x59, "TELECOM DEVICE K.K."}, { + 0x00, 0x90, 0x5A, "DEARBORN GROUP, INC."}, { + 0x00, 0x90, 0x5B, "RAYMOND AND LAE ENGINEERING"}, { + 0x00, 0x90, 0x5C, "EDMI"}, { + 0x00, 0x90, 0x5D, "NETCOM SICHERHEITSTECHNIK GmbH"}, { + 0x00, 0x90, 0x5E, "RAULAND-BORG CORPORATION"}, { + 0x00, 0x90, 0x5F, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x60, "SYSTEM CREATE CORP."}, { + 0x00, 0x90, 0x61, "PACIFIC RESEARCH & ENGINEERING CORPORATION"}, { + 0x00, 0x90, 0x62, "ICP VORTEX COMPUTERSYSTEME GmbH"}, { + 0x00, 0x90, 0x63, "COHERENT COMMUNICATIONS SYSTEMS CORPORATION"}, { + 0x00, 0x90, 0x64, "THOMSON BROADCAST SYSTEMS"}, { + 0x00, 0x90, 0x65, "FINISAR CORPORATION"}, { + 0x00, 0x90, 0x66, "Troika Networks, Inc."}, { + 0x00, 0x90, 0x67, "WalkAbout Computers, Inc."}, { + 0x00, 0x90, 0x68, "DVT CORP."}, { + 0x00, 0x90, 0x69, "JUNIPER NETWORKS, INC."}, { + 0x00, 0x90, 0x6A, "TURNSTONE SYSTEMS, INC."}, { + 0x00, 0x90, 0x6B, "APPLIED RESOURCES, INC."}, { + 0x00, 0x90, 0x6C, "GWT GLOBAL WEIGHING TECHNOLOGIES GmbH"}, { + 0x00, 0x90, 0x6D, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x6E, "PRAXON, INC."}, { + 0x00, 0x90, 0x6F, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x70, "NEO NETWORKS, INC."}, { + 0x00, 0x90, 0x71, "BADGER TECHNOLOGY, INC."}, { + 0x00, 0x90, 0x72, "SIMRAD AS"}, { + 0x00, 0x90, 0x73, "GAIO TECHNOLOGY"}, { + 0x00, 0x90, 0x74, "ARGON NETWORKS, INC."}, { + 0x00, 0x90, 0x75, "NEC DO BRASIL S.A."}, { + 0x00, 0x90, 0x76, "FMT AIRCRAFT GATE SUPPORT SYSTEMS AB"}, { + 0x00, 0x90, 0x77, "ADVANCED FIBRE COMMUNICATIONS"}, { + 0x00, 0x90, 0x78, "MER TELEMANAGEMENT SOLUTIONS, LTD."}, { + 0x00, 0x90, 0x79, "ClearOne, Inc."}, { + 0x00, 0x90, 0x7A, "SPECTRALINK CORP."}, { + 0x00, 0x90, 0x7B, "E-TECH, INC."}, { + 0x00, 0x90, 0x7C, "DIGITALCAST, INC."}, { + 0x00, 0x90, 0x7D, "Lake Communications"}, { + 0x00, 0x90, 0x7E, "VETRONIX CORP."}, { + 0x00, 0x90, 0x7F, "WatchGuard Technologies, Inc."}, { + 0x00, 0x90, 0x80, "NOT LIMITED, INC."}, { + 0x00, 0x90, 0x81, "ALOHA NETWORKS, INC."}, { + 0x00, 0x90, 0x82, "FORCE INSTITUTE"}, { + 0x00, 0x90, 0x83, "TURBO COMMUNICATION, INC."}, { + 0x00, 0x90, 0x84, "ATECH SYSTEM"}, { + 0x00, 0x90, 0x85, "GOLDEN ENTERPRISES, INC."}, { + 0x00, 0x90, 0x86, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x87, "ITIS"}, { + 0x00, 0x90, 0x88, "BAXALL SECURITY LTD."}, { + 0x00, 0x90, 0x89, "SOFTCOM MICROSYSTEMS, INC."}, { + 0x00, 0x90, 0x8A, "BAYLY COMMUNICATIONS, INC."}, { + 0x00, 0x90, 0x8B, "CELL COMPUTING, INC."}, { + 0x00, 0x90, 0x8C, "ETREND ELECTRONICS, INC."}, { + 0x00, 0x90, 0x8D, "VICKERS ELECTRONICS SYSTEMS"}, { + 0x00, 0x90, 0x8E, "Nortel Networks Broadband Access"}, { + 0x00, 0x90, 0x8F, "AUDIO CODES LTD."}, { + 0x00, 0x90, 0x90, "I-BUS"}, { + 0x00, 0x90, 0x91, "DigitalScape, Inc."}, { + 0x00, 0x90, 0x92, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0x93, "NANAO CORPORATION"}, { + 0x00, 0x90, 0x94, "OSPREY TECHNOLOGIES, INC."}, { + 0x00, 0x90, 0x95, "UNIVERSAL AVIONICS"}, { + 0x00, 0x90, 0x96, "ASKEY COMPUTER CORP."}, { + 0x00, 0x90, 0x97, "SYCAMORE NETWORKS"}, { + 0x00, 0x90, 0x98, "SBC DESIGNS, INC."}, { + 0x00, 0x90, 0x99, "ALLIED TELESIS, K.K."}, { + 0x00, 0x90, 0x9A, "ONE WORLD SYSTEMS, INC."}, { + 0x00, 0x90, 0x9B, "MARKPOINT AB"}, { + 0x00, 0x90, 0x9C, "COMBOX, LTD."}, { + 0x00, 0x90, 0x9D, "GSE SYSTEMS, INC."}, { + 0x00, 0x90, 0x9E, "Broadband Storage, Inc."}, { + 0x00, 0x90, 0x9F, "DIGI-DATA CORPORATION"}, { + 0x00, 0x90, 0xA0, "8X8 INC."}, { + 0x00, 0x90, 0xA1, "FLYING PIG SYSTEMS, LTD."}, { + 0x00, 0x90, 0xA2, "CYBERTAN TECHNOLOGY, INC."}, { + 0x00, 0x90, 0xA3, "Corecess Inc."}, { + 0x00, 0x90, 0xA4, "ALTIGA NETWORKS"}, { + 0x00, 0x90, 0xA5, "SPECTRA LOGIC"}, { + 0x00, 0x90, 0xA6, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0xA7, "CLIENTEC CORPORATION"}, { + 0x00, 0x90, 0xA8, "NineTiles Networks, Ltd."}, { + 0x00, 0x90, 0xA9, "WESTERN DIGITAL"}, { + 0x00, 0x90, 0xAA, "INDIGO ACTIVE VISION SYSTEMS LIMITED"}, { + 0x00, 0x90, 0xAB, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0xAC, "OPTIVISION, INC."}, { + 0x00, 0x90, 0xAD, "ASPECT ELECTRONICS, INC."}, { + 0x00, 0x90, 0xAE, "ITALTEL S.p.A."}, { + 0x00, 0x90, 0xAF, "J. MORITA MFG. CORP."}, { + 0x00, 0x90, 0xB0, "VADEM"}, { + 0x00, 0x90, 0xB1, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0xB2, "AVICI SYSTEMS INC."}, { + 0x00, 0x90, 0xB3, "AGRANAT SYSTEMS"}, { + 0x00, 0x90, 0xB4, "WILLOWBROOK TECHNOLOGIES"}, { + 0x00, 0x90, 0xB5, "NIKON CORPORATION"}, { + 0x00, 0x90, 0xB6, "FIBEX SYSTEMS"}, { + 0x00, 0x90, 0xB7, "DIGITAL LIGHTWAVE, INC."}, { + 0x00, 0x90, 0xB8, "ROHDE & SCHWARZ GMBH & CO. KG"}, { + 0x00, 0x90, 0xB9, "BERAN INSTRUMENTS LTD."}, { + 0x00, 0x90, 0xBA, "VALID NETWORKS, INC."}, { + 0x00, 0x90, 0xBB, "TAINET COMMUNICATION SYSTEM Corp."}, { + 0x00, 0x90, 0xBC, "TELEMANN CO., LTD."}, { + 0x00, 0x90, 0xBD, "OMNIA COMMUNICATIONS, INC."}, { + 0x00, 0x90, 0xBE, "IBC/INTEGRATED BUSINESS COMPUTERS"}, { + 0x00, 0x90, 0xBF, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0xC0, "K.J. LAW ENGINEERS, INC."}, { + 0x00, 0x90, 0xC1, "Peco II, Inc."}, { + 0x00, 0x90, 0xC2, "JK microsystems, Inc."}, { + 0x00, 0x90, 0xC3, "TOPIC SEMICONDUCTOR CORP."}, { + 0x00, 0x90, 0xC4, "JAVELIN SYSTEMS, INC."}, { + 0x00, 0x90, 0xC5, "INTERNET MAGIC, INC."}, { + 0x00, 0x90, 0xC6, "OPTIM SYSTEMS, INC."}, { + 0x00, 0x90, 0xC7, "ICOM INC."}, { + 0x00, 0x90, 0xC8, "WAVERIDER COMMUNICATIONS (CANADA) INC."}, { + 0x00, 0x90, 0xC9, "PRODUCTIVITY ENHANCEMENT PRODUCTS., INC."}, { + 0x00, 0x90, 0xCA, "ACCORD VIDEO TELECOMMUNICATIONS, LTD."}, { + 0x00, 0x90, 0xCB, "Wireless OnLine, Inc."}, { + 0x00, 0x90, 0xCC, "PLANET COMMUNICATIONS, INC."}, { + 0x00, 0x90, 0xCD, + "ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A."}, { + 0x00, 0x90, 0xCE, "TETRA GmbH"}, { + 0x00, 0x90, 0xCF, "NORTEL"}, { + 0x00, 0x90, 0xD0, "ALCATEL BELL"}, { + 0x00, 0x90, 0xD1, "LEICHU ENTERPRISE CO., LTD."}, { + 0x00, 0x90, 0xD2, "ARTEL VIDEO SYSTEMS"}, { + 0x00, 0x90, 0xD3, "GIESECKE & DEVRIENT GmbH"}, { + 0x00, 0x90, 0xD4, "BindView Development Corp."}, { + 0x00, 0x90, 0xD5, "EUPHONIX, INC."}, { + 0x00, 0x90, 0xD6, "CRYSTAL GROUP"}, { + 0x00, 0x90, 0xD7, "NetBoost Corp."}, { + 0x00, 0x90, 0xD8, "WHITECROSS SYSTEMS"}, { + 0x00, 0x90, 0xD9, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0xDA, "DYNARC, INC."}, { + 0x00, 0x90, 0xDB, "NEXT LEVEL COMMUNICATIONS"}, { + 0x00, 0x90, 0xDC, "TECO INFORMATION SYSTEMS"}, { + 0x00, 0x90, 0xDD, "THE MIHARU COMMUNICATIONS CO., LTD."}, { + 0x00, 0x90, 0xDE, "CARDKEY SYSTEMS, INC."}, { + 0x00, 0x90, 0xDF, "MITSUBISHI CHEMICAL AMERICA, INC."}, { + 0x00, 0x90, 0xE0, "SYSTRAN CORP."}, { + 0x00, 0x90, 0xE1, "TELENA S.P.A."}, { + 0x00, 0x90, 0xE2, "DISTRIBUTED PROCESSING TECHNOLOGY"}, { + 0x00, 0x90, 0xE3, "AVEX ELECTRONICS INC."}, { + 0x00, 0x90, 0xE4, "NEC AMERICA, INC."}, { + 0x00, 0x90, 0xE5, "TEKNEMA, INC."}, { + 0x00, 0x90, 0xE6, "ACER LABORATORIES, INC."}, { + 0x00, 0x90, 0xE7, "HORSCH ELEKTRONIK AG"}, { + 0x00, 0x90, 0xE8, "MOXA TECHNOLOGIES CORP., LTD."}, { + 0x00, 0x90, 0xE9, "JANZ COMPUTER AG"}, { + 0x00, 0x90, 0xEA, "ALPHA TECHNOLOGIES, INC."}, { + 0x00, 0x90, 0xEB, "SENTRY TELECOM SYSTEMS"}, { + 0x00, 0x90, 0xEC, "PYRESCOM"}, { + 0x00, 0x90, 0xED, "CENTRAL SYSTEM RESEARCH CO., LTD."}, { + 0x00, 0x90, 0xEE, "PERSONAL COMMUNICATIONS TECHNOLOGIES"}, { + 0x00, 0x90, 0xEF, "INTEGRIX, INC."}, { + 0x00, 0x90, 0xF0, "HARMONIC LIGHTWAVES, LTD."}, { + 0x00, 0x90, 0xF1, "DOT HILL SYSTEMS CORPORATION"}, { + 0x00, 0x90, 0xF2, "CISCO SYSTEMS, INC."}, { + 0x00, 0x90, 0xF3, "ASPECT COMMUNICATIONS"}, { + 0x00, 0x90, 0xF4, "LIGHTNING INSTRUMENTATION"}, { + 0x00, 0x90, 0xF5, "CLEVO CO."}, { + 0x00, 0x90, 0xF6, "ESCALATE NETWORKS, INC."}, { + 0x00, 0x90, 0xF7, "NBASE COMMUNICATIONS LTD."}, { + 0x00, 0x90, 0xF8, "MEDIATRIX TELECOM"}, { + 0x00, 0x90, 0xF9, "LEITCH"}, { + 0x00, 0x90, 0xFA, "GigaNet, Inc."}, { + 0x00, 0x90, 0xFB, "PORTWELL, INC."}, { + 0x00, 0x90, 0xFC, "NETWORK COMPUTING DEVICES"}, { + 0x00, 0x90, 0xFD, "CopperCom, Inc."}, { + 0x00, 0x90, 0xFE, "ELECOM CO., LTD. (LANEED DIV.)"}, { + 0x00, 0x90, 0xFF, "TELLUS TECHNOLOGY INC."}, { + 0x00, 0x9D, 0x8E, "CARDIAC RECORDERS, INC."}, { + 0x00, 0xA0, 0x00, "CENTILLION NETWORKS, INC."}, { + 0x00, 0xA0, 0x01, "WATKINS-JOHNSON COMPANY"}, { + 0x00, 0xA0, 0x02, "LEEDS & NORTHRUP AUSTRALIA PTY LTD"}, { + 0x00, 0xA0, 0x03, "STAEFA CONTROL SYSTEM"}, { + 0x00, 0xA0, 0x04, "NETPOWER, INC."}, { + 0x00, 0xA0, 0x05, "DANIEL INSTRUMENTS, LTD."}, { + 0x00, 0xA0, 0x06, "IMAGE DATA PROCESSING SYSTEM GROUP"}, { + 0x00, 0xA0, 0x07, "APEXX TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x08, "NETCORP"}, { + 0x00, 0xA0, 0x09, "WHITETREE NETWORK"}, { + 0x00, 0xA0, 0x0A, "R.D.C. COMMUNICATION"}, { + 0x00, 0xA0, 0x0B, "COMPUTEX CO., LTD."}, { + 0x00, 0xA0, 0x0C, "KINGMAX TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x0D, "THE PANDA PROJECT"}, { + 0x00, 0xA0, 0x0E, "VISUAL NETWORKS, INC."}, { + 0x00, 0xA0, 0x0F, "Broadband Technologies"}, { + 0x00, 0xA0, 0x10, "SYSLOGIC DATENTECHNIK AG"}, { + 0x00, 0xA0, 0x11, "MUTOH INDUSTRIES LTD."}, { + 0x00, 0xA0, 0x12, "B.A.T.M. ADVANCED TECHNOLOGIES"}, { + 0x00, 0xA0, 0x13, "TELTREND LTD."}, { + 0x00, 0xA0, 0x14, "CSIR"}, { + 0x00, 0xA0, 0x15, "WYLE"}, { + 0x00, 0xA0, 0x16, "MICROPOLIS CORP."}, { + 0x00, 0xA0, 0x17, "J B M CORPORATION"}, { + 0x00, 0xA0, 0x18, "CREATIVE CONTROLLERS, INC."}, { + 0x00, 0xA0, 0x19, "NEBULA CONSULTANTS, INC."}, { + 0x00, 0xA0, 0x1A, "BINAR ELEKTRONIK AB"}, { + 0x00, 0xA0, 0x1B, "PREMISYS COMMUNICATIONS, INC."}, { + 0x00, 0xA0, 0x1C, "NASCENT NETWORKS CORPORATION"}, { + 0x00, 0xA0, 0x1D, "SIXNET"}, { + 0x00, 0xA0, 0x1E, "EST CORPORATION"}, { + 0x00, 0xA0, 0x1F, "TRICORD SYSTEMS, INC."}, { + 0x00, 0xA0, 0x20, "CITICORP/TTI"}, { + 0x00, 0xA0, 0x21, "GENERAL DYNAMICS-"}, { + 0x00, 0xA0, 0x22, "CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING"}, + { + 0x00, 0xA0, 0x23, "APPLIED CREATIVE TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x24, "3COM CORPORATION"}, { + 0x00, 0xA0, 0x25, "REDCOM LABS INC."}, { + 0x00, 0xA0, 0x26, "TELDAT, S.A."}, { + 0x00, 0xA0, 0x27, "FIREPOWER SYSTEMS, INC."}, { + 0x00, 0xA0, 0x28, "CONNER PERIPHERALS"}, { + 0x00, 0xA0, 0x29, "COULTER CORPORATION"}, { + 0x00, 0xA0, 0x2A, "TRANCELL SYSTEMS"}, { + 0x00, 0xA0, 0x2B, "TRANSITIONS RESEARCH CORP."}, { + 0x00, 0xA0, 0x2C, "interWAVE Communications"}, { + 0x00, 0xA0, 0x2D, "1394 Trade Association"}, { + 0x00, 0xA0, 0x2E, "BRAND COMMUNICATIONS, LTD."}, { + 0x00, 0xA0, 0x2F, "PIRELLI CAVI"}, { + 0x00, 0xA0, 0x30, "CAPTOR NV/SA"}, { + 0x00, 0xA0, 0x31, "HAZELTINE CORPORATION, MS 1-17"}, { + 0x00, 0xA0, 0x32, "GES SINGAPORE PTE. LTD."}, { + 0x00, 0xA0, 0x33, "imc MeBsysteme GmbH"}, { + 0x00, 0xA0, 0x34, "AXEL"}, { + 0x00, 0xA0, 0x35, "CYLINK CORPORATION"}, { + 0x00, 0xA0, 0x36, "APPLIED NETWORK TECHNOLOGY"}, { + 0x00, 0xA0, 0x37, "DATASCOPE CORPORATION"}, { + 0x00, 0xA0, 0x38, "EMAIL ELECTRONICS"}, { + 0x00, 0xA0, 0x39, "ROSS TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x3A, "KUBOTEK CORPORATION"}, { + 0x00, 0xA0, 0x3B, "TOSHIN ELECTRIC CO., LTD."}, { + 0x00, 0xA0, 0x3C, "EG&G NUCLEAR INSTRUMENTS"}, { + 0x00, 0xA0, 0x3D, "OPTO-22"}, { + 0x00, 0xA0, 0x3E, "ATM FORUM"}, { + 0x00, 0xA0, 0x3F, + "COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C"}, + { + 0x00, 0xA0, 0x40, "APPLE COMPUTER"}, { + 0x00, 0xA0, 0x41, "LEYBOLD-INFICON"}, { + 0x00, 0xA0, 0x42, "SPUR PRODUCTS CORP."}, { + 0x00, 0xA0, 0x43, "AMERICAN TECHNOLOGY LABS, INC."}, { + 0x00, 0xA0, 0x44, "NTT INTELLIGENT TECHNOLOGY"}, { + 0x00, 0xA0, 0x45, "PHOENIX CONTACT GMBH & CO."}, { + 0x00, 0xA0, 0x46, "SCITEX CORP. LTD."}, { + 0x00, 0xA0, 0x47, "INTEGRATED FITNESS CORP."}, { + 0x00, 0xA0, 0x48, "QUESTECH, LTD."}, { + 0x00, 0xA0, 0x49, "DIGITECH INDUSTRIES, INC."}, { + 0x00, 0xA0, 0x4A, "NISSHIN ELECTRIC CO., LTD."}, { + 0x00, 0xA0, 0x4B, "TFL LAN INC."}, { + 0x00, 0xA0, 0x4C, "INNOVATIVE SYSTEMS & TECHNOLOGIES, INC."}, { + 0x00, 0xA0, 0x4D, "EDA INSTRUMENTS, INC."}, { + 0x00, 0xA0, 0x4E, "VOELKER TECHNOLOGIES, INC."}, { + 0x00, 0xA0, 0x4F, "AMERITEC CORP."}, { + 0x00, 0xA0, 0x50, "CYPRESS SEMICONDUCTOR"}, { + 0x00, 0xA0, 0x51, "ANGIA COMMUNICATIONS. INC."}, { + 0x00, 0xA0, 0x52, "STANILITE ELECTRONICS PTY. LTD"}, { + 0x00, 0xA0, 0x53, "COMPACT DEVICES, INC."}, { + 0x00, 0xA0, 0x55, "LINKTECH, INC."}, { + 0x00, 0xA0, 0x56, "MICROPROSS"}, { + 0x00, 0xA0, 0x57, "LANCOM Systems GmbH"}, { + 0x00, 0xA0, 0x58, "GLORY, LTD."}, { + 0x00, 0xA0, 0x59, "HAMILTON HALLMARK"}, { + 0x00, 0xA0, 0x5A, "KOFAX IMAGE PRODUCTS"}, { + 0x00, 0xA0, 0x5B, "MARQUIP, INC."}, { + 0x00, 0xA0, 0x5C, "INVENTORY CONVERSION, INC./"}, { + 0x00, 0xA0, 0x5D, "CS COMPUTER SYSTEME GmbH"}, { + 0x00, 0xA0, 0x5E, "MYRIAD LOGIC INC."}, { + 0x00, 0xA0, 0x5F, "BTG ENGINEERING BV"}, { + 0x00, 0xA0, 0x60, "ACER PERIPHERALS, INC."}, { + 0x00, 0xA0, 0x61, "PURITAN BENNETT"}, { + 0x00, 0xA0, 0x62, "AES PRODATA"}, { + 0x00, 0xA0, 0x63, "JRL SYSTEMS, INC."}, { + 0x00, 0xA0, 0x64, "KVB/ANALECT"}, { + 0x00, 0xA0, 0x65, "NEXLAND, INC."}, { + 0x00, 0xA0, 0x66, "ISA CO., LTD."}, { + 0x00, 0xA0, 0x67, "NETWORK SERVICES GROUP"}, { + 0x00, 0xA0, 0x69, "TrueTime"}, { + 0x00, 0xA0, 0x6A, "VERILINK CORP."}, { + 0x00, 0xA0, 0x6B, "DMS DORSCH MIKROSYSTEM GMBH"}, { + 0x00, 0xA0, 0x6C, "SHINDENGEN ELECTRIC MFG. CO., LTD."}, { + 0x00, 0xA0, 0x6D, "MANNESMANN TALLY CORPORATION"}, { + 0x00, 0xA0, 0x6E, "AUSTRON, INC."}, { + 0x00, 0xA0, 0x6F, "THE APPCON GROUP, INC."}, { + 0x00, 0xA0, 0x70, "COASTCOM"}, { + 0x00, 0xA0, 0x71, "VIDEO LOTTERY TECHNOLOGIES,INC"}, { + 0x00, 0xA0, 0x72, "OVATION SYSTEMS LTD."}, { + 0x00, 0xA0, 0x73, "COM21, INC."}, { + 0x00, 0xA0, 0x74, "PERCEPTION TECHNOLOGY"}, { + 0x00, 0xA0, 0x75, "MICRON TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x76, "CARDWARE LAB, INC."}, { + 0x00, 0xA0, 0x77, "FUJITSU NEXION, INC."}, { + 0x00, 0xA0, 0x78, "Marconi Communications"}, { + 0x00, 0xA0, 0x79, "ALPS ELECTRIC (USA), INC."}, { + 0x00, 0xA0, 0x7A, "ADVANCED PERIPHERALS TECHNOLOGIES, INC."}, { + 0x00, 0xA0, 0x7B, "DAWN COMPUTER INCORPORATION"}, { + 0x00, 0xA0, 0x7C, "TONYANG NYLON CO., LTD."}, { + 0x00, 0xA0, 0x7D, "SEEQ TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x7E, "AVID TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x7F, "GSM-SYNTEL, LTD."}, { + 0x00, 0xA0, 0x80, "ANTARES MICROSYSTEMS"}, { + 0x00, 0xA0, 0x81, "ALCATEL DATA NETWORKS"}, { + 0x00, 0xA0, 0x82, "NKT ELEKTRONIK A/S"}, { + 0x00, 0xA0, 0x83, "ASIMMPHONY TURKEY"}, { + 0x00, 0xA0, 0x84, "DATAPLEX PTY. LTD."}, { + 0x00, 0xA0, 0x86, "AMBER WAVE SYSTEMS, INC."}, { + 0x00, 0xA0, 0x87, "Zarlink Semiconductor Ltd."}, { + 0x00, 0xA0, 0x88, "ESSENTIAL COMMUNICATIONS"}, { + 0x00, 0xA0, 0x89, "XPOINT TECHNOLOGIES, INC."}, { + 0x00, 0xA0, 0x8A, "BROOKTROUT TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0x8B, "ASTON ELECTRONIC DESIGNS LTD."}, { + 0x00, 0xA0, 0x8C, "MultiMedia LANs, Inc."}, { + 0x00, 0xA0, 0x8D, "JACOMO CORPORATION"}, { + 0x00, 0xA0, 0x8E, "Nokia Internet Communications"}, { + 0x00, 0xA0, 0x8F, "DESKNET SYSTEMS, INC."}, { + 0x00, 0xA0, 0x90, "TimeStep Corporation"}, { + 0x00, 0xA0, 0x91, "APPLICOM INTERNATIONAL"}, { + 0x00, 0xA0, 0x92, "H. BOLLMANN MANUFACTURERS, LTD"}, { + 0x00, 0xA0, 0x93, "B/E AEROSPACE, Inc."}, { + 0x00, 0xA0, 0x94, "COMSAT CORPORATION"}, { + 0x00, 0xA0, 0x95, "ACACIA NETWORKS, INC."}, { + 0x00, 0xA0, 0x96, "MITUMI ELECTRIC CO., LTD."}, { + 0x00, 0xA0, 0x97, "JC INFORMATION SYSTEMS"}, { + 0x00, 0xA0, 0x98, "NETWORK APPLIANCE CORP."}, { + 0x00, 0xA0, 0x99, "K-NET LTD."}, { + 0x00, 0xA0, 0x9A, "NIHON KOHDEN AMERICA"}, { + 0x00, 0xA0, 0x9B, "QPSX COMMUNICATIONS, LTD."}, { + 0x00, 0xA0, 0x9C, "Xyplex, Inc."}, { + 0x00, 0xA0, 0x9D, "JOHNATHON FREEMAN TECHNOLOGIES"}, { + 0x00, 0xA0, 0x9E, "ICTV"}, { + 0x00, 0xA0, 0x9F, "COMMVISION CORP."}, { + 0x00, 0xA0, 0xA0, "COMPACT DATA, LTD."}, { + 0x00, 0xA0, 0xA1, "EPIC DATA INC."}, { + 0x00, 0xA0, 0xA2, "DIGICOM S.P.A."}, { + 0x00, 0xA0, 0xA3, "RELIABLE POWER METERS"}, { + 0x00, 0xA0, 0xA4, "MICROS SYSTEMS, INC."}, { + 0x00, 0xA0, 0xA5, "TEKNOR MICROSYSTEME, INC."}, { + 0x00, 0xA0, 0xA6, "M.I. SYSTEMS, K.K."}, { + 0x00, 0xA0, 0xA7, "VORAX CORPORATION"}, { + 0x00, 0xA0, 0xA8, "RENEX CORPORATION"}, { + 0x00, 0xA0, 0xA9, "GN NETTEST (CANADA) NAVTEL DIVISION"}, { + 0x00, 0xA0, 0xAA, "SPACELABS MEDICAL"}, { + 0x00, 0xA0, 0xAB, "NETCS INFORMATIONSTECHNIK GMBH"}, { + 0x00, 0xA0, 0xAC, "GILAT SATELLITE NETWORKS, LTD."}, { + 0x00, 0xA0, 0xAD, "MARCONI SPA"}, { + 0x00, 0xA0, 0xAE, "NUCOM SYSTEMS, INC."}, { + 0x00, 0xA0, 0xAF, "WMS INDUSTRIES"}, { + 0x00, 0xA0, 0xB0, "I-O DATA DEVICE, INC."}, { + 0x00, 0xA0, 0xB1, "FIRST VIRTUAL CORPORATION"}, { + 0x00, 0xA0, 0xB2, "SHIMA SEIKI"}, { + 0x00, 0xA0, 0xB3, "ZYKRONIX"}, { + 0x00, 0xA0, 0xB4, "TEXAS MICROSYSTEMS, INC."}, { + 0x00, 0xA0, 0xB5, "3H TECHNOLOGY"}, { + 0x00, 0xA0, 0xB6, "SANRITZ AUTOMATION CO., LTD."}, { + 0x00, 0xA0, 0xB7, "CORDANT, INC."}, { + 0x00, 0xA0, 0xB8, "SYMBIOS LOGIC INC."}, { + 0x00, 0xA0, 0xB9, "EAGLE TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0xBA, "PATTON ELECTRONICS CO."}, { + 0x00, 0xA0, 0xBB, "HILAN GMBH"}, { + 0x00, 0xA0, 0xBC, "VIASAT, INCORPORATED"}, { + 0x00, 0xA0, 0xBD, "I-TECH CORP."}, { + 0x00, 0xA0, 0xBE, + "INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP"}, { + 0x00, 0xA0, 0xBF, "WIRELESS DATA GROUP MOTOROLA"}, { + 0x00, 0xA0, 0xC0, "DIGITAL LINK CORP."}, { + 0x00, 0xA0, 0xC1, "ORTIVUS MEDICAL AB"}, { + 0x00, 0xA0, 0xC2, "R.A. SYSTEMS CO., LTD."}, { + 0x00, 0xA0, 0xC3, "UNICOMPUTER GMBH"}, { + 0x00, 0xA0, 0xC4, "CRISTIE ELECTRONICS LTD."}, { + 0x00, 0xA0, 0xC5, "ZYXEL COMMUNICATION"}, { + 0x00, 0xA0, 0xC6, "QUALCOMM INCORPORATED"}, { + 0x00, 0xA0, 0xC7, "TADIRAN TELECOMMUNICATIONS"}, { + 0x00, 0xA0, 0xC8, "ADTRAN INC."}, { + 0x00, 0xA0, 0xC9, "INTEL CORPORATION - HF1-06"}, { + 0x00, 0xA0, 0xCA, "FUJITSU DENSO LTD."}, { + 0x00, 0xA0, 0xCB, "ARK TELECOMMUNICATIONS, INC."}, { + 0x00, 0xA0, 0xCC, "LITE-ON COMMUNICATIONS, INC."}, { + 0x00, 0xA0, 0xCD, "DR. JOHANNES HEIDENHAIN GmbH"}, { + 0x00, 0xA0, 0xCE, "ASTROCOM CORPORATION"}, { + 0x00, 0xA0, 0xCF, "SOTAS, INC."}, { + 0x00, 0xA0, 0xD0, "TEN X TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0xD1, "INVENTEC CORPORATION"}, { + 0x00, 0xA0, 0xD2, "ALLIED TELESIS INTERNATIONAL CORPORATION"}, { + 0x00, 0xA0, 0xD3, "INSTEM COMPUTER SYSTEMS, LTD."}, { + 0x00, 0xA0, 0xD4, "RADIOLAN, INC."}, { + 0x00, 0xA0, 0xD5, "SIERRA WIRELESS INC."}, { + 0x00, 0xA0, 0xD6, "SBE, INC."}, { + 0x00, 0xA0, 0xD7, "KASTEN CHASE APPLIED RESEARCH"}, { + 0x00, 0xA0, 0xD8, "SPECTRA - TEK"}, { + 0x00, 0xA0, 0xD9, "CONVEX COMPUTER CORPORATION"}, { + 0x00, 0xA0, 0xDA, "INTEGRATED SYSTEMS Technology, Inc."}, { + 0x00, 0xA0, 0xDB, "FISHER & PAYKEL PRODUCTION"}, { + 0x00, 0xA0, 0xDC, "O.N. ELECTRONIC CO., LTD."}, { + 0x00, 0xA0, 0xDD, "AZONIX CORPORATION"}, { + 0x00, 0xA0, 0xDE, "YAMAHA CORPORATION"}, { + 0x00, 0xA0, 0xDF, "STS TECHNOLOGIES, INC."}, { + 0x00, 0xA0, 0xE0, "TENNYSON TECHNOLOGIES PTY LTD"}, { + 0x00, 0xA0, 0xE1, "WESTPORT RESEARCH ASSOCIATES, INC."}, { + 0x00, 0xA0, 0xE2, "KEISOKU GIKEN CORP."}, { + 0x00, 0xA0, 0xE3, "XKL SYSTEMS CORP."}, { + 0x00, 0xA0, 0xE4, "OPTIQUEST"}, { + 0x00, 0xA0, 0xE5, "NHC COMMUNICATIONS"}, { + 0x00, 0xA0, 0xE6, "DIALOGIC CORPORATION"}, { + 0x00, 0xA0, 0xE7, "CENTRAL DATA CORPORATION"}, { + 0x00, 0xA0, 0xE8, "REUTERS HOLDINGS PLC"}, { + 0x00, 0xA0, 0xE9, "ELECTRONIC RETAILING SYSTEMS INTERNATIONAL"}, { + 0x00, 0xA0, 0xEA, "ETHERCOM CORP."}, { + 0x00, 0xA0, 0xEB, "FASTCOMM COMMUNICATIONS CORP."}, { + 0x00, 0xA0, 0xEC, "TRANSMITTON LTD."}, { + 0x00, 0xA0, 0xED, "PRI AUTOMATION"}, { + 0x00, 0xA0, 0xEE, "NASHOBA NETWORKS"}, { + 0x00, 0xA0, 0xEF, "LUCIDATA LTD."}, { + 0x00, 0xA0, 0xF0, "TORONTO MICROELECTRONICS INC."}, { + 0x00, 0xA0, 0xF1, "MTI"}, { + 0x00, 0xA0, 0xF2, "INFOTEK COMMUNICATIONS, INC."}, { + 0x00, 0xA0, 0xF3, "STAUBLI"}, { + 0x00, 0xA0, 0xF4, "GE"}, { + 0x00, 0xA0, 0xF5, "RADGUARD LTD."}, { + 0x00, 0xA0, 0xF6, "AutoGas Systems Inc."}, { + 0x00, 0xA0, 0xF7, "V.I COMPUTER CORP."}, { + 0x00, 0xA0, 0xF8, "SYMBOL TECHNOLOGIES, INC."}, { + 0x00, 0xA0, 0xF9, "BINTEC COMMUNICATIONS GMBH"}, { + 0x00, 0xA0, 0xFA, "Marconi Communication GmbH"}, { + 0x00, 0xA0, 0xFB, "TORAY ENGINEERING CO., LTD."}, { + 0x00, 0xA0, 0xFC, "IMAGE SCIENCES, INC."}, { + 0x00, 0xA0, 0xFD, "SCITEX DIGITAL PRINTING, INC."}, { + 0x00, 0xA0, 0xFE, "BOSTON TECHNOLOGY, INC."}, { + 0x00, 0xA0, 0xFF, "TELLABS OPERATIONS, INC."}, { + 0x00, 0xAA, 0x00, "INTEL CORPORATION"}, { + 0x00, 0xAA, 0x01, "INTEL CORPORATION"}, { + 0x00, 0xAA, 0x02, "INTEL CORPORATION"}, { + 0x00, 0xAA, 0x3C, "OLIVETTI TELECOM SPA (OLTECO)"}, { + 0x00, 0xB0, 0x09, "Grass Valley Group"}, { + 0x00, 0xB0, 0x17, "InfoGear Technology Corp."}, { + 0x00, 0xB0, 0x19, "Casi-Rusco"}, { + 0x00, 0xB0, 0x1C, "Westport Technologies"}, { + 0x00, 0xB0, 0x1E, "Rantic Labs, Inc."}, { + 0x00, 0xB0, 0x2A, "ORSYS GmbH"}, { + 0x00, 0xB0, 0x2D, "ViaGate Technologies, Inc."}, { + 0x00, 0xB0, 0x3B, "HiQ Networks"}, { + 0x00, 0xB0, 0x48, "Marconi Communications Inc."}, { + 0x00, 0xB0, 0x4A, "Cisco Systems, Inc."}, { + 0x00, 0xB0, 0x52, "Intellon Corporation"}, { + 0x00, 0xB0, 0x64, "Cisco Systems, Inc."}, { + 0x00, 0xB0, 0x69, "Honewell Oy"}, { + 0x00, 0xB0, 0x6D, "Jones Futurex Inc."}, { + 0x00, 0xB0, 0x80, "Mannesmann Ipulsys B.V."}, { + 0x00, 0xB0, 0x86, "LocSoft Limited"}, { + 0x00, 0xB0, 0x8E, "Cisco Systems, Inc."}, { + 0x00, 0xB0, 0x91, "Transmeta Corp."}, { + 0x00, 0xB0, 0x94, "Alaris, Inc."}, { + 0x00, 0xB0, 0x9A, "Morrow Technologies Corp."}, { + 0x00, 0xB0, 0x9D, "Point Grey Research Inc."}, { + 0x00, 0xB0, 0xAC, "SIAE-Microelettronica S.p.A."}, { + 0x00, 0xB0, 0xAE, "Symmetricom"}, { + 0x00, 0xB0, 0xB3, "Xstreamis PLC"}, { + 0x00, 0xB0, 0xC2, "Cisco Systems, Inc."}, { + 0x00, 0xB0, 0xC7, "Tellabs Operations, Inc."}, { + 0x00, 0xB0, 0xCE, "TECHNOLOGY RESCUE"}, { + 0x00, 0xB0, 0xD0, "Dell Computer Corp."}, { + 0x00, 0xB0, 0xDB, "Nextcell, Inc."}, { + 0x00, 0xB0, 0xDF, "Reliable Data Technology, Inc."}, { + 0x00, 0xB0, 0xE7, "British Federal Ltd."}, { + 0x00, 0xB0, 0xEC, "EACEM"}, { + 0x00, 0xB0, 0xEE, "Ajile Systems, Inc."}, { + 0x00, 0xB0, 0xF0, "CALY NETWORKS"}, { + 0x00, 0xB0, 0xF5, "NetWorth Technologies, Inc."}, { + 0x00, 0xBB, 0x01, "OCTOTHORPE CORP."}, { + 0x00, 0xBB, 0xF0, "UNGERMANN-BASS INC."}, { + 0x00, 0xC0, 0x00, "LANOPTICS, LTD."}, { + 0x00, 0xC0, 0x01, "DIATEK PATIENT MANAGMENT"}, { + 0x00, 0xC0, 0x02, "SERCOMM CORPORATION"}, { + 0x00, 0xC0, 0x03, "GLOBALNET COMMUNICATIONS"}, { + 0x00, 0xC0, 0x04, "JAPAN BUSINESS COMPUTER CO.LTD"}, { + 0x00, 0xC0, 0x05, "LIVINGSTON ENTERPRISES, INC."}, { + 0x00, 0xC0, 0x06, "NIPPON AVIONICS CO., LTD."}, { + 0x00, 0xC0, 0x07, "PINNACLE DATA SYSTEMS, INC."}, { + 0x00, 0xC0, 0x08, "SECO SRL"}, { + 0x00, 0xC0, 0x09, "KT TECHNOLOGY (S) PTE LTD"}, { + 0x00, 0xC0, 0x0A, "MICRO CRAFT"}, { + 0x00, 0xC0, 0x0B, "NORCONTROL A.S."}, { + 0x00, 0xC0, 0x0C, "RELIA TECHNOLGIES"}, { + 0x00, 0xC0, 0x0D, "ADVANCED LOGIC RESEARCH, INC."}, { + 0x00, 0xC0, 0x0E, "PSITECH, INC."}, { + 0x00, 0xC0, 0x0F, "QUANTUM SOFTWARE SYSTEMS LTD."}, { + 0x00, 0xC0, 0x10, "HIRAKAWA HEWTECH CORP."}, { + 0x00, 0xC0, 0x11, "INTERACTIVE COMPUTING DEVICES"}, { + 0x00, 0xC0, 0x12, "NETSPAN CORPORATION"}, { + 0x00, 0xC0, 0x13, "NETRIX"}, { + 0x00, 0xC0, 0x14, "TELEMATICS CALABASAS INT'L,INC"}, { + 0x00, 0xC0, 0x15, "NEW MEDIA CORPORATION"}, { + 0x00, 0xC0, 0x16, "ELECTRONIC THEATRE CONTROLS"}, { + 0x00, 0xC0, 0x17, "FORTE NETWORKS"}, { + 0x00, 0xC0, 0x18, "LANART CORPORATION"}, { + 0x00, 0xC0, 0x19, "LEAP TECHNOLOGY, INC."}, { + 0x00, 0xC0, 0x1A, "COROMETRICS MEDICAL SYSTEMS"}, { + 0x00, 0xC0, 0x1B, "SOCKET COMMUNICATIONS, INC."}, { + 0x00, 0xC0, 0x1C, "INTERLINK COMMUNICATIONS LTD."}, { + 0x00, 0xC0, 0x1D, "GRAND JUNCTION NETWORKS, INC."}, { + 0x00, 0xC0, 0x1E, "LA FRANCAISE DES JEUX"}, { + 0x00, 0xC0, 0x1F, "S.E.R.C.E.L."}, { + 0x00, 0xC0, 0x20, "ARCO ELECTRONIC, CONTROL LTD."}, { + 0x00, 0xC0, 0x21, "NETEXPRESS"}, { + 0x00, 0xC0, 0x22, "LASERMASTER TECHNOLOGIES, INC."}, { + 0x00, 0xC0, 0x23, "TUTANKHAMON ELECTRONICS"}, { + 0x00, 0xC0, 0x24, "EDEN SISTEMAS DE COMPUTACAO SA"}, { + 0x00, 0xC0, 0x25, "DATAPRODUCTS CORPORATION"}, { + 0x00, 0xC0, 0x26, "LANS TECHNOLOGY CO., LTD."}, { + 0x00, 0xC0, 0x27, "CIPHER SYSTEMS, INC."}, { + 0x00, 0xC0, 0x28, "JASCO CORPORATION"}, { + 0x00, 0xC0, 0x29, "Nexans Deutschland AG - ANS"}, { + 0x00, 0xC0, 0x2A, "OHKURA ELECTRIC CO., LTD."}, { + 0x00, 0xC0, 0x2B, "GERLOFF GESELLSCHAFT FUR"}, { + 0x00, 0xC0, 0x2C, "CENTRUM COMMUNICATIONS, INC."}, { + 0x00, 0xC0, 0x2D, "FUJI PHOTO FILM CO., LTD."}, { + 0x00, 0xC0, 0x2E, "NETWIZ"}, { + 0x00, 0xC0, 0x2F, "OKUMA CORPORATION"}, { + 0x00, 0xC0, 0x30, "INTEGRATED ENGINEERING B. V."}, { + 0x00, 0xC0, 0x31, "DESIGN RESEARCH SYSTEMS, INC."}, { + 0x00, 0xC0, 0x32, "I-CUBED LIMITED"}, { + 0x00, 0xC0, 0x33, "TELEBIT COMMUNICATIONS APS"}, { + 0x00, 0xC0, 0x34, "TRANSACTION NETWORK"}, { + 0x00, 0xC0, 0x35, "QUINTAR COMPANY"}, { + 0x00, 0xC0, 0x36, "RAYTECH ELECTRONIC CORP."}, { + 0x00, 0xC0, 0x37, "DYNATEM"}, { + 0x00, 0xC0, 0x38, "RASTER IMAGE PROCESSING SYSTEM"}, { + 0x00, 0xC0, 0x39, "TDK SEMICONDUCTOR CORPORATION"}, { + 0x00, 0xC0, 0x3A, "MEN-MIKRO ELEKTRONIK GMBH"}, { + 0x00, 0xC0, 0x3B, "MULTIACCESS COMPUTING CORP."}, { + 0x00, 0xC0, 0x3C, "TOWER TECH S.R.L."}, { + 0x00, 0xC0, 0x3D, "WIESEMANN & THEIS GMBH"}, { + 0x00, 0xC0, 0x3E, "FA. GEBR. HELLER GMBH"}, { + 0x00, 0xC0, 0x3F, "STORES AUTOMATED SYSTEMS, INC."}, { + 0x00, 0xC0, 0x40, "ECCI"}, { + 0x00, 0xC0, 0x41, "DIGITAL TRANSMISSION SYSTEMS"}, { + 0x00, 0xC0, 0x42, "DATALUX CORP."}, { + 0x00, 0xC0, 0x43, "STRATACOM"}, { + 0x00, 0xC0, 0x44, "EMCOM CORPORATION"}, { + 0x00, 0xC0, 0x45, "ISOLATION SYSTEMS, LTD."}, { + 0x00, 0xC0, 0x46, "KEMITRON LTD."}, { + 0x00, 0xC0, 0x47, "UNIMICRO SYSTEMS, INC."}, { + 0x00, 0xC0, 0x48, "BAY TECHNICAL ASSOCIATES"}, { + 0x00, 0xC0, 0x49, "U.S. ROBOTICS, INC."}, { + 0x00, 0xC0, 0x4A, "GROUP 2000 AG"}, { + 0x00, 0xC0, 0x4B, "CREATIVE MICROSYSTEMS"}, { + 0x00, 0xC0, 0x4C, "DEPARTMENT OF FOREIGN AFFAIRS"}, { + 0x00, 0xC0, 0x4D, "MITEC, INC."}, { + 0x00, 0xC0, 0x4E, "COMTROL CORPORATION"}, { + 0x00, 0xC0, 0x4F, "DELL COMPUTER CORPORATION"}, { + 0x00, 0xC0, 0x50, "TOYO DENKI SEIZO K.K."}, { + 0x00, 0xC0, 0x51, "ADVANCED INTEGRATION RESEARCH"}, { + 0x00, 0xC0, 0x52, "BURR-BROWN"}, { + 0x00, 0xC0, 0x53, "DAVOX CORPORATION"}, { + 0x00, 0xC0, 0x54, "NETWORK PERIPHERALS, LTD."}, { + 0x00, 0xC0, 0x55, "MODULAR COMPUTING TECHNOLOGIES"}, { + 0x00, 0xC0, 0x56, "SOMELEC"}, { + 0x00, 0xC0, 0x57, "MYCO ELECTRONICS"}, { + 0x00, 0xC0, 0x58, "DATAEXPERT CORP."}, { + 0x00, 0xC0, 0x59, "NIPPON DENSO CO., LTD."}, { + 0x00, 0xC0, 0x5A, "SEMAPHORE COMMUNICATIONS CORP."}, { + 0x00, 0xC0, 0x5B, "NETWORKS NORTHWEST, INC."}, { + 0x00, 0xC0, 0x5C, "ELONEX PLC"}, { + 0x00, 0xC0, 0x5D, "L&N TECHNOLOGIES"}, { + 0x00, 0xC0, 0x5E, "VARI-LITE, INC."}, { + 0x00, 0xC0, 0x5F, "FINE-PAL COMPANY LIMITED"}, { + 0x00, 0xC0, 0x60, "ID SCANDINAVIA AS"}, { + 0x00, 0xC0, 0x61, "SOLECTEK CORPORATION"}, { + 0x00, 0xC0, 0x62, "IMPULSE TECHNOLOGY"}, { + 0x00, 0xC0, 0x63, "MORNING STAR TECHNOLOGIES, INC"}, { + 0x00, 0xC0, 0x64, "GENERAL DATACOMM IND. INC."}, { + 0x00, 0xC0, 0x65, "SCOPE COMMUNICATIONS, INC."}, { + 0x00, 0xC0, 0x66, "DOCUPOINT, INC."}, { + 0x00, 0xC0, 0x67, "UNITED BARCODE INDUSTRIES"}, { + 0x00, 0xC0, 0x68, "PHILIP DRAKE ELECTRONICS LTD."}, { + 0x00, 0xC0, 0x69, "ADAPTIVE BROADBAND CORPORATION"}, { + 0x00, 0xC0, 0x6A, "ZAHNER-ELEKTRIK GMBH & CO. KG"}, { + 0x00, 0xC0, 0x6B, "OSI PLUS CORPORATION"}, { + 0x00, 0xC0, 0x6C, "SVEC COMPUTER CORP."}, { + 0x00, 0xC0, 0x6D, "BOCA RESEARCH, INC."}, { + 0x00, 0xC0, 0x6E, "HAFT TECHNOLOGY, INC."}, { + 0x00, 0xC0, 0x6F, "KOMATSU LTD."}, { + 0x00, 0xC0, 0x70, "SECTRA SECURE-TRANSMISSION AB"}, { + 0x00, 0xC0, 0x71, "AREANEX COMMUNICATIONS, INC."}, { + 0x00, 0xC0, 0x72, "KNX LTD."}, { + 0x00, 0xC0, 0x73, "XEDIA CORPORATION"}, { + 0x00, 0xC0, 0x74, "TOYODA AUTOMATIC LOOM"}, { + 0x00, 0xC0, 0x75, "XANTE CORPORATION"}, { + 0x00, 0xC0, 0x76, "I-DATA INTERNATIONAL A-S"}, { + 0x00, 0xC0, 0x77, "DAEWOO TELECOM LTD."}, { + 0x00, 0xC0, 0x78, "COMPUTER SYSTEMS ENGINEERING"}, { + 0x00, 0xC0, 0x79, "FONSYS CO.,LTD."}, { + 0x00, 0xC0, 0x7A, "PRIVA B.V."}, { + 0x00, 0xC0, 0x7B, "ASCEND COMMUNICATIONS, INC."}, { + 0x00, 0xC0, 0x7C, "HIGHTECH INFORMATION"}, { + 0x00, 0xC0, 0x7D, "RISC DEVELOPMENTS LTD."}, { + 0x00, 0xC0, 0x7E, "KUBOTA CORPORATION ELECTRONIC"}, { + 0x00, 0xC0, 0x7F, "NUPON COMPUTING CORP."}, { + 0x00, 0xC0, 0x80, "NETSTAR, INC."}, { + 0x00, 0xC0, 0x81, "METRODATA LTD."}, { + 0x00, 0xC0, 0x82, "MOORE PRODUCTS CO."}, { + 0x00, 0xC0, 0x83, "TRACE MOUNTAIN PRODUCTS, INC."}, { + 0x00, 0xC0, 0x84, "DATA LINK CORP. LTD."}, { + 0x00, 0xC0, 0x85, "ELECTRONICS FOR IMAGING, INC."}, { + 0x00, 0xC0, 0x86, "THE LYNK CORPORATION"}, { + 0x00, 0xC0, 0x87, "UUNET TECHNOLOGIES, INC."}, { + 0x00, 0xC0, 0x88, "EKF ELEKTRONIK GMBH"}, { + 0x00, 0xC0, 0x89, "TELINDUS DISTRIBUTION"}, { + 0x00, 0xC0, 0x8A, "LAUTERBACH DATENTECHNIK GMBH"}, { + 0x00, 0xC0, 0x8B, "RISQ MODULAR SYSTEMS, INC."}, { + 0x00, 0xC0, 0x8C, "PERFORMANCE TECHNOLOGIES, INC."}, { + 0x00, 0xC0, 0x8D, "TRONIX PRODUCT DEVELOPMENT"}, { + 0x00, 0xC0, 0x8E, "NETWORK INFORMATION TECHNOLOGY"}, { + 0x00, 0xC0, 0x8F, "MATSUSHITA ELECTRIC WORKS, LTD"}, { + 0x00, 0xC0, 0x90, "PRAIM S.R.L."}, { + 0x00, 0xC0, 0x91, "JABIL CIRCUIT, INC."}, { + 0x00, 0xC0, 0x92, "MENNEN MEDICAL INC."}, { + 0x00, 0xC0, 0x93, "ALTA RESEARCH CORP."}, { + 0x00, 0xC0, 0x94, "VMX INC."}, { + 0x00, 0xC0, 0x95, "ZNYX"}, { + 0x00, 0xC0, 0x96, "TAMURA CORPORATION"}, { + 0x00, 0xC0, 0x97, "ARCHIPEL SA"}, { + 0x00, 0xC0, 0x98, "CHUNTEX ELECTRONIC CO., LTD."}, { + 0x00, 0xC0, 0x99, "YOSHIKI INDUSTRIAL CO.,LTD."}, { + 0x00, 0xC0, 0x9A, "PHOTONICS CORPORATION"}, { + 0x00, 0xC0, 0x9B, "RELIANCE COMM/TEC, R-TEC"}, { + 0x00, 0xC0, 0x9C, "TOA ELECTRONIC LTD."}, { + 0x00, 0xC0, 0x9D, "DISTRIBUTED SYSTEMS INT'L, INC"}, { + 0x00, 0xC0, 0x9E, "CACHE COMPUTERS, INC."}, { + 0x00, 0xC0, 0x9F, "QUANTA COMPUTER, INC."}, { + 0x00, 0xC0, 0xA0, "ADVANCE MICRO RESEARCH, INC."}, { + 0x00, 0xC0, 0xA1, "TOKYO DENSHI SEKEI CO."}, { + 0x00, 0xC0, 0xA2, "INTERMEDIUM A/S"}, { + 0x00, 0xC0, 0xA3, "DUAL ENTERPRISES CORPORATION"}, { + 0x00, 0xC0, 0xA4, "UNIGRAF OY"}, { + 0x00, 0xC0, 0xA5, "DICKENS DATA SYSTEMS"}, { + 0x00, 0xC0, 0xA6, "EXICOM AUSTRALIA PTY. LTD"}, { + 0x00, 0xC0, 0xA7, "SEEL LTD."}, { + 0x00, 0xC0, 0xA8, "GVC CORPORATION"}, { + 0x00, 0xC0, 0xA9, "BARRON MCCANN LTD."}, { + 0x00, 0xC0, 0xAA, "SILICON VALLEY COMPUTER"}, { + 0x00, 0xC0, 0xAB, "Telco Systems, Inc."}, { + 0x00, 0xC0, 0xAC, "GAMBIT COMPUTER COMMUNICATIONS"}, { + 0x00, 0xC0, 0xAD, "MARBEN COMMUNICATION SYSTEMS"}, { + 0x00, 0xC0, 0xAE, "TOWERCOM CO. INC. DBA PC HOUSE"}, { + 0x00, 0xC0, 0xAF, "TEKLOGIX INC."}, { + 0x00, 0xC0, 0xB0, "GCC TECHNOLOGIES,INC."}, { + 0x00, 0xC0, 0xB1, "GENIUS NET CO."}, { + 0x00, 0xC0, 0xB2, "NORAND CORPORATION"}, { + 0x00, 0xC0, 0xB3, "COMSTAT DATACOMM CORPORATION"}, { + 0x00, 0xC0, 0xB4, "MYSON TECHNOLOGY, INC."}, { + 0x00, 0xC0, 0xB5, "CORPORATE NETWORK SYSTEMS,INC."}, { + 0x00, 0xC0, 0xB6, "MERIDIAN DATA, INC."}, { + 0x00, 0xC0, 0xB7, "AMERICAN POWER CONVERSION CORP"}, { + 0x00, 0xC0, 0xB8, "FRASER'S HILL LTD."}, { + 0x00, 0xC0, 0xB9, "FUNK SOFTWARE, INC."}, { + 0x00, 0xC0, 0xBA, "NETVANTAGE"}, { + 0x00, 0xC0, 0xBB, "FORVAL CREATIVE, INC."}, { + 0x00, 0xC0, 0xBC, "TELECOM AUSTRALIA/CSSC"}, { + 0x00, 0xC0, 0xBD, "INEX TECHNOLOGIES, INC."}, { + 0x00, 0xC0, 0xBE, "ALCATEL - SEL"}, { + 0x00, 0xC0, 0xBF, "TECHNOLOGY CONCEPTS, LTD."}, { + 0x00, 0xC0, 0xC0, "SHORE MICROSYSTEMS, INC."}, { + 0x00, 0xC0, 0xC1, "QUAD/GRAPHICS, INC."}, { + 0x00, 0xC0, 0xC2, "INFINITE NETWORKS LTD."}, { + 0x00, 0xC0, 0xC3, "ACUSON COMPUTED SONOGRAPHY"}, { + 0x00, 0xC0, 0xC4, "COMPUTER OPERATIONAL"}, { + 0x00, 0xC0, 0xC5, "SID INFORMATICA"}, { + 0x00, 0xC0, 0xC6, "PERSONAL MEDIA CORP."}, { + 0x00, 0xC0, 0xC7, "SPARKTRUM MICROSYSTEMS, INC."}, { + 0x00, 0xC0, 0xC8, "MICRO BYTE PTY. LTD."}, { + 0x00, 0xC0, 0xC9, "ELSAG BAILEY PROCESS"}, { + 0x00, 0xC0, 0xCA, "ALFA, INC."}, { + 0x00, 0xC0, 0xCB, "CONTROL TECHNOLOGY CORPORATION"}, { + 0x00, 0xC0, 0xCC, "TELESCIENCES CO SYSTEMS, INC."}, { + 0x00, 0xC0, 0xCD, "COMELTA, S.A."}, { + 0x00, 0xC0, 0xCE, "CEI SYSTEMS & ENGINEERING PTE"}, { + 0x00, 0xC0, 0xCF, "IMATRAN VOIMA OY"}, { + 0x00, 0xC0, 0xD0, "RATOC SYSTEM INC."}, { + 0x00, 0xC0, 0xD1, "COMTREE TECHNOLOGY CORPORATION"}, { + 0x00, 0xC0, 0xD2, "SYNTELLECT, INC."}, { + 0x00, 0xC0, 0xD3, "OLYMPUS IMAGE SYSTEMS, INC."}, { + 0x00, 0xC0, 0xD4, "AXON NETWORKS, INC."}, { + 0x00, 0xC0, 0xD5, "QUANCOM ELECTRONIC GMBH"}, { + 0x00, 0xC0, 0xD6, "J1 SYSTEMS, INC."}, { + 0x00, 0xC0, 0xD7, "TAIWAN TRADING CENTER DBA"}, { + 0x00, 0xC0, 0xD8, "UNIVERSAL DATA SYSTEMS"}, { + 0x00, 0xC0, 0xD9, "QUINTE NETWORK CONFIDENTIALITY"}, { + 0x00, 0xC0, 0xDA, "NICE SYSTEMS LTD."}, { + 0x00, 0xC0, 0xDB, "IPC CORPORATION (PTE) LTD."}, { + 0x00, 0xC0, 0xDC, "EOS TECHNOLOGIES, INC."}, { + 0x00, 0xC0, 0xDD, "QLogic Corporation"}, { + 0x00, 0xC0, 0xDE, "ZCOMM, INC."}, { + 0x00, 0xC0, 0xDF, "KYE SYSTEMS CORP."}, { + 0x00, 0xC0, 0xE0, "DSC COMMUNICATION CORP."}, { + 0x00, 0xC0, 0xE1, "SONIC SOLUTIONS"}, { + 0x00, 0xC0, 0xE2, "CALCOMP, INC."}, { + 0x00, 0xC0, 0xE3, "OSITECH COMMUNICATIONS, INC."}, { + 0x00, 0xC0, 0xE4, "SIEMENS BUILDING"}, { + 0x00, 0xC0, 0xE5, "GESPAC, S.A."}, { + 0x00, 0xC0, 0xE6, "Verilink Corporation"}, { + 0x00, 0xC0, 0xE7, "FIBERDATA AB"}, { + 0x00, 0xC0, 0xE8, "PLEXCOM, INC."}, { + 0x00, 0xC0, 0xE9, "OAK SOLUTIONS, LTD."}, { + 0x00, 0xC0, 0xEA, "ARRAY TECHNOLOGY LTD."}, { + 0x00, 0xC0, 0xEB, "SEH COMPUTERTECHNIK GMBH"}, { + 0x00, 0xC0, 0xEC, "DAUPHIN TECHNOLOGY"}, { + 0x00, 0xC0, 0xED, "US ARMY ELECTRONIC"}, { + 0x00, 0xC0, 0xEE, "KYOCERA CORPORATION"}, { + 0x00, 0xC0, 0xEF, "ABIT CORPORATION"}, { + 0x00, 0xC0, 0xF0, "KINGSTON TECHNOLOGY CORP."}, { + 0x00, 0xC0, 0xF1, "SHINKO ELECTRIC CO., LTD."}, { + 0x00, 0xC0, 0xF2, "TRANSITION NETWORKS"}, { + 0x00, 0xC0, 0xF3, "NETWORK COMMUNICATIONS CORP."}, { + 0x00, 0xC0, 0xF4, "INTERLINK SYSTEM CO., LTD."}, { + 0x00, 0xC0, 0xF5, "METACOMP, INC."}, { + 0x00, 0xC0, 0xF6, "CELAN TECHNOLOGY INC."}, { + 0x00, 0xC0, 0xF7, "ENGAGE COMMUNICATION, INC."}, { + 0x00, 0xC0, 0xF8, "ABOUT COMPUTING INC."}, { + 0x00, 0xC0, 0xF9, "HARRIS AND JEFFRIES, INC."}, { + 0x00, 0xC0, 0xFA, "CANARY COMMUNICATIONS, INC."}, { + 0x00, 0xC0, 0xFB, "ADVANCED TECHNOLOGY LABS"}, { + 0x00, 0xC0, 0xFC, "ELASTIC REALITY, INC."}, { + 0x00, 0xC0, 0xFD, "PROSUM"}, { + 0x00, 0xC0, 0xFE, "APTEC COMPUTER SYSTEMS, INC."}, { + 0x00, 0xC0, 0xFF, "DOT HILL SYSTEMS CORPORATION"}, { + 0x00, 0xCB, 0xBD, "Cambridge Broadband Ltd."}, { + 0x00, 0xCF, 0x1C, "COMMUNICATION MACHINERY CORP."}, { + 0x00, 0xD0, 0x00, "FERRAN SCIENTIFIC, INC."}, { + 0x00, 0xD0, 0x01, "VST TECHNOLOGIES, INC."}, { + 0x00, 0xD0, 0x02, "DITECH CORPORATION"}, { + 0x00, 0xD0, 0x03, "COMDA ENTERPRISES CORP."}, { + 0x00, 0xD0, 0x04, "PENTACOM LTD."}, { + 0x00, 0xD0, 0x05, "ZHS ZEITMANAGEMENTSYSTEME"}, { + 0x00, 0xD0, 0x06, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0x07, "MIC ASSOCIATES, INC."}, { + 0x00, 0xD0, 0x08, "MACTELL CORPORATION"}, { + 0x00, 0xD0, 0x09, "HSING TECH. ENTERPRISE CO. LTD"}, { + 0x00, 0xD0, 0x0A, "LANACCESS TELECOM S.A."}, { + 0x00, 0xD0, 0x0B, "RHK TECHNOLOGY, INC."}, { + 0x00, 0xD0, 0x0C, "SNIJDER MICRO SYSTEMS"}, { + 0x00, 0xD0, 0x0D, "MICROMERITICS INSTRUMENT"}, { + 0x00, 0xD0, 0x0E, "PLURIS, INC."}, { + 0x00, 0xD0, 0x0F, "SPEECH DESIGN GMBH"}, { + 0x00, 0xD0, 0x10, "CONVERGENT NETWORKS, INC."}, { + 0x00, 0xD0, 0x11, "PRISM VIDEO, INC."}, { + 0x00, 0xD0, 0x12, "GATEWORKS CORP."}, { + 0x00, 0xD0, 0x13, "PRIMEX AEROSPACE COMPANY"}, { + 0x00, 0xD0, 0x14, "ROOT, INC."}, { + 0x00, 0xD0, 0x15, "UNIVEX MICROTECHNOLOGY CORP."}, { + 0x00, 0xD0, 0x16, "SCM MICROSYSTEMS, INC."}, { + 0x00, 0xD0, 0x17, "SYNTECH INFORMATION CO., LTD."}, { + 0x00, 0xD0, 0x18, "QWES. COM, INC."}, { + 0x00, 0xD0, 0x19, "DAINIPPON SCREEN CORPORATE"}, { + 0x00, 0xD0, 0x1A, "URMET SUD S.P.A."}, { + 0x00, 0xD0, 0x1B, "MIMAKI ENGINEERING CO., LTD."}, { + 0x00, 0xD0, 0x1C, "SBS TECHNOLOGIES,"}, { + 0x00, 0xD0, 0x1D, "FURUNO ELECTRIC CO., LTD."}, { + 0x00, 0xD0, 0x1E, "PINGTEL CORP."}, { + 0x00, 0xD0, 0x1F, "CTAM PTY. LTD."}, { + 0x00, 0xD0, 0x20, "AIM SYSTEM, INC."}, { + 0x00, 0xD0, 0x21, "REGENT ELECTRONICS CORP."}, { + 0x00, 0xD0, 0x22, "INCREDIBLE TECHNOLOGIES, INC."}, { + 0x00, 0xD0, 0x23, "INFORTREND TECHNOLOGY, INC."}, { + 0x00, 0xD0, 0x24, "Cognex Corporation"}, { + 0x00, 0xD0, 0x25, "XROSSTECH, INC."}, { + 0x00, 0xD0, 0x26, "HIRSCHMANN AUSTRIA GMBH"}, { + 0x00, 0xD0, 0x27, "APPLIED AUTOMATION, INC."}, { + 0x00, 0xD0, 0x28, "OMNEON VIDEO NETWORKS"}, { + 0x00, 0xD0, 0x29, "WAKEFERN FOOD CORPORATION"}, { + 0x00, 0xD0, 0x2A, "FLEXION SYSTEMS"}, { + 0x00, 0xD0, 0x2B, "JETCELL, INC."}, { + 0x00, 0xD0, 0x2C, "CAMPBELL SCIENTIFIC, INC."}, { + 0x00, 0xD0, 0x2D, "ADEMCO"}, { + 0x00, 0xD0, 0x2E, "COMMUNICATION AUTOMATION CORP."}, { + 0x00, 0xD0, 0x2F, "VLSI TECHNOLOGY INC."}, { + 0x00, 0xD0, 0x30, "SAFETRAN SYSTEMS CORP."}, { + 0x00, 0xD0, 0x31, "INDUSTRIAL LOGIC CORPORATION"}, { + 0x00, 0xD0, 0x32, "YANO ELECTRIC CO., LTD."}, { + 0x00, 0xD0, 0x33, "DALIAN DAXIAN NETWORK"}, { + 0x00, 0xD0, 0x34, "ORMEC SYSTEMS CORP."}, { + 0x00, 0xD0, 0x35, "BEHAVIOR TECH. COMPUTER CORP."}, { + 0x00, 0xD0, 0x36, "TECHNOLOGY ATLANTA CORP."}, { + 0x00, 0xD0, 0x37, "PHILIPS-DVS-LO BDR"}, { + 0x00, 0xD0, 0x38, "FIVEMERE, LTD."}, { + 0x00, 0xD0, 0x39, "UTILICOM, INC."}, { + 0x00, 0xD0, 0x3A, "ZONEWORX, INC."}, { + 0x00, 0xD0, 0x3B, "VISION PRODUCTS PTY. LTD."}, { + 0x00, 0xD0, 0x3C, "Vieo, Inc."}, { + 0x00, 0xD0, 0x3E, "ROCKETCHIPS, INC."}, { + 0x00, 0xD0, 0x3F, "AMERICAN COMMUNICATION"}, { + 0x00, 0xD0, 0x40, "SYSMATE CO., LTD."}, { + 0x00, 0xD0, 0x41, "AMIGO TECHNOLOGY CO., LTD."}, { + 0x00, 0xD0, 0x42, "MAHLO GMBH & CO. UG"}, { + 0x00, 0xD0, 0x43, "ZONAL RETAIL DATA SYSTEMS"}, { + 0x00, 0xD0, 0x44, "ALIDIAN NETWORKS, INC."}, { + 0x00, 0xD0, 0x45, "KVASER AB"}, { + 0x00, 0xD0, 0x46, "DOLBY LABORATORIES, INC."}, { + 0x00, 0xD0, 0x47, "XN TECHNOLOGIES"}, { + 0x00, 0xD0, 0x48, "ECTON, INC."}, { + 0x00, 0xD0, 0x49, "IMPRESSTEK CO., LTD."}, { + 0x00, 0xD0, 0x4A, "PRESENCE TECHNOLOGY GMBH"}, { + 0x00, 0xD0, 0x4B, "LA CIE GROUP S.A."}, { + 0x00, 0xD0, 0x4C, "EUROTEL TELECOM LTD."}, { + 0x00, 0xD0, 0x4D, "DIV OF RESEARCH & STATISTICS"}, { + 0x00, 0xD0, 0x4E, "LOGIBAG"}, { + 0x00, 0xD0, 0x4F, "BITRONICS, INC."}, { + 0x00, 0xD0, 0x50, "ISKRATEL"}, { + 0x00, 0xD0, 0x51, "O2 MICRO, INC."}, { + 0x00, 0xD0, 0x52, "ASCEND COMMUNICATIONS, INC."}, { + 0x00, 0xD0, 0x53, "CONNECTED SYSTEMS"}, { + 0x00, 0xD0, 0x54, "SAS INSTITUTE INC."}, { + 0x00, 0xD0, 0x55, "KATHREIN-WERKE KG"}, { + 0x00, 0xD0, 0x56, "SOMAT CORPORATION"}, { + 0x00, 0xD0, 0x57, "ULTRAK, INC."}, { + 0x00, 0xD0, 0x58, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0x59, "AMBIT MICROSYSTEMS CORP."}, { + 0x00, 0xD0, 0x5A, "SYMBIONICS, LTD."}, { + 0x00, 0xD0, 0x5B, "ACROLOOP MOTION CONTROL"}, { + 0x00, 0xD0, 0x5C, "TECHNOTREND SYSTEMTECHNIK GMBH"}, { + 0x00, 0xD0, 0x5D, "INTELLIWORXX, INC."}, { + 0x00, 0xD0, 0x5E, "STRATABEAM TECHNOLOGY, INC."}, { + 0x00, 0xD0, 0x5F, "VALCOM, INC."}, { + 0x00, 0xD0, 0x60, "PANASONIC EUROPEAN"}, { + 0x00, 0xD0, 0x61, "TREMON ENTERPRISES CO., LTD."}, { + 0x00, 0xD0, 0x62, "DIGIGRAM"}, { + 0x00, 0xD0, 0x63, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0x64, "MULTITEL"}, { + 0x00, 0xD0, 0x65, "TOKO ELECTRIC"}, { + 0x00, 0xD0, 0x66, "WINTRISS ENGINEERING CORP."}, { + 0x00, 0xD0, 0x67, "CAMPIO COMMUNICATIONS"}, { + 0x00, 0xD0, 0x68, "IWILL CORPORATION"}, { + 0x00, 0xD0, 0x69, "TECHNOLOGIC SYSTEMS"}, { + 0x00, 0xD0, 0x6A, "LINKUP SYSTEMS CORPORATION"}, { + 0x00, 0xD0, 0x6B, "SR TELECOM INC."}, { + 0x00, 0xD0, 0x6C, "SHAREWAVE, INC."}, { + 0x00, 0xD0, 0x6D, "ACRISON, INC."}, { + 0x00, 0xD0, 0x6E, "TRENDVIEW RECORDERS LTD."}, { + 0x00, 0xD0, 0x6F, "KMC CONTROLS"}, { + 0x00, 0xD0, 0x70, "LONG WELL ELECTRONICS CORP."}, { + 0x00, 0xD0, 0x71, "ECHELON CORP."}, { + 0x00, 0xD0, 0x72, "BROADLOGIC"}, { + 0x00, 0xD0, 0x73, "ACN ADVANCED COMMUNICATIONS"}, { + 0x00, 0xD0, 0x74, "TAQUA SYSTEMS, INC."}, { + 0x00, 0xD0, 0x75, "ALARIS MEDICAL SYSTEMS, INC."}, { + 0x00, 0xD0, 0x76, "MERRILL LYNCH & CO., INC."}, { + 0x00, 0xD0, 0x77, "LUCENT TECHNOLOGIES"}, { + 0x00, 0xD0, 0x78, "ELTEX OF SWEDEN AB"}, { + 0x00, 0xD0, 0x79, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0x7A, "AMAQUEST COMPUTER CORP."}, { + 0x00, 0xD0, 0x7B, "COMCAM INTERNATIONAL LTD."}, { + 0x00, 0xD0, 0x7C, "KOYO ELECTRONICS INC. CO.,LTD."}, { + 0x00, 0xD0, 0x7D, "COSINE COMMUNICATIONS"}, { + 0x00, 0xD0, 0x7E, "KEYCORP LTD."}, { + 0x00, 0xD0, 0x7F, "STRATEGY & TECHNOLOGY, LIMITED"}, { + 0x00, 0xD0, 0x80, "EXABYTE CORPORATION"}, { + 0x00, 0xD0, 0x81, "REAL TIME DEVICES USA, INC."}, { + 0x00, 0xD0, 0x82, "IOWAVE INC."}, { + 0x00, 0xD0, 0x83, "INVERTEX, INC."}, { + 0x00, 0xD0, 0x84, "NEXCOMM SYSTEMS, INC."}, { + 0x00, 0xD0, 0x85, "OTIS ELEVATOR COMPANY"}, { + 0x00, 0xD0, 0x86, "FOVEON, INC."}, { + 0x00, 0xD0, 0x87, "MICROFIRST INC."}, { + 0x00, 0xD0, 0x88, "MAINSAIL NETWORKS, INC."}, { + 0x00, 0xD0, 0x89, "DYNACOLOR, INC."}, { + 0x00, 0xD0, 0x8A, "PHOTRON USA"}, { + 0x00, 0xD0, 0x8B, "ADVA Limited"}, { + 0x00, 0xD0, 0x8C, "GENOA TECHNOLOGY, INC."}, { + 0x00, 0xD0, 0x8D, "PHOENIX GROUP, INC."}, { + 0x00, 0xD0, 0x8E, "NVISION INC."}, { + 0x00, 0xD0, 0x8F, "ARDENT TECHNOLOGIES, INC."}, { + 0x00, 0xD0, 0x90, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0x91, "SMARTSAN SYSTEMS, INC."}, { + 0x00, 0xD0, 0x92, "GLENAYRE WESTERN MULTIPLEX"}, { + 0x00, 0xD0, 0x93, "TQ - COMPONENTS GMBH"}, { + 0x00, 0xD0, 0x94, "TIMELINE VISTA, INC."}, { + 0x00, 0xD0, 0x95, "XYLAN CORPORATION"}, { + 0x00, 0xD0, 0x96, "3COM EUROPE LTD."}, { + 0x00, 0xD0, 0x97, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0x98, "Photon Dynamics Canada Inc."}, { + 0x00, 0xD0, 0x99, "ELCARD OY"}, { + 0x00, 0xD0, 0x9A, "FILANET CORPORATION"}, { + 0x00, 0xD0, 0x9B, "SPECTEL LTD."}, { + 0x00, 0xD0, 0x9C, "KAPADIA COMMUNICATIONS"}, { + 0x00, 0xD0, 0x9D, "VERIS INDUSTRIES"}, { + 0x00, 0xD0, 0x9E, "2WIRE, INC."}, { + 0x00, 0xD0, 0x9F, "NOVTEK TEST SYSTEMS"}, { + 0x00, 0xD0, 0xA0, "MIPS DENMARK"}, { + 0x00, 0xD0, 0xA1, "OSKAR VIERLING GMBH + CO. KG"}, { + 0x00, 0xD0, 0xA2, "INTEGRATED DEVICE"}, { + 0x00, 0xD0, 0xA3, "VOCAL DATA, INC."}, { + 0x00, 0xD0, 0xA4, "ALANTRO COMMUNICATIONS"}, { + 0x00, 0xD0, 0xA5, "AMERICAN ARIUM"}, { + 0x00, 0xD0, 0xA6, "LANBIRD TECHNOLOGY CO., LTD."}, { + 0x00, 0xD0, 0xA7, "TOKYO SOKKI KENKYUJO CO., LTD."}, { + 0x00, 0xD0, 0xA8, "NETWORK ENGINES, INC."}, { + 0x00, 0xD0, 0xA9, "SHINANO KENSHI CO., LTD."}, { + 0x00, 0xD0, 0xAA, "CHASE COMMUNICATIONS"}, { + 0x00, 0xD0, 0xAB, "DELTAKABEL TELECOM CV"}, { + 0x00, 0xD0, 0xAC, "GRAYSON WIRELESS"}, { + 0x00, 0xD0, 0xAD, "TL INDUSTRIES"}, { + 0x00, 0xD0, 0xAE, "ORESIS COMMUNICATIONS, INC."}, { + 0x00, 0xD0, 0xAF, "CUTLER-HAMMER, INC."}, { + 0x00, 0xD0, 0xB0, "BITSWITCH LTD."}, { + 0x00, 0xD0, 0xB1, "OMEGA ELECTRONICS SA"}, { + 0x00, 0xD0, 0xB2, "XIOTECH CORPORATION"}, { + 0x00, 0xD0, 0xB3, "DRS FLIGHT SAFETY AND"}, { + 0x00, 0xD0, 0xB4, "KATSUJIMA CO., LTD."}, { + 0x00, 0xD0, 0xB5, "DOTCOM"}, { + 0x00, 0xD0, 0xB6, "CRESCENT NETWORKS, INC."}, { + 0x00, 0xD0, 0xB7, "INTEL CORPORATION"}, { + 0x00, 0xD0, 0xB8, "IOMEGA CORP."}, { + 0x00, 0xD0, 0xB9, "MICROTEK INTERNATIONAL, INC."}, { + 0x00, 0xD0, 0xBA, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0xBB, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0xBC, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0xBD, "SICAN GMBH"}, { + 0x00, 0xD0, 0xBE, "EMUTEC INC."}, { + 0x00, 0xD0, 0xBF, "PIVOTAL TECHNOLOGIES"}, { + 0x00, 0xD0, 0xC0, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0xC1, "HARMONIC DATA SYSTEMS, LTD."}, { + 0x00, 0xD0, 0xC2, "BALTHAZAR TECHNOLOGY AB"}, { + 0x00, 0xD0, 0xC3, "VIVID TECHNOLOGY PTE, LTD."}, { + 0x00, 0xD0, 0xC4, "TERATECH CORPORATION"}, { + 0x00, 0xD0, 0xC5, "COMPUTATIONAL SYSTEMS, INC."}, { + 0x00, 0xD0, 0xC6, "THOMAS & BETTS CORP."}, { + 0x00, 0xD0, 0xC7, "PATHWAY, INC."}, { + 0x00, 0xD0, 0xC8, "I/O CONSULTING A/S"}, { + 0x00, 0xD0, 0xC9, "ADVANTECH CO., LTD."}, { + 0x00, 0xD0, 0xCA, "INTRINSYC SOFTWARE INC."}, { + 0x00, 0xD0, 0xCB, "DASAN CO., LTD."}, { + 0x00, 0xD0, 0xCC, "TECHNOLOGIES LYRE INC."}, { + 0x00, 0xD0, 0xCD, "ATAN TECHNOLOGY INC."}, { + 0x00, 0xD0, 0xCE, "ASYST ELECTRONIC"}, { + 0x00, 0xD0, 0xCF, "MORETON BAY"}, { + 0x00, 0xD0, 0xD0, "ZHONGXING TELECOM LTD."}, { + 0x00, 0xD0, 0xD1, "SIROCCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0xD2, "EPILOG CORPORATION"}, { + 0x00, 0xD0, 0xD3, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0xD4, "V-BITS, INC."}, { + 0x00, 0xD0, 0xD5, "GRUNDIG AG"}, { + 0x00, 0xD0, 0xD6, "AETHRA TELECOMUNICAZIONI"}, { + 0x00, 0xD0, 0xD7, "B2C2, INC."}, { + 0x00, 0xD0, 0xD8, "3Com Corporation"}, { + 0x00, 0xD0, 0xD9, "DEDICATED MICROCOMPUTERS"}, { + 0x00, 0xD0, 0xDA, "TAICOM DATA SYSTEMS CO., LTD."}, { + 0x00, 0xD0, 0xDB, "MCQUAY INTERNATIONAL"}, { + 0x00, 0xD0, 0xDC, "MODULAR MINING SYSTEMS, INC."}, { + 0x00, 0xD0, 0xDD, "SUNRISE TELECOM, INC."}, { + 0x00, 0xD0, 0xDE, "PHILIPS MULTIMEDIA NETWORK"}, { + 0x00, 0xD0, 0xDF, "KUZUMI ELECTRONICS, INC."}, { + 0x00, 0xD0, 0xE0, "DOOIN ELECTRONICS CO."}, { + 0x00, 0xD0, 0xE1, "AVIONITEK ISRAEL INC."}, { + 0x00, 0xD0, 0xE2, "MRT MICRO, INC."}, { + 0x00, 0xD0, 0xE3, "ELE-CHEM ENGINEERING CO., LTD."}, { + 0x00, 0xD0, 0xE4, "CISCO SYSTEMS, INC."}, { + 0x00, 0xD0, 0xE5, "SOLIDUM SYSTEMS CORP."}, { + 0x00, 0xD0, 0xE6, "IBOND INC."}, { + 0x00, 0xD0, 0xE7, "VCON TELECOMMUNICATION LTD."}, { + 0x00, 0xD0, 0xE8, "MAC SYSTEM CO., LTD."}, { + 0x00, 0xD0, 0xE9, "ADVANTAGE CENTURY"}, { + 0x00, 0xD0, 0xEA, "NEXTONE COMMUNICATIONS, INC."}, { + 0x00, 0xD0, 0xEB, "LIGHTERA NETWORKS, INC."}, { + 0x00, 0xD0, 0xEC, "NAKAYO TELECOMMUNICATIONS, INC"}, { + 0x00, 0xD0, 0xED, "XIOX"}, { + 0x00, 0xD0, 0xEE, "DICTAPHONE CORPORATION"}, { + 0x00, 0xD0, 0xEF, "IGT"}, { + 0x00, 0xD0, 0xF0, "CONVISION TECHNOLOGY GMBH"}, { + 0x00, 0xD0, 0xF1, "SEGA ENTERPRISES, LTD."}, { + 0x00, 0xD0, 0xF2, "MONTEREY NETWORKS"}, { + 0x00, 0xD0, 0xF3, "SOLARI DI UDINE SPA"}, { + 0x00, 0xD0, 0xF4, "CARINTHIAN TECH INSTITUTE"}, { + 0x00, 0xD0, 0xF5, "ORANGE MICRO, INC."}, { + 0x00, 0xD0, 0xF6, "Alcatel Canada"}, { + 0x00, 0xD0, 0xF7, "NEXT NETS CORPORATION"}, { + 0x00, 0xD0, 0xF8, "FUJIAN STAR TERMINAL"}, { + 0x00, 0xD0, 0xF9, "ACUTE COMMUNICATIONS CORP."}, { + 0x00, 0xD0, 0xFA, "RACAL GUARDATA"}, { + 0x00, 0xD0, 0xFB, "TEK MICROSYSTEMS, INCORPORATED"}, { + 0x00, 0xD0, 0xFC, "GRANITE MICROSYSTEMS"}, { + 0x00, 0xD0, 0xFD, "OPTIMA TELE.COM, INC."}, { + 0x00, 0xD0, 0xFE, "ASTRAL POINT"}, { + 0x00, 0xD0, 0xFF, "CISCO SYSTEMS, INC."}, { + 0x00, 0xDD, 0x00, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x01, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x02, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x03, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x04, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x05, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x06, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x07, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x08, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x09, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x0A, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x0B, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x0C, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x0D, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x0E, "UNGERMANN-BASS INC."}, { + 0x00, 0xDD, 0x0F, "UNGERMANN-BASS INC."}, { + 0x00, 0xE0, 0x00, "FUJITSU, LTD"}, { + 0x00, 0xE0, 0x01, "STRAND LIGHTING LIMITED"}, { + 0x00, 0xE0, 0x02, "CROSSROADS SYSTEMS, INC."}, { + 0x00, 0xE0, 0x03, "NOKIA WIRELESS BUSINESS COMMUN"}, { + 0x00, 0xE0, 0x04, "PMC-SIERRA, INC."}, { + 0x00, 0xE0, 0x05, "TECHNICAL CORP."}, { + 0x00, 0xE0, 0x06, "SILICON INTEGRATED SYS. CORP."}, { + 0x00, 0xE0, 0x07, "NETWORK ALCHEMY LTD."}, { + 0x00, 0xE0, 0x08, "AMAZING CONTROLS! INC."}, { + 0x00, 0xE0, 0x09, "MARATHON TECHNOLOGIES CORP."}, { + 0x00, 0xE0, 0x0A, "DIBA, INC."}, { + 0x00, 0xE0, 0x0B, "ROOFTOP COMMUNICATIONS CORP."}, { + 0x00, 0xE0, 0x0C, "MOTOROLA"}, { + 0x00, 0xE0, 0x0D, "RADIANT SYSTEMS"}, { + 0x00, 0xE0, 0x0E, "AVALON IMAGING SYSTEMS, INC."}, { + 0x00, 0xE0, 0x0F, "SHANGHAI BAUD DATA"}, { + 0x00, 0xE0, 0x10, "HESS SB-AUTOMATENBAU GmbH"}, { + 0x00, 0xE0, 0x11, "UNIDEN SAN DIEGO R&D CENTER, INC."}, { + 0x00, 0xE0, 0x12, "PLUTO TECHNOLOGIES INTERNATIONAL INC."}, { + 0x00, 0xE0, 0x13, "EASTERN ELECTRONIC CO., LTD."}, { + 0x00, 0xE0, 0x14, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0x15, "HEIWA CORPORATION"}, { + 0x00, 0xE0, 0x16, "RAPID CITY COMMUNICATIONS"}, { + 0x00, 0xE0, 0x17, "EXXACT GmbH"}, { + 0x00, 0xE0, 0x18, "ASUSTEK COMPUTER INC."}, { + 0x00, 0xE0, 0x19, "ING. GIORDANO ELETTRONICA"}, { + 0x00, 0xE0, 0x1A, "COMTEC SYSTEMS. CO., LTD."}, { + 0x00, 0xE0, 0x1B, "SPHERE COMMUNICATIONS, INC."}, { + 0x00, 0xE0, 0x1C, "MOBILITY ELECTRONICSY"}, { + 0x00, 0xE0, 0x1D, "WebTV NETWORKS, INC."}, { + 0x00, 0xE0, 0x1E, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0x1F, "AVIDIA Systems, Inc."}, { + 0x00, 0xE0, 0x20, "TECNOMEN OY"}, { + 0x00, 0xE0, 0x21, "FREEGATE CORP."}, { + 0x00, 0xE0, 0x22, "MediaLight, Inc."}, { + 0x00, 0xE0, 0x23, "TELRAD"}, { + 0x00, 0xE0, 0x24, "GADZOOX NETWORKS"}, { + 0x00, 0xE0, 0x25, "dit CO., LTD."}, { + 0x00, 0xE0, 0x26, "EASTMAN KODAK CO."}, { + 0x00, 0xE0, 0x27, "DUX, INC."}, { + 0x00, 0xE0, 0x28, "APTIX CORPORATION"}, { + 0x00, 0xE0, 0x29, "STANDARD MICROSYSTEMS CORP."}, { + 0x00, 0xE0, 0x2A, "TANDBERG TELEVISION AS"}, { + 0x00, 0xE0, 0x2B, "EXTREME NETWORKS"}, { + 0x00, 0xE0, 0x2C, "AST COMPUTER"}, { + 0x00, 0xE0, 0x2D, "InnoMediaLogic, Inc."}, { + 0x00, 0xE0, 0x2E, "SPC ELECTRONICS CORPORATION"}, { + 0x00, 0xE0, 0x2F, "MCNS HOLDINGS, L.P."}, { + 0x00, 0xE0, 0x30, "MELITA INTERNATIONAL CORP."}, { + 0x00, 0xE0, 0x31, "HAGIWARA ELECTRIC CO., LTD."}, { + 0x00, 0xE0, 0x32, "MISYS FINANCIAL SYSTEMS, LTD."}, { + 0x00, 0xE0, 0x33, "E.E.P.D. GmbH"}, { + 0x00, 0xE0, 0x34, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0x35, "LOUGHBOROUGH SOUND IMAGES, PLC"}, { + 0x00, 0xE0, 0x36, "PIONEER CORPORATION"}, { + 0x00, 0xE0, 0x37, "CENTURY CORPORATION"}, { + 0x00, 0xE0, 0x38, "PROXIMA CORPORATION"}, { + 0x00, 0xE0, 0x39, "PARADYNE CORP."}, { + 0x00, 0xE0, 0x3A, "CABLETRON SYSTEMS, INC."}, { + 0x00, 0xE0, 0x3B, "PROMINET CORPORATION"}, { + 0x00, 0xE0, 0x3C, "AdvanSys"}, { + 0x00, 0xE0, 0x3D, "FOCON ELECTRONIC SYSTEMS A/S"}, { + 0x00, 0xE0, 0x3E, "ALFATECH, INC."}, { + 0x00, 0xE0, 0x3F, "JATON CORPORATION"}, { + 0x00, 0xE0, 0x40, "DeskStation Technology, Inc."}, { + 0x00, 0xE0, 0x41, "CSPI"}, { + 0x00, 0xE0, 0x42, "Pacom Systems Ltd."}, { + 0x00, 0xE0, 0x43, "VitalCom"}, { + 0x00, 0xE0, 0x44, "LSICS CORPORATION"}, { + 0x00, 0xE0, 0x45, "TOUCHWAVE, INC."}, { + 0x00, 0xE0, 0x46, "BENTLY NEVADA CORP."}, { + 0x00, 0xE0, 0x47, "INFOCUS SYSTEMS"}, { + 0x00, 0xE0, 0x48, "SDL COMMUNICATIONS, INC."}, { + 0x00, 0xE0, 0x49, "MICROWI ELECTRONIC GmbH"}, { + 0x00, 0xE0, 0x4A, "ENHANCED MESSAGING SYSTEMS, INC"}, { + 0x00, 0xE0, 0x4B, "JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH"}, { + 0x00, 0xE0, 0x4C, "REALTEK SEMICONDUCTOR CORP."}, { + 0x00, 0xE0, 0x4D, "INTERNET INITIATIVE JAPAN, INC"}, { + 0x00, 0xE0, 0x4E, "SANYO DENKI CO., LTD."}, { + 0x00, 0xE0, 0x4F, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0x50, "EXECUTONE INFORMATION SYSTEMS, INC."}, { + 0x00, 0xE0, 0x51, "TALX CORPORATION"}, { + 0x00, 0xE0, 0x52, "FOUNDRY NETWORKS, INC."}, { + 0x00, 0xE0, 0x53, "CELLPORT LABS, INC."}, { + 0x00, 0xE0, 0x54, "KODAI HITEC CO., LTD."}, { + 0x00, 0xE0, 0x55, "INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A."}, + { + 0x00, 0xE0, 0x56, "HOLONTECH CORPORATION"}, { + 0x00, 0xE0, 0x57, "HAN MICROTELECOM. CO., LTD."}, { + 0x00, 0xE0, 0x58, "PHASE ONE DENMARK A/S"}, { + 0x00, 0xE0, 0x59, "CONTROLLED ENVIRONMENTS, LTD."}, { + 0x00, 0xE0, 0x5A, "GALEA NETWORK SECURITY"}, { + 0x00, 0xE0, 0x5B, "WEST END SYSTEMS CORP."}, { + 0x00, 0xE0, 0x5C, + "MATSUSHITA KOTOBUKI ELECTRONICS INDUSTRIES, LTD."}, { + 0x00, 0xE0, 0x5D, "UNITEC CO., LTD."}, { + 0x00, 0xE0, 0x5E, "JAPAN AVIATION ELECTRONICS INDUSTRY, LTD."}, { + 0x00, 0xE0, 0x5F, "e-Net, Inc."}, { + 0x00, 0xE0, 0x60, "SHERWOOD"}, { + 0x00, 0xE0, 0x61, "EdgePoint Networks, Inc."}, { + 0x00, 0xE0, 0x62, "HOST ENGINEERING"}, { + 0x00, 0xE0, 0x63, "CABLETRON - YAGO SYSTEMS, INC."}, { + 0x00, 0xE0, 0x64, "SAMSUNG ELECTRONICS"}, { + 0x00, 0xE0, 0x65, "OPTICAL ACCESS INTERNATIONAL"}, { + 0x00, 0xE0, 0x66, "ProMax Systems, Inc."}, { + 0x00, 0xE0, 0x67, "eac AUTOMATION-CONSULTING GmbH"}, { + 0x00, 0xE0, 0x68, "MERRIMAC SYSTEMS INC."}, { + 0x00, 0xE0, 0x69, "JAYCOR"}, { + 0x00, 0xE0, 0x6A, "KAPSCH AG"}, { + 0x00, 0xE0, 0x6B, "W&G SPECIAL PRODUCTS"}, { + 0x00, 0xE0, 0x6C, "BALTIMORE TECHNOLOGIES, LTD."}, { + 0x00, 0xE0, 0x6D, "COMPUWARE CORPORATION"}, { + 0x00, 0xE0, 0x6E, "FAR SYSTEMS S.p.A."}, { + 0x00, 0xE0, 0x6F, "TERAYON CORP."}, { + 0x00, 0xE0, 0x70, "DH TECHNOLOGY"}, { + 0x00, 0xE0, 0x71, "EPIS MICROCOMPUTER"}, { + 0x00, 0xE0, 0x72, "LYNK"}, { + 0x00, 0xE0, 0x73, "NATIONAL AMUSEMENT NETWORK, INC."}, { + 0x00, 0xE0, 0x74, "TIERNAN COMMUNICATIONS, INC."}, { + 0x00, 0xE0, 0x75, "ATLAS COMPUTER EQUIPMENT, INC."}, { + 0x00, 0xE0, 0x76, "DEVELOPMENT CONCEPTS, INC."}, { + 0x00, 0xE0, 0x77, "WEBGEAR, INC."}, { + 0x00, 0xE0, 0x78, "BERKELEY NETWORKS"}, { + 0x00, 0xE0, 0x79, "A.T.N.R."}, { + 0x00, 0xE0, 0x7A, "MIKRODIDAKT AB"}, { + 0x00, 0xE0, 0x7B, "BAY NETWORKS"}, { + 0x00, 0xE0, 0x7C, "METTLER-TOLEDO, INC."}, { + 0x00, 0xE0, 0x7D, "NETRONIX, INC."}, { + 0x00, 0xE0, 0x7E, "WALT DISNEY IMAGINEERING"}, { + 0x00, 0xE0, 0x7F, "LOGISTISTEM s.r.l."}, { + 0x00, 0xE0, 0x80, "CONTROL RESOURCES CORPORATION"}, { + 0x00, 0xE0, 0x81, "TYAN COMPUTER CORP."}, { + 0x00, 0xE0, 0x82, "ANERMA"}, { + 0x00, 0xE0, 0x83, "JATO TECHNOLOGIES, INC."}, { + 0x00, 0xE0, 0x84, "COMPULITE R&D"}, { + 0x00, 0xE0, 0x85, "GLOBAL MAINTECH, INC."}, { + 0x00, 0xE0, 0x86, "CYBEX COMPUTER PRODUCTS"}, { + 0x00, 0xE0, 0x87, "LeCroy - Networking Productions Division"}, { + 0x00, 0xE0, 0x88, "LTX CORPORATION"}, { + 0x00, 0xE0, 0x89, "ION Networks, Inc."}, { + 0x00, 0xE0, 0x8A, "GEC AVERY, LTD."}, { + 0x00, 0xE0, 0x8B, "QLogic Corp."}, { + 0x00, 0xE0, 0x8C, "NEOPARADIGM LABS, INC."}, { + 0x00, 0xE0, 0x8D, "PRESSURE SYSTEMS, INC."}, { + 0x00, 0xE0, 0x8E, "UTSTARCOM"}, { + 0x00, 0xE0, 0x8F, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0x90, "BECKMAN LAB. AUTOMATION DIV."}, { + 0x00, 0xE0, 0x91, "LG ELECTRONICS, INC."}, { + 0x00, 0xE0, 0x92, "ADMTEK INCORPORATED"}, { + 0x00, 0xE0, 0x93, "ACKFIN NETWORKS"}, { + 0x00, 0xE0, 0x94, "OSAI SRL"}, { + 0x00, 0xE0, 0x95, "ADVANCED-VISION TECHNOLGIES CORP."}, { + 0x00, 0xE0, 0x96, "SHIMADZU CORPORATION"}, { + 0x00, 0xE0, 0x97, "CARRIER ACCESS CORPORATION"}, { + 0x00, 0xE0, 0x98, "AboCom Systems, Inc."}, { + 0x00, 0xE0, 0x99, "SAMSON AG"}, { + 0x00, 0xE0, 0x9A, "POSITRON INDUSTRIES, INC."}, { + 0x00, 0xE0, 0x9B, "ENGAGE NETWORKS, INC."}, { + 0x00, 0xE0, 0x9C, "MII"}, { + 0x00, 0xE0, 0x9D, "SARNOFF CORPORATION"}, { + 0x00, 0xE0, 0x9E, "QUANTUM CORPORATION"}, { + 0x00, 0xE0, 0x9F, "PIXEL VISION"}, { + 0x00, 0xE0, 0xA0, "WILTRON CO."}, { + 0x00, 0xE0, 0xA1, "HIMA PAUL HILDEBRANDT GmbH Co. KG"}, { + 0x00, 0xE0, 0xA2, "MICROSLATE INC."}, { + 0x00, 0xE0, 0xA3, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0xA4, "ESAOTE S.p.A."}, { + 0x00, 0xE0, 0xA5, "ComCore Semiconductor, Inc."}, { + 0x00, 0xE0, 0xA6, "TELOGY NETWORKS, INC."}, { + 0x00, 0xE0, 0xA7, "IPC INFORMATION SYSTEMS, INC."}, { + 0x00, 0xE0, 0xA8, "SAT GmbH & Co."}, { + 0x00, 0xE0, 0xA9, "FUNAI ELECTRIC CO., LTD."}, { + 0x00, 0xE0, 0xAA, "ELECTROSONIC LTD."}, { + 0x00, 0xE0, 0xAB, "DIMAT S.A."}, { + 0x00, 0xE0, 0xAC, "MIDSCO, INC."}, { + 0x00, 0xE0, 0xAD, "EES TECHNOLOGY, LTD."}, { + 0x00, 0xE0, 0xAE, "XAQTI CORPORATION"}, { + 0x00, 0xE0, 0xAF, "GENERAL DYNAMICS INFORMATION SYSTEMS"}, { + 0x00, 0xE0, 0xB0, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0xB1, "PACKET ENGINES, INC."}, { + 0x00, 0xE0, 0xB2, "TELMAX COMMUNICATIONS CORP."}, { + 0x00, 0xE0, 0xB3, "EtherWAN Systems, Inc."}, { + 0x00, 0xE0, 0xB4, "TECHNO SCOPE CO., LTD."}, { + 0x00, 0xE0, 0xB5, "ARDENT COMMUNICATIONS CORP."}, { + 0x00, 0xE0, 0xB6, "Entrada Networks"}, { + 0x00, 0xE0, 0xB7, "PI GROUP, LTD."}, { + 0x00, 0xE0, 0xB8, "GATEWAY 2000"}, { + 0x00, 0xE0, 0xB9, "BYAS SYSTEMS"}, { + 0x00, 0xE0, 0xBA, "BERGHOF AUTOMATIONSTECHNIK GmbH"}, { + 0x00, 0xE0, 0xBB, "NBX CORPORATION"}, { + 0x00, 0xE0, 0xBC, "SYMON COMMUNICATIONS, INC."}, { + 0x00, 0xE0, 0xBD, "INTERFACE SYSTEMS, INC."}, { + 0x00, 0xE0, 0xBE, "GENROCO INTERNATIONAL, INC."}, { + 0x00, 0xE0, 0xBF, "TORRENT NETWORKING TECHNOLOGIES CORP."}, { + 0x00, 0xE0, 0xC0, "SEIWA ELECTRIC MFG. CO., LTD."}, { + 0x00, 0xE0, 0xC1, "MEMOREX TELEX JAPAN, LTD."}, { + 0x00, 0xE0, 0xC2, "NECSY S.p.A."}, { + 0x00, 0xE0, 0xC3, "SAKAI SYSTEM DEVELOPMENT CORP."}, { + 0x00, 0xE0, 0xC4, "HORNER ELECTRIC, INC."}, { + 0x00, 0xE0, 0xC5, "BCOM ELECTRONICS INC."}, { + 0x00, 0xE0, 0xC6, "LINK2IT, L.L.C."}, { + 0x00, 0xE0, 0xC7, "EUROTECH SRL"}, { + 0x00, 0xE0, 0xC8, "VIRTUAL ACCESS, LTD."}, { + 0x00, 0xE0, 0xC9, "AutomatedLogic Corporation"}, { + 0x00, 0xE0, 0xCA, "BEST DATA PRODUCTS"}, { + 0x00, 0xE0, 0xCB, "RESON, INC."}, { + 0x00, 0xE0, 0xCC, "HERO SYSTEMS, LTD."}, { + 0x00, 0xE0, 0xCD, "SENSIS CORPORATION"}, { + 0x00, 0xE0, 0xCE, "ARN"}, { + 0x00, 0xE0, 0xCF, "INTEGRATED DEVICE TECHNOLOGY, INC."}, { + 0x00, 0xE0, 0xD0, "NETSPEED, INC."}, { + 0x00, 0xE0, 0xD1, "TELSIS LIMITED"}, { + 0x00, 0xE0, 0xD2, "VERSANET COMMUNICATIONS, INC."}, { + 0x00, 0xE0, 0xD3, "DATENTECHNIK GmbH"}, { + 0x00, 0xE0, 0xD4, "EXCELLENT COMPUTER"}, { + 0x00, 0xE0, 0xD5, "ARCXEL TECHNOLOGIES, INC."}, { + 0x00, 0xE0, 0xD6, "COMPUTER & COMMUNICATION RESEARCH LAB."}, { + 0x00, 0xE0, 0xD7, "SUNSHINE ELECTRONICS, INC."}, { + 0x00, 0xE0, 0xD8, "LANBit Computer, Inc."}, { + 0x00, 0xE0, 0xD9, "TAZMO CO., LTD."}, { + 0x00, 0xE0, 0xDA, "ASSURED ACCESS TECHNOLOGY, INC."}, { + 0x00, 0xE0, 0xDB, "ViaVideo Communications, Inc."}, { + 0x00, 0xE0, 0xDC, "NEXWARE CORP."}, { + 0x00, 0xE0, 0xDD, "ZENITH ELECTRONICS CORPORATION"}, { + 0x00, 0xE0, 0xDE, "DATAX NV"}, { + 0x00, 0xE0, 0xDF, "KE KOMMUNIKATIONS-ELECTRONIK"}, { + 0x00, 0xE0, 0xE0, "SI ELECTRONICS, LTD."}, { + 0x00, 0xE0, 0xE1, "G2 NETWORKS, INC."}, { + 0x00, 0xE0, 0xE2, "INNOVA CORP."}, { + 0x00, 0xE0, 0xE3, "SK-ELEKTRONIK GmbH"}, { + 0x00, 0xE0, 0xE4, "FANUC ROBOTICS NORTH AMERICA, Inc."}, { + 0x00, 0xE0, 0xE5, "CINCO NETWORKS, INC."}, { + 0x00, 0xE0, 0xE6, "INCAA DATACOM B.V."}, { + 0x00, 0xE0, 0xE7, "RAYTHEON E-SYSTEMS, INC."}, { + 0x00, 0xE0, 0xE8, "GRETACODER Data Systems AG"}, { + 0x00, 0xE0, 0xE9, "DATA LABS, INC."}, { + 0x00, 0xE0, 0xEA, "INNOVAT COMMUNICATIONS, INC."}, { + 0x00, 0xE0, 0xEB, "DIGICOM SYSTEMS, INCORPORATED"}, { + 0x00, 0xE0, 0xEC, "CELESTICA INC."}, { + 0x00, 0xE0, 0xED, "SILICOM, LTD."}, { + 0x00, 0xE0, 0xEE, "MAREL HF"}, { + 0x00, 0xE0, 0xEF, "DIONEX"}, { + 0x00, 0xE0, 0xF0, "ABLER TECHNOLOGY, INC."}, { + 0x00, 0xE0, 0xF1, "THAT CORPORATION"}, { + 0x00, 0xE0, 0xF2, "ARLOTTO COMNET, INC."}, { + 0x00, 0xE0, 0xF3, "WebSprint Communications, Inc."}, { + 0x00, 0xE0, 0xF4, "INSIDE Technology A/S"}, { + 0x00, 0xE0, 0xF5, "TELES AG"}, { + 0x00, 0xE0, 0xF6, "DECISION EUROPE"}, { + 0x00, 0xE0, 0xF7, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0xF8, "DICNA CONTROL AB"}, { + 0x00, 0xE0, 0xF9, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0xFA, "TRL TECHNOLOGY, LTD."}, { + 0x00, 0xE0, 0xFB, "LEIGHTRONIX, INC."}, { + 0x00, 0xE0, 0xFC, "HUAWEI TECHNOLOGIES CO., LTD."}, { + 0x00, 0xE0, 0xFD, "A-TREND TECHNOLOGY CO., LTD."}, { + 0x00, 0xE0, 0xFE, "CISCO SYSTEMS, INC."}, { + 0x00, 0xE0, 0xFF, "SECURITY DYNAMICS TECHNOLOGIES, Inc."}, { + 0x00, 0xE6, 0xD3, "NIXDORF COMPUTER CORP."}, { + 0x02, 0x07, 0x01, "RACAL-DATACOM"}, { + 0x02, 0x1C, 0x7C, "PERQ SYSTEMS CORPORATION"}, { + 0x02, 0x60, 0x86, "LOGIC REPLACEMENT TECH. LTD."}, { + 0x02, 0x60, 0x8C, "3COM CORPORATION"}, { + 0x02, 0x70, 0x01, "RACAL-DATACOM"}, { + 0x02, 0x70, 0xB0, "M/A-COM INC. COMPANIES"}, { + 0x02, 0x70, 0xB3, "DATA RECALL LTD"}, { + 0x02, 0x9D, 0x8E, "CARDIAC RECORDERS INC."}, { + 0x02, 0xAA, 0x3C, "OLIVETTI TELECOMM SPA (OLTECO)"}, { + 0x02, 0xBB, 0x01, "OCTOTHORPE CORP."}, { + 0x02, 0xC0, 0x8C, "3COM CORPORATION"}, { + 0x02, 0xCF, 0x1C, "COMMUNICATION MACHINERY CORP."}, { + 0x02, 0xE6, 0xD3, "NIXDORF COMPUTER CORPORATION"}, { + 0x04, 0x0A, 0xE0, "XMIT AG COMPUTER NETWORKS"}, { + 0x04, 0xE0, 0xC4, "TRIUMPH-ADLER AG"}, { + 0x08, 0x00, 0x01, "COMPUTERVISION CORPORATION"}, { + 0x08, 0x00, 0x02, "BRIDGE COMMUNICATIONS INC."}, { + 0x08, 0x00, 0x03, "ADVANCED COMPUTER COMM."}, { + 0x08, 0x00, 0x04, "CROMEMCO INCORPORATED"}, { + 0x08, 0x00, 0x05, "SYMBOLICS INC."}, { + 0x08, 0x00, 0x06, "SIEMENS AG"}, { + 0x08, 0x00, 0x07, "APPLE COMPUTER INC."}, { + 0x08, 0x00, 0x08, "BOLT BERANEK AND NEWMAN INC."}, { + 0x08, 0x00, 0x09, "HEWLETT PACKARD"}, { + 0x08, 0x00, 0x0A, "NESTAR SYSTEMS INCORPORATED"}, { + 0x08, 0x00, 0x0B, "UNISYS CORPORATION"}, { + 0x08, 0x00, 0x0C, "MIKLYN DEVELOPMENT CO."}, { + 0x08, 0x00, 0x0D, "INTERNATIONAL COMPUTERS LTD."}, { + 0x08, 0x00, 0x0E, "NCR CORPORATION"}, { + 0x08, 0x00, 0x0F, "MITEL CORPORATION"}, { + 0x08, 0x00, 0x11, "TEKTRONIX INC."}, { + 0x08, 0x00, 0x12, "BELL ATLANTIC INTEGRATED SYST."}, { + 0x08, 0x00, 0x13, "EXXON"}, { + 0x08, 0x00, 0x14, "EXCELAN"}, { + 0x08, 0x00, 0x15, "STC BUSINESS SYSTEMS"}, { + 0x08, 0x00, 0x16, "BARRISTER INFO SYS CORP"}, { + 0x08, 0x00, 0x17, "NATIONAL SEMICONDUCTOR"}, { + 0x08, 0x00, 0x18, "PIRELLI FOCOM NETWORKS"}, { + 0x08, 0x00, 0x19, "GENERAL ELECTRIC CORPORATION"}, { + 0x08, 0x00, 0x1A, "TIARA/ 10NET"}, { + 0x08, 0x00, 0x1B, "DATA GENERAL"}, { + 0x08, 0x00, 0x1C, "KDD-KOKUSAI DEBNSIN DENWA CO."}, { + 0x08, 0x00, 0x1D, "ABLE COMMUNICATIONS INC."}, { + 0x08, 0x00, 0x1E, "APOLLO COMPUTER INC."}, { + 0x08, 0x00, 0x1F, "SHARP CORPORATION"}, { + 0x08, 0x00, 0x20, "SUN MICROSYSTEMS INC."}, { + 0x08, 0x00, 0x21, "3M COMPANY"}, { + 0x08, 0x00, 0x22, "NBI INC."}, { + 0x08, 0x00, 0x23, "MATSUHITA GRAPHIC COMM SYS INC"}, { + 0x08, 0x00, 0x24, "10NET COMMUNICATIONS/DCA"}, { + 0x08, 0x00, 0x25, "CONTROL DATA"}, { + 0x08, 0x00, 0x26, "NORSK DATA A.S."}, { + 0x08, 0x00, 0x27, "CADMUS COMPUTER SYSTEMS"}, { + 0x08, 0x00, 0x28, "Texas Instruments"}, { + 0x08, 0x00, 0x29, "MEGATEK CORPORATION"}, { + 0x08, 0x00, 0x2A, "MOSAIC TECHNOLOGIES INC."}, { + 0x08, 0x00, 0x2B, "DIGITAL EQUIPMENT CORPORATION"}, { + 0x08, 0x00, 0x2C, "BRITTON LEE INC."}, { + 0x08, 0x00, 0x2D, "LAN-TEC INC."}, { + 0x08, 0x00, 0x2E, "METAPHOR COMPUTER SYSTEMS"}, { + 0x08, 0x00, 0x2F, "PRIME COMPUTER INC."}, { + 0x08, 0x00, 0x30, "NETWORK RESEARCH CORPORATION"}, { + 0x08, 0x00, 0x30, "CERN"}, { + 0x08, 0x00, 0x30, "ROYAL MELBOURNE INST OF TECH"}, { + 0x08, 0x00, 0x31, "LITTLE MACHINES INC."}, { + 0x08, 0x00, 0x32, "TIGAN INCORPORATED"}, { + 0x08, 0x00, 0x33, "BAUSCH & LOMB"}, { + 0x08, 0x00, 0x34, "FILENET CORPORATION"}, { + 0x08, 0x00, 0x35, "MICROFIVE CORPORATION"}, { + 0x08, 0x00, 0x36, "INTERGRAPH CORPORATION"}, { + 0x08, 0x00, 0x37, "FUJI-XEROX CO. LTD."}, { + 0x08, 0x00, 0x38, "CII HONEYWELL BULL"}, { + 0x08, 0x00, 0x39, "SPIDER SYSTEMS LIMITED"}, { + 0x08, 0x00, 0x3A, "ORCATECH INC."}, { + 0x08, 0x00, 0x3B, "TORUS SYSTEMS LIMITED"}, { + 0x08, 0x00, 0x3C, "SCHLUMBERGER WELL SERVICES"}, { + 0x08, 0x00, 0x3D, "CADNETIX CORPORATIONS"}, { + 0x08, 0x00, 0x3E, "CODEX CORPORATION"}, { + 0x08, 0x00, 0x3F, "FRED KOSCHARA ENTERPRISES"}, { + 0x08, 0x00, 0x40, "FERRANTI COMPUTER SYS. LIMITED"}, { + 0x08, 0x00, 0x41, "RACAL-MILGO INFORMATION SYS.."}, { + 0x08, 0x00, 0x42, "JAPAN MACNICS CORP."}, { + 0x08, 0x00, 0x43, "PIXEL COMPUTER INC."}, { + 0x08, 0x00, 0x44, "DAVID SYSTEMS INC."}, { + 0x08, 0x00, 0x45, "CONCURRENT COMPUTER CORP."}, { + 0x08, 0x00, 0x46, "SONY CORPORATION LTD."}, { + 0x08, 0x00, 0x47, "SEQUENT COMPUTER SYSTEMS INC."}, { + 0x08, 0x00, 0x48, "EUROTHERM GAUGING SYSTEMS"}, { + 0x08, 0x00, 0x49, "UNIVATION"}, { + 0x08, 0x00, 0x4A, "BANYAN SYSTEMS INC."}, { + 0x08, 0x00, 0x4B, "PLANNING RESEARCH CORP."}, { + 0x08, 0x00, 0x4C, "HYDRA COMPUTER SYSTEMS INC."}, { + 0x08, 0x00, 0x4D, "CORVUS SYSTEMS INC."}, { + 0x08, 0x00, 0x4E, "3COM EUROPE LTD."}, { + 0x08, 0x00, 0x4F, "CYGNET SYSTEMS"}, { + 0x08, 0x00, 0x50, "DAISY SYSTEMS CORP."}, { + 0x08, 0x00, 0x51, "EXPERDATA"}, { + 0x08, 0x00, 0x52, "INSYSTEC"}, { + 0x08, 0x00, 0x53, "MIDDLE EAST TECH. UNIVERSITY"}, { + 0x08, 0x00, 0x55, "STANFORD TELECOMM. INC."}, { + 0x08, 0x00, 0x56, "STANFORD LINEAR ACCEL. CENTER"}, { + 0x08, 0x00, 0x57, "EVANS & SUTHERLAND"}, { + 0x08, 0x00, 0x58, "SYSTEMS CONCEPTS"}, { + 0x08, 0x00, 0x59, "A/S MYCRON"}, { + 0x08, 0x00, 0x5A, "IBM CORPORATION"}, { + 0x08, 0x00, 0x5B, "VTA TECHNOLOGIES INC."}, { + 0x08, 0x00, 0x5C, "FOUR PHASE SYSTEMS"}, { + 0x08, 0x00, 0x5D, "GOULD INC."}, { + 0x08, 0x00, 0x5E, "COUNTERPOINT COMPUTER INC."}, { + 0x08, 0x00, 0x5F, "SABER TECHNOLOGY CORP."}, { + 0x08, 0x00, 0x60, "INDUSTRIAL NETWORKING INC."}, { + 0x08, 0x00, 0x61, "JAROGATE LTD."}, { + 0x08, 0x00, 0x62, "GENERAL DYNAMICS"}, { + 0x08, 0x00, 0x63, "PLESSEY"}, { + 0x08, 0x00, 0x64, "AUTOPHON AG"}, { + 0x08, 0x00, 0x65, "GENRAD INC."}, { + 0x08, 0x00, 0x66, "AGFA CORPORATION"}, { + 0x08, 0x00, 0x67, "COMDESIGN"}, { + 0x08, 0x00, 0x68, "RIDGE COMPUTERS"}, { + 0x08, 0x00, 0x69, "SILICON GRAPHICS INC."}, { + 0x08, 0x00, 0x6A, "ATT BELL LABORATORIES"}, { + 0x08, 0x00, 0x6B, "ACCEL TECHNOLOGIES INC."}, { + 0x08, 0x00, 0x6C, "SUNTEK TECHNOLOGY INT'L"}, { + 0x08, 0x00, 0x6D, "WHITECHAPEL COMPUTER WORKS"}, { + 0x08, 0x00, 0x6E, "MASSCOMP"}, { + 0x08, 0x00, 0x6F, "PHILIPS APELDOORN B.V."}, { + 0x08, 0x00, 0x70, "MITSUBISHI ELECTRIC CORP."}, { + 0x08, 0x00, 0x71, "MATRA (DSIE)"}, { + 0x08, 0x00, 0x72, "XEROX CORP UNIV GRANT PROGRAM"}, { + 0x08, 0x00, 0x73, "TECMAR INC."}, { + 0x08, 0x00, 0x74, "CASIO COMPUTER CO. LTD."}, { + 0x08, 0x00, 0x75, "DANSK DATA ELECTRONIK"}, { + 0x08, 0x00, 0x76, "PC LAN TECHNOLOGIES"}, { + 0x08, 0x00, 0x77, "TSL COMMUNICATIONS LTD."}, { + 0x08, 0x00, 0x78, "ACCELL CORPORATION"}, { + 0x08, 0x00, 0x79, "THE DROID WORKS"}, { + 0x08, 0x00, 0x7A, "INDATA"}, { + 0x08, 0x00, 0x7B, "SANYO ELECTRIC CO. LTD."}, { + 0x08, 0x00, 0x7C, "VITALINK COMMUNICATIONS CORP."}, { + 0x08, 0x00, 0x7E, "AMALGAMATED WIRELESS(AUS) LTD"}, { + 0x08, 0x00, 0x7F, "CARNEGIE-MELLON UNIVERSITY"}, { + 0x08, 0x00, 0x80, "AES DATA INC."}, { + 0x08, 0x00, 0x81, ",ASTECH INC."}, { + 0x08, 0x00, 0x82, "VERITAS SOFTWARE"}, { + 0x08, 0x00, 0x83, "SEIKO INSTRUM. AND ELECTRONICS"}, { + 0x08, 0x00, 0x84, "TOMEN ELECTRONICS CORP."}, { + 0x08, 0x00, 0x85, "ELXSI"}, { + 0x08, 0x00, 0x86, "IMAGEN CORPORATION"}, { + 0x08, 0x00, 0x87, "XYPLEX"}, { + 0x08, 0x00, 0x88, "MCDATA CORPORATION"}, { + 0x08, 0x00, 0x89, "KINETICS"}, { + 0x08, 0x00, 0x8A, "PERFORMANCE TECHNOLOGY"}, { + 0x08, 0x00, 0x8B, "PYRAMID TECHNOLOGY CORP."}, { + 0x08, 0x00, 0x8C, "NETWORK RESEARCH CORPORATION"}, { + 0x08, 0x00, 0x8D, "XYVISION INC."}, { + 0x08, 0x00, 0x8E, "TANDEM COMPUTERS"}, { + 0x08, 0x00, 0x8F, "CHIPCOM CORPORATION"}, { + 0x08, 0x00, 0x90, "SONOMA SYSTEMS"}, { + 0x08, 0x14, 0x43, "UNIBRAIN S.A."}, { + 0x08, 0xBB, 0xCC, "AK-NORD EDV VERTRIEBSGES. mbH"}, { + 0x10, 0x00, 0x5A, "IBM CORPORATION"}, { + 0x10, 0x00, 0xE8, "NATIONAL SEMICONDUCTOR"}, { + 0x80, 0x00, 0x10, "ATT BELL LABORATORIES"}, { + 0xA0, 0x6A, 0x00, "Verilink Corporation"}, { + 0xAA, 0x00, 0x00, "DIGITAL EQUIPMENT CORPORATION"}, { + 0xAA, 0x00, 0x01, "DIGITAL EQUIPMENT CORPORATION"}, { + 0xAA, 0x00, 0x02, "DIGITAL EQUIPMENT CORPORATION"}, { + 0xAA, 0x00, 0x03, "DIGITAL EQUIPMENT CORPORATION"}, { + 0xAA, 0x00, 0x04, "DIGITAL EQUIPMENT CORPORATION"} + }; + + int i = sizeof(oui_list) / sizeof(oui_list[1]) - 1; + + while (i > 0) { + if (oui_list[i].oui1 == mac[0] && oui_list[i].oui2 == mac[1] + && oui_list[i].oui3 == mac[2]) + return oui_list[i].organization; + i--; + } + return _("Unknown or Private"); +} diff --git a/lib/radio.c b/lib/radio.c new file mode 100644 index 0000000..1e7ee0e --- /dev/null +++ b/lib/radio.c @@ -0,0 +1,309 @@ +/* + * radio.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define RADIO_HELP _("[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu") + +#define ANTENNA _("Antenna:") +#define ANTENNA_LEFT _("[L] Left:") +#define ANTENNA_RIGHT _("[R] Right:") + +extern WINDOW *main_sub; +extern short ap_type; + +void power() +{ + char TestModeRadioConfiguration[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x08, + 0x00 + }; + + char operAntennaSettings[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0C, + 0x00 + }; + +#if defined(WORDS_BIGENDIAN) + struct twobytes_antenna_struct { + int reserv2:6; + int trans_right:1; + int trans_left:1; + int reserv1:6; + int recv_right:1; + int recv_left:1; + }; + + struct onebyte_antenna_struct { + int reserv:6; + int right:1; + int left:1; + }; +#else /* !WORDS_BIGENDIAN */ + struct twobytes_antenna_struct { + int recv_left:1; + int recv_right:1; + int reserv1:6; + int trans_left:1; + int trans_right:1; + int reserv2:6; + }; + + struct onebyte_antenna_struct { + int left:1; + int right:1; + int reserv:6; + }; +#endif /* !WORDS_BIGENDIAN */ + + union antenna_union { + struct twobytes_antenna_struct antennas_tb; + unsigned short antennai; + struct onebyte_antenna_struct antennas_ob; + char antennac; + } antenna; + + + char message[1024]; + unsigned char power[14], m_power = 0, a[] = { 0, 0 }, m_antenna = 0; + varbind varbinds[2]; + int i, c = 0, antenna_vlen; + + varbinds[0].oid = TestModeRadioConfiguration; + varbinds[0].len_oid = sizeof(TestModeRadioConfiguration); + varbinds[0].value = TestModeRadioConfiguration; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + varbinds[1].oid = operAntennaSettings; + varbinds[1].value = TestModeRadioConfiguration; + varbinds[1].len_oid = sizeof(operAntennaSettings); + varbinds[1].len_val = 0; + varbinds[1].type = NULL_VALUE; + + print_help(WAIT_RET); + if (snmp(varbinds, 2, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + print_help(RADIO_HELP); + + memcpy(power, varbinds[0].value, 14); + antenna_vlen = varbinds[1].len_val; + + print_title(_("Radio Configuration")); + mvwaddstr(main_sub, 0, 1, _("Output RF signal power level (CR31 register values)")); + mvwaddstr(main_sub, 1, 1, "---------------------------------------------------"); + mvwaddstr(main_sub, 2, 1, _("Key Channel Level")); + + for (i = 0; i < 14; i++) { + sprintf(message, "[%X] %02u %3u", i + 1, i + 1, power[i]); + mvwaddstr(main_sub, i + 3, 1, message); + } + + if (antenna_vlen == 2) { + memcpy(&antenna.antennai, varbinds[1].value, 2); + antenna.antennai = ntohs(antenna.antennai); + sprintf(message, "%s %s %3s, %s %3s", + ANTENNA_RX, + ANTENNA_RX_LEFT, (antenna.antennas_tb.recv_left) ? ON : OFF, + ANTENNA_RX_RIGHT, (antenna.antennas_tb.recv_right) ? ON : OFF); + mvwaddstr(main_sub, 18, 1, message); + sprintf(message, "%s %s %3s, %s %3s", + ANTENNA_TX, + ANTENNA_TX_LEFT, (antenna.antennas_tb.trans_left) ? ON : OFF, + ANTENNA_TX_RIGHT, (antenna.antennas_tb.trans_right) ? ON : OFF); + mvwaddstr(main_sub, 19, 1, message); + } else { /* antenna_vlen == 1 */ + antenna.antennac = *varbinds[1].value; + sprintf(message, "%s %s %3s, %s %3s", + ANTENNA, + ANTENNA_LEFT, (antenna.antennas_ob.left) ? ON : OFF, + ANTENNA_RIGHT, (antenna.antennas_ob.right) ? ON : OFF); + mvwaddstr(main_sub, 18, 1, message); + } + + wrefresh(main_sub); + noecho(); + while (1) { + c = getch(); + switch (c) { + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + a[0] = c; + i = strtol(a, NULL, 16); + get_value(message, i + 2, 14, 4, INT_STRING, 0, 255, RADIO_HELP); + c = atoi(message) & 0xFF; + power[i - 1] = c; + m_power = 1; + continue; + case 'i': + case 'I': + if (antenna_vlen == 1) + continue; + i = strlen(ANTENNA_RX) + 1 + + strlen(ANTENNA_RX_LEFT) + 6 + + strlen(ANTENNA_RX_RIGHT) + 2; + m_antenna = on_off(18, i); + antenna.antennas_tb.recv_right = (m_antenna == 2) ? 0 : 1; + sprintf(message, "%3s", (antenna.antennas_tb.recv_right) ? ON : OFF); + print_menusel(18, i, NULL, message); + continue; + case 'u': + case 'U': + if (antenna_vlen == 1) + continue; + i = strlen(ANTENNA_RX) + 1 + + strlen(ANTENNA_RX_LEFT) + 2; + m_antenna = on_off(18, i); + antenna.antennas_tb.recv_left = (m_antenna == 2) ? 0 : 1; + sprintf(message, "%3s", (antenna.antennas_tb.recv_left) ? ON : OFF); + print_menusel(18, i, NULL, message); + continue; + case 'p': + case 'P': + if (antenna_vlen == 1) + continue; + i = strlen(ANTENNA_TX) + 1 + + strlen(ANTENNA_TX_LEFT) + 6 + + strlen(ANTENNA_TX_RIGHT) + 2; + m_antenna = on_off(19, i); + antenna.antennas_tb.trans_right = (m_antenna == 2) ? 0 : 1; + sprintf(message, "%3s", (antenna.antennas_tb.trans_right) ? ON : OFF); + print_menusel(19, i, NULL, message); + continue; + case 'o': + case 'O': + if (antenna_vlen == 1) + continue; + i = strlen(ANTENNA_TX) + 1 + + strlen(ANTENNA_TX_LEFT) + 2; + m_antenna = on_off(19, i); + antenna.antennas_tb.trans_left = (m_antenna == 2) ? 0 : 1; + sprintf(message, "%3s", (antenna.antennas_tb.trans_left) ? ON : OFF); + print_menusel(19, i, NULL, message); + continue; + case 'r': + case 'R': + if (antenna_vlen == 2) + continue; + i = strlen(ANTENNA) + 1 + + strlen(ANTENNA_LEFT) + 6 + + strlen(ANTENNA_RIGHT) + 2; + m_antenna = on_off(18, i); + antenna.antennas_ob.right = (m_antenna == 2) ? 0 : 1; + sprintf(message, "%3s", (antenna.antennas_ob.right) ? ON : OFF); + print_menusel(18, i, NULL, message); + continue; + case 'l': + case 'L': + if (antenna_vlen == 2) + continue; + i = strlen(ANTENNA) + 1 + + strlen(ANTENNA_LEFT) + 2; + m_antenna = on_off(18, i); + antenna.antennas_ob.left = (m_antenna == 2) ? 0 : 1; + sprintf(message, "%3s", (antenna.antennas_ob.left) ? ON : OFF); + print_menusel(18, i, NULL, message); + continue; + case 'q': + case 'Q': + goto quit; + case 'w': + case 'W': + i = 0; + if (m_power) { + varbinds[i].oid = TestModeRadioConfiguration; + varbinds[i].len_oid = sizeof(TestModeRadioConfiguration); + varbinds[i].value = power; + varbinds[i].len_val = 14; + varbinds[i].type = STRING_VALUE; + i++; + } + + if (m_antenna) { + if ( (antenna_vlen == 1 && + (antenna.antennas_ob.left == 0 && + antenna.antennas_ob.right == 0)) + || + (antenna_vlen == 2 && + ( (antenna.antennas_tb.trans_left == 0 && + antenna.antennas_tb.trans_right == 0) || + (antenna.antennas_tb.recv_left == 0 && + antenna.antennas_tb.recv_right == 0))) ) { + print_helperr + (_ + ("You can't disable both antennas; unable to save antenna-config. Press any key.")); + getch(); + } else { + + varbinds[i].oid = operAntennaSettings; + varbinds[i].len_oid = sizeof(operAntennaSettings); + if (antenna_vlen == 2) { + unsigned short antenna_hw = htons(antenna.antennai); + + varbinds[i].value = (char *) &antenna_hw; + } else /* antenna_vlen == 1 */ + varbinds[i].value = &antenna.antennac; + varbinds[i].type = INT_VALUE; + varbinds[i].len_val = antenna_vlen; + i++; + } + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + break; + default: + continue; + } + break; + } + + print_help(ANY_KEY); + exit: + getch(); + quit: + print_title(""); + clear_main(0); +} diff --git a/lib/reset.c b/lib/reset.c new file mode 100644 index 0000000..66b6d76 --- /dev/null +++ b/lib/reset.c @@ -0,0 +1,60 @@ +/* + * reset.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include "ap-utils.h" + +int SysReset() +{ + char sysReset[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x02, 0x00 }, enable = 1; + varbind varbinds[1]; + char operESSID[] = { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x09, 0x01 }; + extern short ap_type; + + if (ap_type == ATMEL12350) { + sysReset[5] = 0xe0; + sysReset[6] = 0x3e; + } + + if(ap_type == ATMEL410 || ap_type == ATMEL12350){ + varbinds[0].oid = sysReset; + varbinds[0].len_oid = sizeof(sysReset); + varbinds[0].value = &enable; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + } + else { + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + varbinds[0].oid = operESSID; + varbinds[0].len_oid = sizeof(operESSID); + if (snmp(varbinds, 1, GET) <= 0) + return -1; + varbinds[0].type = STRING_VALUE; + } + + if (snmp(varbinds, 1, SET) <= 0) + return -1; + else { + if(ap_type==NWN) + sleep(15); + return 0; + } +} + diff --git a/lib/scr.c b/lib/scr.c new file mode 100644 index 0000000..72807a5 --- /dev/null +++ b/lib/scr.c @@ -0,0 +1,159 @@ +/* + * scr.c from Access Point SNMP Utils for Linux + * program output & screen related functions + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" +#include + +extern WINDOW *main_sub, *win_for_help, *main_win; + +void +scroll_rows(struct MacListStat *first, int begin, int end, int row, + int stat) +{ + int i = 1; + struct MacListStat *curr = first; + char message[100]; + + clear_main(3); + + while (i++ < begin) + curr = curr->next; + i = 0; + while (end-- > begin) { + if (stat==1) { + sprintf(message, + "%4u %02X%02X%02X%02X%02X%02X %3u%5u %3u", + begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF, + curr->addr[2] & 0xFF, curr->addr[3] & 0xFF, + curr->addr[4] & 0xFF, curr->addr[5] & 0xFF, + curr->quality, curr->idle, curr->rssi); + } else if(stat==2) { + sprintf(message, + "%2u %02X%02X%02X%02X%02X%02X %3d%% %4ddBm %3u %2u %s", + begin + i, + curr->addr[0] & 0xFF, curr->addr[1] & 0xFF, + curr->addr[2] & 0xFF, curr->addr[3] & 0xFF, + curr->addr[4] & 0xFF, curr->addr[5] & 0xFF, + curr->quality, curr->rssi, curr->Status, curr->Port, inet_ntoa(curr->IP)); + } else { + sprintf(message, "%4u %02X%02X%02X%02X%02X%02X", + begin + i, curr->addr[0] & 0xFF, curr->addr[1] & 0xFF, + curr->addr[2] & 0xFF, curr->addr[3] & 0xFF, + curr->addr[4] & 0xFF, curr->addr[5] & 0xFF); + } + mvwaddstr(main_sub, row + i, 0, message); + i++; + curr = curr->next; + } + wrefresh(main_sub); + +} + +void print_help(char *mess) +{ + unsigned short int j, len = (COLS - strlen(mess))/2; + + werase(win_for_help); + + for (j = 0; j <= len; j++) { + mvwaddch(win_for_help, 0, j, ' '); + mvwaddch(win_for_help, 0, COLS - j - 1, ' '); + } + + mvwaddstr(win_for_help, 0, len, mess); + wrefresh(win_for_help); +} + +void print_helperr(char *mess) +{ + wattrset(win_for_help, COLOR_PAIR(4) | A_BOLD); + print_help(mess); + wattrset(win_for_help, COLOR_PAIR(1)); +} + +void print_title(char *mess) +{ + int i; + /* íÁÌÀÀ ÒÁÍËÕ */ + for (i = 0; i < COLS - MCOLS - 1; i++) + mvwaddch(main_win, 0, i, ACS_BSBS); + wattrset(main_win, A_BOLD); + mvwaddstr(main_win, 0, COLS - MCOLS - strlen(mess) - 2, mess); + wattrset(main_win, A_NORMAL); + wrefresh(main_win); +} + +void print_viewtype(int v) +{ + char message[7]; + + sprintf(message, "View: %c", v + '0'); + wattrset(main_win, A_BOLD); + mvwaddstr(main_win, 0, 1, message); + wattrset(main_win, A_NORMAL); + wrefresh(main_win); +} + +void print_menusel(int y, int x, char *mess1, char *mess2) +{ + mvwaddstr(main_sub, y, x, mess1); + wattrset(main_sub, A_BOLD); + waddstr(main_sub, mess2); + wattrset(main_sub, A_NORMAL); + wrefresh(main_sub); +} + +void print_bottom(char *mess) +{ + int i; + char message[100]; + extern short ap_type; + extern char *ap_types[]; + + sprintf(message, _("Current AP: %s Type: %s"), mess, ap_types[ap_type]); + /* íÁÌÀÀ ÒÁÍËÕ */ + for (i = 0; i < COLS - MCOLS - 1; i++) + mvwaddch(main_win, LINES - 3, i, ACS_BSBS); + wattrset(main_win, A_BOLD); + mvwaddstr(main_win, LINES - 3, COLS - MCOLS - strlen(message) - 1, + message); + wattrset(main_win, A_NORMAL); + wrefresh(main_win); +} + + +void clear_main(int m) +{ + clear_main_new(m, LINES - 4); +} + +void clear_main_new(int m, int n) +{ + int i, j; + wmove(main_sub, m, 0); + for (i = m; i < n; i++) + for (j = 0; j < COLS - MCOLS - 1; j++) + waddch(main_sub, ' '); + wrefresh(main_sub); +} diff --git a/lib/set_community.c b/lib/set_community.c new file mode 100644 index 0000000..d7fc47d --- /dev/null +++ b/lib/set_community.c @@ -0,0 +1,156 @@ +/* + * auth.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define COMMUNITY_TOP_HEADER _("Set community/password") +#define COMMUNITY_HEADER1 _("Key Access level") +#define COMMUNITY_HEADER2 _("Community/Password") +#define COMMUNITY_USER _("[U] User") +#define COMMUNITY_ADMIN _("[A] Administrator") +#define COMMUNITY_HELP _("[key] - set community/password; W - write config to AP; Q - quit to menu") + +extern WINDOW *main_sub; +extern short ap_type; + +void AuthorizedSettings() +{ + + char AuthorizedUserPass[3][12] = { + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x09, 0x01, + 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x02, 0x01, 0x02, 0x01, + 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0xe0, 0x3e, 0x01, 0x01, 0x09, 0x01, + 0x00} + }; + char AuthorizedAdminPass[3][12] = { + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x09, 0x02, + 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x02, 0x01, 0x02, 0x02, + 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0xe0, 0x3e, 0x01, 0x01, 0x09, 0x02, + 0x00} + }; + char AuthorizedManufactPass[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x09, 0x03, + 0x00 + }; + + varbind varbinds[3]; + char user[16], admin[16], manufact[16]; + int i; + + if (ap_type == ATMEL12350) { + AuthorizedManufactPass[5] = 0xE0; + AuthorizedManufactPass[6] = 0x3E; + } + + user[0] = admin[0] = manufact[0] = '\0'; + print_title(COMMUNITY_TOP_HEADER); + + mvwaddstr(main_sub, 0, 0, COMMUNITY_HEADER1); + mvwaddstr(main_sub, 0, 25, COMMUNITY_HEADER2); + mvwaddstr(main_sub, 1, 0, COMMUNITY_USER); + mvwaddstr(main_sub, 2, 0, COMMUNITY_ADMIN); + + if (ap_type == ATMEL410 || ap_type == ATMEL12350) { + mvwaddstr(main_sub, 3, 0, _("[M] Manufacturer")); + } + wrefresh(main_sub); + + noecho(); + print_help(COMMUNITY_HELP); + while (1) { + switch (getch()) { + default: + continue; + case 'U': + case 'u': +/* get_value(user, 1, 25, sizeof(user), ANY_STRING, 0, 0, NULL); */ + get_pass(user, 1, 25, sizeof(user)); + continue; + case 'A': + case 'a': +/* get_value(admin, 2, 25, sizeof(admin), ANY_STRING, 0, 0, NULL); */ + get_pass(admin, 2, 25, sizeof(admin)); + continue; + case 'M': + case 'm': + if (ap_type == ATMEL410 || ap_type == ATMEL12350) +/* + get_value(manufact, 3, 25, sizeof(manufact), ANY_STRING, + 0, 0, NULL); +*/ + get_pass(manufact, 3, 25, sizeof(manufact)); + continue; + case 'Q': + case 'q': + goto quit; + case 'W': + case 'w': + i = 0; + if (strlen(user)) { + varbinds[i].oid = AuthorizedUserPass[ap_type]; + varbinds[i].len_oid = sizeof(AuthorizedUserPass[ap_type]); + varbinds[i].value = user; + varbinds[i].len_val = strlen(user); + varbinds[i].type = STRING_VALUE; + i++; + } + if (strlen(admin)) { + varbinds[i].oid = AuthorizedAdminPass[ap_type]; + varbinds[i].len_oid = sizeof(AuthorizedAdminPass[ap_type]); + varbinds[i].value = admin; + varbinds[i].len_val = strlen(admin); + varbinds[i].type = STRING_VALUE; + i++; + } + if ((ap_type == ATMEL410 || ap_type == ATMEL12350) && strlen(manufact)) { + varbinds[i].oid = AuthorizedManufactPass; + varbinds[i].len_oid = sizeof(AuthorizedManufactPass); + varbinds[i].value = manufact; + varbinds[i].len_val = strlen(manufact); + varbinds[i].type = STRING_VALUE; + i++; + } + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + break; + } + break; + } + + print_help(DONE_SET); + exit: + getch(); + quit: + print_help(""); + print_title(""); + clear_main(0); +} diff --git a/lib/snmp.c b/lib/snmp.c new file mode 100644 index 0000000..f688c55 --- /dev/null +++ b/lib/snmp.c @@ -0,0 +1,269 @@ +/* + * snmp.c from Access Point SNMP Utils for Linux + * basic snmp packets assembly/disassembly and send/receive functions + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" + +#define RETRIES 5 + +sigjmp_buf position; + +extern char *community; +extern short ap_type; +extern int sockfd; +extern struct in_addr ap_ip; +int retries; +char *buf = NULL; + +static void alarm_handler() +{ + retries--; + siglongjmp(position, 1); +} + +int ber(char *message, varbind * varbindlist, int num, int type) +{ + + char pdu1[1024], pdu[1024], *list = pdu1; + int len_var = 0, lenp, len_tmp, len = 0, community_len = + strlen(community), i; + char snmp_ver[] = { 0x02, 0x01, 0x00 }; + const char req_id[] = { 0x02, 0x01 }, err[] = { + 0x02, 0x01, 0x00}; + + for (i = 0; i < num; i++) { + *(pdu1 + len++) = ASN_HEADER; + len_tmp = + (varbindlist + i)->len_oid + (varbindlist + i)->len_val + 4; + if (!(ap_type == NWN && type == SET)) { + *(pdu1 + len++) = 0x82; + *(pdu1 + len++) = (len_tmp - (len_tmp % 256)) / 256; + } + *(pdu1 + len++) = len_tmp % 256; + *(pdu1 + len++) = OID_VALUE; + *(pdu1 + len++) = (varbindlist + i)->len_oid; + memcpy(pdu1 + len, (varbindlist + i)->oid, + (varbindlist + i)->len_oid); + len += (varbindlist + i)->len_oid; + *(pdu1 + len++) = (varbindlist + i)->type; + *(pdu1 + len++) = (varbindlist + i)->len_val; + memcpy(pdu1 + len, (varbindlist + i)->value, + (varbindlist + i)->len_val); + len += (varbindlist + i)->len_val; + } + + len_var = len; + + lenp = 0; + len_tmp = len_var + ((ap_type == NWN && type == SET) ? 11 : 13); + *(pdu + lenp++) = type; + if (!(ap_type == NWN && type == SET)) { + *(pdu + lenp++) = 0x82; + *(pdu + lenp++) = (len_tmp - (len_tmp % 256)) / 256; + } + *(pdu + lenp++) = len_tmp % 256; + + memcpy(pdu + lenp, req_id, sizeof(req_id)); + lenp += sizeof(req_id); + *(pdu + lenp++) = + (1 + (int) (255.0 * rand() / (RAND_MAX + 1.0))) & 0xFF; + memcpy(pdu + lenp, err, sizeof(err)); + lenp += sizeof(err); + memcpy(pdu + lenp, err, sizeof(err)); + lenp += sizeof(err); + *(pdu + lenp++) = ASN_HEADER; + len_tmp = len_var; + if (!(ap_type == NWN && type == SET)) { + *(pdu + lenp++) = 0x82; + *(pdu + lenp++) = (len_tmp - (len_tmp % 256)) / 256; + } + *(pdu + lenp++) = len_tmp % 256; + memcpy(pdu + lenp, list, len_var); + lenp += len_var; + + *message = ASN_HEADER; + len = 1; + + i = lenp + community_len + 5; + if (!(ap_type == NWN && type == SET)) { + *(message + len++) = 0x82; + *(message + len++) = (i - (i % 256)) / 256; + } + *(message + len++) = i % 256; + + memcpy(message + len, snmp_ver, 3); + len += 3; + *(message + len++) = STRING_VALUE; + *(message + len++) = community_len & 0xFF; + memcpy(message + len, community, community_len); + len += community_len; + memcpy(message + len, pdu, lenp); + len += lenp; + + return len; +} + +int snmp(varbind * varbindlist, int num, int type) +{ + unsigned char message[1024], *start; + unsigned int num_reply; + int len; + struct sockaddr_in server; + + if (num == 0) + return 1; + + memset(&server, 0, sizeof server); + server.sin_family = AF_INET; + server.sin_port = htons(161); + server.sin_addr.s_addr = ap_ip.s_addr; + + signal(SIGALRM, alarm_handler); + retries = RETRIES; + sigsetjmp(position, 1); + if (!retries) { + return 0; + } + + alarm(1); + len = ber(message, varbindlist, num, type); + if (sendto(sockfd, message, len, 0, (struct sockaddr *) &server, SIZE) + == -1) { + alarm(0); + return 0; + } + if ((len = recv(sockfd, message, 1024, 0)) == -1) { + alarm(0); + return 0; + } + alarm(0); + + if (buf) + free(buf); + buf = (char *) malloc(len); + memcpy(buf, message, len); + + start = buf; + num_reply = 0; + if (*start != ASN_HEADER) { + return 0; + } + + if (start[1] & 0x80) { + start += (start[1] & 0x7F) + 2; + len -= ((start[1] & 0x7F) + 2); + } else { + start += 2; + len -= 2; + } + + len -= *(start + 4) + 5; + start += *(start + 4) + 5; + + if (*(start) != RESPONSE) { + return 0; + } + + + + if (start[1] & 0x80) { + start += (start[1] & 0x7F) + 2; + len -= ((start[1] & 0x7F) + 2); + } else { + start += 2; + len -= 2; + } + + if (*(start + 5)) + return -*(start + 8); + + start += 9; + len -= 9; + if (*(start) != ASN_HEADER) { + return 0; + } + + + if (start[1] & 0x80) { + start += (start[1] & 0x7F) + 2; + len -= ((start[1] & 0x7F) + 2); + } else { + start += 2; + len -= 2; + } + while (len) { + if (*(start) != ASN_HEADER) { + return num_reply; + } + if (start[1] & 0x80) { + start += (start[1] & 0x7F) + 2; + len -= ((start[1] & 0x7F) + 2); + } else { + start += 2; + len -= 2; + } + + + varbindlist[num_reply].len_oid = start[1]; +/* if(varbindlist[num_reply].oid) + free(varbindlist[num_reply].oid); + varbindlist[num_reply].oid = + (char *) malloc(varbindlist[num_reply].len_oid); + memcpy(varbindlist[num_reply].oid, start + 2, + varbindlist[num_reply].len_oid); +*/ + varbindlist[num_reply].oid = start + 2; + len -= *(start + 1) + 2; + start += *(start + 1) + 2; + varbindlist[num_reply].type = *(start); + + if (start[1] & 0x80) { + varbindlist[num_reply].len_val = start[2]; + start += (start[1] & 0x7F) + 2; + len -= ((start[1] & 0x7F) + 2); + } else { + varbindlist[num_reply].len_val = start[1]; + start += 2; + len -= 2; + } + +/* if(varbindlist[num_reply].value) + free(varbindlist[num_reply].value); + varbindlist[num_reply].value = + (char *) malloc(varbindlist[num_reply].len_val); + memcpy(varbindlist[num_reply].value, start, + varbindlist[num_reply].len_val); +*/ + varbindlist[num_reply].value = start; + len -= varbindlist[num_reply].len_val; + start += varbindlist[num_reply].len_val; + num_reply++; + } + + return num_reply; +} diff --git a/lib/stat.c b/lib/stat.c new file mode 100644 index 0000000..c3d969c --- /dev/null +++ b/lib/stat.c @@ -0,0 +1,539 @@ +/* + * stat.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define ERR_RET_PRESS _("Unable to get data from AP. Press Q to continue.") +#define QHELP _("Q - quit to menu.") +#define PIPE _("pipe error. Press any key.") +#define FCNTL _("fcntl error. Press any key.") +#define FORK _("fork error. Press any key.") + +extern WINDOW *main_sub; +extern short ap_type; + +void EthStat() +{ + struct EthernetRxStatistics *EthRxStat = NULL; + struct EthernetTxStatistics *EthTxStat = NULL; + + char EthRx[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, + 0x07, 0x01, 0x00 + }; + + char EthTx[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, + 0x07, 0x02, 0x00 + }; + char c; + char message[1024]; + pid_t pid; + int j, child_pipe[2]; + varbind varbinds[2]; + + if (ap_type == ATMEL12350) { + EthRx[5] = 0xE0; + EthRx[6] = 0x3E; + EthTx[5] = 0xE0; + EthTx[6] = 0x3E; + } + + if (pipe(child_pipe) == -1) { + print_helperr(PIPE); + goto exit; + } + + if (fcntl(child_pipe[0], F_SETFL, O_NONBLOCK) == -1) { + print_helperr(FCNTL); + goto exit; + } + print_title(_("Ethernet Statistics")); + print_help(QHELP); + noecho(); + + switch (pid = fork()) { + case -1: + print_helperr(FORK); + goto exit; + case 0: + close(child_pipe[1]); + varbinds[0].oid = EthRx; + varbinds[0].len_oid = sizeof(EthRx); + varbinds[1].oid = EthTx; + varbinds[1].len_oid = sizeof(EthTx); + + start: + varbinds[0].value = EthTx; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + varbinds[1].value = EthTx; + varbinds[1].len_val = 0; + varbinds[1].type = NULL_VALUE; + + if (snmp(varbinds, 2, GET) <= 0) { + print_helperr(ERR_RET_PRESS); + goto exit_child; + } + + if (varbinds[0].len_val == 64) { + if (EthRxStat) + free(EthRxStat); + EthRxStat = + (struct EthernetRxStatistics *) malloc(varbinds[0]. + len_val); + memcpy(EthRxStat, varbinds[0].value, varbinds[0].len_val); + } else { + print_helperr(_("EthRxStat packet error. Press Q to continue.")); + goto exit_child; + } + + if (varbinds[1].len_val == 56) { + if (EthTxStat) + free(EthTxStat); + EthTxStat = + (struct EthernetTxStatistics *) malloc(varbinds[1]. + len_val); + memcpy(EthTxStat, varbinds[1].value, varbinds[1].len_val); + } else { + print_helperr(_("EthTxStat packet error. Press Q to continue.")); + goto exit_child; + } + mvwaddstr(main_sub, 1, 2, _("Received:")); + mvwaddstr(main_sub, 1, 30, _("Transmitted:")); + sprintf(message, "TotalBytes %10u TotalBytes %10u", + swap4(EthRxStat->TotalBytesRx), + swap4(EthTxStat->TotalBytesTx)); + mvwaddstr(main_sub, 3, 2, message); + sprintf(message, "TotalPackets %10u TotalPackets %10u", + swap4(EthRxStat->TotalPacketsRx), + swap4(EthTxStat->TotalPacketsTx)); + mvwaddstr(main_sub, 4, 2, message); + sprintf(message, "PacketCRCError %10u PacketCRCError %10u", + swap4(EthRxStat->PacketCRCErrorRx), + swap4(EthTxStat->PacketCRCErrorTx)); + mvwaddstr(main_sub, 5, 2, message); + sprintf(message, "FalseCarrier %10u", + swap4(EthRxStat->FalseCarrierRx)); + mvwaddstr(main_sub, 6, 2, message); + + sprintf(message, "MulticastPacket %10u MulticastPacket %10u", + swap4(EthRxStat->MulticastPacketRx), + swap4(EthTxStat->MulticastPacketTx)); + mvwaddstr(main_sub, 7, 2, message); + sprintf(message, "BroadcastPacket %10u BroadcastPacket %10u", + swap4(EthRxStat->BroadcastPacketRx), + swap4(EthTxStat->BroadcastPacketTx)); + mvwaddstr(main_sub, 8, 2, message); + + sprintf(message, "ControlFrames %10u UnicastPacket %10u", + swap4(EthRxStat->ControlFramesRx), + swap4(EthTxStat->UnicastPacketTx)); + mvwaddstr(main_sub, 9, 2, message); + sprintf(message, "PauseFrames %10u PauseFrames %10u", + swap4(EthRxStat->PauseFramesRx), + swap4(EthTxStat->PauseFramesTx)); + mvwaddstr(main_sub, 10, 2, message); + + sprintf(message, "UnknownOPCode %10u SingleDeferPacket %10u", + swap4(EthRxStat->UnknownOPCodeRx), + swap4(EthTxStat->SingleDeferPacketTx)); + mvwaddstr(main_sub, 11, 2, message); + sprintf(message, "AlignmentError %10u MultiDeferPackets %10u", + swap4(EthRxStat->AlignmentRxError), + swap4(EthTxStat->MultiDeferPacketsTx)); + mvwaddstr(main_sub, 12, 2, message); + sprintf(message, "LengthOutOfRange %10u", + swap4(EthRxStat->LengthOutOfRangeRx)); + mvwaddstr(main_sub, 13, 2, message); + sprintf(message, "CodeError %10u SingleCollisions %10u", + swap4(EthRxStat->CodeErrorRx), + swap4(EthTxStat->SingleCollisionsTx)); + mvwaddstr(main_sub, 14, 2, message); + sprintf(message, "TotalFragments %10u MultiCollisions %10u", + swap4(EthRxStat->TotalFragmentsRx), + swap4(EthTxStat->MultiCollisionsTx)); + mvwaddstr(main_sub, 15, 2, message); + sprintf(message, "OversizePackets %10u LateCollisions %10u", + swap4(EthRxStat->OversizePacketsRx), + swap4(EthTxStat->LateCollisionsTx)); + mvwaddstr(main_sub, 16, 2, message); + sprintf(message, "UndersizePackets %10u ExcessiveCollision %10u", + swap4(EthRxStat->UndersizePacketsRx), + swap4(EthTxStat->ExcessiveCollisionTx)); + mvwaddstr(main_sub, 17, 2, message); + sprintf(message, "TotalJabber %10u TotalCollisions %10u", + swap4(EthRxStat->TotalJabberRx), + swap4(EthTxStat->TotalCollisionsTx)); + mvwaddstr(main_sub, 18, 2, message); + wrefresh(main_sub); + exit_child: + switch (j = read(child_pipe[0], &c, 1)) { + case -1: + break; + default: + exit(0); + } + sleep(1); + goto start; + default: + close(child_pipe[0]); + while (getch() != 'q'); + write(child_pipe[1], "0", 1); + wait((int *) 0); + close(child_pipe[1]); + goto quit; + } + + exit: + getch(); + quit: + if (EthRxStat) + free(EthRxStat); + if (EthTxStat) + free(EthTxStat); + + wclear(main_sub); + print_title(""); + clear_main(0); + return; +} + +void WirelessStat() +{ + struct WirelessStatistics *WirelessStat = NULL; + + char Wireless[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01, + 0x00 + }; + char message[80], c; + pid_t pid; + int j, child_pipe[2]; + + varbind varbinds[1]; + + if (ap_type == ATMEL12350) { + Wireless[5] = 0xE0; + Wireless[6] = 0x3E; + } + + if (pipe(child_pipe) == -1) { + print_helperr(PIPE); + goto exit; + } + + if (fcntl(child_pipe[0], F_SETFL, O_NONBLOCK) == -1) { + print_helperr(FCNTL); + goto exit; + } + print_title(_("Wireless Statistics")); + print_help(QHELP); + noecho(); + + switch (pid = fork()) { + case -1: + print_helperr(FORK); + goto exit_child; + case 0: + close(child_pipe[1]); + varbinds[0].oid = Wireless; + varbinds[0].len_oid = sizeof(Wireless); + + start: + varbinds[0].value = Wireless; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET_PRESS); + goto exit_child; + } + + if (varbinds[0].len_val == 88) { + if (WirelessStat) + free(WirelessStat); + WirelessStat = + (struct WirelessStatistics *) malloc(varbinds[0].len_val); + memcpy(WirelessStat, varbinds[0].value, varbinds[0].len_val); + } else { + print_helperr + (_("WirelessStat packet error. Press Q to continue.")); + goto exit; + } + + sprintf(message, + "UnicastPacketsTx %10u UnicastPacketsRx %10u", + swap4(WirelessStat->UnicastTransmittedPackets), + swap4(WirelessStat->UnicastReceivedPackets)); + mvwaddstr(main_sub, 1, 1, message); + sprintf(message, + "BroadcastPacketsTx %10u BroadcastPacketsRx %10u", + swap4(WirelessStat->BroadcastTransmittedPackets), + swap4(WirelessStat->BroadcastReceivedPackets)); + mvwaddstr(main_sub, 2, 1, message); + sprintf(message, + "MulticastPacketsTx %10u MulticastPacketsRx %10u", + swap4(WirelessStat->MulticastTransmittedPackets), + swap4(WirelessStat->MulticastReceivedPackets)); + mvwaddstr(main_sub, 3, 1, message); + sprintf(message, + "BeaconTx %10u BeaconRx %10u", + swap4(WirelessStat->TransmittedBeacon), + swap4(WirelessStat->ReceivedBeacon)); + mvwaddstr(main_sub, 4, 1, message); + sprintf(message, + "ACKTx %10u ACKRx %10u", + swap4(WirelessStat->TransmittedACK), + swap4(WirelessStat->ReceivedACK)); + mvwaddstr(main_sub, 5, 1, message); + sprintf(message, + "RTSTx %10u RTSRx %10u", + swap4(WirelessStat->TransmittedRTS), + swap4(WirelessStat->ReceivedRTS)); + mvwaddstr(main_sub, 6, 1, message); + sprintf(message, + "CTSTx %10u CTSRx %10u", + swap4(WirelessStat->TransmittedCTS), + swap4(WirelessStat->ReceivedCTS)); + mvwaddstr(main_sub, 7, 1, message); + sprintf(message, "ACKFailure %10u", + swap4(WirelessStat->ACKFailure)); + mvwaddstr(main_sub, 8, 1, message); + sprintf(message, "CTSFailure %10u", + swap4(WirelessStat->CTSFailure)); + mvwaddstr(main_sub, 9, 1, message); + sprintf(message, "RetryPackets %10u", + swap4(WirelessStat->RetryPackets)); + mvwaddstr(main_sub, 10, 1, message); + sprintf(message, "ReceivedDuplicate %10u", + swap4(WirelessStat->ReceivedDuplicate)); + mvwaddstr(main_sub, 11, 1, message); + sprintf(message, "FailedPackets %10u", + swap4(WirelessStat->FailedPackets)); + mvwaddstr(main_sub, 12, 1, message); + sprintf(message, "AgedPackets %10u", + swap4(WirelessStat->AgedPackets)); + mvwaddstr(main_sub, 13, 1, message); + sprintf(message, "FCSError %10u", + swap4(WirelessStat->FCSError)); + mvwaddstr(main_sub, 14, 1, message); + sprintf(message, "InvalidPLCP %10u", + swap4(WirelessStat->InvalidPLCP)); + mvwaddstr(main_sub, 15, 1, message); + + wrefresh(main_sub); + exit_child: + switch (j = read(child_pipe[0], &c, 1)) { + case -1: + break; + default: + exit(0); + } + sleep(1); + goto start; + default: + close(child_pipe[0]); + while (getch() != 'q'); + write(child_pipe[1], "0", 1); + wait((int *) 0); + close(child_pipe[1]); + goto quit; + } + + exit: + getch(); + quit: + if (WirelessStat) + free(WirelessStat); + wclear(main_sub); + print_title(""); + clear_main(0); +} + + +void nwn_wireless_stat() +{ + char oid_dot11TransmittedFragmentCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x01, 0x01 }; + char oid_dot11MulticastTransmittedFrameCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x02, 0x01 }; + char oid_dot11FailedCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x03, 0x01 }; + char oid_dot11RetryCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x04, 0x01 }; + char oid_dot11MultipleRetryCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x05, 0x01 }; + char oid_dot11FrameDuplicateCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x06, 0x01 }; + char oid_dot11RTSSuccessCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x07, 0x01 }; + char oid_dot11RTSFailureCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x08, 0x01 }; + char oid_dot11ACKFailureCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x09, 0x01 }; + char oid_dot11ReceivedFragmentCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0a, 0x01 }; + char oid_dot11MulticastReceivedFrameCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0b, 0x01 }; + char oid_dot11FCSErrorCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0c, 0x01 }; + char oid_dot11TransmittedFrameCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0d, 0x01 }; + char oid_dot11WEPUndecryptableCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x02, 0x01, 0x0e, 0x01 }; + char oid_dot11WEPICVErrorCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x05, 0x01 }; + char oid_dot11WEPExcludedCount[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x06, 0x01 }; + + char message[80], c; + pid_t pid; + int j, child_pipe[2], i; + + varbind varbinds[16]; + curs_set(0); + + if (pipe(child_pipe) == -1) { + print_helperr(_("pipe error. Press any key")); + goto exit; + } + + if (fcntl(child_pipe[0], F_SETFL, O_NONBLOCK) == -1) { + print_helperr(_("fcntl error. Press any key")); + goto exit; + } + print_title(_("Wireless Statistics")); + print_help(_("Q - quit to menu.")); + noecho(); + + switch (pid = fork()) { + case -1: + print_helperr(_("fork error. Press any key")); + goto exit_child; + case 0: + close(child_pipe[1]); + varbinds[0].oid = oid_dot11TransmittedFragmentCount; + varbinds[0].len_oid = sizeof(oid_dot11TransmittedFragmentCount); + varbinds[1].oid = oid_dot11MulticastTransmittedFrameCount; + varbinds[1].len_oid = + sizeof(oid_dot11MulticastTransmittedFrameCount); + varbinds[2].oid = oid_dot11FailedCount; + varbinds[2].len_oid = sizeof(oid_dot11FailedCount); + varbinds[3].oid = oid_dot11RetryCount; + varbinds[3].len_oid = sizeof(oid_dot11RetryCount); + varbinds[4].oid = oid_dot11MultipleRetryCount; + varbinds[4].len_oid = sizeof(oid_dot11MultipleRetryCount); + varbinds[5].oid = oid_dot11FrameDuplicateCount; + varbinds[5].len_oid = sizeof(oid_dot11FrameDuplicateCount); + varbinds[6].oid = oid_dot11RTSSuccessCount; + varbinds[6].len_oid = sizeof(oid_dot11RTSSuccessCount); + varbinds[7].oid = oid_dot11RTSFailureCount; + varbinds[7].len_oid = sizeof(oid_dot11RTSFailureCount); + varbinds[8].oid = oid_dot11ACKFailureCount; + varbinds[8].len_oid = sizeof(oid_dot11ACKFailureCount); + varbinds[9].oid = oid_dot11ReceivedFragmentCount; + varbinds[9].len_oid = sizeof(oid_dot11ReceivedFragmentCount); + varbinds[10].oid = oid_dot11MulticastReceivedFrameCount; + varbinds[10].len_oid = + sizeof(oid_dot11MulticastReceivedFrameCount); + varbinds[11].oid = oid_dot11FCSErrorCount; + varbinds[11].len_oid = sizeof(oid_dot11FCSErrorCount); + varbinds[12].oid = oid_dot11TransmittedFrameCount; + varbinds[12].len_oid = sizeof(oid_dot11TransmittedFrameCount); + varbinds[13].oid = oid_dot11WEPUndecryptableCount; + varbinds[13].len_oid = sizeof(oid_dot11WEPUndecryptableCount); + varbinds[14].oid = oid_dot11WEPICVErrorCount; + varbinds[14].len_oid = sizeof(oid_dot11WEPICVErrorCount); + varbinds[15].oid = oid_dot11WEPExcludedCount; + varbinds[15].len_oid = sizeof(oid_dot11WEPExcludedCount); + + start: + for (i = 0; i < 16; i++) { + varbinds[i].value = oid_dot11TransmittedFragmentCount; + varbinds[i].len_val = 0; + varbinds[i].type = 0x05; + } + if (snmp(varbinds, 16, GET) <= 0) { + print_helperr(ERR_RET_PRESS); + goto exit_child; + } + + sprintf(message, "FragmentTx %10lu FragmentRx %10lu", + (long) swap4(*varbinds[0].value), (long) swap4(*varbinds[9].value)); + mvwaddstr(main_sub, 1, 1, message); + sprintf(message, "TransmittedFrame %10lu", + (long) swap4(*varbinds[12].value)); + mvwaddstr(main_sub, 2, 1, message); + sprintf(message, "MulticasFrameTx %10lu MulticastFrameRx %10lu", + (long) swap4(*varbinds[1].value), (long) swap4(*varbinds[10].value)); + mvwaddstr(main_sub, 3, 1, message); + sprintf(message, "WEPUndecryptable %10lu WEPExcluded %10lu", + (long) swap4(*varbinds[13].value), (long) swap4(*varbinds[15].value)); + mvwaddstr(main_sub, 4, 1, message); + sprintf(message, "RTSSuccess %10lu RTSFailure %10lu", + (long) swap4(*varbinds[6].value), (long) swap4(*varbinds[7].value)); + mvwaddstr(main_sub, 5, 1, message); + sprintf(message, "ACKFailure %10lu", + (long) swap4(*varbinds[8].value)); + mvwaddstr(main_sub, 6, 1, message); + sprintf(message, "Retry %10lu MultipleRetry %10lu", + (long) swap4(*varbinds[3].value), (long) swap4(*varbinds[4].value)); + mvwaddstr(main_sub, 7, 1, message); + sprintf(message, "FrameDuplicate %10lu", + (long) swap4(*varbinds[5].value)); + mvwaddstr(main_sub, 8, 1, message); + sprintf(message, "Failed %10lu", + (long) swap4(*varbinds[2].value)); + mvwaddstr(main_sub, 9, 1, message); + sprintf(message, "FCSError %10lu WEPICVError %10lu", + (long) swap4(*(varbinds[11].value)), + (long) swap4(*(varbinds[14].value))); + mvwaddstr(main_sub, 10, 1, message); + wrefresh(main_sub); + exit_child: + switch (j = read(child_pipe[0], &c, 1)) { + case -1: + break; + default: + exit(0); + } + sleep(1); + goto start; + default: + close(child_pipe[0]); + while (getch() != 'q'); + write(child_pipe[1], "0", 1); + wait((int *) 0); + close(child_pipe[1]); + goto quit; + } + + exit: + getch(); + quit: + wclear(main_sub); + print_title(""); + clear_main(0); +} diff --git a/lib/sysinfo.c b/lib/sysinfo.c new file mode 100644 index 0000000..4f6b564 --- /dev/null +++ b/lib/sysinfo.c @@ -0,0 +1,431 @@ +/* + * sysinfo.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define SYS_DESCR _("System Description: ") + +#define OID_NUM 11 + +extern WINDOW *main_sub; +extern int LINES; + +void atmel_sysinfo() +{ + char sysDescr[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, + 0x01, 0x01, 0x00 + }; + char sysDeviceInfo[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, + 0x01, 0x05, 0x00 + }; + + char message[200]; + int i; + varbind varbinds[2]; + extern short ap_type; + struct SysDeviceInfo_ATMEL410 ptr410; + struct SysDeviceInfo_ATMEL12350 ptr12350; + + /* + * These have to represent used SysDeviceInfo_{ATMEL410,ATMEL12350} members + */ + uint32_t ap_sversion; + char *ap_macaddr; + uint32_t ap_regdomain; + uint32_t ap_prodtype; + char *ap_oemname; + uint32_t ap_oemid; + char *ap_prodname; + uint32_t ap_hwrev; + + if (ap_type == ATMEL12350) { + sysDescr[5] = 0xE0; + sysDescr[6] = 0x3E; + sysDeviceInfo[5] = 0xE0; + sysDeviceInfo[6] = 0x3E; + } + + varbinds[0].oid = sysDescr; + varbinds[0].len_oid = sizeof(sysDescr); + varbinds[0].value = sysDescr; + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + + varbinds[1].oid = sysDeviceInfo; + varbinds[1].len_oid = sizeof(sysDeviceInfo); + varbinds[1].value = sysDescr; + varbinds[1].len_val = 0; + varbinds[1].type = NULL_VALUE; + + print_help(WAIT_RET); + if (snmp(varbinds, 2, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + print_title(_("System Info")); + + mvwaddstr(main_sub, 0, 0, _("Device hardware/software/name info:")); + for (i = 0; i < varbinds[0].len_val && *(varbinds[0].value + i); i++) { + mvwaddch(main_sub, 1, i + 1, *(varbinds[0].value + i)); + } + + if (ap_type == ATMEL410) { + + memcpy(&ptr410, varbinds[1].value, sizeof(struct SysDeviceInfo_ATMEL410)); + ap_sversion = ptr410.StructVersion; + ap_macaddr = ptr410.MacAddress; + ap_regdomain = swap4(ptr410.RegulationDomain); + ap_prodtype = ptr410.ProductType; + ap_oemname = ptr410.OEMName; + ap_oemid = ptr410.OEMID; + ap_prodname = ptr410.ProductName; + ap_hwrev = ptr410.HardwareRevision; + } else { /* ATMEL12350 */ + + memcpy(&ptr12350, varbinds[1].value, sizeof(struct SysDeviceInfo_ATMEL12350)); + ap_regdomain=ptr12350.RegulationDomain; + ap_sversion = ptr12350.StructVersion; + ap_macaddr = ptr12350.MacAddress; + ap_prodtype = ptr12350.ProductType; + ap_oemname = ptr12350.OEMName; + ap_oemid = ptr12350.OEMID; + ap_prodname = ptr12350.ProductName; + ap_hwrev = ptr12350.HardwareRevision; + } + + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC, + ap_macaddr[0] & 0xFF, ap_macaddr[1] & 0xFF, + ap_macaddr[2] & 0xFF, ap_macaddr[3] & 0xFF, + ap_macaddr[4] & 0xFF, ap_macaddr[5] & 0xFF); + mvwaddstr(main_sub, 2, 0, message); + + mvwaddstr(main_sub, 3, 0, _("Product name:")); + for (i = 0; i < 32 && ap_prodname[i]; i++) { + mvwaddch(main_sub, 3, i + 14, ap_prodname[i]); + } + + sprintf(message, _("Product type: %u"), swap4(ap_prodtype)); + mvwaddstr(main_sub, 4, 0, message); + + sprintf(message, _("Hardware revision: %u"), swap4(ap_hwrev)); + mvwaddstr(main_sub, 5, 0, message); + + mvwaddstr(main_sub, 6, 0, _("OEM name:")); + for (i = 0; i < 32 && ap_oemname[i]; i++) { + mvwaddch(main_sub, 6, i + 10, ap_oemname[i]); + } + + sprintf(message, "OEM ID: %u", swap4(ap_oemid)); + mvwaddstr(main_sub, 7, 0, message); + + sprintf(message, _("Regulation domain: %s [%d]"), + (ap_regdomain == 0x10) ? _("FCC (USA)") : + (ap_regdomain == 0x20) ? _("DOC (Canada)") : + (ap_regdomain == 0x30) ? _("ETSI (Europe)") : + (ap_regdomain == 0x31) ? _("Spain") : + (ap_regdomain == 0x32) ? _("France") : + (ap_regdomain == 0x40) ? _("MKK (Japan)") : _("unknown"), ap_regdomain); + mvwaddstr(main_sub, 8, 0, message); + + sprintf(message, _("Info structure version: %u"), swap4(ap_sversion)); + mvwaddstr(main_sub, 9, 0, message); + + sprintf(message, _("Manufacturer OUI: %02X %02X %02X (%s)"), + ap_macaddr[0] & 0xFF, ap_macaddr[1] & 0xFF, ap_macaddr[2] & 0xFF, + oui2manufacturer(ap_macaddr)); + mvwaddstr(main_sub, 10, 0, message); + + wrefresh(main_sub); + print_help(ANY_KEY); + exit: + getch(); + print_title(""); + clear_main(0); +} + +int get_RegDomain() +{ + char oid_dot11CurrentRegDomain[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x01, 0x01, 0x02, 0x01 }; + varbind varbinds[1]; + + varbinds[0].oid = oid_dot11CurrentRegDomain; + varbinds[0].len_oid = sizeof(oid_dot11CurrentRegDomain); + varbinds[0].value = oid_dot11CurrentRegDomain; + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + + if (snmp(varbinds, 1, GET) <= 0) + return 0; + return *(varbinds[0].value); + +} + +void nwn_sysinfo() +{ + char oid_mac[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x01, 0x01 }; + char oid_manufacturerID[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x08, 0x01 }; + char oid_productID[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x09, 0x01 }; + char oid_dot11manufacturerOUI[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x01, + 0x01 + }; + char oid_dot11manufacturerName[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x02, + 0x01 + }; + char oid_dot11manufacturerProductName[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x03, + 0x01 + }; + char oid_dot11manufacturerProductVersion[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x03, 0x01, 0x02, 0x01, 0x04, + 0x01 + }; + char oid_dot11PHYType[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01 }; + char oid_dot11TempType[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x01, 0x01, 0x03, 0x01 }; + char oid_TxPowerLevel1[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x03, 0x01, 0x02, 0x01 }; + char oid_dot11PrivacyOptionImplemented[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x07, 0x01 }; + char oid_dot11DiversitySupport[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x02, 0x01, 0x03, 0x01 }; + char oid_sysDescr[] = + { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00 }; + char oid_sysUptime[] = + { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x03, 0x00 }; + char oid_ip[] = + { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x04, 0x14, 0x01, 0x01 }; + char *types[3] = + { _("FHSS 2.4 GHz"), _("DSSS 2.4 GHz"), _("IR Baseband") }; + char *temp[3] = { _("Commercial range 0..40 C"), + _("Industrial range -30..70 C"), + _("unknown") + }, *diversity[3] = { + _("manual"), _("notsupported"), _("dynamic")}; + + char message[300]; + int i, hand, c, min, sec; + struct in_addr ip; + varbind varbinds[OID_NUM]; + size_t time_stamp; + + for (i = 0; i < OID_NUM; i++) { + varbinds[i].value = oid_mac; + varbinds[i].type = NULL_VALUE; + varbinds[i].len_val = 0; + } + varbinds[0].oid = oid_mac; + varbinds[0].len_oid = sizeof(oid_mac); + varbinds[1].oid = oid_manufacturerID; + varbinds[1].len_oid = sizeof(oid_manufacturerID); + varbinds[2].oid = oid_productID; + varbinds[2].len_oid = sizeof(oid_productID); + varbinds[3].oid = oid_dot11manufacturerOUI; + varbinds[3].len_oid = sizeof(oid_dot11manufacturerOUI); + varbinds[4].oid = oid_dot11manufacturerName; + varbinds[4].len_oid = sizeof(oid_dot11manufacturerName); + varbinds[5].oid = oid_dot11manufacturerProductName; + varbinds[5].len_oid = sizeof(oid_dot11manufacturerProductName); + varbinds[6].oid = oid_dot11manufacturerProductVersion; + varbinds[6].len_oid = sizeof(oid_dot11manufacturerProductVersion); + varbinds[7].oid = oid_dot11PHYType; + varbinds[7].len_oid = sizeof(oid_dot11PHYType); + varbinds[8].oid = oid_dot11TempType; + varbinds[8].len_oid = sizeof(oid_dot11TempType); + varbinds[9].oid = oid_TxPowerLevel1; + varbinds[9].len_oid = sizeof(oid_TxPowerLevel1); + + print_help(WAIT_RET); + if (snmp(varbinds, OID_NUM - 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + print_title(_("System Info")); + + + + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC, + varbinds[0].value[0] & 0xFF, varbinds[0].value[1] & 0xFF, + varbinds[0].value[2] & 0xFF, varbinds[0].value[3] & 0xFF, + varbinds[0].value[4] & 0xFF, varbinds[0].value[5] & 0xFF); + mvwaddstr(main_sub, 0, 0, message); + + mvwaddstr(main_sub, 3, 0, _("Manufacturer:")); + i = 0; + while (varbinds[4].len_val > i) { + mvwaddch(main_sub, 3, i + 20, *(varbinds[4].value + i++)); + } + + mvwaddstr(main_sub, 4, 0, _("Manufacturer ID:")); + i = 0; + while (varbinds[1].len_val > i) { + mvwaddch(main_sub, 4, i + 20, *(varbinds[1].value + i++)); + } + + sprintf(message, _("Manufacturer OUI: %02X %02X %02X (%s)"), + varbinds[3].value[0] & 0xFF, varbinds[3].value[1] & 0xFF, + varbinds[3].value[2] & 0xFF, + oui2manufacturer(varbinds[3].value)); + mvwaddstr(main_sub, 5, 0, message); + + sprintf(message, _("Product Name:")); + mvwaddstr(main_sub, 6, 0, message); + i = 0; + while (varbinds[5].len_val > i) { + mvwaddch(main_sub, 6, i + 20, *(varbinds[5].value + i++)); + } + + sprintf(message, _("Product ID:")); + mvwaddstr(main_sub, 7, 0, message); + i = 0; + while (varbinds[2].len_val > i) { + mvwaddch(main_sub, 7, i + 20, *(varbinds[2].value + i++)); + } + sprintf(message, _("Product Version:")); + mvwaddstr(main_sub, 8, 0, message); + i = 0; + while (varbinds[6].len_val > i) { + mvwaddch(main_sub, 8, i + 20, *(varbinds[6].value + i++)); + } + + + sprintf(message, _("PHYType: %s"), types[*(varbinds[7].value) - 1]); + mvwaddstr(main_sub, 9, 0, message); + + sprintf(message, _("Temperature: %s"), temp[*(varbinds[8].value) - 1]); + mvwaddstr(main_sub, 10, 0, message); + + if ((i = get_RegDomain()) == 0) { + print_helperr(ERR_RET); + goto exit; + } + sprintf(message, _("Regulation Domain: %s"), + (i == 0x10) ? _("FCC (USA)") : + (i == 0x20) ? _("DOC (Canada)") : + (i == 0x30) ? _("ETSI (Europe)") : + (i == 0x31) ? _("Spain") : + (i == 0x32) ? _("France") : + (i == 0x40) ? _("MKK (Japan)") : _("unknown")); + mvwaddstr(main_sub, 11, 0, message); + + sprintf(message, _("Transmit Power: %u mW"), *(varbinds[9].value)); + mvwaddstr(main_sub, 12, 0, message); + + varbinds[0].oid = oid_dot11PrivacyOptionImplemented; + varbinds[0].len_oid = sizeof(oid_dot11PrivacyOptionImplemented); + varbinds[0].value = oid_mac; + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + varbinds[1].oid = oid_dot11DiversitySupport; + varbinds[1].len_oid = sizeof(oid_dot11DiversitySupport); + varbinds[1].value = oid_mac; + varbinds[1].type = NULL_VALUE; + varbinds[1].len_val = 0; + varbinds[2].oid = oid_sysDescr; + varbinds[2].len_oid = sizeof(oid_sysDescr); + varbinds[2].value = oid_mac; + varbinds[2].type = NULL_VALUE; + varbinds[2].len_val = 0; + varbinds[3].oid = oid_sysUptime; + varbinds[3].len_oid = sizeof(oid_sysUptime); + varbinds[3].value = oid_mac; + varbinds[3].type = NULL_VALUE; + varbinds[3].len_val = 0; + + print_help(WAIT_RET); + if (snmp(varbinds, 4, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + sprintf(message, _("WEP inplemented: %s"), + (*(varbinds[0].value) == 1) ? ON : OFF); + mvwaddstr(main_sub, 13, 0, message); + sprintf(message, _("Diversity: %s"), + diversity[*(varbinds[1].value) - 1]); + mvwaddstr(main_sub, 14, 0, message); + mvwaddstr(main_sub, LINES - 8, 0, SYS_DESCR); + i = 0; + while (varbinds[2].len_val > i && varbinds[2].value[i]) { + message[i] = varbinds[2].value[i]; + i++; + } + message[i] = '\0'; + mvwaddstr(main_sub, LINES - 8, strlen(SYS_DESCR) + 1, message); + + time_stamp = 0; + i = 1; + + for (c = 1; c <= varbinds[3].len_val; c++) { + time_stamp += + (unsigned char) varbinds[3].value[varbinds[3].len_val - c] * i; + i *= 256; + } + + hand = time_stamp % 100; + time_stamp = time_stamp / 100; + sec = time_stamp % 60; + time_stamp = time_stamp / 60; + min = time_stamp % 60; + time_stamp = time_stamp / 60; + + sprintf(message, _("Uptime: %u:%02u:%02u.%02u"), time_stamp, min, sec, + hand); + mvwaddstr(main_sub, 15, 0, message); + + varbinds[0].oid = oid_ip; + varbinds[0].len_oid = sizeof(oid_ip); + varbinds[0].value = oid_mac; + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET_NEXT) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + memcpy(&ip.s_addr, varbinds[0].value, 4); + sprintf(message, _("IP Address: %s"), inet_ntoa(ip)); + mvwaddstr(main_sub, 1, 0, message); + + wrefresh(main_sub); + print_help(ANY_KEY); + exit: + getch(); + print_title(""); + clear_main(0); +} diff --git a/lib/test.c b/lib/test.c new file mode 100644 index 0000000..4019201 --- /dev/null +++ b/lib/test.c @@ -0,0 +1,299 @@ +/* + * test.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define TEST_MODE _("[T] Test mode: ") +#define ANTENNA _("[A] Antenna: ") +#define SIGLEVEL _("[S] Signal level: ") +#define RATE _("[R] Rate: ") +#define FILER _("[F] TxFiler: ") +#define COMMAND _("[O] Command: ") +#define __HELP _("T - Test mode On/Off; CASRFO - set options; Q - quit to menu") + +extern WINDOW *main_sub; +extern short ap_type; + +void test() +{ + + struct TestModeCommandStruct_ATMEL410 { + unsigned char Channel; + unsigned char Antenna; + unsigned char RegCR31; + unsigned char Rate; + unsigned char TxFiler; //US 01 - JPN 02 + unsigned char Command; //CMD_CONTINUOUS_TX 0x01, CMD_CONTINUOUS_RX 0x02, CMD_CARRIER_ACCURACY 0x03, CMD_IDLE 0x04 + unsigned char Res1; + unsigned char Res2; + } testmode; + + struct TestModeStatistics { + unsigned long SuccessFrames; + unsigned long FailedFrames; + } *teststat = NULL; + + char TestModeOnOff[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x01, + 0x00 + }; + char TestModeCommandStruct[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x02, + 0x00 + }; + char TestModeStatistics[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x08, 0x09, + 0x00 + }; + + char message[1024], *antenna[2] = + { _("Left"), _("Right") }, *filer[2] = { + "EN", "US"}, *rates[4] = { + "1", "2", "5.5", "11"}, *item_name[14]; + char teston = 2, *commands[4] = + { "CONTINUOUS_TX", "CONTINUOUS_RX", "CARRIER_ACCURACY", "IDLE" }; + varbind varbinds[5]; + int ch_num = 0, i; + + if (ap_type == ATMEL12350) { + TestModeOnOff[5] = 0xE0; + TestModeOnOff[6] = 0x3E; + TestModeCommandStruct[5] = 0xE0; + TestModeCommandStruct[6] = 0x3E; + TestModeStatistics[5] = 0xE0; + TestModeStatistics[6] = 0x3E; + } + + print_title(_("Test mode")); + mvwaddstr(main_sub, 3, 6, + _ + ("Using the \"Test mode\" may cause loss of your current")); + mvwaddstr(main_sub, 4, 6, _("configuration.")); + mvwaddstr(main_sub, 6, 20, _("Do you want to continue? ")); + wrefresh(main_sub); + print_help(_("(Y - Yes; N - No (it's safer to answer No.)")); + i = 1; + while (i) + switch (getch()) { + case 'Y': + case 'y': + clear_main(3); + i = 0; + break; + case 'n': + case 'N': + clear_main(3); + goto quit; + } + + if ((ch_num = ch_list(0, item_name)) == 0) { + print_helperr(ERR_RET); + goto exit; + } + + sprintf(message, "%s%s", TEST_MODE, OFF); + mvwaddstr(main_sub, 0, 0, message); + + mvwaddstr(main_sub, 2, 1, _("Options:")); + testmode.Channel = 1; + sprintf(message, "%s%02u (%u MHz)", CHANNEL, testmode.Channel, + 2407 + 5 * testmode.Channel); + mvwaddstr(main_sub, 3, 0, message); + + testmode.Antenna = 1; + sprintf(message, "%s%s", ANTENNA, antenna[testmode.Antenna - 1]); + mvwaddstr(main_sub, 4, 0, message); + + testmode.RegCR31 = 128; + sprintf(message, "%s%u", SIGLEVEL, testmode.RegCR31); + mvwaddstr(main_sub, 5, 0, message); + + testmode.Rate = 2; + sprintf(message, "%s%.1f Mbit/s", RATE, (float) testmode.Rate / 2); + mvwaddstr(main_sub, 6, 0, message); + + testmode.TxFiler = 1; + sprintf(message, "%s%s", FILER, filer[testmode.TxFiler - 1]); + mvwaddstr(main_sub, 7, 0, message); + + testmode.Command = 1; + sprintf(message, "%s%s", COMMAND, commands[testmode.Command - 1]); + mvwaddstr(main_sub, 8, 0, message); + + mvwaddstr(main_sub, 10, 1, _("Statistics:")); + mvwaddstr(main_sub, 11, 0, _("Success Frames: 0 Failed Frames: 0")); + + wrefresh(main_sub); + noecho(); + print_help(__HELP); + while (1) { + switch (getch()) { + case 'Q': + case 'q': + if (teston == 1) { + teston = 2; + varbinds[0].oid = TestModeOnOff; + varbinds[0].len_oid = sizeof(TestModeOnOff); + varbinds[0].value = &teston; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + } + goto quit; + case 'T': + case 't': + teston = on_off(0, 1 + strlen(TEST_MODE)); + + if (teston == 1) { + clear_main_new(0, 1); + print_menusel(0, 0, TEST_MODE, ON); + varbinds[0].oid = TestModeOnOff; + varbinds[0].len_oid = sizeof(TestModeOnOff); + varbinds[0].value = &teston; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + varbinds[1].oid = TestModeCommandStruct; + varbinds[1].len_oid = sizeof(TestModeCommandStruct); + varbinds[1].len_val = sizeof(testmode); + varbinds[1].value = (char *) &testmode; + varbinds[1].type = STRING_VALUE; + if (snmp(varbinds, 2, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + } else { + varbinds[0].oid = TestModeStatistics; + varbinds[0].len_oid = sizeof(TestModeStatistics); + varbinds[0].value = TestModeStatistics; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + getch(); + print_help(__HELP); + } else { + teststat = + (struct TestModeStatistics *) malloc(varbinds[0]. + len_val); + memcpy(teststat, varbinds[0].value, + sizeof(struct TestModeStatistics)); + clear_main_new(11, 12); + sprintf(message, + _("Success Frames: %lu Failed Frames: %lu"), + swap4(teststat->SuccessFrames), + swap4(teststat->FailedFrames)); + mvwaddstr(main_sub, 11, 0, message); + free(teststat); + } + clear_main_new(0, 1); + sprintf(message, "%s%s", TEST_MODE, OFF); + mvwaddstr(main_sub, 0, 0, message); + + varbinds[0].oid = TestModeOnOff; + varbinds[0].len_oid = sizeof(TestModeOnOff); + varbinds[0].value = &teston; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + wrefresh(main_sub); + } + continue; + case 'C': + case 'c': + testmode.Channel = menu_choose(3, strlen(CHANNEL), item_name, + ch_num) + 1; + clear_main_new(3, 4); + sprintf(message, "%02u (%u MHz)", testmode.Channel, + 2407 + 5 * testmode.Channel); + print_menusel(3, 0, CHANNEL, message); + continue; + case 'R': + case 'r': + switch (menu_choose(6, strlen(RATE), rates, 4)) { + case 0: + testmode.Rate = 2; + break; + case 1: + testmode.Rate = 4; + break; + case 2: + testmode.Rate = 11; + break; + case 3: + testmode.Rate = 22; + } + clear_main_new(6, 7); + sprintf(message, "%.1f Mbit/s", (float) testmode.Rate / 2); + print_menusel(6, 0, RATE, message); + continue; + case 'A': + case 'a': + testmode.Antenna = menu_choose(4, strlen(ANTENNA), antenna, 2) + 1; + clear_main_new(4, 5); + print_menusel(4, 0, ANTENNA, antenna[testmode.Antenna - 1]); + continue; + case 'O': + case 'o': + testmode.Command = menu_choose(8, strlen(COMMAND), commands, 4) + 1; + clear_main_new(8, 9); + print_menusel(8, 0, COMMAND, commands[testmode.Command - 1]); + continue; + case 'F': + case 'f': + testmode.TxFiler = menu_choose(7, strlen(FILER), filer, 2) + 1; + clear_main_new(7, 8); + print_menusel(7, 0, FILER, filer[testmode.TxFiler - 1]); + continue; + case 'S': + case 's': +// make_field(5, strlen(SIGLEVEL), 4); + get_value(message, 5, strlen(SIGLEVEL), 4, INT_STRING, 0, 255, + __HELP); + print_menusel(5, 0, SIGLEVEL, message); + testmode.RegCR31 = atoi(message) & 0xFF; + continue; + default: + continue; + } + break; + } + + print_help(ANY_KEY); + exit: + getch(); + /* free memory allocated for channel list */ + for (i = 0; i < ch_num; i++) + free(item_name[i]); + quit: + print_title(""); + clear_main(0); +} diff --git a/lib/wep.c b/lib/wep.c new file mode 100644 index 0000000..a9590f7 --- /dev/null +++ b/lib/wep.c @@ -0,0 +1,420 @@ +/* + * wep.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define ENCRYPT _("[E] Standard encryption mechanism: ") +#define ALLOW _("[A] Allow unencrypted: ") +#define DEFAULT _("[K] Default WEP key: ") +#define PUBLIC _("[P] Public key: ") + +extern WINDOW *main_sub; +extern short ap_type; + +void wep() +{ + char defaultWEPKey[4][12] = { + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x01, 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x02, 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x03, 0x00}, + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x04, 0x00} + }; + char privacyWEPEnable[] = + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x05, 0x00 + }; + char privacyDefaultWEPKeyID[] = + {0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x02, 0x06, 0x00 + }; + + char message[1024], m_wep = 0, m_wepid = 0, wepkey[4][13], + m_wepkey[4] = { 0, 0, 0, 0 }; + char *weps[3] = { "WEP64", OFF, "WEP128" }, *keys[4] = {"1", "2", "3", "4"}; + int wep, wepid, i, c = 0; + varbind varbinds[6]; + unsigned int wepid_hw, wep_hw; + + if (ap_type == ATMEL12350) { + privacyDefaultWEPKeyID[5] = 0xE0; + privacyDefaultWEPKeyID[6] = 0x3E; + privacyWEPEnable[5] = 0xE0; + privacyWEPEnable[6] = 0x3E; + for (i = 0; i < 4; i++) { + defaultWEPKey[i][5] = 0xE0; + defaultWEPKey[i][6] = 0x3E; + } + } + + varbinds[0].oid = privacyWEPEnable; + varbinds[0].len_oid = sizeof(privacyWEPEnable); + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + varbinds[1].oid = privacyDefaultWEPKeyID; + varbinds[1].len_oid = sizeof(privacyDefaultWEPKeyID); + varbinds[1].type = NULL_VALUE; + varbinds[1].len_val = 0; + print_help(WAIT_RET); + if (snmp(varbinds, 2, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + wep = *(varbinds[0].value); + wepid = *(varbinds[1].value); + print_help(_("EK1234 - set; W - write conf; Q - quit to menu")); + + print_title(_("Privacy Settings")); + + sprintf(message, "%s%s", ENCRYPT, weps[wep - 1]); + mvwaddstr(main_sub, 0, 0, message); + sprintf(message, "%s%d", DEFAULT, wepid); + mvwaddstr(main_sub, 1, 0, message); + + mvwaddstr(main_sub, 3, 2, _("Key WEP")); + + for (i = 0; i < 4; i++) { + sprintf(message, "[%d] 00.00.00.00.00.00.00.00.00.00.00.00.00", + i + 1); + mvwaddstr(main_sub, i + 4, 2, message); + } + mvwaddstr(main_sub, LAST_ROW, 1, _("Hint! Confused by WEP key values? See man ap-config for info...")); + + wrefresh(main_sub); + noecho(); + + while (1) { + c = getch(); + switch (c) { + case 'q': + case 'Q': + goto quit; + case 'e': + case 'E': + wep = menu_choose(0, strlen(ENCRYPT), weps, 3) + 1; + clear_main_new(0, 1); + print_menusel(0, 0, ENCRYPT, weps[wep - 1]); + m_wep = 1; + continue; + case 'k': + case 'K': + wepid = menu_choose(1, strlen(DEFAULT), keys, 4) + 1; + clear_main_new(1, 2); + sprintf(message, "%d", wepid); + print_menusel(1, 0, DEFAULT, message); + wrefresh(main_sub); + m_wepid = 1; + continue; + case '1': + case '2': + case '3': + case '4': + c = c -'0'; +/* + message[1] = '\0'; + c = strtol(message, NULL, 16); + for (i = 0; i < 13; i++) +*/ + for (i = 0; i < 13; i++) { + get_value(message, c + 3, 7 + i * 3, 3, HEX_STRING, + 0, 0, NULL); + wepkey[c - 1][i] = strtol(message, NULL, 16); + } + m_wepkey[c - 1] = 1; + continue; + case 'w': + case 'W': + i = 0; + if (m_wep) { + wep_hw = swap4(wep); + varbinds[i].oid = privacyWEPEnable; + varbinds[i].len_oid = sizeof(privacyWEPEnable); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &wep_hw; + varbinds[i].len_val = 1; + i++; + } + if (m_wepid) { + wepid_hw = swap4(wepid); + varbinds[i].oid = privacyDefaultWEPKeyID; + varbinds[i].len_oid = sizeof(privacyDefaultWEPKeyID); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &wepid_hw; + varbinds[i].len_val = 1; + i++; + } + for (c = 0; c < 4; c++) + if (m_wepkey[c]) { + varbinds[i].oid = defaultWEPKey[c]; + varbinds[i].len_oid = sizeof(defaultWEPKey[c]); + varbinds[i].type = STRING_VALUE; + varbinds[i].value = wepkey[c]; + varbinds[i].len_val = 13; + i++; + } + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + print_help(DONE_SET); + goto exit; + } + continue; + } + + exit: + getch(); + quit: + print_title(""); + clear_main(0); +} + + +void nwn_wep() +{ + + char defaultWEPKey[4][11] = { + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x01}, + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02}, + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x03}, + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x03, 0x01, 0x02, 0x01, 0x04}, +}; + + char privacyWEPEnable[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x01, 0x01 }; + char privacyDefaultWEPKeyID[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x02, 0x01 }; + + char oid_dot11ExcludeUnencrypted[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x05, 0x01, 0x04, 0x01 }; + char oid_smtPublicKeyEnable[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, + 0x0a, 0x00 }; + + char message[1024], m_wep = 0, m_wepid = 0, wepkey[4][5], + m_wepkey[4] = { 0, 0, 0, 0 }, exclude, m_exclude = 0; + char *weps[2] = { "WEP64", OFF }, publickey, m_publickey = 0, *keys[4] = {"1", "2", "3", "4"}, wepid=0, wepid_hw; + int wep, i, c=0; + varbind varbinds[15]; + + varbinds[0].oid = privacyWEPEnable; + varbinds[0].len_oid = sizeof(privacyWEPEnable); + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + varbinds[1].oid = oid_smtPublicKeyEnable; + varbinds[1].len_oid = sizeof(oid_smtPublicKeyEnable); + varbinds[1].type = NULL_VALUE; + varbinds[1].len_val = 0; + varbinds[2].oid = oid_dot11ExcludeUnencrypted; + varbinds[2].len_oid = sizeof(oid_dot11ExcludeUnencrypted); + varbinds[2].type = NULL_VALUE; + varbinds[2].len_val = 0; + varbinds[3].oid = privacyDefaultWEPKeyID; + varbinds[3].len_oid = sizeof(privacyDefaultWEPKeyID); + varbinds[3].type = NULL_VALUE; + varbinds[3].len_val = 0; + + print_help(WAIT_RET); + if (snmp(varbinds, 4, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + wep = *(varbinds[0].value); + exclude = *(varbinds[2].value); + publickey = *(varbinds[1].value); + wepid=*(varbinds[3].value); + print_help(_("AEPK1234 - set options; W - write conf; Q - quit to menu")); + + print_title(_("Privacy Settings")); + + sprintf(message, "%s%s", ENCRYPT, weps[wep - 1]); + mvwaddstr(main_sub, 1, 0, message); + sprintf(message, "%s%s", ALLOW, (exclude == 2) ? ON : OFF); + mvwaddstr(main_sub, 2, 0, message); + + sprintf(message, "%s%d", DEFAULT, wepid+1); + mvwaddstr(main_sub, 3, 0, message); + + + sprintf(message, "%s%s", PUBLIC, (publickey == 1) ? ON : OFF); + mvwaddstr(main_sub, 10, 0, message); + + mvwaddstr(main_sub, 4, 2, _("Key WEP")); + for (i = 0; i < 4; i++) { + sprintf(message, "[%d] 00.00.00.00.00", i + 1); + mvwaddstr(main_sub, i + 5, 2, message); + } + + + wrefresh(main_sub); + noecho(); + + while (1) { + switch (c = getch()) { + case 'Q': + case 'q': + goto quit; + case 'E': + case 'e': + wep = menu_choose(1, strlen(ENCRYPT), weps, 2) + 1; + clear_main_new(1, 2); + print_menusel(1, 0, ENCRYPT, weps[wep - 1]); + m_wep = 1; + continue; + case 'a': + case 'A': + exclude = on_off(2, strlen(ALLOW)); + exclude = (exclude == 2) ? 1 : 2; + clear_main_new(2, 3); + print_menusel(2, 0, ALLOW, (exclude == 2) ? ON : OFF); + m_exclude = 1; + continue; + case 'p': + case 'P': + publickey = on_off(10, strlen(PUBLIC)); + clear_main_new(10, 11); + print_menusel(10, 0, PUBLIC, (publickey == 1) ? ON : OFF); + m_publickey = 1; + continue; + case 'k': + case 'K': + wepid = menu_choose(3, strlen(DEFAULT), keys, 4); + clear_main_new(3, 4); + sprintf(message, "%d", wepid+1); + print_menusel(3, 0, DEFAULT, message); + m_wepid = 1; + continue; + case '1': + case '2': + case '3': + case '4': +// message[0] = c; + // message[1] = '\0'; +// c = strtol(message, NULL, 16); + c = c - '0'; +/* for (i = 0; i < 5; i++)*/ + for (i = 0; i < 5; i++) { + get_value(message, c + 4, 7 + i * 3, 3, HEX_STRING, + 0, 0, NULL); + wepkey[c - 1][i] = strtol(message, NULL, 16); + } + m_wepkey[c - 1] = 1; + continue; +/* + case '1': + for (i = 0; i < 5; i++) { + get_value(message, 5, 7 + i * 3, 3, HEX_STRING, 0, 0, NULL); + wepkey[i] = strtol(message, NULL, 16); + } + m_wepkey = 1; + continue; +*/ case 'w': + case 'W': + i = 0; + if (m_wep) { + varbinds[i].oid = privacyWEPEnable; + varbinds[i].len_oid = sizeof(privacyWEPEnable); + varbinds[i].type = 0x02; + varbinds[i].value = (char *) &wep; + varbinds[i].len_val = 1; + i++; + } + +/* m_wep = 0; + varbinds[i].oid = privacyDefaultWEPKeyID; + varbinds[i].len_oid = sizeof(privacyDefaultWEPKeyID); + varbinds[i].type = INT_VALUE; + varbinds[i].value = &m_wep; + varbinds[i].len_val = 1; + i++; +*/ + if (m_exclude) { + varbinds[i].oid = oid_dot11ExcludeUnencrypted; + varbinds[i].len_oid = sizeof(oid_dot11ExcludeUnencrypted); + varbinds[i].type = 0x02; + varbinds[i].value = &exclude; + varbinds[i].len_val = 1; + i++; + } + if (m_publickey) { + varbinds[i].oid = oid_smtPublicKeyEnable; + varbinds[i].len_oid = sizeof(oid_smtPublicKeyEnable); + varbinds[i].type = 0x02; + varbinds[i].value = &publickey; + varbinds[i].len_val = 1; + i++; + } +/* if (m_wepkey) { + varbinds[i].oid = defaultWEPKey; + varbinds[i].len_oid = sizeof(defaultWEPKey); + varbinds[i].type = STRING_VALUE; + varbinds[i].value = wepkey; + varbinds[i].len_val = 5; + i++; + } +*/ + if (m_wepid) { + wepid_hw = swap4(wepid); + varbinds[i].oid = privacyDefaultWEPKeyID; + varbinds[i].len_oid = sizeof(privacyDefaultWEPKeyID); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &wepid_hw; + varbinds[i].len_val = 1; + i++; + } + + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + i=0; + for (c = 0; c < 4; c++) + if (m_wepkey[c]) { + varbinds[i].oid = defaultWEPKey[c]; + varbinds[i].len_oid = sizeof(defaultWEPKey[c]); + varbinds[i].type = STRING_VALUE; + varbinds[i].value = wepkey[c]; + varbinds[i].len_val = 5; + i++; + } + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + + print_help(DONE_SET); + goto exit; + } + continue; + } + + print_help(ANY_KEY); + exit: + getch(); + quit: + print_title(""); + clear_main(0); +} diff --git a/lib/wlan.c b/lib/wlan.c new file mode 100644 index 0000000..12cafc1 --- /dev/null +++ b/lib/wlan.c @@ -0,0 +1,1109 @@ +/* + * wlan.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define ESSID _("[E] ESSID: ") +#define AP_NAME _("[N] AP name: ") + +#define CONTACT _("[K] AP contact: ") +#define LOCATION _("[L] AP location: ") + +#define RTS_TR _("[R] RTS threshold: ") +#define FRG_TR _("[F] Fragmentation threshold: ") +#define PREAMBULE _("[P] Preambule type: ") +#define AUTH _("[A] Auth type: ") +#define OSYS _("Open system") +#define SH_KEY _("Shared key") +#define BOTH_TYPE _("Both types") +#define RETRAIN _("[U] Auto rate fallback: ") +#define HIDE_ESSID _("[S] Insert ESSID in broadcast packets: ") +#define RATES _("Basic and Supported rates:") +#define RATES_HEAD _("Key Rate Status") +#define RATES_RECORD "[%d] %4.1fM " +#define INT_ROAMING _("[I] International roaming: ") +#define BEACON_PER _("[B] Beacon period (msec): ") +#define DTIM_I _("[D] DTIM sending interval (beacons): ") +#define WLAN_HELP _("[key] - set option; W - write conf; Q - quit to menu") + +extern short ap_type; + +void atmel_wireless() +{ + char sysDeviceInfo[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x05, + 0x00 + }; + char operEthernetAddress[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x03, + 0x00 + }; + + char operChannelID[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x01, + 0x00 + }; + char operESSIDLength[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x02, + 0x00 + }; + char operESSID[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x03, + 0x00 + }; + char operRTSThreshold[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x04, + 0x00 + }; + char operFragmentationThreshold[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x05, + 0x00 + }; + char operPreambleType[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x06, + 0x00 + }; + char operAuthenticationType[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x07, + 0x00 + }; + char operBasicRates[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x08, + 0x00 + }; + char operAutoRateFallBack[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x09, + 0x00 + }; + char operAccessPointName[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A, + 0x00 + }; + char operSSIDBroadcasting[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0B, + 0x00 + }; + + /* This one is ATMEL12350 MIB specific. */ + char operInterRoaming[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0D, + 0x00 + }; + /* These two are ATMEL12350 TELLUS MIB specific. */ + char operBeaconPeriod[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0E, + 0x00 + }; + char operDTIM[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x02, 0x01, 0x0F, + 0x00 + }; + + extern WINDOW *main_sub; + varbind varbinds[15]; + unsigned short int RTSThreshold, FragmentationThreshold, + InterRoaming, m_basic_rates = 0, first_channel = 1; + unsigned int BeaconPeriod = 0; + unsigned char dtim, ch; + char *AuthenticationTypes[3] = { OSYS, SH_KEY, BOTH_TYPE }, + message[1024], + oui_tellus[3] = { 0x00, 0x04, 0xDB }, + IS_ATMEL12350_TELLUS = 0; /* ATMEL12350 Tellus uses different MIB */ + char domain[32], basic_rates[4], AutoRateFallBack, SSIDBroadcasting, + ap_name[32], ch_num = 0, PreambleType, AuthenticationType, channel; + char m_channel = 0, m_essid = 0, m_broadcast = 0, m_rts = 0, + m_fragment = 0, m_auth = 0, m_ap_name = 0, m_preambule = 0, + m_auto_rate = 0, m_inter_roaming = 0, m_beacon = 0, m_dtim = 0; + char *item_name[14], *rates[3] = { ON, OFF, BASIC }, *preambules[2] = { + _("Short"), _("Long")}; + short __rates[4] = { 2, 4, 11, 22 }; + int i, c = 0; + unsigned short ap_regdomain; + struct SysDeviceInfo_ATMEL410 ptr410; + struct SysDeviceInfo_ATMEL12350 ptr12350; + + + if (ap_type == ATMEL12350) { + sysDeviceInfo[5] = 0xE0; + sysDeviceInfo[6] = 0x3E; + operEthernetAddress[5] = 0xE0; + operEthernetAddress[6] = 0x3E; + operChannelID[5] = 0xE0; + operChannelID[6] = 0x3E; + operESSIDLength[5] = 0xE0; + operESSIDLength[6] = 0x3E; + operESSID[5] = 0xE0; + operESSID[6] = 0x3E; + operRTSThreshold[5] = 0xE0; + operRTSThreshold[6] = 0x3E; + operFragmentationThreshold[5] = 0xE0; + operFragmentationThreshold[6] = 0x3E; + operPreambleType[5] = 0xE0; + operPreambleType[6] = 0x3E; + operAuthenticationType[5] = 0xE0; + operAuthenticationType[6] = 0x3E; + operBasicRates[5] = 0xE0; + operBasicRates[6] = 0x3E; + operAutoRateFallBack[5] = 0xE0; + operAutoRateFallBack[6] = 0x3E; + operAccessPointName[5] = 0xE0; + operAccessPointName[6] = 0x3E; + operSSIDBroadcasting[5] = 0xE0; + operSSIDBroadcasting[6] = 0x3E; + } + + + /* Find out whether the device uses enhanced ATMEL12350 TELLUS MIB. */ + varbinds[0].type = NULL_VALUE; + varbinds[0].oid = operEthernetAddress; + varbinds[0].len_oid = sizeof(operEthernetAddress); + varbinds[0].len_val = 0; + + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (ap_type == ATMEL12350 && (memcmp(oui_tellus, varbinds[0].value, 3) ==0)) + IS_ATMEL12350_TELLUS = 1; + + + for (i = 1; i < 15; i++) { + varbinds[i].type = NULL_VALUE; + varbinds[i].len_val = 0; + varbinds[i].len_oid = sizeof(operChannelID); + } + + i = 0; + + varbinds[i++].oid = operChannelID; + varbinds[i++].oid = operESSIDLength; + varbinds[i++].oid = operESSID; + varbinds[i++].oid = operSSIDBroadcasting; + varbinds[i++].oid = operBasicRates; + varbinds[i++].oid = operAutoRateFallBack; + varbinds[i++].oid = operRTSThreshold; + varbinds[i++].oid = operFragmentationThreshold; + varbinds[i++].oid = operPreambleType; + varbinds[i++].oid = operAuthenticationType; + varbinds[i++].oid = operAccessPointName; + varbinds[i++].oid = sysDeviceInfo; + if (ap_type == ATMEL12350) { + varbinds[i++].oid = operInterRoaming; + if (IS_ATMEL12350_TELLUS) { + varbinds[i++].oid = operBeaconPeriod; + varbinds[i++].oid = operDTIM; + } + } + + if (snmp(varbinds, i, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + channel = *(varbinds[0].value); + c = *(varbinds[1].value); + memcpy(domain, varbinds[2].value, 32); + SSIDBroadcasting = *(varbinds[3].value); + memcpy(basic_rates, varbinds[4].value, 4); + AutoRateFallBack = *(varbinds[5].value); + memcpy(&RTSThreshold, varbinds[6].value, 2); + RTSThreshold = ntohs(RTSThreshold); + memcpy(&FragmentationThreshold, varbinds[7].value, 2); + FragmentationThreshold = ntohs(FragmentationThreshold); + PreambleType = *(varbinds[8].value); + AuthenticationType = *(varbinds[9].value); + memcpy(ap_name, varbinds[10].value, 32); + if (ap_type == ATMEL12350) { + InterRoaming = *(varbinds[12].value); + if (IS_ATMEL12350_TELLUS) { + for (i = 0; i < varbinds[13].len_val; + BeaconPeriod += varbinds[13].value[i] * + (1 << ((varbinds[13].len_val - i - 1) * 8)), i++); + dtim = *(varbinds[14].value); + } + } + + if (ap_type == ATMEL12350) { + memcpy(&ptr12350, varbinds[11].value, sizeof(struct SysDeviceInfo_ATMEL12350)); + ap_regdomain=ptr12350.RegulationDomain; + } else /* ATMEL410 */{ + memcpy(&ptr410, varbinds[11].value, sizeof(struct SysDeviceInfo_ATMEL410)); + ap_regdomain = swap4(ptr410.RegulationDomain); + } + + if ((ch_num = ch_list(ap_regdomain, item_name)) == 0) { + print_helperr(ERR_RET); + goto exit; + } + if (ap_regdomain == 0x31 || ap_regdomain == 0x32) + first_channel=10; + + print_title(_("Wireless Settings")); + + sprintf(message, "%s%02u (%u MHz)", CHANNEL, channel, 2407 + 5 * channel); + mvwaddstr(main_sub, 0, 0, message); + mvwaddstr(main_sub, 1, 0, ESSID); + waddnstr(main_sub, domain, c); + mvwaddstr(main_sub, 2, 0, AP_NAME); + for (i = 0; i < 32 && ap_name[i]; i++) + mvwaddch(main_sub, 2, strlen(AP_NAME) + i, ap_name[i]); + sprintf(message, "%s%d", RTS_TR, RTSThreshold); + mvwaddstr(main_sub, 3, 0, message); + sprintf(message, "%s%d", FRG_TR, FragmentationThreshold); + mvwaddstr(main_sub, 4, 0, message); + sprintf(message, "%s%s", PREAMBULE, preambules[PreambleType - 1]); + mvwaddstr(main_sub, 5, 0, message); + sprintf(message, "%s%s", AUTH, AuthenticationTypes[AuthenticationType - 1]); + mvwaddstr(main_sub, 6, 0, message); + sprintf(message, "%s%s", RETRAIN, (AutoRateFallBack == 1) ? ON : OFF); + mvwaddstr(main_sub, 7, 0, message); + sprintf(message, "%s%s", HIDE_ESSID, (SSIDBroadcasting == 1) ? ON : OFF); + mvwaddstr(main_sub, 8, 0, message); + mvwaddstr(main_sub, 9, 0, RATES); + mvwaddstr(main_sub, 10, 2, RATES_HEAD); + for (i = 0; i < 4; i++) { + sprintf(message, RATES_RECORD "%s", i + 1, (float) __rates[i] / 2, + basic(basic_rates[i])); + mvwaddstr(main_sub, 11 + i, 2, message); + } + if (ap_type == ATMEL12350) { + sprintf(message, "%s%s", INT_ROAMING, (InterRoaming == 1) ? ON : OFF); + mvwaddstr(main_sub, 15, 0, message); + if (IS_ATMEL12350_TELLUS) { + sprintf(message, "%s%u", BEACON_PER, BeaconPeriod); + mvwaddstr(main_sub, 16, 0, message); + sprintf(message, "%s%u", DTIM_I, dtim); + mvwaddstr(main_sub, 17, 0, message); + } + } + + wrefresh(main_sub); + noecho(); + print_help(WLAN_HELP); + + while (1) { + c = getch(); + switch (c) { + case 'Q': + case 'q': + goto quit; + case '1': + case '2': + case '3': + case '4': + message[0] = c; + message[1] = '\0'; + i = atoi(message); + switch (menu_choose(10 + i, 15, rates, 3)) { + case 0: + basic_rates[i - 1] = __rates[i - 1]; + break; + case 1: + basic_rates[i - 1] = 0; + break; + case 2: + basic_rates[i - 1] = __rates[i - 1] + 0x80; + } + clear_main_new(10 + i, 11 + i); + sprintf(message, RATES_RECORD, i, (float) __rates[i - 1] / 2); + print_menusel(10 + i, 2, message, basic(basic_rates[i - 1])); + m_basic_rates = 1; + break; + case 'C': + case 'c': + channel = menu_choose(0, strlen(CHANNEL), item_name, ch_num) + + first_channel; + sprintf(message, "%02u (%u MHz)", channel, 2407 + 5 * channel); + print_menusel(0, 0, CHANNEL, message); + m_channel = 1; + continue; + case 'A': + case 'a': + AuthenticationType = + menu_choose(6, strlen(AUTH), AuthenticationTypes, 3) + 1; + clear_main_new(6, 7); + print_menusel(6, 0, AUTH, + AuthenticationTypes[AuthenticationType - 1]); + m_auth = 1; + continue; + case 'P': + case 'p': + PreambleType = menu_choose(5, strlen(PREAMBULE), preambules, 2) + 1; + clear_main_new(5, 6); + print_menusel(5, 0, PREAMBULE, preambules[PreambleType - 1]); + m_preambule = 1; + continue; + case 'U': + case 'u': + AutoRateFallBack = on_off(7, strlen(RETRAIN)); + clear_main_new(7, 8); + print_menusel(7, 0, RETRAIN, (AutoRateFallBack == 1) ? ON : OFF); + m_auto_rate = 1; + continue; + case 'S': + case 's': + SSIDBroadcasting = on_off(8, strlen(HIDE_ESSID)); + clear_main_new(8, 9); + print_menusel(8, 0, HIDE_ESSID, (SSIDBroadcasting == 1) ? ON : OFF); + m_broadcast = 1; + continue; + case 'N': + case 'n': +// make_field(2, strlen(AP_NAME), 32); + get_value(ap_name, 2, strlen(AP_NAME), 32, ANY_STRING, 0, 0, NULL); + m_ap_name = 1; + continue; + case 'E': + case 'e': +// make_field(1, strlen(ESSID), 32); + get_value(domain, 1, strlen(ESSID), 32, ANY_STRING, 0, 0, NULL); + m_essid = 1; + continue; + case 'F': + case 'f': +// make_field(4, strlen(FRG_TR), 6); + get_value(message, 4, strlen(FRG_TR), 6, INT_STRING, 256, 2346, + WLAN_HELP); + FragmentationThreshold = atoi(message); + m_fragment = 1; + continue; + case 'R': + case 'r': +// make_field(3, strlen(RTS_TR), 6); + get_value(message, 3, strlen(RTS_TR), 6, INT_STRING, 0, 2347, + WLAN_HELP); + RTSThreshold = atoi(message); + m_rts = 1; + continue; + case 'I': + case 'i': + if (ap_type == ATMEL410) + continue; + InterRoaming = on_off(15, strlen(INT_ROAMING)); + clear_main_new(15, 16); + print_menusel(15, 0, INT_ROAMING, (InterRoaming == 1) ? ON : OFF); + m_inter_roaming = 1; + continue; + case 'B': + case 'b': + if (!IS_ATMEL12350_TELLUS) + continue; + get_value(message, 16, strlen(BEACON_PER), 6, INT_STRING, 0, 65535, + WLAN_HELP); + BeaconPeriod = atoi(message); + m_beacon = 1; + continue; + case 'D': + case 'd': + if (!IS_ATMEL12350_TELLUS) + continue; + get_value(message, 17, strlen(DTIM_I), 4, INT_STRING, 0, 255, + WLAN_HELP); + dtim = atoi(message); + m_dtim = 1; + continue; + case 'w': + case 'W': + i = 0; + if (m_channel) { + varbinds[i].oid = operChannelID; + varbinds[i].len_oid = sizeof(operChannelID); + varbinds[i].value = (char *) &channel; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_basic_rates) { + for (m_basic_rates = 0; m_basic_rates < 2; m_basic_rates++) { + c = basic_rates[3 - m_basic_rates]; + basic_rates[3 - m_basic_rates] = + basic_rates[m_basic_rates]; + basic_rates[m_basic_rates] = c; + } + varbinds[i].oid = operBasicRates; + varbinds[i].len_oid = sizeof(operBasicRates); + varbinds[i].value = basic_rates; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_broadcast) { + varbinds[i].oid = operSSIDBroadcasting; + varbinds[i].len_oid = sizeof(operSSIDBroadcasting); + varbinds[i].value = (char *) &SSIDBroadcasting; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_auth) { + varbinds[i].oid = operAuthenticationType; + varbinds[i].len_oid = sizeof(operAuthenticationType); + varbinds[i].value = &AuthenticationType; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_preambule) { + varbinds[i].oid = operPreambleType; + varbinds[i].len_oid = sizeof(operPreambleType); + varbinds[i].value = &PreambleType; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_auto_rate) { + varbinds[i].oid = operAutoRateFallBack; + varbinds[i].len_oid = sizeof(operAutoRateFallBack); + varbinds[i].value = &AutoRateFallBack; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_ap_name) { + c = strlen(ap_name); + varbinds[i].oid = operAccessPointName; + varbinds[i].len_oid = sizeof(operAccessPointName); + varbinds[i].value = ap_name; + varbinds[i].len_val = c; + varbinds[i].type = STRING_VALUE; + i++; + } + if (m_fragment) { + varbinds[i].oid = operFragmentationThreshold; + varbinds[i].len_oid = sizeof(operFragmentationThreshold); + FragmentationThreshold = htons(FragmentationThreshold); + varbinds[i].value = (char *) &FragmentationThreshold; + varbinds[i].len_val = 2; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_rts) { + varbinds[i].oid = operRTSThreshold; + varbinds[i].len_oid = sizeof(operRTSThreshold); + RTSThreshold = htons(RTSThreshold); + varbinds[i].value = (char *) &RTSThreshold; + varbinds[i].len_val = 2; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_essid) { + ch = strlen(domain); + varbinds[i].oid = operESSIDLength; + varbinds[i].len_oid = sizeof(operESSIDLength); + varbinds[i].value = (char *)&ch; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + varbinds[i].oid = operESSID; + varbinds[i].len_oid = sizeof(operESSID); + varbinds[i].value = domain; + varbinds[i].len_val = ch; + varbinds[i].type = STRING_VALUE; + i++; + } + if (m_inter_roaming) { + varbinds[i].oid = operInterRoaming; + varbinds[i].len_oid = sizeof(operInterRoaming); + varbinds[i].value = (char *) &InterRoaming; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_beacon) { + int len_val; + + len_val = (BeaconPeriod > 0x7fff) ? 3 : + (BeaconPeriod > 0x7f) ? 2 : 1; + varbinds[i].oid = operBeaconPeriod; + varbinds[i].len_oid = sizeof(operBeaconPeriod); + varbinds[i].value = (char *) &BeaconPeriod; + varbinds[i].len_val = len_val; + varbinds[i].type = STRING_VALUE; + i++; + } + if (m_dtim) { + varbinds[i].oid = operDTIM; + varbinds[i].len_oid = sizeof(operDTIM); + varbinds[i].value = (char *) &dtim; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + print_help(DONE_SET); + goto exit; + } + } + + exit: + getch(); + quit: + /* free memory allocated for channel list */ + for (i = 0; i < ch_num; i++) + free(item_name[i]); + + print_title(""); + clear_main(0); +} + +void nwn_wireless() +{ + char *item_name[14]; + + char oid_dot11SupportedAntenna[][11] = { + {0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x02, 0x01, 0x01}, + {0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x02, 0x01, 0x02}, + {0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x03, 0x01, 0x01}, + {0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x03, 0x01, 0x02}, + {0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x04, 0x01, 0x01}, + {0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x08, 0x01, 0x04, 0x01, 0x02} + }; + + char ChannelPref[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, + 0x06, 0x00 + }; + char operChannelID[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x04, 0x05, 0x01, 0x01, 0x01 }; + char sysTrapSwitch[] = + { 0x2B, 0x06, 0x01, 0x02, 0x01, 0x0b, 0x1e, 0x00 }; + + char operESSID[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x09, 0x01 }; + + char operRTSThreshold[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x02, 0x01 }; + char operFragmentationThreshold[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x02, 0x01, 0x01, 0x05, 0x01 }; + char OpenSystem[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x02, 0x01, 0x03, 0x01, + 0x01 + }; + char SharedKey[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x02, 0x01, 0x03, 0x01, + 0x02 + }; + char operBasicRates[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0xb, 0x01 }; + char operAccessPointName[] = + { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x05, 0x00 }; + char operAccessPointContact[] = + { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x04, 0x00 }; + char operAccessPointLocation[] = + { 0x2b, 0x06, 0x01, 0x02, 0x01, 0x01, 0x06, 0x00 }; + + unsigned short int i, RTSThreshold, FragmentationThreshold, + m_basic_rates = 0, authi; + char *auth[3] = { OSYS, SH_KEY, BOTH_TYPE }, + *rates[3] = { ON, OFF, BASIC }, + message[1024], + m_antenna[6] = { 0, 0, 0, 0, 0, 0 }, + antenna[6], + channel_pref[2] = { 0, 0 }; + extern WINDOW *main_sub; + char *domain, basic_rates[] = + { 0, 0, 0, 0 }, *ap_name, ap_location[32], ap_contact[32], + m_ap_contact = 0, m_ap_location = 0; + char m_channel = 0, m_essid = 0, m_rts = 0, m_fragment = 0, m_auth = + 0, m_ap_name = 0, channel, traps, m_traps = 0; + varbind varbinds[11]; + int c=0, ch_num = 0, first_channel=1, reg_domain=0; + short __rates[4] = { 2, 4, 11, 22}; + + domain = (char *) calloc(32, 1); + ap_name = (char *) calloc(32, 1); + + for (i = 0; i < 8; i++) { + varbinds[i].len_val = 0; + varbinds[i].type = NULL_VALUE; + } + varbinds[0].oid = operChannelID; + varbinds[0].len_oid = sizeof(operChannelID); + varbinds[1].oid = operESSID; + varbinds[1].len_oid = sizeof(operESSID); + varbinds[2].oid = operRTSThreshold; + varbinds[2].len_oid = sizeof(operRTSThreshold); + varbinds[3].oid = operFragmentationThreshold; + varbinds[3].len_oid = sizeof(operFragmentationThreshold); + varbinds[4].oid = operBasicRates; + varbinds[4].len_oid = sizeof(operBasicRates); + varbinds[5].oid = OpenSystem; + varbinds[5].len_oid = sizeof(OpenSystem); + varbinds[6].oid = SharedKey; + varbinds[6].len_oid = sizeof(SharedKey); + varbinds[7].oid = operAccessPointName; + varbinds[7].len_oid = sizeof(operAccessPointName); + print_help(WAIT_RET); + if (snmp(varbinds, 8, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + channel = *(varbinds[0].value); + memcpy(domain, varbinds[1].value, varbinds[1].len_val); + memcpy(basic_rates, varbinds[4].value, varbinds[4].len_val); + memcpy(&RTSThreshold, (varbinds[2].value), 2); + RTSThreshold = ntohs(RTSThreshold); + memcpy(&FragmentationThreshold, (varbinds[3].value), 2); + FragmentationThreshold = ntohs(FragmentationThreshold); + authi = (*(varbinds[5].value) == 1 && *(varbinds[6].value) == 1) ? 2 : + (*(varbinds[5].value) == 1) ? 0 : 1; + memcpy(ap_name, varbinds[7].value, varbinds[7].len_val); + + sprintf(message, "%s%02u (%u MHz)", CHANNEL, channel, 2407 + 5 * channel); + mvwaddstr(main_sub, 0, 0, message); + mvwaddstr(main_sub, 1, 0, ESSID); + for (i = 0; i < 32 && domain[i]; i++) + mvwaddch(main_sub, 1, strlen(ESSID) + i, domain[i]); + mvwaddstr(main_sub, 2, 0, AP_NAME); + for (i = 0; i < 32 && ap_name[i]; i++) + mvwaddch(main_sub, 2, strlen(AP_NAME) + i, ap_name[i]); + sprintf(message, "%s%d", RTS_TR, RTSThreshold); + mvwaddstr(main_sub, 3, 0, message); + sprintf(message, "%s%d", FRG_TR, FragmentationThreshold); + mvwaddstr(main_sub, 4, 0, message); + sprintf(message, "%s%s", AUTH, auth[authi]); + mvwaddstr(main_sub, 6, 0, message); + mvwaddstr(main_sub, 9, 0, RATES); + mvwaddstr(main_sub, 10, 2, RATES_HEAD); + for(i = 0; i < 4; i++) { + sprintf(message, RATES_RECORD "%s", i + 1, (float) __rates[i] / 2, + basic(basic_rates[i])); + mvwaddstr(main_sub, 11+i, 2, message); + } + + reg_domain = get_RegDomain(); + if ((ch_num = ch_list(reg_domain, item_name)) == 0) { + print_helperr(ERR_RET); + goto exit; + } + + if(reg_domain == 0x31 || reg_domain == 0x32) + first_channel = 10; + + for (i = 0; i < 9; i++) { + varbinds[i].len_val = 0; + varbinds[i].type = NULL_VALUE; + } + + for (i = 0; i < 6; i++) { + varbinds[i].oid = oid_dot11SupportedAntenna[i]; + varbinds[i].len_oid = sizeof(oid_dot11SupportedAntenna[i]); + } + varbinds[6].oid = sysTrapSwitch; + varbinds[6].len_oid = sizeof(sysTrapSwitch); + varbinds[7].oid = operAccessPointContact; + varbinds[7].len_oid = sizeof(operAccessPointContact); + varbinds[8].oid = operAccessPointLocation; + varbinds[8].len_oid = sizeof(operAccessPointLocation); + + if (snmp(varbinds, 9, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + for (i = 0; i < 6; i++) { + antenna[i] = *varbinds[i].value; + } + + traps = *(varbinds[6].value); + memcpy(ap_contact, varbinds[7].value, varbinds[7].len_val); + if (varbinds[7].len_val < 32) + ap_contact[varbinds[7].len_val] = '\0'; + memcpy(ap_location, varbinds[8].value, varbinds[8].len_val); + if (varbinds[8].len_val < 32) + ap_location[varbinds[8].len_val] = '\0'; + + sprintf(message, "%s%s", LOCATION, ap_location); + mvwaddstr(main_sub, 7, 0, message); + sprintf(message, "%s%s", CONTACT, ap_contact); + mvwaddstr(main_sub, 8, 0, message); + sprintf(message, "%s%s", TRAPS, (traps == 1) ? ON : OFF); + mvwaddstr(main_sub, 5, 0, message); + + mvwaddstr(main_sub, 16, 0, _("Antenna Configuration:")); + sprintf(message, "%s %s %3s, %s %3s", + ANTENNA_RX, + ANTENNA_RX_LEFT, (antenna[2] == 1) ? ON : OFF, + ANTENNA_RX_RIGHT, (antenna[3] == 1) ? ON : OFF); + mvwaddstr(main_sub, 17, 1, message); + sprintf(message, "%s %s %3s, %s %3s", + ANTENNA_TX, + ANTENNA_TX_LEFT, (antenna[0] == 1) ? ON : OFF, + ANTENNA_TX_RIGHT, (antenna[1] == 1) ? ON : OFF); + mvwaddstr(main_sub, 18, 1, message); + sprintf(message, "%s %s %3s, %s %3s", + ANTENNA_DV, + ANTENNA_DV_LEFT, (antenna[4] == 1) ? ON : OFF, + ANTENNA_DV_RIGHT, (antenna[5] == 1) ? ON : OFF); + mvwaddstr(main_sub, 19, 1, message); + + print_title(_("General Options")); + print_help(_ + ("UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu")); + wrefresh(main_sub); + + + noecho(); + while (1) { + c = getch(); + switch (c) { + case 'i': + case 'I': + i = strlen(ANTENNA_RX) + 1 + + strlen(ANTENNA_RX_LEFT) + 6 + + strlen(ANTENNA_RX_RIGHT) + 2; + antenna[3] = on_off(17, i); + sprintf(message, "%3s", (antenna[3] == 1) ? ON : OFF); + print_menusel(17, i, NULL, message); + m_antenna[3] = 1; + continue; + case 'u': + case 'U': + i = strlen(ANTENNA_RX) + 1 + + strlen(ANTENNA_RX_LEFT) + 2; + antenna[2] = on_off(17, i); + sprintf(message, "%3s", (antenna[2] == 1) ? ON : OFF); + print_menusel(17, i, NULL, message); + m_antenna[2] = 1; + continue; + case 'p': + case 'P': + i = strlen(ANTENNA_TX) + 1 + + strlen(ANTENNA_TX_LEFT) + 6 + + strlen(ANTENNA_TX_RIGHT) + 2; + antenna[1] = on_off(18, i); + sprintf(message, "%3s", (antenna[1] == 1) ? ON : OFF); + print_menusel(18, i, NULL, message); + m_antenna[1] = 1; + continue; + case 'o': + case 'O': + i = strlen(ANTENNA_TX) + 1 + + strlen(ANTENNA_TX_LEFT) + 2; + antenna[0] = on_off(18, i); + sprintf(message, "%3s", (antenna[0] == 1) ? ON : OFF); + print_menusel(18, i, NULL, message); + m_antenna[0] = 1; + continue; + case 'T': + case 't': + i = strlen(ANTENNA_DV) + 1 + + strlen(ANTENNA_DV_LEFT) + 2; + antenna[4] = on_off(19, i); + sprintf(message, "%3s", (antenna[4] == 1) ? ON : OFF); + print_menusel(19, i, NULL, message); + m_antenna[4] = 1; + continue; + case 'Y': + case 'y': + i = strlen(ANTENNA_DV) + 1 + + strlen(ANTENNA_DV_LEFT) + 6 + + strlen(ANTENNA_DV_RIGHT) + 2; + antenna[5] = on_off(19, i); + sprintf(message, "%3s", (antenna[5] == 1) ? ON : OFF); + print_menusel(19, i, NULL, message); + m_antenna[5] = 1; + continue; + case 'S': + case 's': + traps = on_off(5, strlen(TRAPS)); + clear_main_new(5, 6); + print_menusel(5, 0, TRAPS, (traps == 1) ? ON : OFF); + m_traps = 1; + continue; + case 'Q': + case 'q': + goto quit; + case '1': + case '2': + case '3': + case '4': + i = c - '0'; + switch (menu_choose(10 + i, 15, rates, 3)) { + case 0: + basic_rates[i-1] = __rates[i-1]; + break; + case 1: + basic_rates[i-1] = 0; + break; + case 2: + basic_rates[i-1] = __rates[i-1] + 0x80; + } + clear_main_new(10 + i, 11 + i); + sprintf(message, RATES_RECORD, i, (float) __rates[i-1] / 2); + print_menusel(10 + i, 2, message, basic(basic_rates[i-1])); + m_basic_rates = 1; + break; + case 'C': + case 'c': + channel = menu_choose(0, strlen(CHANNEL), item_name, ch_num) + + first_channel; + sprintf(message, "%02u (%u MHz)", channel, 2407 + 5 * channel); + print_menusel(0, 0, CHANNEL, message); + m_channel = 1; + continue; + case 'A': + case 'a': + authi = menu_choose(6, strlen(AUTH), auth, 3); + clear_main_new(6, 7); + print_menusel(6, 0, AUTH, auth[authi]); + m_auth = 1; + continue; + case 'N': + case 'n': + get_value(ap_name, 2, strlen(AP_NAME), 32, ANY_STRING, 0, 0, NULL); + m_ap_name = 1; + continue; + case 'L': + case 'l': + get_value(ap_location, 7, strlen(LOCATION), 32, ANY_STRING, 0, 0, + NULL); + m_ap_location = 1; + continue; + case 'K': + case 'k': + get_value(ap_contact, 8, strlen(CONTACT), 32, ANY_STRING, 0, 0, + NULL); + m_ap_contact = 1; + continue; + case 'E': + case 'e': + get_value(domain, 1, strlen(ESSID), 32, ANY_STRING, 0, 0, NULL); + m_essid = 1; + continue; + case 'F': + case 'f': + get_value(message, 4, strlen(FRG_TR), 6, INT_STRING, 256, 2346, + WLAN_HELP); + FragmentationThreshold = atoi(message); + m_fragment = 1; + continue; + case 'R': + case 'r': + get_value(message, 3, strlen(RTS_TR), 6, INT_STRING, 0, 2347, + WLAN_HELP); + RTSThreshold = atoi(message); + m_rts = 1; + continue; + case 'w': + case 'W': + i = 0; + if (m_channel) { + channel_pref[0] = channel; + varbinds[i].oid = ChannelPref; + varbinds[i].len_oid = sizeof(ChannelPref); + varbinds[i].value = channel_pref; + varbinds[i].len_val = 2; + varbinds[i].type = STRING_VALUE; + i++; + varbinds[i].oid = operChannelID; + varbinds[i].len_oid = sizeof(operChannelID); + varbinds[i].value = (char *) &channel; + varbinds[i].len_val = 1; + varbinds[i].type = 0x02; + i++; + } + + if (m_basic_rates) { + varbinds[i].oid = operBasicRates; + varbinds[i].len_oid = sizeof(operBasicRates); + varbinds[i].value = basic_rates; + varbinds[i].len_val = 4; + varbinds[i].type = STRING_VALUE; + i++; + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + i = 0; + + if (m_auth) { + m_auth = (authi == 1) ? 2 : 1; + m_basic_rates = (authi == 0) ? 2 : 1; + varbinds[i].oid = OpenSystem; + varbinds[i].len_oid = sizeof(OpenSystem); + varbinds[i].value = (char *) &m_auth; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + varbinds[i].oid = SharedKey; + varbinds[i].len_oid = sizeof(SharedKey); + varbinds[i].value = (char *) &m_basic_rates; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + i = 0; + + if (m_ap_name) { + c = strlen(ap_name); + varbinds[i].oid = operAccessPointName; + varbinds[i].len_oid = sizeof(operAccessPointName); + varbinds[i].value = ap_name; + varbinds[i].len_val = c; + varbinds[i].type = STRING_VALUE; + i++; + } + + if (m_ap_location) { + c = strlen(ap_location); + varbinds[i].oid = operAccessPointLocation; + varbinds[i].len_oid = sizeof(operAccessPointLocation); + varbinds[i].value = ap_location; + varbinds[i].len_val = c; + varbinds[i].type = STRING_VALUE; + i++; + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + + i = 0; + if (m_ap_contact) { + c = strlen(ap_contact); + varbinds[i].oid = operAccessPointContact; + varbinds[i].len_oid = sizeof(operAccessPointContact); + varbinds[i].value = ap_contact; + varbinds[i].len_val = c; + varbinds[i].type = STRING_VALUE; + i++; + } + if (m_fragment) { + varbinds[i].oid = operFragmentationThreshold; + varbinds[i].len_oid = sizeof(operFragmentationThreshold); + FragmentationThreshold = htons(FragmentationThreshold); + varbinds[i].value = (char *) &FragmentationThreshold; + varbinds[i].len_val = 2; + varbinds[i].type = 0x02; + i++; + } + if (m_rts) { + varbinds[i].oid = operRTSThreshold; + varbinds[i].len_oid = sizeof(operRTSThreshold); + RTSThreshold = htons(RTSThreshold); + varbinds[i].value = (char *) &RTSThreshold; + varbinds[i].len_val = 2; + varbinds[i].type = 0x02; + i++; + } + if (m_traps) { + varbinds[i].oid = sysTrapSwitch; + varbinds[i].len_oid = sizeof(sysTrapSwitch); + varbinds[i].value = &traps; + varbinds[i].len_val = 1; + varbinds[i].type = 0x02; + i++; + } + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + c = 0; + for (i = 0; i < 4; i++) + if (m_antenna[i]) { + varbinds[c].oid = oid_dot11SupportedAntenna[i]; + varbinds[c].len_oid = + sizeof(oid_dot11SupportedAntenna[i]); + varbinds[c].value = &antenna[i]; + varbinds[c].len_val = 1; + varbinds[c].type = INT_VALUE; + c++; + } + print_help(WAIT_SET); + if (snmp(varbinds, c, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + c = 0; + for (i = i; i < 6; i++) + if (m_antenna[i]) { + varbinds[c].oid = oid_dot11SupportedAntenna[i]; + varbinds[c].len_oid = + sizeof(oid_dot11SupportedAntenna[i]); + varbinds[c].value = &antenna[i]; + varbinds[c].len_val = 1; + varbinds[c].type = INT_VALUE; + c++; + } + print_help(WAIT_SET); + if (snmp(varbinds, c, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + i = 0; + if (m_essid) { + c = strlen(domain); + varbinds[i].oid = operESSID; + varbinds[i].len_oid = sizeof(operESSID); + varbinds[i].value = domain; + varbinds[i].len_val = c; + varbinds[i].type = 0x04; + i++; + } + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + + print_help(DONE_SET); + goto exit; + default: + continue; + } + } + + exit: + getch(); + quit: + print_title(""); + + /* free memory allocated for channel list */ + for (i = 0; i < ch_num; i++) + free(item_name[i]); + free(domain); + free(ap_name); + clear_main(0); +} diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..297f3c3 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,317 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper +# +# 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. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = config/mkinstalldirs +mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +GMSGFMT = @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = xgettext +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 Makevars remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ +$(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-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 -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: $(CATALOGS) +all-no: + +# 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. + +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' + 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; \ + } + +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common); do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(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"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(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"; then \ + for file in $(DISTFILES.common); 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 + +dvi info tags TAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + 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 $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: $(DISTFILES) + dists="$(DISTFILES)"; \ + if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir); \ + else \ + cp -p $(srcdir)/$$file $(distdir); \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$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 "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) + @: + +Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +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..8b09f53 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,25 @@ +# 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 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..c70873e --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,35 @@ +# List of source files containing translatable strings. +# Copyright (C) 1995 Free Software Foundation, Inc. + +ap-gl/ap-gl.c +ap-gl/auth_mac.c +ap-gl/bridge.c +ap-gl/stations.c +lib/aps.c +lib/ap_search.c +lib/ap-utils.h +lib/ber.c +lib/cmd.c +lib/common.c +lib/file.c +lib/input.c +lib/menu.c +lib/oui.c +lib/radio.c +lib/reset.c +lib/scr.c +lib/set_community.c +lib/snmp.c +lib/stat.c +lib/sysinfo.c +lib/test.c +lib/wep.c +lib/wlan.c +src/ap-config.c +src/ap-mrtg.c +src/ap-trapd.c +src/auth_mac.c +src/bridge.c +src/nwn_advanced.c +src/nwn_latest.c +src/stations.c diff --git a/po/ap-utils.pot b/po/ap-utils.pot new file mode 100644 index 0000000..bfd9d30 --- /dev/null +++ b/po/ap-utils.pot @@ -0,0 +1,1552 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2004-04-04 20:22+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ap-gl/ap-gl.c:47 ap-gl/bridge.c:179 src/ap-config.c:46 src/bridge.c:222 +msgid "Bridging" +msgstr "" + +#: ap-gl/ap-gl.c:47 src/ap-config.c:46 +msgid "Set bridging and IP-related options" +msgstr "" + +#: ap-gl/ap-gl.c:49 ap-gl/ap-gl.c:85 ap-gl/bridge.c:133 src/ap-config.c:48 +#: src/ap-config.c:118 src/ap-config.c:127 src/bridge.c:135 src/bridge.c:139 +msgid "Wireless" +msgstr "" + +#: ap-gl/ap-gl.c:49 src/ap-config.c:48 +msgid "Set wireless options" +msgstr "" + +#: ap-gl/ap-gl.c:50 src/ap-config.c:49 src/ap-config.c:61 +msgid "Privacy" +msgstr "" + +#: ap-gl/ap-gl.c:51 src/ap-config.c:50 src/ap-config.c:62 +msgid "MAC auth" +msgstr "" + +#: ap-gl/ap-gl.c:52 src/ap-config.c:51 src/ap-config.c:63 +msgid "Community" +msgstr "" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Radio" +msgstr "" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Set radio signal power and antenna options" +msgstr "" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Upload" +msgstr "" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Make current configuration active" +msgstr "" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Defaults" +msgstr "" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Restore factory default settings" +msgstr "" + +#: ap-gl/ap-gl.c:69 src/ap-config.c:86 src/ap-config.c:94 +msgid "Reset" +msgstr "" + +#: ap-gl/ap-gl.c:70 src/ap-config.c:87 +msgid "Reset AP. All not uploaded configuration will be lost" +msgstr "" + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "TestMode" +msgstr "" + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "Put Access Point in test mode" +msgstr "" + +#: ap-gl/ap-gl.c:83 src/ap-config.c:116 src/ap-config.c:126 +msgid "SysInfo" +msgstr "" + +#: ap-gl/ap-gl.c:84 ap-gl/bridge.c:132 src/ap-config.c:117 src/bridge.c:134 +#: src/bridge.c:138 +msgid "Ethernet" +msgstr "" + +#: ap-gl/ap-gl.c:84 src/ap-config.c:117 +msgid "Get ethernet port statistics" +msgstr "" + +#: ap-gl/ap-gl.c:86 src/ap-config.c:119 src/ap-config.c:128 +msgid "Stations" +msgstr "" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "KnownAPs" +msgstr "" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "Get info about known Access Points" +msgstr "" + +#: ap-gl/ap-gl.c:105 src/ap-config.c:154 +msgid "Info" +msgstr "" + +#: ap-gl/ap-gl.c:106 src/ap-config.c:155 +msgid "Config" +msgstr "" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Commands" +msgstr "" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Execute commands on Access Point" +msgstr "" + +#: ap-gl/ap-gl.c:109 src/ap-config.c:158 +msgid "Connect" +msgstr "" + +#: ap-gl/ap-gl.c:110 src/ap-config.c:159 +msgid "Search" +msgstr "" + +#: ap-gl/ap-gl.c:111 lib/common.c:52 src/ap-config.c:160 +msgid "About" +msgstr "" + +#: ap-gl/ap-gl.c:112 src/ap-config.c:161 +msgid "Shell" +msgstr "" + +#: ap-gl/ap-gl.c:113 src/ap-config.c:162 +msgid "Exit" +msgstr "" + +#: ap-gl/ap-gl.c:162 src/ap-config.c:211 +#, c-format +msgid "Wireless Access Point Configurator ver. %s" +msgstr "" + +#: ap-gl/auth_mac.c:28 src/auth_mac.c:28 +msgid "AuthorizedMacTableString packet error" +msgstr "" + +#: ap-gl/auth_mac.c:30 src/auth_mac.c:30 +msgid "[A] MAC authorization: " +msgstr "" + +#: ap-gl/auth_mac.c:31 src/auth_mac.c:31 +msgid "Enter MAC: " +msgstr "" + +#: ap-gl/auth_mac.c:32 src/auth_mac.c:32 +msgid "Delete Num: " +msgstr "" + +#: ap-gl/auth_mac.c:33 src/auth_mac.c:33 +msgid "Authorized MAC addresses" +msgstr "" + +#: ap-gl/auth_mac.c:34 src/auth_mac.c:34 +msgid "NUM MAC address" +msgstr "" + +#: ap-gl/auth_mac.c:35 src/auth_mac.c:35 +msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit" +msgstr "" + +#: ap-gl/auth_mac.c:36 +msgid "A - auth; IPSTF - set; W - write conf; Q - quit" +msgstr "" + +#: ap-gl/auth_mac.c:37 +msgid "A - auth; W - write conf; Q - quit" +msgstr "" + +#: ap-gl/auth_mac.c:39 +msgid "[I] RADIUS SERVER IP: " +msgstr "" + +#: ap-gl/auth_mac.c:40 +msgid "[P] RADIUS SERVER PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:41 +msgid "[S] RADIUS SERVER SECRET: " +msgstr "" + +#: ap-gl/auth_mac.c:42 +msgid "[T] REAUTHORIZATION TIME: " +msgstr "" + +#: ap-gl/auth_mac.c:43 +msgid "[F] RADIUS SOURCE PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:88 +msgid "Internal" +msgstr "" + +#: ap-gl/auth_mac.c:96 +msgid "" +msgstr "" + +#: ap-gl/bridge.c:27 src/bridge.c:27 +msgid "[I] IP: " +msgstr "" + +#: ap-gl/bridge.c:28 src/bridge.c:28 +msgid "[N] Netmask: " +msgstr "" + +#: ap-gl/bridge.c:29 src/bridge.c:29 +msgid "[G] Gateway: " +msgstr "" + +#: ap-gl/bridge.c:30 src/bridge.c:30 +msgid "[F] Filter non-IP traffic: " +msgstr "" + +#: ap-gl/bridge.c:31 src/bridge.c:31 +msgid "[P] Primary port: " +msgstr "" + +#: ap-gl/bridge.c:32 src/bridge.c:32 +msgid "Attached station MAC: " +msgstr "" + +#: ap-gl/bridge.c:33 src/bridge.c:33 +msgid "[D] DHCP client: " +msgstr "" + +#: ap-gl/bridge.c:34 src/bridge.c:34 +msgid "[O] Operational mode: " +msgstr "" + +#: ap-gl/bridge.c:35 src/bridge.c:35 +msgid "[M] Preferred BSSID (remote MAC addr.): " +msgstr "" + +#: ap-gl/bridge.c:37 src/bridge.c:37 +msgid "[T] Trap-sending port(s): " +msgstr "" + +#: ap-gl/bridge.c:38 src/bridge.c:38 +msgid "[R] Forward broadcast traffic: " +msgstr "" + +#: ap-gl/bridge.c:40 +msgid "[U] Isolate wireless clients: " +msgstr "" + +#: ap-gl/bridge.c:41 src/bridge.c:41 +msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu" +msgstr "" + +#: ap-gl/bridge.c:125 src/bridge.c:127 +msgid "Wireless Bridge Point to MultiPoint" +msgstr "" + +#: ap-gl/bridge.c:126 src/bridge.c:128 +msgid "Access Point" +msgstr "" + +#: ap-gl/bridge.c:127 src/bridge.c:129 +msgid "Access Point client" +msgstr "" + +#: ap-gl/bridge.c:128 src/bridge.c:130 +msgid "Wireless Bridge Point to Point" +msgstr "" + +#: ap-gl/bridge.c:129 src/bridge.c:131 +msgid "Repeater" +msgstr "" + +#: ap-gl/stations.c:31 src/stations.c:29 +msgid "Associated Stations" +msgstr "" + +#: ap-gl/stations.c:83 src/stations.c:87 +msgid "AP now in AP Client Mode and don't has any associated stations" +msgstr "" + +#: ap-gl/stations.c:109 +msgid "# MAC LQ RSSI Status Port IP" +msgstr "" + +#: ap-gl/stations.c:135 src/stations.c:139 +msgid "AssociatedSTAsInfo packet error" +msgstr "" + +#: ap-gl/stations.c:164 src/stations.c:161 src/stations.c:313 +msgid "Arrows - scroll; S - save to file; Q - quit to menu." +msgstr "" + +#: lib/aps.c:128 +msgid "Your Access Point is not in \"AP client\" mode => getting" +msgstr "" + +#: lib/aps.c:131 +msgid "up-to-date \"Known APs\" info requires your AP to be" +msgstr "" + +#: lib/aps.c:134 +msgid "temporarily configured into \"AP client\" mode and rebooted." +msgstr "" + +#: lib/aps.c:137 +msgid "Your AP will be reconfigured back to original mode by this" +msgstr "" + +#: lib/aps.c:140 +msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" +msgstr "" + +#: lib/aps.c:143 +msgid "cause loss of Access Point's current configuration." +msgstr "" + +#: lib/aps.c:147 +msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" +msgstr "" + +#: lib/aps.c:150 +msgid "via its wireless port." +msgstr "" + +#: lib/aps.c:152 lib/cmd.c:49 lib/cmd.c:92 lib/test.c:93 +msgid "Do you want to continue? " +msgstr "" + +#: lib/aps.c:154 +msgid "(Y - Yes; N - No (it's safer to answer No)" +msgstr "" + +#: lib/aps.c:202 +msgid "Known Access Points" +msgstr "" + +#: lib/aps.c:217 +msgid "NetworkType" +msgstr "" + +#: lib/aps.c:293 +msgid "Infrastructure" +msgstr "" + +#: lib/aps.c:352 lib/aps.c:360 lib/aps.c:368 +msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);" +msgstr "" + +#: lib/aps.c:354 +msgid "RSSI: Radio Signal Strength Indicator [%];" +msgstr "" + +#: lib/aps.c:356 lib/aps.c:364 +msgid "LQ: Link Quality [%]" +msgstr "" + +#: lib/aps.c:362 +msgid "RSSI: Radio Signal Strength Indicator [dBm];" +msgstr "" + +#: lib/aps.c:370 +msgid "RSSI: Radio Signal Strength Indicator [raw];" +msgstr "" + +#: lib/aps.c:372 +msgid "LQ: Link Quality [raw]" +msgstr "" + +#: lib/aps.c:378 +msgid "" +"# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q " +"quit" +msgstr "" + +#: lib/aps.c:380 +msgid "" +"# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit" +msgstr "" + +#: lib/aps.c:509 lib/ap_search.c:152 +#, c-format +msgid "Failure in sendto(): %s. Press any key." +msgstr "" + +#: lib/aps.c:518 +msgid "You have just initiated the AP scan. Be advised that it may" +msgstr "" + +#: lib/aps.c:521 +msgid "take a few seconds for your Access Point to find out some" +msgstr "" + +#: lib/aps.c:524 +msgid "values, so expect finishing the scan in about 5 seconds." +msgstr "" + +#: lib/aps.c:527 +msgid "Also note that your Access Point stops forwarding the network" +msgstr "" + +#: lib/aps.c:530 +msgid "traffic while the scan is in progress, but restores itself" +msgstr "" + +#: lib/aps.c:533 +msgid "to normal operation in time ranging up to 1 minute." +msgstr "" + +#: lib/aps.c:536 +msgid "Hence, if you are connected to target Access Point via its" +msgstr "" + +#: lib/aps.c:539 +msgid "wireless port, you need to wait a bit longer" +msgstr "" + +#: lib/aps.c:542 +msgid "after pressing 'S'." +msgstr "" + +#: lib/ap_search.c:49 +msgid "# Type IP Description" +msgstr "" + +#: lib/ap_search.c:88 +msgid "Please wait while scanning, or press 'Q' to quit." +msgstr "" + +#: lib/ap_search.c:104 +msgid "Can't set broadcast option on socket. Press any key." +msgstr "" + +#: lib/ap_search.c:113 +msgid "Can't set multicast membership on socket. Press any key." +msgstr "" + +#: lib/ap_search.c:119 +msgid "Scanning via network interface:" +msgstr "" + +#: lib/ap_search.c:120 +#, c-format +msgid " Index: %i" +msgstr "" + +#: lib/ap_search.c:122 +#, c-format +msgid " Name: %s" +msgstr "" + +#: lib/ap_search.c:124 +#, c-format +msgid " IP: %s" +msgstr "" + +#: lib/ap_search.c:133 +#, c-format +msgid "Scanning for AP type: %s" +msgstr "" + +#: lib/ap_search.c:311 +msgid "Access Points Search" +msgstr "" + +#: lib/ap_search.c:328 +msgid "realloc() error." +msgstr "" + +#: lib/ap_search.c:340 +msgid "Network interface discovery error." +msgstr "" + +#: lib/ap_search.c:415 +msgid "No local network interfaces found. Press any key." +msgstr "" + +#: lib/ap_search.c:417 +msgid "No directly reachable Access Points found. Press any key." +msgstr "" + +#: lib/ap_search.c:421 +msgid "Program-hardcoded maximum number of APs found." +msgstr "" + +#: lib/ap_search.c:425 +msgid "# - connect to AP; Q - quit" +msgstr "" + +#: lib/ap-utils.h:74 +msgid "MAC address: " +msgstr "" + +#: lib/ap-utils.h:75 +msgid "[S] SNMP traps: " +msgstr "" + +#: lib/ap-utils.h:77 +msgid "[C] Frequency channel: " +msgstr "" + +#: lib/ap-utils.h:79 +msgid "Receive antenna:" +msgstr "" + +#: lib/ap-utils.h:80 +msgid "[U] Left" +msgstr "" + +#: lib/ap-utils.h:81 +msgid "[I] Right" +msgstr "" + +#: lib/ap-utils.h:82 +msgid "Transmit antenna:" +msgstr "" + +#: lib/ap-utils.h:83 +msgid "[O] Left" +msgstr "" + +#: lib/ap-utils.h:84 +msgid "[P] Right" +msgstr "" + +#: lib/ap-utils.h:85 +msgid "Diversity select:" +msgstr "" + +#: lib/ap-utils.h:86 +msgid "[T] Left" +msgstr "" + +#: lib/ap-utils.h:87 +msgid "[Y] Right" +msgstr "" + +#: lib/ap-utils.h:89 +msgid "Yes" +msgstr "" + +#: lib/ap-utils.h:90 +msgid "No" +msgstr "" + +#: lib/ap-utils.h:92 +msgid "On" +msgstr "" + +#: lib/ap-utils.h:93 +msgid "Off" +msgstr "" + +#: lib/ap-utils.h:95 +msgid "Basic" +msgstr "" + +#: lib/ap-utils.h:97 +msgid "Press any key to continue." +msgstr "" + +#: lib/ap-utils.h:99 +msgid "Unable to write data to AP. Press any key to continue." +msgstr "" + +#: lib/ap-utils.h:100 +msgid "Unable to retrieve data from AP. Press any key to continue." +msgstr "" + +#: lib/ap-utils.h:101 +msgid "Retrieving data from AP. Please wait..." +msgstr "" + +#: lib/ap-utils.h:102 +msgid "Writing data to AP. Please wait..." +msgstr "" + +#: lib/ap-utils.h:103 +msgid "Configuration written to the AP. Press any key to continue." +msgstr "" + +#: lib/ap-utils.h:105 +msgid "Create socket error. Press any key." +msgstr "" + +#: lib/ap-utils.h:106 +msgid "Bind socket error. Press any key." +msgstr "" + +#: lib/ap-utils.h:108 +msgid "Back to main menu" +msgstr "" + +#: lib/ap-utils.h:109 +msgid "Exit program" +msgstr "" + +#: lib/ap-utils.h:110 +msgid "Run subshell. To return type 'exit'." +msgstr "" + +#: lib/ap-utils.h:111 +msgid "Short info about program" +msgstr "" + +#: lib/ap-utils.h:112 +msgid "Find connected Access Points" +msgstr "" + +#: lib/ap-utils.h:113 +msgid "Set connection options: ip and community" +msgstr "" + +#: lib/ap-utils.h:114 +msgid "Set encryption; edit WEP keys" +msgstr "" + +#: lib/ap-utils.h:115 +msgid "Set MAC authorization; edit MAC authorization table" +msgstr "" + +#: lib/ap-utils.h:116 +msgid "Set SNMP community/password for access to the AP" +msgstr "" + +#: lib/ap-utils.h:117 +msgid "Get info about AP hardware and firmware" +msgstr "" + +#: lib/ap-utils.h:118 +msgid "Get wireless port statistics" +msgstr "" + +#: lib/ap-utils.h:119 +msgid "Get list of currently associated stations (Access Point clients)" +msgstr "" + +#: lib/ap-utils.h:120 +msgid "Get info and statistics from AP" +msgstr "" + +#: lib/ap-utils.h:121 +msgid "Set various configuration options" +msgstr "" + +#: lib/cmd.c:25 +msgid "" +"(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" +msgstr "" + +#: lib/cmd.c:44 +msgid "Restore factory default configuration" +msgstr "" + +#: lib/cmd.c:47 +msgid "After restoring factory defaults your current configuration." +msgstr "" + +#: lib/cmd.c:48 +msgid "will be lost." +msgstr "" + +#: lib/cmd.c:79 +msgid "Factory default settings loaded. Press any key to continue." +msgstr "" + +#: lib/cmd.c:88 +msgid "Reset Access Point" +msgstr "" + +#: lib/cmd.c:91 +msgid "By reset you'll lose all non-uploaded configuration." +msgstr "" + +#: lib/cmd.c:113 +msgid "Access Point reset. Press any key to continue." +msgstr "" + +#: lib/cmd.c:146 +msgid "Upload configuration" +msgstr "" + +#: lib/cmd.c:149 +msgid "You need to upload the configuration only if you've changed" +msgstr "" + +#: lib/cmd.c:152 +msgid "some option values before. Using this option may cause loss" +msgstr "" + +#: lib/cmd.c:153 +msgid "of your current configuration." +msgstr "" + +#: lib/cmd.c:176 +msgid "Configuration uploaded. Press any key to continue." +msgstr "" + +#: lib/common.c:30 +msgid "Autodetect AP type? " +msgstr "" + +#: lib/common.c:31 +msgid "Access Point IP-address: " +msgstr "" + +#: lib/common.c:32 +msgid "Password (community): " +msgstr "" + +#: lib/common.c:33 +msgid "AP type: " +msgstr "" + +#: lib/common.c:34 +msgid "Save connect-settings: " +msgstr "" + +#: lib/common.c:69 +#, c-format +msgid "From %s" +msgstr "" + +#: lib/common.c:71 +#, c-format +msgid "Version %s" +msgstr "" + +#: lib/common.c:74 +msgid "Written by Roman Festchook roma@polesye.net" +msgstr "" + +#: lib/common.c:76 +msgid "Copyright (c) Roman Festchook 2001-2004" +msgstr "" + +#: lib/common.c:79 +msgid "This program is distributed under the terms" +msgstr "" + +#: lib/common.c:81 +msgid "of the GNU General Public License version 2." +msgstr "" + +#: lib/common.c:83 +msgid "See the included COPYING file for details." +msgstr "" + +#: lib/common.c:135 +msgid "Connect options" +msgstr "" + +#: lib/common.c:143 +msgid "Enter IP address of your Access Point." +msgstr "" + +#: lib/common.c:148 +msgid "Entered characters will not be displayed for security reason." +msgstr "" + +#: lib/common.c:171 +msgid "Determining AP type. Please wait..." +msgstr "" + +#: lib/common.c:196 +msgid "Unable to determine AP type (no response). Press any key." +msgstr "" + +#: lib/file.c:176 +msgid "NUM IP ADDRESS TYPE" +msgstr "" + +#: lib/file.c:177 +msgid "Choose an AP to connect to" +msgstr "" + +#: lib/file.c:182 +msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll" +msgstr "" + +#: lib/file.c:225 +msgid "Connect to AP num:" +msgstr "" + +#: lib/file.c:250 +msgid "Delete num:" +msgstr "" + +#: lib/input.c:31 +msgid "Invalid value. Press any key to continue." +msgstr "" + +#: lib/input.c:32 +#, c-format +msgid "Value must be in range %i - %i. Press any key to continue." +msgstr "" + +#: lib/oui.c:6052 +msgid "Unknown or Private" +msgstr "" + +#: lib/radio.c:27 +msgid "" +"[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" +msgstr "" + +#: lib/radio.c:29 +msgid "Antenna:" +msgstr "" + +#: lib/radio.c:30 +msgid "[L] Left:" +msgstr "" + +#: lib/radio.c:31 +msgid "[R] Right:" +msgstr "" + +#: lib/radio.c:114 +msgid "Radio Configuration" +msgstr "" + +#: lib/radio.c:115 +msgid "Output RF signal power level (CR31 register values)" +msgstr "" + +#: lib/radio.c:117 +msgid "Key Channel Level" +msgstr "" + +#: lib/radio.c:273 +msgid "" +"You can't disable both antennas; unable to save antenna-config. Press any " +"key." +msgstr "" + +#: lib/scr.c:134 +#, c-format +msgid "Current AP: %s Type: %s" +msgstr "" + +#: lib/set_community.c:28 +msgid "Set community/password" +msgstr "" + +#: lib/set_community.c:29 +msgid "Key Access level" +msgstr "" + +#: lib/set_community.c:30 +msgid "Community/Password" +msgstr "" + +#: lib/set_community.c:31 +msgid "[U] User" +msgstr "" + +#: lib/set_community.c:32 +msgid "[A] Administrator" +msgstr "" + +#: lib/set_community.c:33 +msgid "" +"[key] - set community/password; W - write config to AP; Q - quit to menu" +msgstr "" + +#: lib/set_community.c:80 +msgid "[M] Manufacturer" +msgstr "" + +#: lib/stat.c:29 +msgid "Unable to get data from AP. Press Q to continue." +msgstr "" + +#: lib/stat.c:30 lib/stat.c:428 +msgid "Q - quit to menu." +msgstr "" + +#: lib/stat.c:31 +msgid "pipe error. Press any key." +msgstr "" + +#: lib/stat.c:32 +msgid "fcntl error. Press any key." +msgstr "" + +#: lib/stat.c:33 +msgid "fork error. Press any key." +msgstr "" + +#: lib/stat.c:72 +msgid "Ethernet Statistics" +msgstr "" + +#: lib/stat.c:108 +msgid "EthRxStat packet error. Press Q to continue." +msgstr "" + +#: lib/stat.c:120 +msgid "EthTxStat packet error. Press Q to continue." +msgstr "" + +#: lib/stat.c:123 +msgid "Received:" +msgstr "" + +#: lib/stat.c:124 +msgid "Transmitted:" +msgstr "" + +#: lib/stat.c:251 lib/stat.c:427 +msgid "Wireless Statistics" +msgstr "" + +#: lib/stat.c:282 +msgid "WirelessStat packet error. Press Q to continue." +msgstr "" + +#: lib/stat.c:419 +msgid "pipe error. Press any key" +msgstr "" + +#: lib/stat.c:424 +msgid "fcntl error. Press any key" +msgstr "" + +#: lib/stat.c:433 +msgid "fork error. Press any key" +msgstr "" + +#: lib/sysinfo.c:31 +msgid "System Description: " +msgstr "" + +#: lib/sysinfo.c:93 lib/sysinfo.c:277 +msgid "System Info" +msgstr "" + +#: lib/sysinfo.c:95 +msgid "Device hardware/software/name info:" +msgstr "" + +#: lib/sysinfo.c:130 +msgid "Product name:" +msgstr "" + +#: lib/sysinfo.c:135 +#, c-format +msgid "Product type: %u" +msgstr "" + +#: lib/sysinfo.c:138 +#, c-format +msgid "Hardware revision: %u" +msgstr "" + +#: lib/sysinfo.c:141 +msgid "OEM name:" +msgstr "" + +#: lib/sysinfo.c:149 +#, c-format +msgid "Regulation domain: %s [%d]" +msgstr "" + +#: lib/sysinfo.c:150 lib/sysinfo.c:337 +msgid "FCC (USA)" +msgstr "" + +#: lib/sysinfo.c:151 lib/sysinfo.c:338 +msgid "DOC (Canada)" +msgstr "" + +#: lib/sysinfo.c:152 lib/sysinfo.c:339 +msgid "ETSI (Europe)" +msgstr "" + +#: lib/sysinfo.c:153 lib/sysinfo.c:340 +msgid "Spain" +msgstr "" + +#: lib/sysinfo.c:154 lib/sysinfo.c:341 +msgid "France" +msgstr "" + +#: lib/sysinfo.c:155 lib/sysinfo.c:342 +msgid "MKK (Japan)" +msgstr "" + +#: lib/sysinfo.c:155 lib/sysinfo.c:236 lib/sysinfo.c:342 +msgid "unknown" +msgstr "" + +#: lib/sysinfo.c:158 +#, c-format +msgid "Info structure version: %u" +msgstr "" + +#: lib/sysinfo.c:161 lib/sysinfo.c:299 +#, c-format +msgid "Manufacturer OUI: %02X %02X %02X (%s)" +msgstr "" + +#: lib/sysinfo.c:233 +msgid "FHSS 2.4 GHz" +msgstr "" + +#: lib/sysinfo.c:233 +msgid "DSSS 2.4 GHz" +msgstr "" + +#: lib/sysinfo.c:233 +msgid "IR Baseband" +msgstr "" + +#: lib/sysinfo.c:234 +msgid "Commercial range 0..40 C" +msgstr "" + +#: lib/sysinfo.c:235 +msgid "Industrial range -30..70 C" +msgstr "" + +#: lib/sysinfo.c:238 +msgid "manual" +msgstr "" + +#: lib/sysinfo.c:238 +msgid "notsupported" +msgstr "" + +#: lib/sysinfo.c:238 +msgid "dynamic" +msgstr "" + +#: lib/sysinfo.c:287 +msgid "Manufacturer:" +msgstr "" + +#: lib/sysinfo.c:293 +msgid "Manufacturer ID:" +msgstr "" + +#: lib/sysinfo.c:305 +msgid "Product Name:" +msgstr "" + +#: lib/sysinfo.c:312 +msgid "Product ID:" +msgstr "" + +#: lib/sysinfo.c:318 +msgid "Product Version:" +msgstr "" + +#: lib/sysinfo.c:326 +#, c-format +msgid "PHYType: %s" +msgstr "" + +#: lib/sysinfo.c:329 +#, c-format +msgid "Temperature: %s" +msgstr "" + +#: lib/sysinfo.c:336 +#, c-format +msgid "Regulation Domain: %s" +msgstr "" + +#: lib/sysinfo.c:345 +#, c-format +msgid "Transmit Power: %u mW" +msgstr "" + +#: lib/sysinfo.c:375 +#, c-format +msgid "WEP inplemented: %s" +msgstr "" + +#: lib/sysinfo.c:378 +#, c-format +msgid "Diversity: %s" +msgstr "" + +#: lib/sysinfo.c:406 +#, c-format +msgid "Uptime: %u:%02u:%02u.%02u" +msgstr "" + +#: lib/sysinfo.c:422 +#, c-format +msgid "IP Address: %s" +msgstr "" + +#: lib/test.c:27 +msgid "[T] Test mode: " +msgstr "" + +#: lib/test.c:28 +msgid "[A] Antenna: " +msgstr "" + +#: lib/test.c:29 +msgid "[S] Signal level: " +msgstr "" + +#: lib/test.c:30 +msgid "[R] Rate: " +msgstr "" + +#: lib/test.c:31 +msgid "[F] TxFiler: " +msgstr "" + +#: lib/test.c:32 +msgid "[O] Command: " +msgstr "" + +#: lib/test.c:33 +msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" +msgstr "" + +#: lib/test.c:71 +msgid "Left" +msgstr "" + +#: lib/test.c:71 +msgid "Right" +msgstr "" + +#: lib/test.c:88 +msgid "Test mode" +msgstr "" + +#: lib/test.c:91 +msgid "Using the \"Test mode\" may cause loss of your current" +msgstr "" + +#: lib/test.c:92 +msgid "configuration." +msgstr "" + +#: lib/test.c:95 +msgid "(Y - Yes; N - No (it's safer to answer No.)" +msgstr "" + +#: lib/test.c:118 +msgid "Options:" +msgstr "" + +#: lib/test.c:144 +msgid "Statistics:" +msgstr "" + +#: lib/test.c:145 +msgid "Success Frames: 0 Failed Frames: 0" +msgstr "" + +#: lib/test.c:207 +#, c-format +msgid "Success Frames: %lu Failed Frames: %lu" +msgstr "" + +#: lib/wep.c:29 +msgid "[E] Standard encryption mechanism: " +msgstr "" + +#: lib/wep.c:30 +msgid "[A] Allow unencrypted: " +msgstr "" + +#: lib/wep.c:31 +msgid "[K] Default WEP key: " +msgstr "" + +#: lib/wep.c:32 +msgid "[P] Public key: " +msgstr "" + +#: lib/wep.c:85 +msgid "EK1234 - set; W - write conf; Q - quit to menu" +msgstr "" + +#: lib/wep.c:87 lib/wep.c:249 +msgid "Privacy Settings" +msgstr "" + +#: lib/wep.c:94 lib/wep.c:263 +msgid "Key WEP" +msgstr "" + +#: lib/wep.c:101 +msgid "Hint! Confused by WEP key values? See man ap-config for info..." +msgstr "" + +#: lib/wep.c:247 +msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" +msgstr "" + +#: lib/wlan.c:28 +msgid "[E] ESSID: " +msgstr "" + +#: lib/wlan.c:29 +msgid "[N] AP name: " +msgstr "" + +#: lib/wlan.c:31 +msgid "[K] AP contact: " +msgstr "" + +#: lib/wlan.c:32 +msgid "[L] AP location: " +msgstr "" + +#: lib/wlan.c:34 +msgid "[R] RTS threshold: " +msgstr "" + +#: lib/wlan.c:35 +msgid "[F] Fragmentation threshold: " +msgstr "" + +#: lib/wlan.c:36 +msgid "[P] Preambule type: " +msgstr "" + +#: lib/wlan.c:37 +msgid "[A] Auth type: " +msgstr "" + +#: lib/wlan.c:38 +msgid "Open system" +msgstr "" + +#: lib/wlan.c:39 +msgid "Shared key" +msgstr "" + +#: lib/wlan.c:40 +msgid "Both types" +msgstr "" + +#: lib/wlan.c:41 +msgid "[U] Auto rate fallback: " +msgstr "" + +#: lib/wlan.c:42 +msgid "[S] Insert ESSID in broadcast packets: " +msgstr "" + +#: lib/wlan.c:43 +msgid "Basic and Supported rates:" +msgstr "" + +#: lib/wlan.c:44 +msgid "Key Rate Status" +msgstr "" + +#: lib/wlan.c:46 +msgid "[I] International roaming: " +msgstr "" + +#: lib/wlan.c:47 +msgid "[B] Beacon period (msec): " +msgstr "" + +#: lib/wlan.c:48 +msgid "[D] DTIM sending interval (beacons): " +msgstr "" + +#: lib/wlan.c:49 +msgid "[key] - set option; W - write conf; Q - quit to menu" +msgstr "" + +#: lib/wlan.c:140 +msgid "Short" +msgstr "" + +#: lib/wlan.c:140 +msgid "Long" +msgstr "" + +#: lib/wlan.c:265 +msgid "Wireless Settings" +msgstr "" + +#: lib/wlan.c:753 +msgid "Antenna Configuration:" +msgstr "" + +#: lib/wlan.c:770 +msgid "General Options" +msgstr "" + +#: lib/wlan.c:772 +msgid "" +"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu" +msgstr "" + +#: src/ap-config.c:59 +msgid "General" +msgstr "" + +#: src/ap-config.c:59 +msgid "Set general options" +msgstr "" + +#: src/ap-config.c:60 +msgid "Advanced" +msgstr "" + +#: src/ap-config.c:60 +msgid "Set advanced options" +msgstr "" + +#: src/ap-config.c:94 +msgid "Reset AP." +msgstr "" + +#: src/ap-config.c:129 +msgid "Latest" +msgstr "" + +#: src/ap-config.c:129 +msgid "Get info about latest events" +msgstr "" + +#: src/ap-mrtg.c:42 +msgid "" +"\n" +"Usage:\n" +msgstr "" + +#: src/ap-mrtg.c:44 +msgid "" +"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-" +"h] [-r]\n" +"\n" +msgstr "" + +#: src/ap-mrtg.c:46 +msgid "" +"Get stats from AP and return it in MRTG parsable format\n" +"\n" +msgstr "" + +#: src/ap-mrtg.c:47 +msgid "-i ip - AP ip address\n" +msgstr "" + +#: src/ap-mrtg.c:48 +msgid "-c community - SNMP community string\n" +msgstr "" + +#: src/ap-mrtg.c:50 +msgid "" +"-t type - statistics type ireless, thernet, associated tations " +"or ink quality in client mode\n" +msgstr "" + +#: src/ap-mrtg.c:52 +msgid "" +"-b bssid - mac address of the AP to which get link quality, only if " +"type=l\n" +msgstr "" + +#: src/ap-mrtg.c:53 +msgid "-n name - AP name - for check only\n" +msgstr "" + +#: src/ap-mrtg.c:54 +msgid "" +"-a aptype - AP type - 410 (default) or 510 for ATMEL12350's, like the " +"ME-102\n" +msgstr "" + +#: src/ap-mrtg.c:56 +msgid "-v - report MRTG about problems connecting to AP\n" +msgstr "" + +#: src/ap-mrtg.c:57 +msgid "-r - reset AP when getting LinkQuality stats\n" +msgstr "" + +#: src/ap-mrtg.c:58 +msgid "" +"-h - print this help screen\n" +"\n" +msgstr "" + +#: src/ap-mrtg.c:59 +#, c-format +msgid "" +"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" +"\n" +msgstr "" + +#: src/ap-mrtg.c:143 +msgid "Invalid IP-address\n" +msgstr "" + +#: src/ap-mrtg.c:188 +#, c-format +msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" +msgstr "" + +#: src/ap-mrtg.c:207 +msgid "Create socket error" +msgstr "" + +#: src/ap-mrtg.c:211 +msgid "Bind socket error" +msgstr "" + +#: src/ap-trapd.c:148 +#, c-format +msgid "ap-trapd %s started%s%s." +msgstr "" + +#: src/ap-trapd.c:149 +msgid " on " +msgstr "" + +#: src/ap-trapd.c:155 +msgid "Unable to fork. Exiting." +msgstr "" + +#: src/ap-trapd.c:159 +msgid "Can't create socket. Exiting." +msgstr "" + +#: src/ap-trapd.c:165 +msgid "Can't bind socket. Exiting." +msgstr "" + +#: src/ap-trapd.c:172 +#, c-format +msgid "Can't bind to device %s. Exiting." +msgstr "" + +#: src/ap-trapd.c:183 +#, c-format +msgid "Unable to process username %s. Error: %m." +msgstr "" + +#: src/ap-trapd.c:188 +#, c-format +msgid "Unable to change to uid %d." +msgstr "" + +#: src/ap-trapd.c:235 +#, c-format +msgid "" +"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." +msgstr "" + +#: src/ap-trapd.c:307 +#, c-format +msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" +msgstr "" + +#: src/bridge.c:36 +msgid "[C] Configuration-enabled port(s): " +msgstr "" + +#: src/bridge.c:39 +msgid "[B] Isolate wireless clients (broadcast traffic): " +msgstr "" + +#: src/bridge.c:40 +msgid "[U] Isolate wireless clients (unicast traffic): " +msgstr "" + +#: src/bridge.c:137 +msgid "Both" +msgstr "" + +#: src/nwn_advanced.c:61 +#, c-format +msgid "[D] DB Station Timeout: %d" +msgstr "" + +#: src/nwn_advanced.c:63 +#, c-format +msgid "[A] ACK Window: %d" +msgstr "" + +#: src/nwn_advanced.c:66 +msgid "Advanced Options" +msgstr "" + +#: src/nwn_advanced.c:67 +msgid "DA - options; W - write conf; Q - quit to menu" +msgstr "" + +#: src/nwn_latest.c:31 +#, c-format +msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" +msgstr "" + +#: src/nwn_latest.c:89 +msgid "Latest Events" +msgstr "" + +#: src/nwn_latest.c:90 +msgid "Disassociate:" +msgstr "" + +#: src/nwn_latest.c:97 +msgid "Deauthenticate:" +msgstr "" + +#: src/nwn_latest.c:104 +msgid "Authenticate Fail:" +msgstr "" + +#: src/nwn_latest.c:110 +msgid "Last error:" +msgstr "" + +#: src/nwn_latest.c:111 +msgid "Error:" +msgstr "" + +#: src/stations.c:113 +msgid "Id MAC address" +msgstr "" + +#: src/stations.c:223 src/stations.c:307 +msgid "Associated stations" +msgstr "" + +#: src/stations.c:225 +msgid "Id MAC address Quality Age RSSI" +msgstr "" diff --git a/po/fr.gmo b/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ee49c112881bde1b662a53849e87a566c4cc57f5 GIT binary patch literal 15405 zcmbuF3zQ^PdB-mbA`AFH0UwB0WY}HV?wx%QmfqztJ2SgGF0(s34^~_ksp+nnDYv`2 zsp^{9*^n4fB2h7@!S~ys0!m^;4T?D?Msqv|j*oLNIT}6qigbb|Mo$c$c*yU6tEwL} zv%{J+-1*hx)~$QL`+eX2?pOQ$vrfL<@cSa=Jj%&WG3KO`jCu5QT{Y%Eo^H%j;Vr<{{m(FFEll7G;QQdE@Cz`6zl7W2^fQeagztyL@P}|4Tz8f+r$7&$0cYW} zU=tSME%4d!b5Q+w0Mev+2&&zGf#<*rcxWrU4C?tX<4y2|oWC8azn_J?+Wd3IpTie% zu9v9&3*htN#ZcFGLyarQ?!O*Bhx6OuY4A=+7tE(2qBCEGr@{vzA~FwU_kRL;mHBV@ zVtB^c#+(cLp~krfYWxcsUkCO4TcG;&A*d<23!Vu-oAK}Ab2A%IZ*9f2z7lklwJ)&>7xf_2Qk$67NO?pR=5X#9!maCrV~uD zITPyrFNS(<1JwP^@DjKKNzt;2qJ3tSKHgWKVc;P1f~;uIvGYoNv- zK)tsCnL2YbTmwGJiwN2qzRD1%sl8fOWf3im?EX9BK) zUUpuE(t~4g1imf1{yj*O=HK9Mcn*`TcCLeia3VUUJA$ITcMu+3Do<3 z1!X^{VJs)Zbx`*UQ1^F0wSNFg9_8$MnDMnx@_Q##f9`~`zfVE+_bX8CJ^)XL--K)7 z_aLTgPU%ner4OFT`F^N*KMd86MW}Xffs)5<5Y;yCgObyiq5Am%lwJJ*J{|rKR6owx zl-9RU`mqb10X$P>p`gg|19G# zq5AU}l$_3^6MD~uQ1UE5hGe!wRKnDt>b(b^4L<@U*ZZL4_Ejjm`ZkmvJq#^89V3+= z*#I@(H$lzA-Ec4bCcF&3fX*L+2Qz*eN^Vczmd>Yz8s|nReZ2-suWo|RhPOiX|HBYb zn!BOq=lf9dIGvZA3k&c$a2W1_*FpK0JD}?S06q&o4JUIJya3`l%q8%d@Rd;Sy#bEH z8=>0$I@I`o3fID4WPC1->-m9qF%6_ zx3^HHDVJu~KLp=Ok&fJ%T{{AApj<%F8j=6LzyWT{e30@dlm*I@DIcNecOm6&ca;9Q z4>T!n%B~%NFQdFZJD0udCp)>{9i=hFhdF*`cK#yxhuQI`GhPhuqU@uTDX*Y>l5z?q z|BZ6+8p<}xP<|1rekJAV?D`n2Q2vTC zPI)m!KiTd}DaUle?|qbE%6U5BcOB(MN}ckT6#dRhVXn`3Gu%ZvN;#kMF3NK$`kkA? z`CR!u{Q}AxC|h;HZylvUc{b(alxryY?k&eu%E-mG6*V{ARNrZ8=% z<2a~T{R+0`m91B)M1CCG`iyPP`F3E;HtTj_E-260S-)wkL3qU8ka*RgxwwHgs*5(D z=3>LYyt>8|%C=mu)sm3Av^TMDbgb(_+>C;7mRfV}ed(WqZE&^8%YxX>`PGJv%aQMg zYp564ppjQCs4JXi{o`(w-+~28r|BMb7Uuj=U2XC%do|rXkoMNbO|KdA9PgsL`P+3h zh?_w|<{^>W}f{fgZYU!jNUAySI$j_MU%GO(f=g79*%I^vkZ>hr!E7{Or*lvePwn7)1{&st?WMglhg99a|C1`H9UKG_AVlJ1XdbMf>kd2o#=Xjc< z^l=V&KCjAIT9?*1UWkIGuXoPSDCcU`3=EI$-L!ejR@Ft!^@bb%@gI=V)ci0p0~(_l zD3_&EV|8Y_=OmL=?=?4-MLXv7&gf`ZuS4iaIg_Vbc#o z&kiDxU^a=|#Fxx~lX92nCUne9sG~DMRWp(aFP8<~?&ra|4;oGPMKUDqZi2jY=% zrfwTv`3Qpdd2M6{n9q6?9P=xqUU||(eI}e~_14+A?VjCQ&5Y9vCZ0mnLx}Ixs^rvlF+9q5Xq)9Rl?#-g+}MF)?8`7q{BodybhQ zU&hKSf-;gSaX#ZE)h2In2A}qRD2Utch$_LnAH{gwv?q1DSWoPNC!gA}nJcXs?y}$$ zu-xIvi4nVQIEm^Ff4v#T3?e%+miu3=54r0hUD`fZRsDLNbANlOr$g7!MgUsX9#K3y9YfslC?vjz_V~2KB(8EIlKMPkGyKmw$IuvYtMV>)(qz!(yr=eAh(b%AxFacLT_KyZcmje z+7#2`JgSx6RCBSNQ8%y(tdD7ECQ)b^9}dHE>F!Ef$Lg4YC7ih~d`?YNwbo7yBc?h>6edsmQ> zyEZTuo2zL!^#di2C94c}I2GB|{tTDuIKt7rd+oZHdJQjJZ$`Z%td*HlNQav(5f=5w zFsTtHGaS=n>}ROddtv|72x92p{Iae;EKq8=^H|C3n;Olc2;?^~G&DYpwplxQ?bxu{ z=QnYJN92l3w&0b_*q&?KzG;sdzJ!&tiX56^}eyJ z^>@K0o{%-%HY2Z5w3&&q)E8|U0=P9vYm8e;q=3bCLnV%86YPXh*`a#P3-tP!s|_t$ z5eI}m>0c~H52g_(jb|P%X;kZ8g+BFag7biQziJ(=%AV>Dh`7|OM;IAuQjZo{Kb_C- zZAA~RSc^_*5mraB9hP3g-ip`sa?{3dRuQbvk`Odyg5$yLT+?JhldKgl!=#m~iMl?x zf9%?keY;%@<1Dx0H@%>WpimCHe;Q-uYn{6|orMU_iC~R{&j_s2Q>VQx*x1NdZMBD> zT+EBev(>ZYf_&#cvuSegAcB*d%xk%8ku=H1!EDHlMty;~mm6c{a}itCpsTu&#q^!$ z*=khH1Ys1S(BE!Ob+= zW-4?mhGLI77s7Fr;HI%c)49ija-=H&?A&1Iwp4v1?H!gZ`<(|ExZ7N?9z`LO;cPsO zBy3-;`<<+BG7!R$Uh{D6uei_Xyd~Wgxd&YsnMWhXc`S8F#5m5gHhnYYTtkK>mYwcB zG#A=@q<^&eNKEEr<%YD(24RDpA}hFGaT;(i(`u6+^g80f_LhZ?;2Ddqo!k;!VDG1U zGKEy5gqcCQLu)s;w9b;-Sa9lk+7EP0q}?Z7I*~x`AfaH}cjYqf^<1igZ7b>+$3cg7 z7bZ}itJjZM!Wi$WMxA~8qF-dgZVn9`wgZEE?LlI(`U2vrq?anSAe4Q0I8$?I=&&8y znXfi>k}V+H)wJ^HVcWe3n?qBF?G!p@4zV3Qtlb`(nwrH4MAJk=T9n)lG;VqkQ|R`d zrm~3A24yo-4x8090$HM4tK2FY+0k*HI^Lb4L3HFq3_*FEG!$F1Y0mOJyZ24mEF`sK z$#gX+lS3){A?pVkq!pj7ifIHSP~2X0XcDI6gL+dk-ufl*#60a+n4d;!Vs%U$!_lN-&%10b6DEE`QrX9{ryxdjI;KsgPnR? zRB!V(+rO>U-(TpzgnEke3eE|#MzPtjqhz-HD*7}XXq_Y0-9bXe9bYvvzP~s%O4fl5 zO0_sRa0QQtvxztB7bbnLR>IZ$A&IdaOfBKkRVj+~X!eRVqa&lko$+ld_OHPlQC{Be zHjPdHXmcZ*p&;Duc1vi}+hr?UL@j2{(-!*acXeU$9B0^M6fSi-~= zM&sF_QrMZy#)Zjx$*x%~!RNWmo^MA728l6jbuDp!LwmUTG#v{fTlKQkUdvVzQhk27 z0WD8bpTk0HkxrA|_oVvRueOLqarQqCajmrL;or1&yE_WY$bxmJ{JfbN37z+?^#XEa z-0scvmgs(0E|506 zvw#|tYG9Zy7wDcK5lBLZ93R=7-c(>${x98zw|D`2?ldjxWT&Jcj*9;k1!q|<-rAiE z#2q->i_*Q;!&<@{b=OsnrmK&zmg!lANJnLO54-WMoEEGn^JEUv)L@G(5?&s!q~sts zX1$0gpq(Qm64-8Ms*f-SL@t$<(p4mtwEQR7L@`ShwwvTerQK%soV(^8Or2lXdr}3^ z&X1Pz_+J5ZR}wJ`C$jN%5^Jk8mhG#0nsh!%TIteTU&a)}<8m8#8htFT1l{ZdRl2*+~%Ez17qWM~r$Tfh*Am2&ut5 zv%|IxpIvUt-FI#>f4_7C^-EvCj+4D_Wvzd-MIs5o6<2#S>$N z+!9IevQkJSR$Eb>^j&+d8AIE+md#J+W^u#V@l|*feCfQfv2WBuM(y%Rd?Ml>UuCkq~W#nmvEKl2VvHMUf#z!A3%-0in zjUs)IUuh{Eid+gUN%it;ng|o=Q08&Y)zW#5wJ&$G9j)rLktTkBhc>c&YU;)E&>+hNli8KoI-}FaxXiem`$zkF76)@6^_Mwi zr>xn^3D-#NDl0rZwInG_z}9jTfV6s7iFAoCH(TxGFe@2b1R^pfsE>4QD{Lu8oZ4k< zXVY^me}5jiX{x%Tmvk+P$nfT=?w-1VlE=%}E7y~xw^>z9I>i^SO7hs$h81OO65-6uw4rCGF`l&lQHqdaOI@$R}V(62<_v$#N#-F8C44<8smO z_7s@(Ca3Epr^i_pXu`$g^6+_Px}3U9KTlDQR8lXdFHWpybXFV0G-=H=8_x8-CElGgO zVKUAWN_Mx(e!eEVP*i&dKmGR=1V=2ziCjMk9#Y-C&ST~5x8ecGSmEnW6BaL*@78p< z6u4AQj%U2pXh|nHXsn zNEIeQeO@L9J8=!$Y-%cRcTE0hD5~>MEX-iKZHT0}G0C@7NLg6k&ci!TCK<5>OY`s} z?fq}+7xTSTdvlSiTg%BdzwNT}gdmEm71r`~5wAWnh5_aKY1-@FyKk&@M~M@ys{VC~ z!oJ@3VnfnEw?}o^dm7gAnI-^wn`az(e>#iUaa&Hup6_ndVfxod2+{QkRie(4|EWpk z<6hFgd=pQeUpfClykC=EX;qUaln!=QH_{&U*?@qJ-A3H-W<$Td<>`qUO3I{@`PZi= zCDh~mBS3apn!M!JN>B9L9d6?RTtwbtfoEd>n6H_v>PSsrqBwdEv&(XuPmZihaG zT0Pb#`qy-Pa@0R{Nmpw3&7tSXDD@SYRz7h@o*>`Q)%MyJpNh1?cMUMxk@ouH6U}AN zwp&X`X1Vp#Otz{m{acP%7v(KkV$*5L?qNgv?&SV$gY*%R>)!#m#K^kD{p+grTJ4_T z6Nl`EeP5L=UAj-2$Wm}!?{-1Tl8C&Ws&iW)B}V#|hE~q$<<218DY, traducteur depuis/since 1996. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU ap-utils 1.3.2-pre3\n" +"POT-Creation-Date: 2004-04-04 20:22+0300\n" +"PO-Revision-Date: 2003-04-28 08:00-0500\n" +"Last-Translator: Michel Robitaille \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" +"Report-Msgid-Bugs-To: \n" + +#: ap-gl/ap-gl.c:47 ap-gl/bridge.c:179 src/ap-config.c:46 src/bridge.c:222 +msgid "Bridging" +msgstr "Établissement d'un pont" + +#: ap-gl/ap-gl.c:47 src/ap-config.c:46 +msgid "Set bridging and IP-related options" +msgstr "Configuré les options relative au pont et à IP" + +#: ap-gl/ap-gl.c:49 ap-gl/ap-gl.c:85 ap-gl/bridge.c:133 src/ap-config.c:48 +#: src/ap-config.c:118 src/ap-config.c:127 src/bridge.c:135 src/bridge.c:139 +msgid "Wireless" +msgstr "Sans fil" + +#: ap-gl/ap-gl.c:49 src/ap-config.c:48 +msgid "Set wireless options" +msgstr "Configurer les options sans fil" + +#: ap-gl/ap-gl.c:50 src/ap-config.c:49 src/ap-config.c:61 +msgid "Privacy" +msgstr "Intimité" + +#: ap-gl/ap-gl.c:51 src/ap-config.c:50 src/ap-config.c:62 +#, fuzzy +msgid "MAC auth" +msgstr "Authenfication MAC" + +#: ap-gl/ap-gl.c:52 src/ap-config.c:51 src/ap-config.c:63 +msgid "Community" +msgstr "Communauté" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Radio" +msgstr "Radio" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Set radio signal power and antenna options" +msgstr "" +"Sélectionner les options pour l'antenne et la puissance du signal radio" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Upload" +msgstr "Téléchargement" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Make current configuration active" +msgstr "Rendre la configuration courante active" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Defaults" +msgstr "Défauts" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Restore factory default settings" +msgstr "Restaurer les paramètres par défaut du manufacturier" + +#: ap-gl/ap-gl.c:69 src/ap-config.c:86 src/ap-config.c:94 +msgid "Reset" +msgstr "Réinitialisation" + +#: ap-gl/ap-gl.c:70 src/ap-config.c:87 +msgid "Reset AP. All not uploaded configuration will be lost" +msgstr "" +"Réinitialiser le point d'accès. Toutes les config. non préservées seront " +"perdues." + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "TestMode" +msgstr "Mode test" + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "Put Access Point in test mode" +msgstr "Placer le point d'accès en mode test." + +#: ap-gl/ap-gl.c:83 src/ap-config.c:116 src/ap-config.c:126 +msgid "SysInfo" +msgstr "SysInfo" + +#: ap-gl/ap-gl.c:84 ap-gl/bridge.c:132 src/ap-config.c:117 src/bridge.c:134 +#: src/bridge.c:138 +msgid "Ethernet" +msgstr "Ethernet" + +#: ap-gl/ap-gl.c:84 src/ap-config.c:117 +msgid "Get ethernet port statistics" +msgstr "Obtenir les statistiques des ports Ethernet" + +#: ap-gl/ap-gl.c:86 src/ap-config.c:119 src/ap-config.c:128 +msgid "Stations" +msgstr "Stations" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "KnownAPs" +msgstr "Point d'accès connus" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "Get info about known Access Points" +msgstr "Obtenir les info des points d'accès connus" + +#: ap-gl/ap-gl.c:105 src/ap-config.c:154 +msgid "Info" +msgstr "Info" + +#: ap-gl/ap-gl.c:106 src/ap-config.c:155 +msgid "Config" +msgstr "Config" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Commands" +msgstr "Commandes" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Execute commands on Access Point" +msgstr "Exécuter les commandes sur le point d'accès" + +#: ap-gl/ap-gl.c:109 src/ap-config.c:158 +msgid "Connect" +msgstr "Connecter" + +#: ap-gl/ap-gl.c:110 src/ap-config.c:159 +msgid "Search" +msgstr "Chercher" + +#: ap-gl/ap-gl.c:111 lib/common.c:52 src/ap-config.c:160 +msgid "About" +msgstr "À propos" + +#: ap-gl/ap-gl.c:112 src/ap-config.c:161 +msgid "Shell" +msgstr "Shell" + +#: ap-gl/ap-gl.c:113 src/ap-config.c:162 +msgid "Exit" +msgstr "Quitter" + +#: ap-gl/ap-gl.c:162 src/ap-config.c:211 +#, c-format +msgid "Wireless Access Point Configurator ver. %s" +msgstr "Configurateur de point d'accès sans fil version %s" + +#: ap-gl/auth_mac.c:28 src/auth_mac.c:28 +msgid "AuthorizedMacTableString packet error" +msgstr "Erreur de paquet AuthorizedMacTableString" + +#: ap-gl/auth_mac.c:30 src/auth_mac.c:30 +#, fuzzy +msgid "[A] MAC authorization: " +msgstr "[A] Autorisation Mac: %s" + +#: ap-gl/auth_mac.c:31 src/auth_mac.c:31 +#, fuzzy +msgid "Enter MAC: " +msgstr "Entrer Mac:" + +#: ap-gl/auth_mac.c:32 src/auth_mac.c:32 +#, fuzzy +msgid "Delete Num: " +msgstr "Détruire Num:" + +#: ap-gl/auth_mac.c:33 src/auth_mac.c:33 +#, fuzzy +msgid "Authorized MAC addresses" +msgstr "Mac adresses autorisées" + +#: ap-gl/auth_mac.c:34 src/auth_mac.c:34 +#, fuzzy +msgid "NUM MAC address" +msgstr "NUM MAC address" + +#: ap-gl/auth_mac.c:35 src/auth_mac.c:35 +msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit" +msgstr "" +"A - autor.; N - nouveau; D - détruire; flèches - défiler; W - sauvegarder la " +"config.; Q - quitter" + +#: ap-gl/auth_mac.c:36 +#, fuzzy +msgid "A - auth; IPSTF - set; W - write conf; Q - quit" +msgstr "" +"DA - options; W - sauvegarder la configuration; Q - quitter vers le menu" + +#: ap-gl/auth_mac.c:37 +#, fuzzy +msgid "A - auth; W - write conf; Q - quit" +msgstr "" +"DA - options; W - sauvegarder la configuration; Q - quitter vers le menu" + +#: ap-gl/auth_mac.c:39 +msgid "[I] RADIUS SERVER IP: " +msgstr "" + +#: ap-gl/auth_mac.c:40 +msgid "[P] RADIUS SERVER PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:41 +msgid "[S] RADIUS SERVER SECRET: " +msgstr "" + +#: ap-gl/auth_mac.c:42 +msgid "[T] REAUTHORIZATION TIME: " +msgstr "" + +#: ap-gl/auth_mac.c:43 +msgid "[F] RADIUS SOURCE PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:88 +#, fuzzy +msgid "Internal" +msgstr "Général" + +#: ap-gl/auth_mac.c:96 +msgid "" +msgstr "" + +#: ap-gl/bridge.c:27 src/bridge.c:27 +msgid "[I] IP: " +msgstr "" + +#: ap-gl/bridge.c:28 src/bridge.c:28 +#, fuzzy +msgid "[N] Netmask: " +msgstr "[N] netmask: %s" + +#: ap-gl/bridge.c:29 src/bridge.c:29 +#, fuzzy +msgid "[G] Gateway: " +msgstr "[G] Passerelle (gateway) %s" + +#: ap-gl/bridge.c:30 src/bridge.c:30 +#, fuzzy +msgid "[F] Filter non-IP traffic: " +msgstr "[F] Filtrer le traffic non IP: %s" + +#: ap-gl/bridge.c:31 src/bridge.c:31 +#, fuzzy +msgid "[P] Primary port: " +msgstr "[P] Port primaire: %s" + +#: ap-gl/bridge.c:32 src/bridge.c:32 +#, fuzzy +msgid "Attached station MAC: " +msgstr "Station rattachée MAC: %02X%02X%02X%02X%02X%02X" + +#: ap-gl/bridge.c:33 src/bridge.c:33 +#, fuzzy +msgid "[D] DHCP client: " +msgstr "[D] protocol DHCP: %s" + +#: ap-gl/bridge.c:34 src/bridge.c:34 +#, fuzzy +msgid "[O] Operational mode: " +msgstr "[O] Mode opérationnel: %s" + +#: ap-gl/bridge.c:35 src/bridge.c:35 +#, fuzzy +msgid "[M] Preferred BSSID (remote MAC addr.): " +msgstr "[R] Adresse Mac distante: %02X%02X%02X%02X%02X%02X" + +#: ap-gl/bridge.c:37 src/bridge.c:37 +msgid "[T] Trap-sending port(s): " +msgstr "" + +#: ap-gl/bridge.c:38 src/bridge.c:38 +msgid "[R] Forward broadcast traffic: " +msgstr "" + +#: ap-gl/bridge.c:40 +msgid "[U] Isolate wireless clients: " +msgstr "" + +#: ap-gl/bridge.c:41 src/bridge.c:41 +#, fuzzy +msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu" +msgstr "" +"BPGINFDRT - initialisé; W - sauvegarder la config.; Q - quitter vers le menu" + +#: ap-gl/bridge.c:125 src/bridge.c:127 +msgid "Wireless Bridge Point to MultiPoint" +msgstr "Point d'accès pont sans fil vers Multi-point" + +#: ap-gl/bridge.c:126 src/bridge.c:128 +msgid "Access Point" +msgstr "Point d'accès" + +#: ap-gl/bridge.c:127 src/bridge.c:129 +msgid "Access Point client" +msgstr "Point d'accès client" + +#: ap-gl/bridge.c:128 src/bridge.c:130 +msgid "Wireless Bridge Point to Point" +msgstr "Point pont sans fil vers un point" + +#: ap-gl/bridge.c:129 src/bridge.c:131 +msgid "Repeater" +msgstr "Répéteur" + +#: ap-gl/stations.c:31 src/stations.c:29 +msgid "Associated Stations" +msgstr "Stations associées" + +#: ap-gl/stations.c:83 src/stations.c:87 +msgid "AP now in AP Client Mode and don't has any associated stations" +msgstr "" + +#: ap-gl/stations.c:109 +msgid "# MAC LQ RSSI Status Port IP" +msgstr "" + +#: ap-gl/stations.c:135 src/stations.c:139 +msgid "AssociatedSTAsInfo packet error" +msgstr "Erreur de paquet AssociatedSTAsInfo" + +#: ap-gl/stations.c:164 src/stations.c:161 src/stations.c:313 +msgid "Arrows - scroll; S - save to file; Q - quit to menu." +msgstr "" +"Flècher - défiler; S - sauvegarder dans un fichier; Q - quitter vers le menu." + +#: lib/aps.c:128 +msgid "Your Access Point is not in \"AP client\" mode => getting" +msgstr "" + +#: lib/aps.c:131 +msgid "up-to-date \"Known APs\" info requires your AP to be" +msgstr "" + +#: lib/aps.c:134 +msgid "temporarily configured into \"AP client\" mode and rebooted." +msgstr "" + +#: lib/aps.c:137 +msgid "Your AP will be reconfigured back to original mode by this" +msgstr "" + +#: lib/aps.c:140 +msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" +msgstr "" + +#: lib/aps.c:143 +#, fuzzy +msgid "cause loss of Access Point's current configuration." +msgstr "Rendre la configuration courante active" + +#: lib/aps.c:147 +msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" +msgstr "" + +#: lib/aps.c:150 +#, fuzzy +msgid "via its wireless port." +msgstr "Configurer les options sans fil" + +#: lib/aps.c:152 lib/cmd.c:49 lib/cmd.c:92 lib/test.c:93 +msgid "Do you want to continue? " +msgstr "Désirez-vous poursuivre?" + +#: lib/aps.c:154 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No)" +msgstr "(Y - Oui; N - Non (il est plus sûr de répondre non)" + +#: lib/aps.c:202 +msgid "Known Access Points" +msgstr "Point d'accès connus" + +#: lib/aps.c:217 +msgid "NetworkType" +msgstr "Type de réseau" + +#: lib/aps.c:293 +msgid "Infrastructure" +msgstr "Infrastructure" + +#: lib/aps.c:352 lib/aps.c:360 lib/aps.c:368 +#, fuzzy +msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);" +msgstr "P: type de préambule; S: court; L: long" + +#: lib/aps.c:354 +msgid "RSSI: Radio Signal Strength Indicator [%];" +msgstr "" + +#: lib/aps.c:356 lib/aps.c:364 +msgid "LQ: Link Quality [%]" +msgstr "" + +#: lib/aps.c:362 +msgid "RSSI: Radio Signal Strength Indicator [dBm];" +msgstr "" + +#: lib/aps.c:370 +msgid "RSSI: Radio Signal Strength Indicator [raw];" +msgstr "" + +#: lib/aps.c:372 +msgid "LQ: Link Quality [raw]" +msgstr "" + +#: lib/aps.c:378 +#, fuzzy +msgid "" +"# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q " +"quit" +msgstr "" +"# connecter à cet AP; R rafraîchir avec réinitialisation; G rafraîchior sans " +"réinitialisation; Q quitter" + +#: lib/aps.c:380 +#, fuzzy +msgid "" +"# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit" +msgstr "" +"# connecter à cet AP; R rafraîchir avec réinitialisation; G rafraîchior sans " +"réinitialisation; Q quitter" + +#: lib/aps.c:509 lib/ap_search.c:152 +#, fuzzy, c-format +msgid "Failure in sendto(): %s. Press any key." +msgstr "sendto() invalide: %s. Appuyer sur une touche." + +#: lib/aps.c:518 +msgid "You have just initiated the AP scan. Be advised that it may" +msgstr "" + +#: lib/aps.c:521 +msgid "take a few seconds for your Access Point to find out some" +msgstr "" + +#: lib/aps.c:524 +msgid "values, so expect finishing the scan in about 5 seconds." +msgstr "" + +#: lib/aps.c:527 +msgid "Also note that your Access Point stops forwarding the network" +msgstr "" + +#: lib/aps.c:530 +msgid "traffic while the scan is in progress, but restores itself" +msgstr "" + +#: lib/aps.c:533 +msgid "to normal operation in time ranging up to 1 minute." +msgstr "" + +#: lib/aps.c:536 +msgid "Hence, if you are connected to target Access Point via its" +msgstr "" + +#: lib/aps.c:539 +msgid "wireless port, you need to wait a bit longer" +msgstr "" + +#: lib/aps.c:542 +msgid "after pressing 'S'." +msgstr "" + +#: lib/ap_search.c:49 +msgid "# Type IP Description" +msgstr "" + +#: lib/ap_search.c:88 +msgid "Please wait while scanning, or press 'Q' to quit." +msgstr "" + +#: lib/ap_search.c:104 +#, fuzzy +msgid "Can't set broadcast option on socket. Press any key." +msgstr "Ne peut diffuser l'option au socket. Appuyer sur une touche." + +#: lib/ap_search.c:113 +#, fuzzy +msgid "Can't set multicast membership on socket. Press any key." +msgstr "Ne peut diffiser par multicast au socket. Appuyer sur une touche." + +#: lib/ap_search.c:119 +msgid "Scanning via network interface:" +msgstr "" + +#: lib/ap_search.c:120 +#, c-format +msgid " Index: %i" +msgstr "" + +#: lib/ap_search.c:122 +#, fuzzy, c-format +msgid " Name: %s" +msgstr "[N] Nom du point d'accès:" + +#: lib/ap_search.c:124 +#, c-format +msgid " IP: %s" +msgstr "" + +#: lib/ap_search.c:133 +#, c-format +msgid "Scanning for AP type: %s" +msgstr "" + +#: lib/ap_search.c:311 +msgid "Access Points Search" +msgstr "Recherche des points d'accès" + +#: lib/ap_search.c:328 +#, fuzzy +msgid "realloc() error." +msgstr "Erreur de création de socket" + +#: lib/ap_search.c:340 +msgid "Network interface discovery error." +msgstr "" + +#: lib/ap_search.c:415 +#, fuzzy +msgid "No local network interfaces found. Press any key." +msgstr "erreur de fork(). Appuyer sur une touche." + +#: lib/ap_search.c:417 +msgid "No directly reachable Access Points found. Press any key." +msgstr "" + +#: lib/ap_search.c:421 +msgid "Program-hardcoded maximum number of APs found." +msgstr "" + +#: lib/ap_search.c:425 +#, fuzzy +msgid "# - connect to AP; Q - quit" +msgstr "Connexion avec AP numéro:" + +#: lib/ap-utils.h:74 +#, fuzzy +msgid "MAC address: " +msgstr "Adresse IP: %s" + +#: lib/ap-utils.h:75 +#, fuzzy +msgid "[S] SNMP traps: " +msgstr "[S] Trappes SNMP: %s" + +#: lib/ap-utils.h:77 +#, fuzzy +msgid "[C] Frequency channel: " +msgstr "[C] canal de fréquence: %02u (%u MHz)" + +#: lib/ap-utils.h:79 +#, fuzzy +msgid "Receive antenna:" +msgstr "Reçu:" + +#: lib/ap-utils.h:80 +#, fuzzy +msgid "[U] Left" +msgstr "Gauche" + +#: lib/ap-utils.h:81 +#, fuzzy +msgid "[I] Right" +msgstr "Droite" + +#: lib/ap-utils.h:82 +#, fuzzy +msgid "Transmit antenna:" +msgstr "Transmis:" + +#: lib/ap-utils.h:83 +#, fuzzy +msgid "[O] Left" +msgstr "Gauche" + +#: lib/ap-utils.h:84 +#, fuzzy +msgid "[P] Right" +msgstr "Droite" + +#: lib/ap-utils.h:85 +#, fuzzy +msgid "Diversity select:" +msgstr "Diversité: %s" + +#: lib/ap-utils.h:86 +#, fuzzy +msgid "[T] Left" +msgstr "Gauche" + +#: lib/ap-utils.h:87 +#, fuzzy +msgid "[Y] Right" +msgstr "Droite" + +#: lib/ap-utils.h:89 +msgid "Yes" +msgstr "" + +#: lib/ap-utils.h:90 +msgid "No" +msgstr "" + +#: lib/ap-utils.h:92 +msgid "On" +msgstr "" + +#: lib/ap-utils.h:93 +#, fuzzy +msgid "Off" +msgstr "off" + +#: lib/ap-utils.h:95 +#, fuzzy +msgid "Basic" +msgstr "de base" + +#: lib/ap-utils.h:97 +msgid "Press any key to continue." +msgstr "Appuyer sur une touche pour continuer" + +#: lib/ap-utils.h:99 +msgid "Unable to write data to AP. Press any key to continue." +msgstr "" +"Incapable d'écrire les données sur le point d'accès. Appuyer sur une touche " +"pour continuer." + +#: lib/ap-utils.h:100 +msgid "Unable to retrieve data from AP. Press any key to continue." +msgstr "" +"Incapable de récupérer les données du point d'accès. Appuyer sur une touche " +"pour continuer." + +#: lib/ap-utils.h:101 +msgid "Retrieving data from AP. Please wait..." +msgstr "Récupérationd des données du point d'accès. SVP patientez..." + +#: lib/ap-utils.h:102 +msgid "Writing data to AP. Please wait..." +msgstr "Écriture des données sur le point d'accès. SVP patientez..." + +#: lib/ap-utils.h:103 +#, fuzzy +msgid "Configuration written to the AP. Press any key to continue." +msgstr "" +"Incapable d'écrire les données sur le point d'accès. Appuyer sur une touche " +"pour continuer." + +#: lib/ap-utils.h:105 +msgid "Create socket error. Press any key." +msgstr "Erreur de création du socket. Appuyer sur n'importe quelle touche." + +#: lib/ap-utils.h:106 +msgid "Bind socket error. Press any key." +msgstr "Erreur de liaison de socket (bind). Appuyer sur une touche." + +#: lib/ap-utils.h:108 +msgid "Back to main menu" +msgstr "De retour au menu principal" + +#: lib/ap-utils.h:109 +msgid "Exit program" +msgstr "Quitter le programme" + +#: lib/ap-utils.h:110 +#, fuzzy +msgid "Run subshell. To return type 'exit'." +msgstr "Exécuter le sous-shell. Pour retourner taper 'exit'" + +#: lib/ap-utils.h:111 +msgid "Short info about program" +msgstr "Infos courtes à propos du logiciel" + +#: lib/ap-utils.h:112 +msgid "Find connected Access Points" +msgstr "Repérer les points d'accès connectés" + +#: lib/ap-utils.h:113 +msgid "Set connection options: ip and community" +msgstr "Sélectionner les options de connexion: ip et communauté" + +#: lib/ap-utils.h:114 +#, fuzzy +msgid "Set encryption; edit WEP keys" +msgstr "Sélectionner l'encryptage, éditer les clés WEP" + +#: lib/ap-utils.h:115 +#, fuzzy +msgid "Set MAC authorization; edit MAC authorization table" +msgstr "" +"Sélectionner le type d'autorisation MAC, éditer le table d'autorisation MAC" + +#: lib/ap-utils.h:116 +#, fuzzy +msgid "Set SNMP community/password for access to the AP" +msgstr "" +"Sélectionner la communauté/mot de passe SNMP pour accéder un point d'accès" + +#: lib/ap-utils.h:117 +#, fuzzy +msgid "Get info about AP hardware and firmware" +msgstr "Obtenir les infos à propos du point d'accès matériel et logiciel" + +#: lib/ap-utils.h:118 +#, fuzzy +msgid "Get wireless port statistics" +msgstr "Obtenir les statistiques des ports sans fils" + +#: lib/ap-utils.h:119 +#, fuzzy +msgid "Get list of currently associated stations (Access Point clients)" +msgstr "Obtenir la liste des stations courramment associées" + +#: lib/ap-utils.h:120 +#, fuzzy +msgid "Get info and statistics from AP" +msgstr "Obtention des infos et des statistiques à partir du point d'accès" + +#: lib/ap-utils.h:121 +#, fuzzy +msgid "Set various configuration options" +msgstr "Sélectionner diverses options de configuration" + +#: lib/cmd.c:25 +#, fuzzy +msgid "" +"(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" +msgstr "" +"(Y - Oui; N - Non (il est plus sûr de répondre Non, à moins d'avoir vraiment " +"besoin de cela.)" + +#: lib/cmd.c:44 +msgid "Restore factory default configuration" +msgstr "Restauter les paramètres par défaut du manufacturier." + +#: lib/cmd.c:47 +#, fuzzy +msgid "After restoring factory defaults your current configuration." +msgstr "" +"Après restauration des paramètres du manufacturier, vous avez perdu la " +"configuration courante." + +#: lib/cmd.c:48 +msgid "will be lost." +msgstr "" + +#: lib/cmd.c:79 +#, fuzzy +msgid "Factory default settings loaded. Press any key to continue." +msgstr "" +"Configuration par défaut activée. Appuyer sur une touche pour continuer." + +#: lib/cmd.c:88 +msgid "Reset Access Point" +msgstr "Réinitialiser le point d'accès" + +#: lib/cmd.c:91 +#, fuzzy +msgid "By reset you'll lose all non-uploaded configuration." +msgstr "" +"Après réinitialisation vous avez perdu toutes les configurations non " +"préservées." + +#: lib/cmd.c:113 +msgid "Access Point reset. Press any key to continue." +msgstr "" +"Réinitialisation de point d'accès. Appuyer sur une touche pour continuer." + +#: lib/cmd.c:146 +msgid "Upload configuration" +msgstr "Configuration de chargement à distance" + +#: lib/cmd.c:149 +#, fuzzy +msgid "You need to upload the configuration only if you've changed" +msgstr "" +"Vous avez besoin de télécharger la configuration seulement lors de " +"changements sur les options." + +#: lib/cmd.c:152 +msgid "some option values before. Using this option may cause loss" +msgstr "" + +#: lib/cmd.c:153 +#, fuzzy +msgid "of your current configuration." +msgstr "Rendre la configuration courante active" + +#: lib/cmd.c:176 +#, fuzzy +msgid "Configuration uploaded. Press any key to continue." +msgstr "" +"Téléchargement de la configuration complété. Appuyer sur une touche pour " +"continuer." + +#: lib/common.c:30 +msgid "Autodetect AP type? " +msgstr "" + +#: lib/common.c:31 +#, fuzzy +msgid "Access Point IP-address: " +msgstr "Adresse IP du point d'accès:" + +#: lib/common.c:32 +#, fuzzy +msgid "Password (community): " +msgstr "Mot de passe (communauté):" + +#: lib/common.c:33 +#, fuzzy +msgid "AP type: " +msgstr "Type de point d'accès:" + +#: lib/common.c:34 +#, fuzzy +msgid "Save connect-settings: " +msgstr "Sauvegarder la configuration de connexion:" + +#: lib/common.c:69 +#, c-format +msgid "From %s" +msgstr "À partir de %s" + +#: lib/common.c:71 +#, c-format +msgid "Version %s" +msgstr "Version %s" + +#: lib/common.c:74 +msgid "Written by Roman Festchook roma@polesye.net" +msgstr "Écrit par Roman Festchook (roma@polesye.net)" + +#: lib/common.c:76 +#, fuzzy +msgid "Copyright (c) Roman Festchook 2001-2004" +msgstr "Copyright © Roman Festchook 2001-2002" + +#: lib/common.c:79 +msgid "This program is distributed under the terms" +msgstr "Ce logiciel est distribué selon les termes" + +#: lib/common.c:81 +msgid "of the GNU General Public License version 2." +msgstr "de la GNU General Public License version 2." + +#: lib/common.c:83 +msgid "See the included COPYING file for details." +msgstr "Consulter le fichier COPYING pour les détails." + +#: lib/common.c:135 +msgid "Connect options" +msgstr "Option d'établissement de connexion" + +#: lib/common.c:143 +msgid "Enter IP address of your Access Point." +msgstr "Entrer l'adresse IP de votre point d'accès" + +#: lib/common.c:148 +msgid "Entered characters will not be displayed for security reason." +msgstr "" +"Caractères saisies ne seront pas affichés pour des raisons de sécurité." + +#: lib/common.c:171 +#, fuzzy +msgid "Determining AP type. Please wait..." +msgstr "Récupérationd des données du point d'accès. SVP patientez..." + +#: lib/common.c:196 +#, fuzzy +msgid "Unable to determine AP type (no response). Press any key." +msgstr "" +"Incapable de récupérer les données du point d'accès. Appuyer sur une touche " +"pour continuer." + +#: lib/file.c:176 +msgid "NUM IP ADDRESS TYPE" +msgstr "NUM ADRESSE IP TYPE" + +#: lib/file.c:177 +#, fuzzy +msgid "Choose an AP to connect to" +msgstr "Choisir AP pour établir la connexion" + +#: lib/file.c:182 +msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll" +msgstr "" +"1-9,C: connect; N: nouveau; D: détruire; W: sauvegarder; Q: quitter; " +"flèches: défiler" + +#: lib/file.c:225 +msgid "Connect to AP num:" +msgstr "Connexion avec AP numéro:" + +#: lib/file.c:250 +msgid "Delete num:" +msgstr "Détruire num:" + +#: lib/input.c:31 +#, fuzzy +msgid "Invalid value. Press any key to continue." +msgstr "Adresse IP invalide. Appuyer sur une touche." + +#: lib/input.c:32 +#, fuzzy, c-format +msgid "Value must be in range %i - %i. Press any key to continue." +msgstr "" +"Incapable d'écrire les données sur le point d'accès. Appuyer sur une touche " +"pour continuer." + +#: lib/oui.c:6052 +msgid "Unknown or Private" +msgstr "Inconnu ou privé" + +#: lib/radio.c:27 +#, fuzzy +msgid "" +"[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" +msgstr "" +"Key - niveau de puissance; UIOP - antenne; W - sauvegarder la config.; Q - " +"quitter" + +#: lib/radio.c:29 +#, fuzzy +msgid "Antenna:" +msgstr "[A] Antenne: %s" + +#: lib/radio.c:30 +#, fuzzy +msgid "[L] Left:" +msgstr "Gauche" + +#: lib/radio.c:31 +#, fuzzy +msgid "[R] Right:" +msgstr "Droite" + +#: lib/radio.c:114 +msgid "Radio Configuration" +msgstr "Configuration radio" + +#: lib/radio.c:115 +msgid "Output RF signal power level (CR31 register values)" +msgstr "" + +#: lib/radio.c:117 +#, fuzzy +msgid "Key Channel Level" +msgstr "niveau du canal de clé" + +#: lib/radio.c:273 +#, fuzzy +msgid "" +"You can't disable both antennas; unable to save antenna-config. Press any " +"key." +msgstr "" +"Vous ne pouvez pas déactiver les deux antennes, incapable de sauvegarder la " +"config. des antennes. Appuyer sur une touche." + +#: lib/scr.c:134 +#, c-format +msgid "Current AP: %s Type: %s" +msgstr "Point d'accès courant: %s Type: %s" + +#: lib/set_community.c:28 +msgid "Set community/password" +msgstr "Initialiser la communauté/mot de passe" + +#: lib/set_community.c:29 +#, fuzzy +msgid "Key Access level" +msgstr "Niveau d'accès de la clé" + +#: lib/set_community.c:30 +msgid "Community/Password" +msgstr "Communauté/Mot de passe" + +#: lib/set_community.c:31 +msgid "[U] User" +msgstr "[U] Usager" + +#: lib/set_community.c:32 +msgid "[A] Administrator" +msgstr "[A] Administrateur" + +#: lib/set_community.c:33 +#, fuzzy +msgid "" +"[key] - set community/password; W - write config to AP; Q - quit to menu" +msgstr "" +"Clé - initialiser la communauté/mot de passe; W - sauvegarder la config du " +"point d'accès; Q - quitter" + +#: lib/set_community.c:80 +msgid "[M] Manufacturer" +msgstr "[M] Manufacturier" + +#: lib/stat.c:29 +msgid "Unable to get data from AP. Press Q to continue." +msgstr "" +"Incapable d'obtenir des données du point d'accès. Appuyer Q pour continuer." + +#: lib/stat.c:30 lib/stat.c:428 +msgid "Q - quit to menu." +msgstr "Q - quitter vers le menu." + +#: lib/stat.c:31 +msgid "pipe error. Press any key." +msgstr "erreur de pipe. Appuyer sur une touche." + +#: lib/stat.c:32 +msgid "fcntl error. Press any key." +msgstr "erreur fcntl(). Appuyer sur une touche." + +#: lib/stat.c:33 +msgid "fork error. Press any key." +msgstr "erreur de fork(). Appuyer sur une touche." + +#: lib/stat.c:72 +msgid "Ethernet Statistics" +msgstr "Statistiques Etherne" + +#: lib/stat.c:108 +msgid "EthRxStat packet error. Press Q to continue." +msgstr "Erreur de paquet EthRxStat. Appuyer sur la touche Q pour continuer." + +#: lib/stat.c:120 +msgid "EthTxStat packet error. Press Q to continue." +msgstr "Erreur de paquet EthTxStat. Appuyer sur la touche Q pour continuer." + +#: lib/stat.c:123 +msgid "Received:" +msgstr "Reçu:" + +#: lib/stat.c:124 +#, fuzzy +msgid "Transmitted:" +msgstr "Transmis:" + +#: lib/stat.c:251 lib/stat.c:427 +msgid "Wireless Statistics" +msgstr "Statistiques du sans fil" + +#: lib/stat.c:282 +msgid "WirelessStat packet error. Press Q to continue." +msgstr "Erreur de paquet WirelessStat. Appuyer sur la touche Q pour continuer." + +#: lib/stat.c:419 +msgid "pipe error. Press any key" +msgstr "erreur du pipe. Appuyer sur une touche." + +#: lib/stat.c:424 +msgid "fcntl error. Press any key" +msgstr "erreur fcntl(). Appuyer sur une touche." + +#: lib/stat.c:433 +msgid "fork error. Press any key" +msgstr "erreur de fork(). Appuyer sur une touche." + +#: lib/sysinfo.c:31 +msgid "System Description: " +msgstr "Description système: " + +#: lib/sysinfo.c:93 lib/sysinfo.c:277 +msgid "System Info" +msgstr "Info système" + +#: lib/sysinfo.c:95 +msgid "Device hardware/software/name info:" +msgstr "" + +#: lib/sysinfo.c:130 +#, fuzzy +msgid "Product name:" +msgstr "Nom de produit:" + +#: lib/sysinfo.c:135 +#, fuzzy, c-format +msgid "Product type: %u" +msgstr "Type de produit: %u" + +#: lib/sysinfo.c:138 +#, fuzzy, c-format +msgid "Hardware revision: %u" +msgstr "Révision matérielle: %u" + +#: lib/sysinfo.c:141 +#, fuzzy +msgid "OEM name:" +msgstr "Nom du OEM:" + +#: lib/sysinfo.c:149 +#, fuzzy, c-format +msgid "Regulation domain: %s [%d]" +msgstr "Domaine régulateur: %s" + +#: lib/sysinfo.c:150 lib/sysinfo.c:337 +msgid "FCC (USA)" +msgstr "FCC (EU)" + +#: lib/sysinfo.c:151 lib/sysinfo.c:338 +msgid "DOC (Canada)" +msgstr "DOC (Canada)" + +#: lib/sysinfo.c:152 lib/sysinfo.c:339 +msgid "ETSI (Europe)" +msgstr "ETSI (Europe)" + +#: lib/sysinfo.c:153 lib/sysinfo.c:340 +msgid "Spain" +msgstr "Espagne" + +#: lib/sysinfo.c:154 lib/sysinfo.c:341 +msgid "France" +msgstr "France" + +#: lib/sysinfo.c:155 lib/sysinfo.c:342 +msgid "MKK (Japan)" +msgstr "MKK (Japon)" + +#: lib/sysinfo.c:155 lib/sysinfo.c:236 lib/sysinfo.c:342 +msgid "unknown" +msgstr "inconnu" + +#: lib/sysinfo.c:158 +#, fuzzy, c-format +msgid "Info structure version: %u" +msgstr "Version du Struct: %u" + +#: lib/sysinfo.c:161 lib/sysinfo.c:299 +#, c-format +msgid "Manufacturer OUI: %02X %02X %02X (%s)" +msgstr "OUI du manufacturier: %02X %02X %02X (%s)" + +#: lib/sysinfo.c:233 +msgid "FHSS 2.4 GHz" +msgstr "FHSS 2.4 GHz" + +#: lib/sysinfo.c:233 +msgid "DSSS 2.4 GHz" +msgstr "DSSS 2.4 GHz" + +#: lib/sysinfo.c:233 +msgid "IR Baseband" +msgstr "Fréquence de base IR" + +#: lib/sysinfo.c:234 +msgid "Commercial range 0..40 C" +msgstr "Étendue commerciale 0..40 C" + +#: lib/sysinfo.c:235 +msgid "Industrial range -30..70 C" +msgstr "Étendue industrielle -30..70 C" + +#: lib/sysinfo.c:238 +msgid "manual" +msgstr "manuel" + +#: lib/sysinfo.c:238 +msgid "notsupported" +msgstr "non supporté" + +#: lib/sysinfo.c:238 +msgid "dynamic" +msgstr "dynamique" + +#: lib/sysinfo.c:287 +msgid "Manufacturer:" +msgstr "Manufacturier" + +#: lib/sysinfo.c:293 +msgid "Manufacturer ID:" +msgstr "Identificateur du manufacturier" + +#: lib/sysinfo.c:305 +msgid "Product Name:" +msgstr "Nom de produit:" + +#: lib/sysinfo.c:312 +msgid "Product ID:" +msgstr "Identificateur du produit:" + +#: lib/sysinfo.c:318 +msgid "Product Version:" +msgstr "Version du produit:" + +#: lib/sysinfo.c:326 +#, c-format +msgid "PHYType: %s" +msgstr "Type PHY: %s" + +#: lib/sysinfo.c:329 +#, c-format +msgid "Temperature: %s" +msgstr "Température: %s" + +#: lib/sysinfo.c:336 +#, c-format +msgid "Regulation Domain: %s" +msgstr "Domaine régulateur: %s" + +#: lib/sysinfo.c:345 +#, c-format +msgid "Transmit Power: %u mW" +msgstr "Puissance de transmission: %u mW" + +#: lib/sysinfo.c:375 +#, c-format +msgid "WEP inplemented: %s" +msgstr "WEP non implanté: %s" + +#: lib/sysinfo.c:378 +#, c-format +msgid "Diversity: %s" +msgstr "Diversité: %s" + +#: lib/sysinfo.c:406 +#, c-format +msgid "Uptime: %u:%02u:%02u.%02u" +msgstr "Temps de marche (uptime): %u:%02u:%02u.%02u" + +#: lib/sysinfo.c:422 +#, c-format +msgid "IP Address: %s" +msgstr "Adresse IP: %s" + +#: lib/test.c:27 +#, fuzzy +msgid "[T] Test mode: " +msgstr "[T] Mode test: %s" + +#: lib/test.c:28 +#, fuzzy +msgid "[A] Antenna: " +msgstr "[A] Antenne: %s" + +#: lib/test.c:29 +#, fuzzy +msgid "[S] Signal level: " +msgstr "[S] niveau du signal: %03u" + +#: lib/test.c:30 +#, fuzzy +msgid "[R] Rate: " +msgstr "[R] Taux: %.1f Mbit/s" + +#: lib/test.c:31 +#, fuzzy +msgid "[F] TxFiler: " +msgstr "[F] TxFiler: %s" + +#: lib/test.c:32 +#, fuzzy +msgid "[O] Command: " +msgstr "[O] Commande: %s" + +#: lib/test.c:33 +#, fuzzy +msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" +msgstr "" +"T - TestMode On/Off; CASRFO - initialiser les options; Q - quitter vers le " +"menu" + +#: lib/test.c:71 +msgid "Left" +msgstr "Gauche" + +#: lib/test.c:71 +msgid "Right" +msgstr "Droite" + +#: lib/test.c:88 +#, fuzzy +msgid "Test mode" +msgstr "Mode test" + +#: lib/test.c:91 +#, fuzzy +msgid "Using the \"Test mode\" may cause loss of your current" +msgstr "" +"L'utilisation du nmode test peut causer la perte de la configuration " +"courante." + +#: lib/test.c:92 +#, fuzzy +msgid "configuration." +msgstr "Configuration de chargement à distance" + +#: lib/test.c:95 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No.)" +msgstr "(Y - Oui; N - Non (il est plus sûr de répondre Non)" + +#: lib/test.c:118 +msgid "Options:" +msgstr "Options" + +#: lib/test.c:144 +msgid "Statistics:" +msgstr "Statistiques:" + +#: lib/test.c:145 +msgid "Success Frames: 0 Failed Frames: 0" +msgstr "Trames transmises: 0 Trames non transmises: 0" + +#: lib/test.c:207 +#, c-format +msgid "Success Frames: %lu Failed Frames: %lu" +msgstr "Trames transmises: %lu Trames non transmises: %lu" + +#: lib/wep.c:29 +#, fuzzy +msgid "[E] Standard encryption mechanism: " +msgstr "[E] mécanisme standard d'encryption: %s" + +#: lib/wep.c:30 +#, fuzzy +msgid "[A] Allow unencrypted: " +msgstr "[A] Fonctionner sans encryptage: %s" + +#: lib/wep.c:31 +#, fuzzy +msgid "[K] Default WEP key: " +msgstr "[K] Clé par défaut du WEP: %d" + +#: lib/wep.c:32 +#, fuzzy +msgid "[P] Public key: " +msgstr "[P] Clé publique: %s" + +#: lib/wep.c:85 +msgid "EK1234 - set; W - write conf; Q - quit to menu" +msgstr "" +"EK1234 - initialisé; W - sauvegarder la config.; Q - quitter vers le menu" + +#: lib/wep.c:87 lib/wep.c:249 +msgid "Privacy Settings" +msgstr "Configuration privée" + +#: lib/wep.c:94 lib/wep.c:263 +msgid "Key WEP" +msgstr "Clé du WEP" + +#: lib/wep.c:101 +msgid "Hint! Confused by WEP key values? See man ap-config for info..." +msgstr "" +"Un indice! Confus par les valeurs des clés du WEP? Voir man ap-config pour " +"info..." + +#: lib/wep.c:247 +msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" +msgstr "" +"AEPK1234 - options de configuration; W - sauvegarder la configuration; Q - " +"quitter vers le menu" + +#: lib/wlan.c:28 +msgid "[E] ESSID: " +msgstr "" + +#: lib/wlan.c:29 +#, fuzzy +msgid "[N] AP name: " +msgstr "[N] Nom du point d'accès:" + +#: lib/wlan.c:31 +#, fuzzy +msgid "[K] AP contact: " +msgstr "[E] Contact du point d'accès: %s" + +#: lib/wlan.c:32 +#, fuzzy +msgid "[L] AP location: " +msgstr "[L] Localisation du point d'accès: %s" + +#: lib/wlan.c:34 +#, fuzzy +msgid "[R] RTS threshold: " +msgstr "[R] Seuil RTS: %d" + +#: lib/wlan.c:35 +#, fuzzy +msgid "[F] Fragmentation threshold: " +msgstr "[F] Seuil de fragmentation: %d" + +#: lib/wlan.c:36 +#, fuzzy +msgid "[P] Preambule type: " +msgstr "[P] type de préambule: %s" + +#: lib/wlan.c:37 +#, fuzzy +msgid "[A] Auth type: " +msgstr "[A] Type autor.: %s" + +#: lib/wlan.c:38 +#, fuzzy +msgid "Open system" +msgstr "Système ouvert" + +#: lib/wlan.c:39 +#, fuzzy +msgid "Shared key" +msgstr "Clé partagée" + +#: lib/wlan.c:40 +#, fuzzy +msgid "Both types" +msgstr "Les deux types" + +#: lib/wlan.c:41 +#, fuzzy +msgid "[U] Auto rate fallback: " +msgstr "[U] AutoRateFallBack: %s" + +#: lib/wlan.c:42 +#, fuzzy +msgid "[S] Insert ESSID in broadcast packets: " +msgstr "[S] insérer ESSID dans les paquets de type broadcast: %s" + +#: lib/wlan.c:43 +#, fuzzy +msgid "Basic and Supported rates:" +msgstr "Taux de base et supportés:" + +#: lib/wlan.c:44 +msgid "Key Rate Status" +msgstr "Clé Taux État" + +#: lib/wlan.c:46 +#, fuzzy +msgid "[I] International roaming: " +msgstr "[O] Mode opérationnel: %s" + +#: lib/wlan.c:47 +msgid "[B] Beacon period (msec): " +msgstr "" + +#: lib/wlan.c:48 +msgid "[D] DTIM sending interval (beacons): " +msgstr "" + +#: lib/wlan.c:49 +msgid "[key] - set option; W - write conf; Q - quit to menu" +msgstr "" +"[key] - initialiser l'option; W - sauvegarder la config.; Q - quitter vers " +"le menu" + +#: lib/wlan.c:140 +msgid "Short" +msgstr "Court" + +#: lib/wlan.c:140 +msgid "Long" +msgstr "Long" + +#: lib/wlan.c:265 +msgid "Wireless Settings" +msgstr "Paramétrage du sans fil" + +#: lib/wlan.c:753 +msgid "Antenna Configuration:" +msgstr "Configuration de l'antenne:" + +#: lib/wlan.c:770 +msgid "General Options" +msgstr "Options générales" + +#: lib/wlan.c:772 +msgid "" +"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu" +msgstr "" +"UIOPTY - antenne; SCANLEDFR1234 - options; W - sauvegarder la config.; Q - " +"quitter vers le menu" + +#: src/ap-config.c:59 +msgid "General" +msgstr "Général" + +#: src/ap-config.c:59 +msgid "Set general options" +msgstr "Initialiser les options générales" + +#: src/ap-config.c:60 +msgid "Advanced" +msgstr "Avancé" + +#: src/ap-config.c:60 +msgid "Set advanced options" +msgstr "Initialiser les options avancées" + +#: src/ap-config.c:94 +msgid "Reset AP." +msgstr "Réinitialisation du point d'accès." + +#: src/ap-config.c:129 +msgid "Latest" +msgstr "Dernier" + +#: src/ap-config.c:129 +msgid "Get info about latest events" +msgstr "Obtenir les infos à propos des derniers événements" + +#: src/ap-mrtg.c:42 +msgid "" +"\n" +"Usage:\n" +msgstr "" +"\n" +"Usage:\n" + +#: src/ap-mrtg.c:44 +#, fuzzy +msgid "" +"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-" +"h] [-r]\n" +"\n" +msgstr "" +"\tap-mrtg -i ip -c communauté -t type [-b bssid] [-v] [-h] [-r]\n" +"\n" + +#: src/ap-mrtg.c:46 +msgid "" +"Get stats from AP and return it in MRTG parsable format\n" +"\n" +msgstr "" +"Obtenir les statistiques de l'AP et les retourner dans un format MRTG\n" +"\n" + +#: src/ap-mrtg.c:47 +msgid "-i ip - AP ip address\n" +msgstr "-i ip - adresse ip AP\n" + +#: src/ap-mrtg.c:48 +msgid "-c community - SNMP community string\n" +msgstr "-c communauté chaîne de la communauté SNMP\n" + +#: src/ap-mrtg.c:50 +msgid "" +"-t type - statistics type ireless, thernet, associated tations " +"or ink quality in client mode\n" +msgstr "" +"-t type type de statistiques sans fil, thernet, tations " +"associées ou qualité du ien en mode client\n" + +#: src/ap-mrtg.c:52 +msgid "" +"-b bssid - mac address of the AP to which get link quality, only if " +"type=l\n" +msgstr "" +"-b bssid adresse MAC de l'AP pour obtenir la qualité du lien, seulement " +"si le type=l\n" + +#: src/ap-mrtg.c:53 +msgid "-n name - AP name - for check only\n" +msgstr "" + +#: src/ap-mrtg.c:54 +msgid "" +"-a aptype - AP type - 410 (default) or 510 for ATMEL12350's, like the " +"ME-102\n" +msgstr "" + +#: src/ap-mrtg.c:56 +msgid "-v - report MRTG about problems connecting to AP\n" +msgstr "-v rapporter MRTG à propos de problème de connexion à l'AP\n" + +#: src/ap-mrtg.c:57 +msgid "-r - reset AP when getting LinkQuality stats\n" +msgstr "" +"-r réinitialise l'AP lors de l'obtention des statistiques de " +"LinkQuality\n" + +#: src/ap-mrtg.c:58 +msgid "" +"-h - print this help screen\n" +"\n" +msgstr "" +"-h afficher l'aide\n" +"\n" + +#: src/ap-mrtg.c:59 +#, fuzzy, c-format +msgid "" +"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" +"\n" +msgstr "" +"ap-mrtg %s Copyright © 2002 Roman Festchook\n" +"\n" + +#: src/ap-mrtg.c:143 +msgid "Invalid IP-address\n" +msgstr "Adresse IP invalide\n" + +#: src/ap-mrtg.c:188 +#, c-format +msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" +msgstr "" + +#: src/ap-mrtg.c:207 +msgid "Create socket error" +msgstr "Erreur de création de socket" + +#: src/ap-mrtg.c:211 +msgid "Bind socket error" +msgstr "Erreur de liaison (bind) du socket" + +#: src/ap-trapd.c:148 +#, c-format +msgid "ap-trapd %s started%s%s." +msgstr "ap-trapd %s démarré%s%s" + +#: src/ap-trapd.c:149 +msgid " on " +msgstr " on " + +#: src/ap-trapd.c:155 +msgid "Unable to fork. Exiting." +msgstr "Incapable de fork(). Fin d'exécution." + +#: src/ap-trapd.c:159 +msgid "Can't create socket. Exiting." +msgstr "Ne créer le socket. Fin d'exécution." + +#: src/ap-trapd.c:165 +msgid "Can't bind socket. Exiting." +msgstr "Ne peut établir la liaison sur le socket. Fin d'exécution." + +#: src/ap-trapd.c:172 +#, c-format +msgid "Can't bind to device %s. Exiting." +msgstr "Ne peut établir la liaison (bind) %s. Fin d'exécution." + +#: src/ap-trapd.c:183 +#, c-format +msgid "Unable to process username %s. Error: %m." +msgstr "Incapable de traiter avec le nom d'usager %s. Erreur: %m." + +#: src/ap-trapd.c:188 +#, c-format +msgid "Unable to change to uid %d." +msgstr "Incapable de changer de UID %d" + +#: src/ap-trapd.c:235 +#, c-format +msgid "" +"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." +msgstr "" +"Réception d'une trappe SNMP inconnu ver. %d. À partir de %s:%d. Agent: %s. " +"Communauté: %s." + +#: src/ap-trapd.c:307 +#, c-format +msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" +msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" + +#: src/bridge.c:36 +msgid "[C] Configuration-enabled port(s): " +msgstr "" + +#: src/bridge.c:39 +msgid "[B] Isolate wireless clients (broadcast traffic): " +msgstr "" + +#: src/bridge.c:40 +msgid "[U] Isolate wireless clients (unicast traffic): " +msgstr "" + +#: src/bridge.c:137 +#, fuzzy +msgid "Both" +msgstr "Les deux types" + +#: src/nwn_advanced.c:61 +#, c-format +msgid "[D] DB Station Timeout: %d" +msgstr "[D] DB délai d'oisiveté de la station: %d" + +#: src/nwn_advanced.c:63 +#, c-format +msgid "[A] ACK Window: %d" +msgstr "[A] fenêtre ACK: %d" + +#: src/nwn_advanced.c:66 +msgid "Advanced Options" +msgstr "Options avancées" + +#: src/nwn_advanced.c:67 +msgid "DA - options; W - write conf; Q - quit to menu" +msgstr "" +"DA - options; W - sauvegarder la configuration; Q - quitter vers le menu" + +#: src/nwn_latest.c:31 +#, c-format +msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" +msgstr "Raison: %u Station: %02X%02X%02X%02X%02X%02X" + +#: src/nwn_latest.c:89 +msgid "Latest Events" +msgstr "Derniers événements" + +#: src/nwn_latest.c:90 +msgid "Disassociate:" +msgstr "Dissocier:" + +#: src/nwn_latest.c:97 +msgid "Deauthenticate:" +msgstr "Désauthentifier:" + +#: src/nwn_latest.c:104 +#, fuzzy +msgid "Authenticate Fail:" +msgstr "Échec d'authentification:" + +#: src/nwn_latest.c:110 +msgid "Last error:" +msgstr "Dernière erreur:" + +#: src/nwn_latest.c:111 +msgid "Error:" +msgstr "Erreur:" + +#: src/stations.c:113 +#, fuzzy +msgid "Id MAC address" +msgstr "Id Adresse MAC" + +#: src/stations.c:223 src/stations.c:307 +msgid "Associated stations" +msgstr "Stations associées" + +#: src/stations.c:225 +#, fuzzy +msgid "Id MAC address Quality Age RSSI" +msgstr "Id Adresse MAC Qualité Âge RSSI" + +#~ msgid "Wireless Access Point Configurator" +#~ msgstr "Configurateur de point d'accès sans fil" + +#~ msgid "Invalid multicast address. Press any key." +#~ msgstr "Adresse multicast invalide. Appuyer sur une touche." + +#~ msgid "Searching please wait..." +#~ msgstr "Recherche en cours, svp attendre..." + +#~ msgid "No Access Points found." +#~ msgstr "Aucun point d'accès repéré." + +#~ msgid "Output Signal Power Level" +#~ msgstr "Niveau de puissance du signal de sortie" + +#~ msgid "SysInfo:" +#~ msgstr "SysInfo:" + +#~ msgid "RegulationDomain: %s" +#~ msgstr "Domaine de régulation: %s" + +#~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" +#~ msgstr "Mac Address: %02X%02X%02X%02X%02X%02X" + +#~ msgid "[T] Test Mode: Off" +#~ msgstr "[T] mode test: Off" + +#~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" +#~ msgstr "Antenne de transmission: [O] Gauche %3s, [P] Droit %3s" + +#~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" +#~ msgstr "Antenne de réception: [U] Gauche %3s, [I] Droit %3s" + +#~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" +#~ msgstr "Sélection de la diversité: [T] Gauche %3s, [Y] Droite %3s" + +#~ msgid "on" +#~ msgstr "on" + +#~ msgid "Write configuration to AP done. Press any key to continue." +#~ msgstr "" +#~ "Sauvegarde de la configuration sur le point d'accès complété. Appuyer sur " +#~ "une touche pour continuer." + +#~ msgid "Using this option may cause lost of current configuration." +#~ msgstr "" +#~ "L'utilisation de cette option peut provoquer la perte de configuration " +#~ "courante." + +#~ msgid "" +#~ "Getting known AP's info need to reboot you AP and may cause lost of " +#~ "current configuration." +#~ msgstr "" +#~ "Pour obtenir les infos des points d'accès, il est nécessaire de réamorcer " +#~ "le point d'accès et cela peut causer la perte de la configuration " +#~ "courante." + +#~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" +#~ msgstr "CN: canal; RSSI: force du signal; LQ; qualité du lien" + +#~ msgid "Found AP at %s" +#~ msgstr "Point d'accès repéré à %s" + +#~ msgid "Access Point Configurator for Atmel ver. %s" +#~ msgstr "Configurateur du point d'accès Atmel de version %s" + +#~ msgid "Access Point Configurator for NWN ver. %s" +#~ msgstr "Configurateur de point d'accès pour NWN version %s" + +#~ msgid "" +#~ "Usage: %s []\n" +#~ "ap-mrtg version %s, Copyright (C) 2002 Roman Festchook\n" +#~ "Get stats from AP and return it in MRTG parsable format.\n" +#~ " ip - AP ip address;\n" +#~ " community - SNMP community string;\n" +#~ " type - Statistics type ireless, thernet, associated " +#~ "tations or ink quality in client mode;\n" +#~ " bssid - Mac address of the AP to which get link quality.\n" +#~ msgstr "" +#~ "Usage: %s []\n" +#~ "ap-mrtg version %s, Copyright © 2002 Roman Festchook\n" +#~ "Obtenir les statistiques d'un point d'accès et les retourner dans un " +#~ "format MRTG.\n" +#~ " ip - adresse IP du point d'accès\n" +#~ " community - chaîne de la communauté SNMP\n" +#~ " type - type de statiques sans fil, Ethernet, tations " +#~ "associées ou qualité du ien en mode client\n" +#~ " bssid - adresse Mac du point d'accès de laquelle la qualité du lien " +#~ "est déterminée\n" + +#~ msgid "Invalid type of statictics\n" +#~ msgstr "Type invalide de statistiques\n" + +#~ msgid "Pream" +#~ msgstr "Préam" + +#~ msgid "ColdStart" +#~ msgstr "DÉmarrage à froid" + +#~ msgid "WarmStart" +#~ msgstr "Démarrage à chaud" + +#~ msgid "LinkDown" +#~ msgstr "Liaison vers le bas (linkdown)" + +#~ msgid "LinkUp" +#~ msgstr "Liaison vers le haut (linkup)" + +#~ msgid "AuthenticationFailure" +#~ msgstr "Échec d'authentification" + +#~ msgid "EgpNeighborLoss" +#~ msgstr "EgpNeighborLoss" + +#~ msgid "EnterpriseSpecific" +#~ msgstr "EnterpriseSpecific" + +#~ msgid "Reassociation" +#~ msgstr "Réassociation" + +#~ msgid "RoamOut" +#~ msgstr "RoamOut" + +#~ msgid "Association" +#~ msgstr "Association" + +#~ msgid "Disassociation" +#~ msgstr "Déassociation" + +#~ msgid "AssociationExpire" +#~ msgstr "Délai d'expiration d'association" + +#~ msgid "SettingPingIPAddress" +#~ msgstr "Configuration d'adresse IP pour le ping" + +#~ msgid "StartUp" +#~ msgstr "Démarrage" + +#~ msgid "FailedToEraseFlash" +#~ msgstr "Échec d'effacement de la mémoire Flash" diff --git a/po/nl.gmo b/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0d024c339766ec096f60a72ef06e8e5115430c64 GIT binary patch literal 14301 zcmb`Ne{>vIb;n;y2t*+yBq97t=?jSx8@y}zM{vAO?8uTV8%LHR$#D{6!f1E28f$lE znc0yd1BHeZ3bZK{2qb9SHm8%^{mhRyZ{EA_zWeUG^0zNI^IeAHQREWjdrvjyzu`yD;fLcr=Na>KcsD!~ zJ^&}-gK!Z31YQY$^?U@5!ELY#LwGOT0SBIC%m~~A$KYGw)$no1C(YRx81oEx9=s4< z0?Tj+UIcH2YDXJVrFkt>y?4Tk;g{f6_zzI;U(ApAVt#%N?u2UZDir?8?_LKr6#L-0@L+@Yf~x1O`TbABE4cmwycYf|RQpOO zX#?Dv(}Sx2PUzYPE!Pi0jq_Ka+Vuoff4`ky|1*@G{1~d<3+Rmc{k)u)LbZQARJrZ& zMexS_dIfIh`YyN&J`Pp>e3YwxTKIgp0jeG2@R{&>sCFKP(t8Be{@e5WZ_TgogR194 zQ0;pJN^hTms_%rmtW9Vojx1EtDNE`WOPYACzd166(w>bqfny$sdfH$ds( zy-@XhFn|6jsCpjD?>_-$SN{lQhk9A|e*skgo(nZj8{l4eGnD=xfDEPi2-NpK2ld{U z^XE^%tGNCKlzyH?qt%bgp@lDlnx~6U@4W*`KX=0y!}mc<(R>*)wC1~T9sCJYyDWpL za$BLw-3nDtJLfTo3eD^D>${=ac^`D+0k7ct5h#2329&=32dciaP>RaE0LmV&gnEA) zdJnR^e9I zfNKB!Q2O{ZRQbjzF4ZUJX^>eNg>= z1eV}eA)husgBp()t;^>30jU1Bp!D-B@Bmc5-<0#6Q2o0fYTQ4WUw%PsvWP%uipmM&U+xHZywC=e;%s;k3-e> zH&E^TE|k9i4bpXU5ynPS&9!hG*5M3%7(N3&g+Vw6o)4MY<`O8o*be2#cS7lP0^<73 ztx)eRL$&`7H~{Z~=fV%br@>D^jnikK^zb#PdjA&cd*6bXxcL{TexJjlsQx`0s$W~7 z+Oq?m3vYs|cRs%kAydP=Ccl3llzlx2RsWwuwet(`neeZmh2Mj+gQwyQ)UFpo&Hu|G zDl^;QeprR-*TYc#{4|uFABWP%-{tpz2(Rb*34KL9Ok=DZVDxPBO_Ur*-z5yTYC zPod_?Wt+11h9ONfb5Qf-?NH?&f|>_^4b|=+LFw}+5Eo{C237who3nOa2Bo(Ra09GB z*+U&lk8gw0*L$G!^-*{pd=zRtz6hm{uS416|H6at!Y$dj1W@gHBfJ*g4^f5r4%`FJ z+nU+ijqn1l-wUO`k3*+VsQx_;^}Q#d#^pcq>vONl{KIpg>}V|K%ORgI36vjt5TZi! zPf*{v=%rb|uY~f8S3%W(Lw^4-RQm#`?|m$P{zWJ~ejQr)?@;4;(YEaV7N~k=;Q87zpvF#zbor<|%j*3t&PR}WKpGt z^v#EmUq?E}+w+tA;4_d9b{;_4aPc_C#f^x@`mFrHDEtlNO~_mGd#}kU97beIA3>yJ z=}%*?<1NVVB7dR_j@Kd|MurjDwT=&EaKFp^9z>=P&EI{9#!p9zyc>~yOP6;chY%fC zAR6~r7y0q0@Fs+zcL%29Y*81#jf^3QE;z17-hteJXq?}O6pxp4@kvBBu^zb+xfOX8 z@_UGm=?u=!&*6L>@;>CfNE6YqlEMAHpWhPlF!C&92XX|_@$3w4O@9jK2arEP#`F8K zF&(W8?st~oi;)S$Lk1BYughRI!TtI9E8x{g1<`!(9J0-OkvsAmGw@fCi}LFad^Cgmoy^bQ2|te9kL*MqM9xNTL2gHMY)0zHbC5aY zazw`;BA-HDjl2!1Av!*Wgvf5>caSrYDq;o>CSKjI3>X`Q)|BS#T#^JetD|I_Ue$WF zTI?r@jpl88!MDRxwjJ5!g`m1%>weodf^gBkD)kycdu0Q4G*)at$(5FWZDYWcsYF(*F;%#cwBsPGQ)s%&a1Vx;>na$WV` zb3<9SQ_c>(aK$eAE2@w-p`Fw(_Z3gz>%jteIxG&UjRo25WXO zvFiqt>jsm`U~N5D`mbzfR+57hZTfbwRv8@Hoc)w_W`@JIABLVCK_NjsjorXk%&^mP zL3J}aXC&0n`JkZ@$(7g91av8uwonc3lFUpODxmRDUw@jjo8%`oE` z#lbPZHsMugJ;AMz3rBQcy*OD0Ec`CNvW#|8nsuzQPM@i5cOg$#+VQ=|%&4z9$|r&14UvTq0YyD`D zbiEKof+asraI{%VBD)f$cG;6F?M;QxyKk!F zcC{?8|`r(FEd6hjK$tj z00*cax$1iCHO-z8#_{0H@OranZ($JkXp-QhWR3K-SV>~`VAxe3L`_-FxF7nl*XXe8 zs>U_RJFRp}h4TtoQ}r;AH^^3w#V}g#Z>#F2t{^30d|{mAbLOeijI8r{!ea(58uTw`iob&J zzNzrTx}=JGuT{)}gA;l1fc}O@N2kZIHfv{Zo*FX;{5DQ-QLf13>s-Z5?Y+6{n@+NP zPQ}5JS6wkV89Ns(CESQ=sM$5RbAG^U;*dI5H_GQkAvXwJiWV;8aki$g#~i=*O?$N< zGVa&eQFkph)6NZ`k2IT>)b7+G{j3%WSAFzbvuT)_zl$;Pge={*9eb^^&8HYEeA#9z zzgv^E#<-ZIj1Jnyq*l2Cdpi)%20cshjs57m5h zv(T!u*14PANPlCivm&c3N^oH;>daThii_KwZ_J0ly-!dk7uYG~?!~ean*{Zc2d!wC zag~c=RdYdDUZE?xoQLVX_t`x(%nXqc-PCWa7D6Gm~bcgQsr# z1ki(x)b2qCXs2-NxMD-A3k@0KN$0s>+i%)YpZGd(v1rBWp>DbYvwpLM4&)`A(akd0 z6PiD>+70Dxww$tpGRkwTQ?mRTYSHLnp3TI}va%#i-1n69MLnr)9x?~_O-{|;On8#( zZik&289s3R*yx_=Jdi*2xaDBzRs+Qq3obn4EX4&g!%XiPi^XCgxa&P&Gq&0^V{Hdk zE$O`%=(yW2u-3#OgW=|H7A4rhX7QV>T{3<`jDFL1^{=^g=zS&I=(rbMh}elVPVidh zZiru;*KGUdpqutNR?XUMJE5`Aej@wPej+uw1C@)>5*mapHh-+ne$83Hq1>uX=cM1s zj&ye+Gz70#cJ*{-0@E+^3Eh`__T8;ew@xL(Iz)`tbt)YN^}7@mVPYyAn8tI4b`SPj zU5KJZOMKy7*NWIjulQv)(B|;)5j#Ax-yR}Jik9hXExT1~2BD1G!^@e&qetxM?#?n` zXW5dmeas3^9I?gK(HuT_#2&;z%we{NN3{FG%rcukg)o;eMXQC|5hiUfM*nUvXlg51 zTu?Rh)v(>jLW5O?ags-6qe*arw@&n=Y)~CJ3PZGB$^Fl1W%K5j3~d=2qF`y71xbzTmD^Gp+E&`K z$!^+S8QSuap-q%i@Kti&i{+OcfE{bZQDR3{hy~kN(>2xn?7DeMvNAWy^Ua;S7S>a* z?w4kLuUWC9DJEyHK^tx2!mxf_*eJvFwsI8LcMeSKn;7f$Yg2h>fH{QG@@2P+Yx}pg zH?lhk!X0k=f)!nxw&zP%_sYq?&iip`EUZQ~zEH7O&jsxPA_Ru2G?CPUT4{G$PfD{< z#SWN(aeppOgGD9TJi4)VmJJVOSyUB-FMD3BQ@WsiHeW~UXz4WfA+2BAM@=(O5SbR_v5;D z3MWXt5pL7y;}UOlAZmqypDyFfSlVbB9w9i&-KCge3SHt&DK>wRi?up=d{R!G>VJ>C zoUO&4S8GJks?=PaI7i7j+F$egvUBsw&e@(admpE*g*;uVZuKYXvJ9P8J2YY=-t1)R zxNI^Od0qKcAzjyfkR|M-8JDu-{&H}XwOb=d-Y#k-4eZ0E?!5V=L7q)dTEWpq`=|mC z1~Mhq4P6ee9r@bKQNZQ#@>&_@zG^!!%N^!#XUantM`ptfo-D(Y+AmXugbhbJJ zcr21_nQ`B9aVmCDJol+fo%(;s1NzcqzID;AC?Bgnbt@B?k8P%zIr>EuyGrRjt(Dc- zf(29BrB_dMd$^lMETjh)N$SnJTO(*hB86P8yQ6Di2^AZJWB;s+qd0mw)^vT}mM#N!E1S z_viUD5h)6#e>#gOYfsV7kZ+RTj@)|CmTMp%>6T6{xywE}Uh;zm8)84GC9zLm@ifjF zvqjK3{jwX-{=8&o2KC18hU0xxF*kXtFRaQ>Iv0>HnWT3*#?7v)t!~j;++(rJraQG1 z&nZjU^lZ<;pCDr?Q;yh95{48q6N%0JsdAQ!tQd>tMkXmcmf=PgPvj?I*RysLt1TIA zvGp`G3j-JvGMAmJY(<^Z*sx~zeSNKhER@uW^Y`ccl=zq}LxO=~vF?v|S!6*QT`-b| z9rOwVoC`F(TJE)?mzG$B{djRsE0)V{y7cC3(7M#_3rWEcjK$efqup83@Y!-V^7*jK z-V%^t)JCV5<+Mv$m+&Pq-^lW%fuE&3GXr(AVy%2T&A9j;cj{*tPE>8ea<$7dDSMVA9* znmUI^N^=q2WGPUcoh0|kW0&-t7@Jn!(!hpF18gp=Q+^DHYSt=EdE8Km3=AuN%Avg`mhhD zA|*k)Q?R()7jvOS#gWUyR_Vm4WI`vy&g?0sK*^2s2aGmuj;@q#Hg8v_LJMo3G*-sK z@;CBqsL!9|>q#wY`m3{{ldD60vsV01e744}plr#Q`k9|aiN`X}Q`EgZmb&c&PaC90 z`8)n`!5$uD)n>!&@#aVZEhc?6ksC|v`9S=_0=xZV{J}y|eOGtbzgq=5yEHOe+6dJB zTFP$BE2rf-X1U8FFYu?8Te1lBH1ev2V722$dr@~^c(U9LPYMNY>}?iThwK&29M{%v zh_l*Z_gB=6v`x!$ubgBV!!;T;n(e>XFs}Y230Eaw_v8HCk21?0XV~35Wvh}Q1sfjq zGv8gz!OC5Avan11(*-i)g-q;3zz%7VC7^IK&&Bo^9Skn9Wl~A5b|&>{rDShmRl|mzUfpy)J|XL`osd1<2v5Pb3tY5A)ofvCy17{; zqt>mr%}jMnzy9#MuKiWl%)2WyzJqo2q!Et3%2KQ>2hLF5QIWfA2hEUgmh;iJf!>p_ z&C2(Et>ba>BuMXbC)xBJUrl#Mo4MCwvrke_$93wj*)9GS_SlE>EG|xaq_DxW`CoQI z9_ycnXeigr=PE<((z$j2v4@+Tj4t7)v!Q(2MEo_slfdYUcnZ1WEUU}%q6&MZi=M4; zyBKG!&hMU5;MwzgJws(ULubtjTshAE{8iIsyF&#`#v#c+(Nzu|8*7}Q{ zXQ|Mx~ C5DozV literal 0 HcmV?d00001 diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..3e3fbc9 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,1776 @@ +# Dutch translation of ap-utils +# Copyright (C) 2003 Free Software Foundation, Inc. +# This file is distributed under the same license as the ap-utils package. +# Elros Cyriatan , 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: ap-utils 1.3.2-pre3\n" +"POT-Creation-Date: 2004-04-04 20:22+0300\n" +"PO-Revision-Date: 2003-07-31 19:03+0100\n" +"Last-Translator: Elros Cyriatan \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Report-Msgid-Bugs-To: \n" + +#: ap-gl/ap-gl.c:47 ap-gl/bridge.c:179 src/ap-config.c:46 src/bridge.c:222 +msgid "Bridging" +msgstr "" + +#: ap-gl/ap-gl.c:47 src/ap-config.c:46 +#, fuzzy +msgid "Set bridging and IP-related options" +msgstr "Bridging en IP-gerelateerde opties instellen" + +#: ap-gl/ap-gl.c:49 ap-gl/ap-gl.c:85 ap-gl/bridge.c:133 src/ap-config.c:48 +#: src/ap-config.c:118 src/ap-config.c:127 src/bridge.c:135 src/bridge.c:139 +msgid "Wireless" +msgstr "Draadloos" + +#: ap-gl/ap-gl.c:49 src/ap-config.c:48 +msgid "Set wireless options" +msgstr "Draadloze opties instellen" + +#: ap-gl/ap-gl.c:50 src/ap-config.c:49 src/ap-config.c:61 +msgid "Privacy" +msgstr "Privacy" + +#: ap-gl/ap-gl.c:51 src/ap-config.c:50 src/ap-config.c:62 +#, fuzzy +msgid "MAC auth" +msgstr "Mac toelating" + +#: ap-gl/ap-gl.c:52 src/ap-config.c:51 src/ap-config.c:63 +msgid "Community" +msgstr "Gemeenschap" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Radio" +msgstr "Radio" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Set radio signal power and antenna options" +msgstr "Vermogen radio en antenne opties instellen" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Upload" +msgstr "Uploaden" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Make current configuration active" +msgstr "Huidige configuratie actief maken" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Defaults" +msgstr "Standaardwaarden" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Restore factory default settings" +msgstr "Fabrieksinstellingen terugzetten" + +#: ap-gl/ap-gl.c:69 src/ap-config.c:86 src/ap-config.c:94 +msgid "Reset" +msgstr "Opnieuw instellen" + +#: ap-gl/ap-gl.c:70 src/ap-config.c:87 +msgid "Reset AP. All not uploaded configuration will be lost" +msgstr "" +"AP opnieuw instellen. Alle niet verzonden instellingen zullen verloren gaan." + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "TestMode" +msgstr "Testmodus" + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "Put Access Point in test mode" +msgstr "Access Point in testmodus zetten" + +#: ap-gl/ap-gl.c:83 src/ap-config.c:116 src/ap-config.c:126 +msgid "SysInfo" +msgstr "SysInfo" + +#: ap-gl/ap-gl.c:84 ap-gl/bridge.c:132 src/ap-config.c:117 src/bridge.c:134 +#: src/bridge.c:138 +msgid "Ethernet" +msgstr "Ethernet" + +#: ap-gl/ap-gl.c:84 src/ap-config.c:117 +msgid "Get ethernet port statistics" +msgstr "Ethernet poortstatistieken opvragen" + +#: ap-gl/ap-gl.c:86 src/ap-config.c:119 src/ap-config.c:128 +msgid "Stations" +msgstr "Stations" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "KnownAPs" +msgstr "BekendeAPs" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "Get info about known Access Points" +msgstr "Info opvragen over bekende Access Points" + +#: ap-gl/ap-gl.c:105 src/ap-config.c:154 +msgid "Info" +msgstr "Info" + +#: ap-gl/ap-gl.c:106 src/ap-config.c:155 +msgid "Config" +msgstr "Config" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Commands" +msgstr "Opdrachten" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Execute commands on Access Point" +msgstr "Opdrachten uitvoeren op Access Point" + +#: ap-gl/ap-gl.c:109 src/ap-config.c:158 +msgid "Connect" +msgstr "Verbinden" + +#: ap-gl/ap-gl.c:110 src/ap-config.c:159 +msgid "Search" +msgstr "Zoeken" + +#: ap-gl/ap-gl.c:111 lib/common.c:52 src/ap-config.c:160 +msgid "About" +msgstr "Info" + +#: ap-gl/ap-gl.c:112 src/ap-config.c:161 +msgid "Shell" +msgstr "Shell" + +#: ap-gl/ap-gl.c:113 src/ap-config.c:162 +msgid "Exit" +msgstr "Afsluiten" + +#: ap-gl/ap-gl.c:162 src/ap-config.c:211 +#, c-format +msgid "Wireless Access Point Configurator ver. %s" +msgstr "Draadloos Access Point configurator versie %s" + +#: ap-gl/auth_mac.c:28 src/auth_mac.c:28 +msgid "AuthorizedMacTableString packet error" +msgstr "AuthorizedMacTableString pakketfout" + +#: ap-gl/auth_mac.c:30 src/auth_mac.c:30 +#, fuzzy +msgid "[A] MAC authorization: " +msgstr "[A] Mac toelating: %s" + +#: ap-gl/auth_mac.c:31 src/auth_mac.c:31 +#, fuzzy +msgid "Enter MAC: " +msgstr "Geef Mac:" + +#: ap-gl/auth_mac.c:32 src/auth_mac.c:32 +#, fuzzy +msgid "Delete Num: " +msgstr "Nummer verwijderen:" + +#: ap-gl/auth_mac.c:33 src/auth_mac.c:33 +#, fuzzy +msgid "Authorized MAC addresses" +msgstr "Toegelaten Mac adressen" + +#: ap-gl/auth_mac.c:34 src/auth_mac.c:34 +#, fuzzy +msgid "NUM MAC address" +msgstr "NUM MAC adres" + +#: ap-gl/auth_mac.c:35 src/auth_mac.c:35 +msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit" +msgstr "" +"A - toelaten; N - nieuw; D - verwijderen; pijltjes - schuiven; W - conf " +"schrijven; Q - afsluiten" + +#: ap-gl/auth_mac.c:36 +#, fuzzy +msgid "A - auth; IPSTF - set; W - write conf; Q - quit" +msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu" + +#: ap-gl/auth_mac.c:37 +#, fuzzy +msgid "A - auth; W - write conf; Q - quit" +msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu" + +#: ap-gl/auth_mac.c:39 +msgid "[I] RADIUS SERVER IP: " +msgstr "" + +#: ap-gl/auth_mac.c:40 +msgid "[P] RADIUS SERVER PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:41 +msgid "[S] RADIUS SERVER SECRET: " +msgstr "" + +#: ap-gl/auth_mac.c:42 +msgid "[T] REAUTHORIZATION TIME: " +msgstr "" + +#: ap-gl/auth_mac.c:43 +msgid "[F] RADIUS SOURCE PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:88 +#, fuzzy +msgid "Internal" +msgstr "Algemeen" + +#: ap-gl/auth_mac.c:96 +msgid "" +msgstr "" + +#: ap-gl/bridge.c:27 src/bridge.c:27 +msgid "[I] IP: " +msgstr "" + +#: ap-gl/bridge.c:28 src/bridge.c:28 +#, fuzzy +msgid "[N] Netmask: " +msgstr "[N] Netmask: %s" + +#: ap-gl/bridge.c:29 src/bridge.c:29 +#, fuzzy +msgid "[G] Gateway: " +msgstr "[G] Gateway %s" + +#: ap-gl/bridge.c:30 src/bridge.c:30 +#, fuzzy +msgid "[F] Filter non-IP traffic: " +msgstr "[F] Niet-IP verkeer filteren: %s" + +#: ap-gl/bridge.c:31 src/bridge.c:31 +#, fuzzy +msgid "[P] Primary port: " +msgstr "[P] Hoofdpoort: %s" + +#: ap-gl/bridge.c:32 src/bridge.c:32 +#, fuzzy +msgid "Attached station MAC: " +msgstr "Verbonden station MAC: %02X%02X%02X%02X%02X%02X" + +#: ap-gl/bridge.c:33 src/bridge.c:33 +#, fuzzy +msgid "[D] DHCP client: " +msgstr "[D] DHCP-protocol: %s" + +#: ap-gl/bridge.c:34 src/bridge.c:34 +#, fuzzy +msgid "[O] Operational mode: " +msgstr "[O] Operationele modus: %s" + +#: ap-gl/bridge.c:35 src/bridge.c:35 +#, fuzzy +msgid "[M] Preferred BSSID (remote MAC addr.): " +msgstr "[R] Mac adres op afstand: %02X%02X%02X%02X%02X%02X" + +#: ap-gl/bridge.c:37 src/bridge.c:37 +msgid "[T] Trap-sending port(s): " +msgstr "" + +#: ap-gl/bridge.c:38 src/bridge.c:38 +msgid "[R] Forward broadcast traffic: " +msgstr "" + +#: ap-gl/bridge.c:40 +msgid "[U] Isolate wireless clients: " +msgstr "" + +#: ap-gl/bridge.c:41 src/bridge.c:41 +#, fuzzy +msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu" +msgstr "BPGINFDRT - instellen; W - conf schrijven; Q - afsluiten naar menu" + +#: ap-gl/bridge.c:125 src/bridge.c:127 +msgid "Wireless Bridge Point to MultiPoint" +msgstr "" + +#: ap-gl/bridge.c:126 src/bridge.c:128 +msgid "Access Point" +msgstr "Access Point" + +#: ap-gl/bridge.c:127 src/bridge.c:129 +msgid "Access Point client" +msgstr "Access Point client" + +#: ap-gl/bridge.c:128 src/bridge.c:130 +msgid "Wireless Bridge Point to Point" +msgstr "" + +#: ap-gl/bridge.c:129 src/bridge.c:131 +msgid "Repeater" +msgstr "Repeater" + +#: ap-gl/stations.c:31 src/stations.c:29 +msgid "Associated Stations" +msgstr "Geassocieerde stations" + +#: ap-gl/stations.c:83 src/stations.c:87 +msgid "AP now in AP Client Mode and don't has any associated stations" +msgstr "" + +#: ap-gl/stations.c:109 +msgid "# MAC LQ RSSI Status Port IP" +msgstr "" + +#: ap-gl/stations.c:135 src/stations.c:139 +msgid "AssociatedSTAsInfo packet error" +msgstr "AssociatedSTAsInfo pakketfout" + +#: ap-gl/stations.c:164 src/stations.c:161 src/stations.c:313 +msgid "Arrows - scroll; S - save to file; Q - quit to menu." +msgstr "" +"Pijltjes - schuiven; S - opslaan naar bestand; Q - afsluiten naar menu." + +#: lib/aps.c:128 +msgid "Your Access Point is not in \"AP client\" mode => getting" +msgstr "" + +#: lib/aps.c:131 +msgid "up-to-date \"Known APs\" info requires your AP to be" +msgstr "" + +#: lib/aps.c:134 +msgid "temporarily configured into \"AP client\" mode and rebooted." +msgstr "" + +#: lib/aps.c:137 +msgid "Your AP will be reconfigured back to original mode by this" +msgstr "" + +#: lib/aps.c:140 +msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" +msgstr "" + +#: lib/aps.c:143 +#, fuzzy +msgid "cause loss of Access Point's current configuration." +msgstr "Draadloos Access Point configurator" + +#: lib/aps.c:147 +msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" +msgstr "" + +#: lib/aps.c:150 +#, fuzzy +msgid "via its wireless port." +msgstr "Draadloze opties instellen" + +#: lib/aps.c:152 lib/cmd.c:49 lib/cmd.c:92 lib/test.c:93 +msgid "Do you want to continue? " +msgstr "Wilt u doorgaan?" + +#: lib/aps.c:154 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No)" +msgstr "(J - Ja; N - Nee (het is veiliger om Nee te antwoorden)" + +#: lib/aps.c:202 +msgid "Known Access Points" +msgstr "Bekende Access Points" + +#: lib/aps.c:217 +msgid "NetworkType" +msgstr "Soort netwerk" + +#: lib/aps.c:293 +msgid "Infrastructure" +msgstr "Infrastructuur" + +#: lib/aps.c:352 lib/aps.c:360 lib/aps.c:368 +msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);" +msgstr "" + +#: lib/aps.c:354 +msgid "RSSI: Radio Signal Strength Indicator [%];" +msgstr "" + +#: lib/aps.c:356 lib/aps.c:364 +msgid "LQ: Link Quality [%]" +msgstr "" + +#: lib/aps.c:362 +msgid "RSSI: Radio Signal Strength Indicator [dBm];" +msgstr "" + +#: lib/aps.c:370 +msgid "RSSI: Radio Signal Strength Indicator [raw];" +msgstr "" + +#: lib/aps.c:372 +msgid "LQ: Link Quality [raw]" +msgstr "" + +#: lib/aps.c:378 +#, fuzzy +msgid "" +"# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q " +"quit" +msgstr "" +"# verbinden met deze AP; R verversen met opnieuw instellen; G verversen " +"zonder opnieuw instellen; Q afsluiten" + +#: lib/aps.c:380 +#, fuzzy +msgid "" +"# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit" +msgstr "" +"# verbinden met deze AP; R verversen met opnieuw instellen; G verversen " +"zonder opnieuw instellen; Q afsluiten" + +#: lib/aps.c:509 lib/ap_search.c:152 +#, fuzzy, c-format +msgid "Failure in sendto(): %s. Press any key." +msgstr "Onjuist sendto: %s. Druk op een toets." + +#: lib/aps.c:518 +msgid "You have just initiated the AP scan. Be advised that it may" +msgstr "" + +#: lib/aps.c:521 +msgid "take a few seconds for your Access Point to find out some" +msgstr "" + +#: lib/aps.c:524 +msgid "values, so expect finishing the scan in about 5 seconds." +msgstr "" + +#: lib/aps.c:527 +msgid "Also note that your Access Point stops forwarding the network" +msgstr "" + +#: lib/aps.c:530 +msgid "traffic while the scan is in progress, but restores itself" +msgstr "" + +#: lib/aps.c:533 +msgid "to normal operation in time ranging up to 1 minute." +msgstr "" + +#: lib/aps.c:536 +msgid "Hence, if you are connected to target Access Point via its" +msgstr "" + +#: lib/aps.c:539 +msgid "wireless port, you need to wait a bit longer" +msgstr "" + +#: lib/aps.c:542 +msgid "after pressing 'S'." +msgstr "" + +#: lib/ap_search.c:49 +msgid "# Type IP Description" +msgstr "" + +#: lib/ap_search.c:88 +msgid "Please wait while scanning, or press 'Q' to quit." +msgstr "" + +#: lib/ap_search.c:104 +#, fuzzy +msgid "Can't set broadcast option on socket. Press any key." +msgstr "Kan broadcast optie naar socket niet instellen. Druk op een toets." + +#: lib/ap_search.c:113 +#, fuzzy +msgid "Can't set multicast membership on socket. Press any key." +msgstr "Kan multicast deelname naar socket niet instellen. Druk op een toets." + +#: lib/ap_search.c:119 +msgid "Scanning via network interface:" +msgstr "" + +#: lib/ap_search.c:120 +#, c-format +msgid " Index: %i" +msgstr "" + +#: lib/ap_search.c:122 +#, fuzzy, c-format +msgid " Name: %s" +msgstr "[N] AP naam:" + +#: lib/ap_search.c:124 +#, c-format +msgid " IP: %s" +msgstr "" + +#: lib/ap_search.c:133 +#, c-format +msgid "Scanning for AP type: %s" +msgstr "" + +#: lib/ap_search.c:311 +msgid "Access Points Search" +msgstr "Access Points zoeken" + +#: lib/ap_search.c:328 +#, fuzzy +msgid "realloc() error." +msgstr "Fout bij maken socket" + +#: lib/ap_search.c:340 +msgid "Network interface discovery error." +msgstr "" + +#: lib/ap_search.c:415 +#, fuzzy +msgid "No local network interfaces found. Press any key." +msgstr "fork() fout. Druk op een toets." + +#: lib/ap_search.c:417 +msgid "No directly reachable Access Points found. Press any key." +msgstr "" + +#: lib/ap_search.c:421 +msgid "Program-hardcoded maximum number of APs found." +msgstr "" + +#: lib/ap_search.c:425 +#, fuzzy +msgid "# - connect to AP; Q - quit" +msgstr "Verbinden met AP nummer:" + +#: lib/ap-utils.h:74 +#, fuzzy +msgid "MAC address: " +msgstr "IP-adres: %s" + +#: lib/ap-utils.h:75 +#, fuzzy +msgid "[S] SNMP traps: " +msgstr "[S] SNMP vallen: %s" + +#: lib/ap-utils.h:77 +#, fuzzy +msgid "[C] Frequency channel: " +msgstr "[C] Frequentiekanaal: %02u (%u MHz)" + +#: lib/ap-utils.h:79 +#, fuzzy +msgid "Receive antenna:" +msgstr "Ontvangen:" + +#: lib/ap-utils.h:80 +#, fuzzy +msgid "[U] Left" +msgstr "Links" + +#: lib/ap-utils.h:81 +#, fuzzy +msgid "[I] Right" +msgstr "Rechts" + +#: lib/ap-utils.h:82 +#, fuzzy +msgid "Transmit antenna:" +msgstr "Verzonden:" + +#: lib/ap-utils.h:83 +#, fuzzy +msgid "[O] Left" +msgstr "Links" + +#: lib/ap-utils.h:84 +#, fuzzy +msgid "[P] Right" +msgstr "Rechts" + +#: lib/ap-utils.h:85 +#, fuzzy +msgid "Diversity select:" +msgstr "Diversiteit: %s" + +#: lib/ap-utils.h:86 +#, fuzzy +msgid "[T] Left" +msgstr "Links" + +#: lib/ap-utils.h:87 +#, fuzzy +msgid "[Y] Right" +msgstr "Rechts" + +#: lib/ap-utils.h:89 +msgid "Yes" +msgstr "" + +#: lib/ap-utils.h:90 +msgid "No" +msgstr "" + +#: lib/ap-utils.h:92 +msgid "On" +msgstr "" + +#: lib/ap-utils.h:93 +#, fuzzy +msgid "Off" +msgstr "uit" + +#: lib/ap-utils.h:95 +#, fuzzy +msgid "Basic" +msgstr "basis" + +#: lib/ap-utils.h:97 +msgid "Press any key to continue." +msgstr "Druk op een toets om door te gaan." + +#: lib/ap-utils.h:99 +msgid "Unable to write data to AP. Press any key to continue." +msgstr "" +"Kan geen gegevens schrijven naar AP. Druk op een toets om door te gaan." + +#: lib/ap-utils.h:100 +msgid "Unable to retrieve data from AP. Press any key to continue." +msgstr "Kan geen gegevens ontvangen van AP. Druk op een toets om door te gaan." + +#: lib/ap-utils.h:101 +msgid "Retrieving data from AP. Please wait..." +msgstr "Bezig met ontvangen gegevens van AP. Even geduld a.u.b...." + +#: lib/ap-utils.h:102 +msgid "Writing data to AP. Please wait..." +msgstr "Bezig met schrijven gegevens naar AP. Even geduld a.u.b...." + +#: lib/ap-utils.h:103 +#, fuzzy +msgid "Configuration written to the AP. Press any key to continue." +msgstr "" +"Kan geen gegevens schrijven naar AP. Druk op een toets om door te gaan." + +#: lib/ap-utils.h:105 +msgid "Create socket error. Press any key." +msgstr "Fout bij maken socket. Druk op een toets." + +#: lib/ap-utils.h:106 +msgid "Bind socket error. Press any key." +msgstr "Fout bij verbinden socket. Druk op een toets." + +#: lib/ap-utils.h:108 +msgid "Back to main menu" +msgstr "Terug naar hoofdmenu" + +#: lib/ap-utils.h:109 +msgid "Exit program" +msgstr "Programma afsluiten" + +#: lib/ap-utils.h:110 +#, fuzzy +msgid "Run subshell. To return type 'exit'." +msgstr "Deelshell uitvoeren. Typ 'exit' om terug te keren" + +#: lib/ap-utils.h:111 +msgid "Short info about program" +msgstr "Korte informatie over programma" + +#: lib/ap-utils.h:112 +msgid "Find connected Access Points" +msgstr "Verbonden Access Points zoeken" + +#: lib/ap-utils.h:113 +msgid "Set connection options: ip and community" +msgstr "Verbindingsopties instellen: IP en gemeenschap" + +#: lib/ap-utils.h:114 +#, fuzzy +msgid "Set encryption; edit WEP keys" +msgstr "Codering instellen, WEP-sleutels bewerken" + +#: lib/ap-utils.h:115 +#, fuzzy +msgid "Set MAC authorization; edit MAC authorization table" +msgstr "Mac toelating instellen, mac toelatingstabel bewerken" + +#: lib/ap-utils.h:116 +#, fuzzy +msgid "Set SNMP community/password for access to the AP" +msgstr "SNMP gemeenschap/wachtwoord voor toegang AP instellen" + +#: lib/ap-utils.h:117 +#, fuzzy +msgid "Get info about AP hardware and firmware" +msgstr "Info opvragen over AP hardware en software" + +#: lib/ap-utils.h:118 +#, fuzzy +msgid "Get wireless port statistics" +msgstr "Statistieken opvragen over draadloze poorten" + +#: lib/ap-utils.h:119 +#, fuzzy +msgid "Get list of currently associated stations (Access Point clients)" +msgstr "Lijst opvragen met nu geassocieerde stations" + +#: lib/ap-utils.h:120 +#, fuzzy +msgid "Get info and statistics from AP" +msgstr "Info en statistieken opvragen van AP" + +#: lib/ap-utils.h:121 +#, fuzzy +msgid "Set various configuration options" +msgstr "Verschillende configuratie-opties instellen" + +#: lib/cmd.c:25 +#, fuzzy +msgid "" +"(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" +msgstr "" +"(J - Ja; N - Nee (het is veiliger om Nee te antwoorden, tenzij u dit echt " +"nodig heeft.)" + +#: lib/cmd.c:44 +msgid "Restore factory default configuration" +msgstr "Fabrieksinstellingen terugzetten" + +#: lib/cmd.c:47 +#, fuzzy +msgid "After restoring factory defaults your current configuration." +msgstr "" +"Na het terugzetten van de fabrieksinstellingen is de huidige configuratie " +"verloren." + +#: lib/cmd.c:48 +msgid "will be lost." +msgstr "" + +#: lib/cmd.c:79 +#, fuzzy +msgid "Factory default settings loaded. Press any key to continue." +msgstr "Standaard configuratie geactiveerd. Druk op een toets om door te gaan." + +#: lib/cmd.c:88 +msgid "Reset Access Point" +msgstr "Access Point opnieuw instellen" + +#: lib/cmd.c:91 +#, fuzzy +msgid "By reset you'll lose all non-uploaded configuration." +msgstr "" +"Bij het opnieuw instellen gaan alle niet-verzonden instellingen verloren." + +#: lib/cmd.c:113 +msgid "Access Point reset. Press any key to continue." +msgstr "Access Point opnieuw ingesteld. Druk op een toets om door te gaan." + +#: lib/cmd.c:146 +msgid "Upload configuration" +msgstr "Configuratie uploaden" + +#: lib/cmd.c:149 +#, fuzzy +msgid "You need to upload the configuration only if you've changed" +msgstr "" +"U dient de configuratie alleen up te loaden als u instellingen heeft " +"gewijzigd." + +#: lib/cmd.c:152 +msgid "some option values before. Using this option may cause loss" +msgstr "" + +#: lib/cmd.c:153 +#, fuzzy +msgid "of your current configuration." +msgstr "Huidige configuratie actief maken" + +#: lib/cmd.c:176 +#, fuzzy +msgid "Configuration uploaded. Press any key to continue." +msgstr "" +"Het uploaden van de configuratie is voltooid. Druk op een toets om door te " +"gaan." + +#: lib/common.c:30 +msgid "Autodetect AP type? " +msgstr "" + +#: lib/common.c:31 +#, fuzzy +msgid "Access Point IP-address: " +msgstr "Access Point IP-adres:" + +#: lib/common.c:32 +#, fuzzy +msgid "Password (community): " +msgstr "Wachtwoord (gemeenschap):" + +#: lib/common.c:33 +#, fuzzy +msgid "AP type: " +msgstr "AP soort:" + +#: lib/common.c:34 +#, fuzzy +msgid "Save connect-settings: " +msgstr "Verbindingsinstellingen opslaan:" + +#: lib/common.c:69 +#, c-format +msgid "From %s" +msgstr "Van %s" + +#: lib/common.c:71 +#, c-format +msgid "Version %s" +msgstr "Versie %s" + +#: lib/common.c:74 +msgid "Written by Roman Festchook roma@polesye.net" +msgstr "Geschreven door Roman Festchook roma@polesye.net" + +#: lib/common.c:76 +#, fuzzy +msgid "Copyright (c) Roman Festchook 2001-2004" +msgstr "Copyright (c) Roman Festchook 2001-2002" + +#: lib/common.c:79 +msgid "This program is distributed under the terms" +msgstr "This program is distributed under the terms" + +#: lib/common.c:81 +msgid "of the GNU General Public License version 2." +msgstr "of the GNU General Public License version 2." + +#: lib/common.c:83 +msgid "See the included COPYING file for details." +msgstr "See the included COPYING file for details." + +#: lib/common.c:135 +msgid "Connect options" +msgstr "Verbindingsopties" + +#: lib/common.c:143 +msgid "Enter IP address of your Access Point." +msgstr "Geef het IP-adres van uw Access Point." + +#: lib/common.c:148 +msgid "Entered characters will not be displayed for security reason." +msgstr "Ingevoerde tekens worden vanwege veiligheidsredenen niet weergegeven." + +#: lib/common.c:171 +#, fuzzy +msgid "Determining AP type. Please wait..." +msgstr "Bezig met ontvangen gegevens van AP. Even geduld a.u.b...." + +#: lib/common.c:196 +#, fuzzy +msgid "Unable to determine AP type (no response). Press any key." +msgstr "Kan geen gegevens ontvangen van AP. Druk op een toets om door te gaan." + +#: lib/file.c:176 +msgid "NUM IP ADDRESS TYPE" +msgstr "NUMMER IP ADRES SOORT" + +#: lib/file.c:177 +#, fuzzy +msgid "Choose an AP to connect to" +msgstr "Kies AP om mee te verbinden" + +#: lib/file.c:182 +msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll" +msgstr "" +"1-9,C: verbinden; N: nieuw; D: verwijderen; W: opslaan; Q: afsluiten; " +"pijltjes: schuiven" + +#: lib/file.c:225 +msgid "Connect to AP num:" +msgstr "Verbinden met AP nummer:" + +#: lib/file.c:250 +msgid "Delete num:" +msgstr "Nummer verwijderen:" + +#: lib/input.c:31 +#, fuzzy +msgid "Invalid value. Press any key to continue." +msgstr "Onjuist IP-adres. Druk op een toets om door te gaan." + +#: lib/input.c:32 +#, fuzzy, c-format +msgid "Value must be in range %i - %i. Press any key to continue." +msgstr "" +"Kan geen gegevens schrijven naar AP. Druk op een toets om door te gaan." + +#: lib/oui.c:6052 +msgid "Unknown or Private" +msgstr "Onbekend of privé" + +#: lib/radio.c:27 +#, fuzzy +msgid "" +"[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" +msgstr "" +"Toets - vermogenssterkte; UIOP - antenne; W - config schrijven; Q - afsluiten" + +#: lib/radio.c:29 +#, fuzzy +msgid "Antenna:" +msgstr "[A] Antenne: %s" + +#: lib/radio.c:30 +#, fuzzy +msgid "[L] Left:" +msgstr "Links" + +#: lib/radio.c:31 +#, fuzzy +msgid "[R] Right:" +msgstr "Rechts" + +#: lib/radio.c:114 +msgid "Radio Configuration" +msgstr "Radio configuratie" + +#: lib/radio.c:115 +msgid "Output RF signal power level (CR31 register values)" +msgstr "" + +#: lib/radio.c:117 +#, fuzzy +msgid "Key Channel Level" +msgstr "sleutel kanaal niveau" + +#: lib/radio.c:273 +#, fuzzy +msgid "" +"You can't disable both antennas; unable to save antenna-config. Press any " +"key." +msgstr "" +"U kunt niet beide antennes uitzetten; kan antenne instellingen niet opslaan. " +"Druk op een toets." + +#: lib/scr.c:134 +#, c-format +msgid "Current AP: %s Type: %s" +msgstr "Huidige AP: %s Soort: %s" + +#: lib/set_community.c:28 +msgid "Set community/password" +msgstr "Gemeenschap/wachtwoord instellen" + +#: lib/set_community.c:29 +#, fuzzy +msgid "Key Access level" +msgstr "Toegangsniveau sleutel" + +#: lib/set_community.c:30 +msgid "Community/Password" +msgstr "Gemeenschap/Wachtwoord" + +#: lib/set_community.c:31 +msgid "[U] User" +msgstr "[U] Gebruiker" + +#: lib/set_community.c:32 +msgid "[A] Administrator" +msgstr "[A] Beheerder" + +#: lib/set_community.c:33 +#, fuzzy +msgid "" +"[key] - set community/password; W - write config to AP; Q - quit to menu" +msgstr "" +"KEY - gemeenschap/wachtwoord instellen; W - conf schrijven naar AP; Q - " +"afsluiten" + +#: lib/set_community.c:80 +msgid "[M] Manufacturer" +msgstr "[M] Maker" + +#: lib/stat.c:29 +msgid "Unable to get data from AP. Press Q to continue." +msgstr "Kan geen gegevens opvragen van AP. Druk op Q om door te gaan." + +#: lib/stat.c:30 lib/stat.c:428 +msgid "Q - quit to menu." +msgstr "Q - afsluiten naar menu." + +#: lib/stat.c:31 +msgid "pipe error. Press any key." +msgstr "pijpfout. Druk op een toets." + +#: lib/stat.c:32 +msgid "fcntl error. Press any key." +msgstr "fcntl() fout. Druk op een toets." + +#: lib/stat.c:33 +msgid "fork error. Press any key." +msgstr "fork() fout. Druk op een toets." + +#: lib/stat.c:72 +msgid "Ethernet Statistics" +msgstr "Ethernet statistieken" + +#: lib/stat.c:108 +msgid "EthRxStat packet error. Press Q to continue." +msgstr "EthRxStat pakketfout. Druk op Q om door te gaan." + +#: lib/stat.c:120 +msgid "EthTxStat packet error. Press Q to continue." +msgstr "EthTxStat pakketfout. Druk op Q om door te gaan." + +#: lib/stat.c:123 +msgid "Received:" +msgstr "Ontvangen:" + +#: lib/stat.c:124 +#, fuzzy +msgid "Transmitted:" +msgstr "Verzonden:" + +#: lib/stat.c:251 lib/stat.c:427 +msgid "Wireless Statistics" +msgstr "Draadloos statistieken" + +#: lib/stat.c:282 +msgid "WirelessStat packet error. Press Q to continue." +msgstr "WirelessStat pakketfout. Druk op Q om door te gaan." + +#: lib/stat.c:419 +msgid "pipe error. Press any key" +msgstr "pijpfout. Druk op een toets" + +#: lib/stat.c:424 +msgid "fcntl error. Press any key" +msgstr "fcntl() fout. Druk op een toets" + +#: lib/stat.c:433 +msgid "fork error. Press any key" +msgstr "fork() fout. Druk op een toets" + +#: lib/sysinfo.c:31 +msgid "System Description: " +msgstr "Systeemomschrijving:" + +#: lib/sysinfo.c:93 lib/sysinfo.c:277 +msgid "System Info" +msgstr "Systeeminfo" + +#: lib/sysinfo.c:95 +msgid "Device hardware/software/name info:" +msgstr "" + +#: lib/sysinfo.c:130 +#, fuzzy +msgid "Product name:" +msgstr "Produktnaam:" + +#: lib/sysinfo.c:135 +#, fuzzy, c-format +msgid "Product type: %u" +msgstr "Produktsoort: %lu" + +#: lib/sysinfo.c:138 +#, fuzzy, c-format +msgid "Hardware revision: %u" +msgstr "Hardware revisie: %lu" + +#: lib/sysinfo.c:141 +#, fuzzy +msgid "OEM name:" +msgstr "OEM naam:" + +#: lib/sysinfo.c:149 +#, fuzzy, c-format +msgid "Regulation domain: %s [%d]" +msgstr "Reguleringsdomein: %s" + +#: lib/sysinfo.c:150 lib/sysinfo.c:337 +msgid "FCC (USA)" +msgstr "FCC (USA)" + +#: lib/sysinfo.c:151 lib/sysinfo.c:338 +msgid "DOC (Canada)" +msgstr "DOC (Canada)" + +#: lib/sysinfo.c:152 lib/sysinfo.c:339 +msgid "ETSI (Europe)" +msgstr "ETSI (Europa)" + +#: lib/sysinfo.c:153 lib/sysinfo.c:340 +msgid "Spain" +msgstr "Spanje" + +#: lib/sysinfo.c:154 lib/sysinfo.c:341 +msgid "France" +msgstr "Frankrijk" + +#: lib/sysinfo.c:155 lib/sysinfo.c:342 +msgid "MKK (Japan)" +msgstr "MKK (Japan)" + +#: lib/sysinfo.c:155 lib/sysinfo.c:236 lib/sysinfo.c:342 +msgid "unknown" +msgstr "onbekend" + +#: lib/sysinfo.c:158 +#, fuzzy, c-format +msgid "Info structure version: %u" +msgstr "StructVersie: %lu" + +#: lib/sysinfo.c:161 lib/sysinfo.c:299 +#, c-format +msgid "Manufacturer OUI: %02X %02X %02X (%s)" +msgstr "Maker OUI: %02X %02X %02X (%s)" + +#: lib/sysinfo.c:233 +msgid "FHSS 2.4 GHz" +msgstr "FHSS 2.4 GHz" + +#: lib/sysinfo.c:233 +msgid "DSSS 2.4 GHz" +msgstr "DSSS 2.4 GHz" + +#: lib/sysinfo.c:233 +msgid "IR Baseband" +msgstr "IR Baseband" + +#: lib/sysinfo.c:234 +msgid "Commercial range 0..40 C" +msgstr "Commercieel bereik 0..40 C" + +#: lib/sysinfo.c:235 +msgid "Industrial range -30..70 C" +msgstr "Industrieel bereik -30..70 C" + +#: lib/sysinfo.c:238 +msgid "manual" +msgstr "handmatig" + +#: lib/sysinfo.c:238 +msgid "notsupported" +msgstr "niet ondersteund" + +#: lib/sysinfo.c:238 +msgid "dynamic" +msgstr "dynamisch" + +#: lib/sysinfo.c:287 +msgid "Manufacturer:" +msgstr "Maker:" + +#: lib/sysinfo.c:293 +msgid "Manufacturer ID:" +msgstr "Maker ID:" + +#: lib/sysinfo.c:305 +msgid "Product Name:" +msgstr "Produktnaam:" + +#: lib/sysinfo.c:312 +msgid "Product ID:" +msgstr "Produkt ID:" + +#: lib/sysinfo.c:318 +msgid "Product Version:" +msgstr "Produktversie:" + +#: lib/sysinfo.c:326 +#, c-format +msgid "PHYType: %s" +msgstr "PHY soort: %s" + +#: lib/sysinfo.c:329 +#, c-format +msgid "Temperature: %s" +msgstr "Temperatuur: %s" + +#: lib/sysinfo.c:336 +#, c-format +msgid "Regulation Domain: %s" +msgstr "Reguleringsdomein: %s" + +#: lib/sysinfo.c:345 +#, c-format +msgid "Transmit Power: %u mW" +msgstr "Zendvermogen: %u mW" + +#: lib/sysinfo.c:375 +#, c-format +msgid "WEP inplemented: %s" +msgstr "WEP geïmplementeerd: %s" + +#: lib/sysinfo.c:378 +#, c-format +msgid "Diversity: %s" +msgstr "Diversiteit: %s" + +#: lib/sysinfo.c:406 +#, c-format +msgid "Uptime: %u:%02u:%02u.%02u" +msgstr "Uptime: %u:%02u:%02u.%02u" + +#: lib/sysinfo.c:422 +#, c-format +msgid "IP Address: %s" +msgstr "IP-adres: %s" + +#: lib/test.c:27 +#, fuzzy +msgid "[T] Test mode: " +msgstr "[T] Testmodus: %s" + +#: lib/test.c:28 +#, fuzzy +msgid "[A] Antenna: " +msgstr "[A] Antenne: %s" + +#: lib/test.c:29 +#, fuzzy +msgid "[S] Signal level: " +msgstr "[S] Signaalniveau: %03u" + +#: lib/test.c:30 +#, fuzzy +msgid "[R] Rate: " +msgstr "[R] Snelheid: %.1f Mbit/s" + +#: lib/test.c:31 +#, fuzzy +msgid "[F] TxFiler: " +msgstr "[F] TxFiler: %s" + +#: lib/test.c:32 +#, fuzzy +msgid "[O] Command: " +msgstr "[O] Opdracht: %s" + +#: lib/test.c:33 +#, fuzzy +msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" +msgstr "" +"T - Testmodus Aan/Uit; CASRFO - opties instellen; Q - afsluiten naar menu" + +#: lib/test.c:71 +msgid "Left" +msgstr "Links" + +#: lib/test.c:71 +msgid "Right" +msgstr "Rechts" + +#: lib/test.c:88 +#, fuzzy +msgid "Test mode" +msgstr "Testmodus" + +#: lib/test.c:91 +#, fuzzy +msgid "Using the \"Test mode\" may cause loss of your current" +msgstr "" +"Gebruik van de testmodus kan ervoor zorgen dat de huidige configuratie " +"verloren gaat." + +#: lib/test.c:92 +#, fuzzy +msgid "configuration." +msgstr "Configuratie uploaden" + +#: lib/test.c:95 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No.)" +msgstr "(J - Ja; N - Nee (het is veiliger om Nee te antwoorden.)" + +#: lib/test.c:118 +msgid "Options:" +msgstr "Opties:" + +#: lib/test.c:144 +msgid "Statistics:" +msgstr "Statistieken:" + +#: lib/test.c:145 +msgid "Success Frames: 0 Failed Frames: 0" +msgstr "Succesvolle frames: 0 Mislukte frames: 0" + +#: lib/test.c:207 +#, c-format +msgid "Success Frames: %lu Failed Frames: %lu" +msgstr "Succesvolle frames: %lu Mislukte frames: %lu" + +#: lib/wep.c:29 +#, fuzzy +msgid "[E] Standard encryption mechanism: " +msgstr "[E] Standaard coderingsmechanisme: %s" + +#: lib/wep.c:30 +#, fuzzy +msgid "[A] Allow unencrypted: " +msgstr "[A] Ongecodeerd toestaan: %s" + +#: lib/wep.c:31 +#, fuzzy +msgid "[K] Default WEP key: " +msgstr "[K] Standaard WEP-sleutel: %d" + +#: lib/wep.c:32 +#, fuzzy +msgid "[P] Public key: " +msgstr "[P] Openbare sleutel: %s" + +#: lib/wep.c:85 +msgid "EK1234 - set; W - write conf; Q - quit to menu" +msgstr "EK1234 - instellen; W - conf schrijven; Q - afsluiten naar menu" + +#: lib/wep.c:87 lib/wep.c:249 +msgid "Privacy Settings" +msgstr "Privacy instellingen" + +#: lib/wep.c:94 lib/wep.c:263 +msgid "Key WEP" +msgstr "Sleutel WEP" + +#: lib/wep.c:101 +msgid "Hint! Confused by WEP key values? See man ap-config for info..." +msgstr "" +"Tip! In de war door WEP sleutelwaarden? Zie man ap-config voor meer " +"informatie..." + +#: lib/wep.c:247 +msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" +msgstr "" +"AEPK1234 - opties instellen; W - conf schrijven; Q - afsluiten naar menu" + +#: lib/wlan.c:28 +msgid "[E] ESSID: " +msgstr "" + +#: lib/wlan.c:29 +#, fuzzy +msgid "[N] AP name: " +msgstr "[N] AP naam:" + +#: lib/wlan.c:31 +#, fuzzy +msgid "[K] AP contact: " +msgstr "[E] AP contact: %s" + +#: lib/wlan.c:32 +#, fuzzy +msgid "[L] AP location: " +msgstr "[L] AP lokatie: %s" + +#: lib/wlan.c:34 +#, fuzzy +msgid "[R] RTS threshold: " +msgstr "[R] RTS drempelwaarde: %d" + +#: lib/wlan.c:35 +#, fuzzy +msgid "[F] Fragmentation threshold: " +msgstr "[F] Fragmentatie drempelwaarde: %d" + +#: lib/wlan.c:36 +msgid "[P] Preambule type: " +msgstr "" + +#: lib/wlan.c:37 +#, fuzzy +msgid "[A] Auth type: " +msgstr "[A] Auth soort: %s" + +#: lib/wlan.c:38 +#, fuzzy +msgid "Open system" +msgstr "Open systeem" + +#: lib/wlan.c:39 +#, fuzzy +msgid "Shared key" +msgstr "Gedeelde sleutel" + +#: lib/wlan.c:40 +#, fuzzy +msgid "Both types" +msgstr "Beide soorten" + +#: lib/wlan.c:41 +#, fuzzy +msgid "[U] Auto rate fallback: " +msgstr "[U] AutoRateFallBack: %s" + +#: lib/wlan.c:42 +#, fuzzy +msgid "[S] Insert ESSID in broadcast packets: " +msgstr "[S] ESSID in broadcast pakketjes invoegen: %s" + +#: lib/wlan.c:43 +#, fuzzy +msgid "Basic and Supported rates:" +msgstr "Basis en ondersteunde snelheden:" + +#: lib/wlan.c:44 +msgid "Key Rate Status" +msgstr "Sleutel Snelheid Status" + +#: lib/wlan.c:46 +#, fuzzy +msgid "[I] International roaming: " +msgstr "[O] Operationele modus: %s" + +#: lib/wlan.c:47 +msgid "[B] Beacon period (msec): " +msgstr "" + +#: lib/wlan.c:48 +msgid "[D] DTIM sending interval (beacons): " +msgstr "" + +#: lib/wlan.c:49 +msgid "[key] - set option; W - write conf; Q - quit to menu" +msgstr "[toets] - optie instellen; W - conf schrijven; Q - afsluiten naar menu" + +#: lib/wlan.c:140 +msgid "Short" +msgstr "Kort" + +#: lib/wlan.c:140 +msgid "Long" +msgstr "Lang" + +#: lib/wlan.c:265 +msgid "Wireless Settings" +msgstr "Draadloos instellingen" + +#: lib/wlan.c:753 +msgid "Antenna Configuration:" +msgstr "Antenneconfiguratie:" + +#: lib/wlan.c:770 +msgid "General Options" +msgstr "Algemene opties" + +#: lib/wlan.c:772 +msgid "" +"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu" +msgstr "" +"UIOPTY - antenne; SCANLEDFR1234 - opties; W - conf schrijven; Q - afsluiten " +"naar menu" + +#: src/ap-config.c:59 +msgid "General" +msgstr "Algemeen" + +#: src/ap-config.c:59 +msgid "Set general options" +msgstr "Algemene opties instellen" + +#: src/ap-config.c:60 +msgid "Advanced" +msgstr "Geavanceerd" + +#: src/ap-config.c:60 +msgid "Set advanced options" +msgstr "Geavanceerde opties instellen" + +#: src/ap-config.c:94 +msgid "Reset AP." +msgstr "AP opnieuw instellen." + +#: src/ap-config.c:129 +msgid "Latest" +msgstr "Laatste" + +#: src/ap-config.c:129 +msgid "Get info about latest events" +msgstr "Info opvragen over laatste gebeurtenissen" + +#: src/ap-mrtg.c:42 +msgid "" +"\n" +"Usage:\n" +msgstr "" +"\n" +"Gebruik:\n" + +#: src/ap-mrtg.c:44 +#, fuzzy +msgid "" +"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-" +"h] [-r]\n" +"\n" +msgstr "" +"\tap-mrtg -i ip -c gemeenschap -t soort [-b bssid] [-v] [-h] [-r]\n" +"\n" + +#: src/ap-mrtg.c:46 +msgid "" +"Get stats from AP and return it in MRTG parsable format\n" +"\n" +msgstr "" +"Statistieken van AP opvragen en aanbieden in MRTG-verwerkbaar formaat\n" +"\n" + +#: src/ap-mrtg.c:47 +msgid "-i ip - AP ip address\n" +msgstr "-i ip - AP ip-adres\n" + +#: src/ap-mrtg.c:48 +msgid "-c community - SNMP community string\n" +msgstr "-c gemeenschap - SNMP gemeenschap naam\n" + +#: src/ap-mrtg.c:50 +msgid "" +"-t type - statistics type ireless, thernet, associated tations " +"or ink quality in client mode\n" +msgstr "" +"-t type - soort statistieken draadloos, thernet, geassocieerde " +"tations of kwaliteit verbinding in client modus\n" + +#: src/ap-mrtg.c:52 +msgid "" +"-b bssid - mac address of the AP to which get link quality, only if " +"type=l\n" +msgstr "" +"-b bssid - mac adres van AP waarvan verbindingskwaliteit bepaald moet " +"worden; alleen als soort=l\n" + +#: src/ap-mrtg.c:53 +msgid "-n name - AP name - for check only\n" +msgstr "" + +#: src/ap-mrtg.c:54 +msgid "" +"-a aptype - AP type - 410 (default) or 510 for ATMEL12350's, like the " +"ME-102\n" +msgstr "" + +#: src/ap-mrtg.c:56 +msgid "-v - report MRTG about problems connecting to AP\n" +msgstr "-v - MRTG aangeven over problemen met verbinden met AP\n" + +#: src/ap-mrtg.c:57 +msgid "-r - reset AP when getting LinkQuality stats\n" +msgstr "" +"-r - AP opnieuw instellen bij opvragen statistieken " +"verbindingskwaliteit\n" + +#: src/ap-mrtg.c:58 +msgid "" +"-h - print this help screen\n" +"\n" +msgstr "" +"-h - deze hulp weergeven\n" +"\n" + +#: src/ap-mrtg.c:59 +#, fuzzy, c-format +msgid "" +"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" +"\n" +msgstr "" +"ap-mrtg %s Copyright (c) 2002 Roman Festchook\n" +"\n" + +#: src/ap-mrtg.c:143 +msgid "Invalid IP-address\n" +msgstr "Onjuist IP-adres\n" + +#: src/ap-mrtg.c:188 +#, c-format +msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" +msgstr "" + +#: src/ap-mrtg.c:207 +msgid "Create socket error" +msgstr "Fout bij maken socket" + +#: src/ap-mrtg.c:211 +msgid "Bind socket error" +msgstr "Fout bij verbinden socket" + +#: src/ap-trapd.c:148 +#, c-format +msgid "ap-trapd %s started%s%s." +msgstr "ap-trapd %s gestart%s%s." + +#: src/ap-trapd.c:149 +msgid " on " +msgstr " aan " + +#: src/ap-trapd.c:155 +msgid "Unable to fork. Exiting." +msgstr "fork() mislukt. Afsluiten." + +#: src/ap-trapd.c:159 +msgid "Can't create socket. Exiting." +msgstr "Kan socket niet maken. Afsluiten." + +#: src/ap-trapd.c:165 +msgid "Can't bind socket. Exiting." +msgstr "Kan socket niet verbinden. Afsluiten." + +#: src/ap-trapd.c:172 +#, c-format +msgid "Can't bind to device %s. Exiting." +msgstr "Kan niet aan apparaat %s binden. Afsluiten." + +#: src/ap-trapd.c:183 +#, c-format +msgid "Unable to process username %s. Error: %m." +msgstr "Kan gebruikersnaam %s niet verwerken. Fout: %m." + +#: src/ap-trapd.c:188 +#, c-format +msgid "Unable to change to uid %d." +msgstr "Kan niet overgaan op uid %d." + +#: src/ap-trapd.c:235 +#, c-format +msgid "" +"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." +msgstr "" +"Onbekende SNMP ver %d val ontvangen. Van %s:%d. Agent: %s. Gemeenschap: %s." + +#: src/ap-trapd.c:307 +#, c-format +msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" +msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" + +#: src/bridge.c:36 +msgid "[C] Configuration-enabled port(s): " +msgstr "" + +#: src/bridge.c:39 +msgid "[B] Isolate wireless clients (broadcast traffic): " +msgstr "" + +#: src/bridge.c:40 +msgid "[U] Isolate wireless clients (unicast traffic): " +msgstr "" + +#: src/bridge.c:137 +#, fuzzy +msgid "Both" +msgstr "Beide soorten" + +#: src/nwn_advanced.c:61 +#, c-format +msgid "[D] DB Station Timeout: %d" +msgstr "[D] DB station time-out: %d" + +#: src/nwn_advanced.c:63 +#, c-format +msgid "[A] ACK Window: %d" +msgstr "[A] ACK Window: %d" + +#: src/nwn_advanced.c:66 +msgid "Advanced Options" +msgstr "Geavanceerde opties" + +#: src/nwn_advanced.c:67 +msgid "DA - options; W - write conf; Q - quit to menu" +msgstr "DA - opties; W - conf schrijven; Q - afsluiten naar menu" + +#: src/nwn_latest.c:31 +#, c-format +msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" +msgstr "Reden: %u Station: %02X%02X%02X%02X%02X%02X" + +#: src/nwn_latest.c:89 +msgid "Latest Events" +msgstr "Laatste gebeurtenissen" + +#: src/nwn_latest.c:90 +msgid "Disassociate:" +msgstr "De-associëren:" + +#: src/nwn_latest.c:97 +msgid "Deauthenticate:" +msgstr "De-authentificeren:" + +#: src/nwn_latest.c:104 +#, fuzzy +msgid "Authenticate Fail:" +msgstr "Authentificatie mislukt:" + +#: src/nwn_latest.c:110 +msgid "Last error:" +msgstr "Laatste fout:" + +#: src/nwn_latest.c:111 +msgid "Error:" +msgstr "Fout:" + +#: src/stations.c:113 +#, fuzzy +msgid "Id MAC address" +msgstr "Id MAC adres" + +#: src/stations.c:223 src/stations.c:307 +msgid "Associated stations" +msgstr "Geassocieerde stations" + +#: src/stations.c:225 +#, fuzzy +msgid "Id MAC address Quality Age RSSI" +msgstr "Id MAC adres Kwaliteit Ouderdom RSSI" + +#~ msgid "Wireless Access Point Configurator" +#~ msgstr "Draadloos Access Point configurator" + +#~ msgid "Invalid multicast address. Press any key." +#~ msgstr "Onjuist multicast adres. Druk op een toets." + +#~ msgid "Searching please wait..." +#~ msgstr "Bezig met zoeken..." + +#~ msgid "No Access Points found." +#~ msgstr "Geen Access Points gevonden." + +#~ msgid "Output Signal Power Level" +#~ msgstr "Vermogen van uitgaande signaal" + +#~ msgid "SysInfo:" +#~ msgstr "Sysinfo:" + +#~ msgid "RegulationDomain: %s" +#~ msgstr "Reguleringsdomein: %s" + +#~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" +#~ msgstr "Mac adres: %02X%02X%02X%02X%02X%02X" + +#~ msgid "[T] Test Mode: Off" +#~ msgstr "[T] Testmodus: Uit" + +#~ msgid "on" +#~ msgstr "aan" + +#~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" +#~ msgstr "Verzendantenne: [O] Links %3s, [P] Rechts %3s" + +#~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" +#~ msgstr "Ontvangantenne: [U] Links %3s, [I] Rechts %3s" + +#~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" +#~ msgstr "Diversiteitsselectie: [T] Links %3s, [Y] Rechts %3s" + +#~ msgid "Write configuration to AP done. Press any key to continue." +#~ msgstr "" +#~ "Schrijven instellingen naar AP voltooid. Druk op een toets om door te " +#~ "gaan." + +#~ msgid "Using this option may cause lost of current configuration." +#~ msgstr "" +#~ "Het gebruik van deze optie kan ervoor zorgen dat de huidige configuratie " +#~ "verloren gaat." + +#~ msgid "" +#~ "Getting known AP's info need to reboot you AP and may cause lost of " +#~ "current configuration." +#~ msgstr "" +#~ "Om info over bekende APs op te vragen, is het nodig uw AP opnieuw op te " +#~ "starten, wat verlies van de huidige configuratie kan opleveren." + +#~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" +#~ msgstr "CN: Kanaal; RSSI: Signaalsterkte; LQ: Verbindingskwaliteit" diff --git a/po/pl.gmo b/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e39d46053ab324d0d22173f66a4721ca750e378a GIT binary patch literal 13616 zcmbW73v?V;dB-mhAW;%R5*|r_asxQFA-jm;1D+3a3~incJ^_3__(X6Mh)B%!AYIJ}_+0QX_;m19 zpw@RcsCEBUj(-R0yN5vW^HWe;@JsM~@QF{&@TuUXw4V!VoE`b|3U~$W7Ptfa04Tox z3A_?Kp5w&`P2=wZ9e<#ueHhgKz5*0quK~5rx9078Kl2-xLc-wN^1*+dLsC~Z)ls+Y(^y9UlzWW5IeqRDL-`Dc?gP{2Q9;kIc z0_yu;r9WFi>D|qs^nC%;x+yqK4^Pu=|ffl?Mls*0#sPBFRN-jSJpAY^Qh)S8uQFiI&wIEw%4uKoM z+d=Vn52*g10oDI|pvL=;93KH$y7@)kzL-rGzn6lN-*dn#z#=F;mrj0QLP*@CD%gpyY5I90h*`GL_knP&IEE><3>CZUjFAZUesyUJE|ucQW~mf?EHJ zLCx!fh}g8iKJXo&*86@?^Dl#1_g6s4=ifm7nR9U_+Q;XE>c1Vl3Y-A7zB@tj{UK2M z@=Z|v9|94%c?6VRTwt?#EVzaCMo{Z{F(~;oK=pqmsP*0hir-_Pp8pM~^*jv9PJaqY zkNyu-zbjF0_1g<-JP*9(F~$U-^yklER(A0Xa2os;sCm}2Sbet#bo_ujXg9z)@C$kS zna?w3jP@Z={^w(${5%9o&OZh>gJ+?fn5wxB)cbKz@_7-s9gIN9^Hbnf@K5vi zKhN)cg$8cb9F*a6KqJ+LGfAQ2M<$Z{M7^ zUjoX{MIb|%SAgQ@qoDZzJShIZ1&Y73Q1Yw6z8rUgXVZ>B$@`_C^zf~q_+JJk=lj8P zzz0F``5h2dG(P~J2%d$qp9P)=>bna;^}7Vr`qqKc>wO?wY7+2;;JZQf`!1+`_#r4g z`U%(vp3g^G-zA{)hdFKq#m@*R`A+6I4{H4{1+}g>fa3q{p!oX;C^>urRKL%GlG|57 z&2tboL%F1Q8Mce_A+w*X3h4e&hhO`!JcZcu!G9Mt~b4~pM! zfg10Jp!j9aqD1HV(J%16X@d8l%)j;jb z%kt-U<5BS$0DrwH&l*PB}z-wt&LCO8Y;Q8Q}K#lj8AgBM-b*>J_)@PYF}^3Z{7<^H$DnU$8>3Jy;ps*Xd z>mk`$`#PJOyP;R-4{ib<3tgPIKLUOLnuqR%bSchX1icAbhPFW#`a|g5&}*REp#uwkyCB(c1$r?w0_}wEfeMhWPiNqM z$MXBPgGZtFLpz}RpmU&GpgSR5o1ilEH0Tr1^B`Rxg1!jd0sR5wLApK%EkT3O8=Lw)Y@GOVufbTA8+IKE3jZ;8usYZSnxx!T4yeMBkbOk zach&hS5NqkxnQ?FyPgI~Jt!sFZ}-fWcCS$;HI@v8}f3PZo- z*hb`o6Mbfob$MxhVVga`UFbKq*&%Mqer22W;y7v~v=CQR;lT{|jX0?L8fb2ty@~ei zX;3$V!xN*MHebC(eGySqbF82K18sQK4^uNJ{>)&hBz>5O*rgSXe4Q(wxos%g38zC| z*tAQ2Qv<>iD@*<2itdS>^u4&WU&kXrVmGWycCAYW z)|EHX(tkxe*-WPCTJ`O^^1!;cV;lG`(fzWJqRS2Ph+=f17>iw=q4o^?}#r( z=Yopg6<%8wu-)DN$$a;FpE)%`BYK`qP7Nj_;ap^EUTF!z`%D{~LH09>gO*<&^GZ`5 zTR-W{Vr8%0eB$Qz&?mPUyMwT7QNiv=r#x9D_M+Jx2jzLp!0hqD^>sVj9inK5?+B!7 z#ol);zw93gO2`t)uIhnRqWw7wy>BsiFDxf!4>x{{jZ|#xh4a4cFBZ4-+db}ua|zwM zt0u6gMiiHMq`eVH`PZJUeCSd(t?T5e`laNO7jHc-@#G+0>&qfuZp| zb_3G$%HBpZG&wnGHy5|qefwKx$d_d@MNmR41GMM7v{GjVoCk6W(<%>xq~kZ#I^xF( zt}){zvdt*94NuOmYalPQX1K>(ABC9?Pfd>44Z~?1)%=ZS7@d#p$VA&w%8@fqYQOMU)FoTjzH&F#8J+XfX7~>Haegk-JcY8})zJaBryn`j`Pi$P zy?fZl>B+&3X7B!YrK)YCY$tPk(tLP^bw z6ZsNtSJkT%JkbCdwy&IJddgUN8?$>6XG>>xTpfgq0oMxuO=x*tf z!D^y&$w!7|n}(T+y37r4MNqZ%*sB$7ZU)5OqRnEm3lehr&bLd+ik*Q5xSLPWWmaW} zqN*2Y`h=%7MUj{ra*^y8t=5NG`o`e77fNfD$ScFs%H4Ke3J+C@(473M-VB9D^(e*= zP=zRN640DqUO9?BT(cKUC@P9k?1NZH4q5i?R^z-7$N$K~7P<{+h#D{J?1&thqkO@jH57qzIt-pkbxom>i) z59qo!@&vj2J$ZY@Op@0i3jOx_ytWITtf2(PxpC!5U4K4cCev&O@win#K~XBH-HV)9 zcF&_zy7jN_)NjZJod*N!e$@{7WXFNaBnPZs>Y?i}6hmwGa??hB4VtJODFGQTP`cRyg^F56EN zqAr`^Y&?thb{)mSZck#641`o+rFppV*G&Ao-)6@Y_aW=S{Lge=n9f}id5H6@b>B=o z*O0?1%gzo1+6$cqvLBrWQj%MU?f+P6K9gtv2nOm5#XUU10>zSajpG zEx~2les)NbcOD}Z46-9rXSmgUR=vi8GuPAkplc!>p7iL^BwI72YaQR!mhno@r7qaE zoo(8KIOx#s#RN(VQM6=9HN0K5h(mDGFLL@dw+$Y)gL_8p4Ea*jKwRbQQMnp~vJVeu zYHk}kY=?HYqm7;7Ovd>!>pXVY_6AyW+w@^OjgFbyI3FHfaWZ`r8Lw9>C@8rjVN&;E zw$L30O}UBE1|>6B3hR|D%UGpbXLwaKvZK>{b-Fi2gXkzQ7!v0stttQG6q^@M_8pkE zdD>_v(%DK-q99T7L*fS-q=?UP!qft)5$;gxmf78z zuI}GazlyU;5N>ma86x{($f znGec^-RXQ%n2H8$ABD09nx(*1${Ne3RLVRR$q4JMW~oJygS@C%`baN%UjIOF%(O( za+rrYw7TOEw#)6B*v#@(GtK3^CPv`h=89rVUXm_ugXOs8EiVPQlv>>K8^NL%26Rz% ztmV~$B&+SrG#A+vzqdBViO6e^(y*MY`=L|2D|O&}Ra*2+Z~r-y6V z7W(4XBToCxqMa!P$HHKdB{iaoYGf6!5hVQWZL*aviQhc*6x_Eb8|IMb@nxdVbuN*_ zTfL96g#5_5(-p~vT7kFh*~RpMHL7Hz?b8&?%5oMmveSrBl`djX zvR=d=weZ0e{{hq=fx_upk9IGgD6{UGw-k_}bW3aPl9^f6;WRZfL*9kai5Jz#?ELb{ zMu-XW`O&f~cWu~cc2_$0XOMgroYzajsKo)cpq$A}MY9bX`LaoDEVn3N>SZ;ezEz9L zQuF3<(&iIlB8^)|=_0jP0d0*>QXMbd7p{`G-s|l(8nKFU(8VefwU!fpZ0*>sQbw=!jI%Dgz$SCnvIl_qy8W?fah ziP{h@fS}e4Q}pk+zU(!RPT}l~-?R&5?qKEId(bIMrRW0_q__=ggw*@EY4mD`Tp?-{ z_$7Ke&nV}c)y~q>70(WZ-eUPHZ7Yaaey_eYDV$M1!&4qoraV4>QahUYt|)6vkRQNJ zH_QYK7T41b-)M8$gV&(#cH!T)LVPIE!EW)kFQ+s)ZFfqwI8Q z^-kGRcnsJ^xBZQ*f`&logRzB8B2UG0(TT`Am}`gAy55qSY}Q4bY7?83$*!!a>Fl3No#5ZAxuUw5N%Xt4+o1_FFZEX!$=$ z@T_JUzT^Vr-&##XU0Mt}T(TAld|nF&>bQ388S-$#UeALpQB%_5DsNFk>76URWge^@ zZK(aY;v06;7LDg}B+o@W;zH=L7FT}547gpR@}_6FHJ_YunH&cTbn4xXjIInvRBvHI zRNgEZGk*+|!<~=Qn#QD*lzkrJAG4a9wusELXh|hJBBFZfl`Hz_pmuQW+FP$Z;c5_I zQYSt;Pe)GW5s9RMEyO<4-aM$}0! zYn5QBU5`U%r{++Z?t~sI))E8qc>a3kulH~cBNMr5DLasV_m_JgWc_Pd()$xvbPKW_ zTIukzDcl%DuBJ_zRNIzQCdfu`1tSy=N7d6cd*`xm_lm!1qu)y|SumqyT}xPygr>iA z;K=tA#;BPGo z8^+&ekD0z(S#$bHk*sS;GJkQIXE3B}4Zn;7BBxBevKfm?_+iB#R1KEaD5rUARnu5x zPmu3TNW0mMP6La_j>~yXi zxie9+lvWuceV|!i;txT=QkEyWM8TEUIz4Mq`xKc^hTfmXC-x+y4PsB1MG{h(%b7mQ zoQ)1|4NhSp0Y!F>9lLKktzPeMx@QUP(CQ*v?oYEC8y)aG@{$dgU*vzZp@24v-`4Rg z!l`J5y&>#m1FdjgnXmJrS&e!}y?|@4MDBLw^X$=thh|Zg9oI|CqkL=`0aR` zpF7%xHp~QXd0IJjqG5ifU)u>C&}q?IKBbnnVRbQWqfs?&oWHXW#p^67&W{WmsIYBB zWWPmi4YSIkYF1e5=ojU+imGd=;$r4$Pcf7{8Kz+4{y&4>+FHtA02iVvwV>vT`WoIF zQF5$ubvAc8I^99xH|gfiMlN{ghG;jaBB#UG8HfKZzKc&N1Q~hrXf{y_~37Y>0R$f)? literal 0 HcmV?d00001 diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..3ecc15d --- /dev/null +++ b/po/pl.po @@ -0,0 +1,2142 @@ +# Messages français pour GNU concernant ap-utils. +# Copyright © 2002 Free Software Foundation, Inc. +# Wojciech Puchar +# +msgid "" +msgstr "" +"Project-Id-Version: GNU ap-utils 1.1.1\n" +"POT-Creation-Date: 2004-04-04 20:22+0300\n" +"PO-Revision-Date: 2002-10-16 08:00-0500\n" +"Last-Translator: Michel Robitaille \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8-bit\n" +"Report-Msgid-Bugs-To: \n" + +# src/ap-config.c:42 src/bridge.c:166 +#: ap-gl/ap-gl.c:47 ap-gl/bridge.c:179 src/ap-config.c:46 src/bridge.c:222 +msgid "Bridging" +msgstr "Bridge'owanie" + +# src/ap-config.c:42 +#: ap-gl/ap-gl.c:47 src/ap-config.c:46 +msgid "Set bridging and IP-related options" +msgstr "Ustawinaie opcji bridge'a i IP" + +# src/ap-config.c:44 src/ap-config.c:112 src/ap-config.c:121 src/bridge.c:90 +#: ap-gl/ap-gl.c:49 ap-gl/ap-gl.c:85 ap-gl/bridge.c:133 src/ap-config.c:48 +#: src/ap-config.c:118 src/ap-config.c:127 src/bridge.c:135 src/bridge.c:139 +msgid "Wireless" +msgstr "Radiowe" + +# src/ap-config.c:44 +#: ap-gl/ap-gl.c:49 src/ap-config.c:48 +msgid "Set wireless options" +msgstr "Ustawianie opcji radiowych" + +# src/ap-config.c:45 src/ap-config.c:57 +#: ap-gl/ap-gl.c:50 src/ap-config.c:49 src/ap-config.c:61 +msgid "Privacy" +msgstr "Bezpieczeñstwo" + +# src/ap-config.c:46 src/ap-config.c:58 +#: ap-gl/ap-gl.c:51 src/ap-config.c:50 src/ap-config.c:62 +#, fuzzy +msgid "MAC auth" +msgstr "Dostêp w/g MAC" + +# src/ap-config.c:47 src/ap-config.c:59 +#: ap-gl/ap-gl.c:52 src/ap-config.c:51 src/ap-config.c:63 +msgid "Community" +msgstr "Prawa dostêpu" + +# src/ap-config.c:48 +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Radio" +msgstr "Radio" + +# src/ap-config.c:48 +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Set radio signal power and antenna options" +msgstr "Ustawianie mocy sygna³u i opcji antenowych" + +# src/ap-config.c:78 +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Upload" +msgstr "Za³aduj do AP" + +# src/ap-config.c:78 +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Make current configuration active" +msgstr "Zapisuje aktualn± konfiguracje na sta³e" + +# src/ap-config.c:79 +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Defaults" +msgstr "Domy¶lne" + +# src/ap-config.c:79 +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Restore factory default settings" +msgstr "Ustaw opcje standardowe producenta" + +# src/ap-config.c:81 src/ap-config.c:89 +#: ap-gl/ap-gl.c:69 src/ap-config.c:86 src/ap-config.c:94 +msgid "Reset" +msgstr "Reset" + +# src/ap-config.c:82 +#: ap-gl/ap-gl.c:70 src/ap-config.c:87 +msgid "Reset AP. All not uploaded configuration will be lost" +msgstr "Reset Access-pointa. Wszystkie nie za³adowane opcje bêd± utracone" + +# src/ap-config.c:84 +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "TestMode" +msgstr "Tryb testowy" + +# src/ap-config.c:84 +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "Put Access Point in test mode" +msgstr "W³±cza tryb testowy AP" + +# src/ap-config.c:110 src/ap-config.c:120 +#: ap-gl/ap-gl.c:83 src/ap-config.c:116 src/ap-config.c:126 +msgid "SysInfo" +msgstr "Ogólne" + +# src/ap-config.c:111 src/bridge.c:90 +#: ap-gl/ap-gl.c:84 ap-gl/bridge.c:132 src/ap-config.c:117 src/bridge.c:134 +#: src/bridge.c:138 +msgid "Ethernet" +msgstr "Ethernet" + +# src/ap-config.c:111 +#: ap-gl/ap-gl.c:84 src/ap-config.c:117 +msgid "Get ethernet port statistics" +msgstr "Pobiera statystyki portu ethernet" + +# src/ap-config.c:113 src/ap-config.c:122 +#: ap-gl/ap-gl.c:86 src/ap-config.c:119 src/ap-config.c:128 +msgid "Stations" +msgstr "Stacje" + +# src/ap-config.c:115 +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "KnownAPs" +msgstr "Znane access-pointy" + +# src/ap-config.c:115 +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "Get info about known Access Points" +msgstr "Podaje informacje o znanych access-pointach" + +# src/ap-config.c:141 +#: ap-gl/ap-gl.c:105 src/ap-config.c:154 +msgid "Info" +msgstr "Informacja" + +# src/ap-config.c:142 +#: ap-gl/ap-gl.c:106 src/ap-config.c:155 +msgid "Config" +msgstr "Konfiguracja" + +# src/ap-config.c:143 +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Commands" +msgstr "Komendy" + +# src/ap-config.c:143 +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Execute commands on Access Point" +msgstr "Wykonuje operacje w Access-poincie" + +# src/ap-config.c:145 +#: ap-gl/ap-gl.c:109 src/ap-config.c:158 +msgid "Connect" +msgstr "Po³±cz" + +# src/ap-config.c:146 +#: ap-gl/ap-gl.c:110 src/ap-config.c:159 +msgid "Search" +msgstr "Znajd¼" + +# lib/common.c:50 src/ap-config.c:147 +#: ap-gl/ap-gl.c:111 lib/common.c:52 src/ap-config.c:160 +msgid "About" +msgstr "Informacja" + +# src/ap-config.c:148 +#: ap-gl/ap-gl.c:112 src/ap-config.c:161 +msgid "Shell" +msgstr "Linia komend" + +# src/ap-config.c:149 +#: ap-gl/ap-gl.c:113 src/ap-config.c:162 +msgid "Exit" +msgstr "Koniec" + +# src/ap-config.c:194 +#: ap-gl/ap-gl.c:162 src/ap-config.c:211 +#, c-format +msgid "Wireless Access Point Configurator ver. %s" +msgstr "Konfigurator bezprzewodowych access-pointów wersja %s" + +# src/auth_mac.c:35 +#: ap-gl/auth_mac.c:28 src/auth_mac.c:28 +msgid "AuthorizedMacTableString packet error" +msgstr "B³êdny pakiet AuthorizedMacTableString" + +# lib/ap-utils.h:117 +#: ap-gl/auth_mac.c:30 src/auth_mac.c:30 +#, fuzzy +msgid "[A] MAC authorization: " +msgstr "[A] Ograniczenie dostêpu dla wybranych MAC: %s" + +# lib/ap-utils.h:122 +#: ap-gl/auth_mac.c:31 src/auth_mac.c:31 +#, fuzzy +msgid "Enter MAC: " +msgstr "Adres fizyczny:" + +# lib/ap-utils.h:121 +#: ap-gl/auth_mac.c:32 src/auth_mac.c:32 +#, fuzzy +msgid "Delete Num: " +msgstr "Skasuj pozycje:" + +# lib/ap-utils.h:118 +#: ap-gl/auth_mac.c:33 src/auth_mac.c:33 +#, fuzzy +msgid "Authorized MAC addresses" +msgstr "Dostêp w/g MAC" + +# lib/ap-utils.h:119 +#: ap-gl/auth_mac.c:34 src/auth_mac.c:34 +#, fuzzy +msgid "NUM MAC address" +msgstr "Numer adres fizyczny (MAC)" + +# lib/ap-utils.h:120 +#: ap-gl/auth_mac.c:35 src/auth_mac.c:35 +msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit" +msgstr "" +"A W³/Wy³; N - nowe; D - kasuj; strza³ki - przewijanie; W - zapis; Q - Wyj¶cie" + +# src/nwn_advanced.c:70 +#: ap-gl/auth_mac.c:36 +#, fuzzy +msgid "A - auth; IPSTF - set; W - write conf; Q - quit" +msgstr "DA - opcje; W - zapis; Q - powrót" + +# src/nwn_advanced.c:70 +#: ap-gl/auth_mac.c:37 +#, fuzzy +msgid "A - auth; W - write conf; Q - quit" +msgstr "DA - opcje; W - zapis; Q - powrót" + +#: ap-gl/auth_mac.c:39 +msgid "[I] RADIUS SERVER IP: " +msgstr "" + +#: ap-gl/auth_mac.c:40 +msgid "[P] RADIUS SERVER PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:41 +msgid "[S] RADIUS SERVER SECRET: " +msgstr "" + +#: ap-gl/auth_mac.c:42 +msgid "[T] REAUTHORIZATION TIME: " +msgstr "" + +#: ap-gl/auth_mac.c:43 +msgid "[F] RADIUS SOURCE PORT: " +msgstr "" + +# src/ap-config.c:55 +#: ap-gl/auth_mac.c:88 +#, fuzzy +msgid "Internal" +msgstr "Ogólne" + +#: ap-gl/auth_mac.c:96 +msgid "" +msgstr "" + +#: ap-gl/bridge.c:27 src/bridge.c:27 +msgid "[I] IP: " +msgstr "" + +# src/bridge.c:169 +#: ap-gl/bridge.c:28 src/bridge.c:28 +#, fuzzy +msgid "[N] Netmask: " +msgstr "[N] Maska: %s" + +# src/bridge.c:171 +#: ap-gl/bridge.c:29 src/bridge.c:29 +#, fuzzy +msgid "[G] Gateway: " +msgstr "[G] Bramka %s" + +# src/bridge.c:32 +#: ap-gl/bridge.c:30 src/bridge.c:30 +#, fuzzy +msgid "[F] Filter non-IP traffic: " +msgstr "[F] Wycinaj ruch nie-IP: %s" + +# src/bridge.c:33 +#: ap-gl/bridge.c:31 src/bridge.c:31 +#, fuzzy +msgid "[P] Primary port: " +msgstr "[P] Port podstawowy: %s" + +# src/bridge.c:144 +#: ap-gl/bridge.c:32 src/bridge.c:32 +#, fuzzy +msgid "Attached station MAC: " +msgstr "MAC do³±czonej stacji: %02X:%02X:%02X:%02X:%02X:%02X" + +# src/bridge.c:34 +#: ap-gl/bridge.c:33 src/bridge.c:33 +#, fuzzy +msgid "[D] DHCP client: " +msgstr "[D] DHCP: %s" + +# src/bridge.c:35 +#: ap-gl/bridge.c:34 src/bridge.c:34 +#, fuzzy +msgid "[O] Operational mode: " +msgstr "[O] Tryb pracy: %s" + +# src/bridge.c:36 +#: ap-gl/bridge.c:35 src/bridge.c:35 +#, fuzzy +msgid "[M] Preferred BSSID (remote MAC addr.): " +msgstr "[R] Zdalny adres fizyczny: %02X%02X%02X%02X%02X%02X" + +#: ap-gl/bridge.c:37 src/bridge.c:37 +msgid "[T] Trap-sending port(s): " +msgstr "" + +#: ap-gl/bridge.c:38 src/bridge.c:38 +msgid "[R] Forward broadcast traffic: " +msgstr "" + +#: ap-gl/bridge.c:40 +msgid "[U] Isolate wireless clients: " +msgstr "" + +# src/bridge.c:30 +#: ap-gl/bridge.c:41 src/bridge.c:41 +#, fuzzy +msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu" +msgstr "BPGINFDRT - ustaw; W - Zapisz; Q - powrót" + +# src/bridge.c:85 +#: ap-gl/bridge.c:125 src/bridge.c:127 +msgid "Wireless Bridge Point to MultiPoint" +msgstr "Bridge punkt-wielopunkt" + +# src/bridge.c:86 +#: ap-gl/bridge.c:126 src/bridge.c:128 +msgid "Access Point" +msgstr "Access Point" + +# src/bridge.c:87 +#: ap-gl/bridge.c:127 src/bridge.c:129 +msgid "Access Point client" +msgstr "Klient Access pointa" + +# src/bridge.c:88 +#: ap-gl/bridge.c:128 src/bridge.c:130 +msgid "Wireless Bridge Point to Point" +msgstr "Bridge punkt-punkt" + +# src/bridge.c:88 +#: ap-gl/bridge.c:129 src/bridge.c:131 +msgid "Repeater" +msgstr "Regenerator" + +# src/stations.c:29 +#: ap-gl/stations.c:31 src/stations.c:29 +msgid "Associated Stations" +msgstr "Przynale¿ne stacje" + +#: ap-gl/stations.c:83 src/stations.c:87 +msgid "AP now in AP Client Mode and don't has any associated stations" +msgstr "" + +#: ap-gl/stations.c:109 +msgid "# MAC LQ RSSI Status Port IP" +msgstr "" + +# src/stations.c:110 +#: ap-gl/stations.c:135 src/stations.c:139 +msgid "AssociatedSTAsInfo packet error" +msgstr "B³êdny pakiet AssociatedSTAsInfo" + +# src/stations.c:132 src/stations.c:284 +#: ap-gl/stations.c:164 src/stations.c:161 src/stations.c:313 +msgid "Arrows - scroll; S - save to file; Q - quit to menu." +msgstr "Strza³ki - przewijanie; S - zapis do zbioru; Q - powrót." + +#: lib/aps.c:128 +msgid "Your Access Point is not in \"AP client\" mode => getting" +msgstr "" + +#: lib/aps.c:131 +msgid "up-to-date \"Known APs\" info requires your AP to be" +msgstr "" + +#: lib/aps.c:134 +msgid "temporarily configured into \"AP client\" mode and rebooted." +msgstr "" + +#: lib/aps.c:137 +msgid "Your AP will be reconfigured back to original mode by this" +msgstr "" + +#: lib/aps.c:140 +msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" +msgstr "" + +# src/ap-config.c:78 +#: lib/aps.c:143 +#, fuzzy +msgid "cause loss of Access Point's current configuration." +msgstr "Zapisuje aktualn± konfiguracje na sta³e" + +#: lib/aps.c:147 +msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" +msgstr "" + +# src/ap-config.c:44 +#: lib/aps.c:150 +#, fuzzy +msgid "via its wireless port." +msgstr "Ustawianie opcji radiowych" + +# src/aps.c:91 src/cmd.c:41 src/cmd.c:85 src/cmd.c:141 src/test.c:82 +#: lib/aps.c:152 lib/cmd.c:49 lib/cmd.c:92 lib/test.c:93 +msgid "Do you want to continue? " +msgstr "Jeste¶ pewien?" + +# src/aps.c:93 +#: lib/aps.c:154 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No)" +msgstr "(Y - Tak; N - Nie (lepiej Nie)" + +# src/aps.c:138 +#: lib/aps.c:202 +msgid "Known Access Points" +msgstr "Znane Access pointy" + +# src/aps.c:143 +#: lib/aps.c:217 +msgid "NetworkType" +msgstr "Typ sieci" + +# src/aps.c:176 +#: lib/aps.c:293 +msgid "Infrastructure" +msgstr "Infrastruktura" + +# src/aps.c:191 +#: lib/aps.c:352 lib/aps.c:360 lib/aps.c:368 +#, fuzzy +msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);" +msgstr "P: Typ nag³ówka; S: Krótki; L: D³ugi" + +#: lib/aps.c:354 +msgid "RSSI: Radio Signal Strength Indicator [%];" +msgstr "" + +#: lib/aps.c:356 lib/aps.c:364 +msgid "LQ: Link Quality [%]" +msgstr "" + +#: lib/aps.c:362 +msgid "RSSI: Radio Signal Strength Indicator [dBm];" +msgstr "" + +#: lib/aps.c:370 +msgid "RSSI: Radio Signal Strength Indicator [raw];" +msgstr "" + +#: lib/aps.c:372 +msgid "LQ: Link Quality [raw]" +msgstr "" + +# src/aps.c:194 +#: lib/aps.c:378 +#, fuzzy +msgid "" +"# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q " +"quit" +msgstr "" +"# po³±cz z tym AP; R od¶wie¿ przez reset; G od¶wie¿ bez resetu; Q wyj¶cie" + +# src/aps.c:194 +#: lib/aps.c:380 +#, fuzzy +msgid "" +"# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit" +msgstr "" +"# po³±cz z tym AP; R od¶wie¿ przez reset; G od¶wie¿ bez resetu; Q wyj¶cie" + +# lib/ap_search.c:134 +#: lib/aps.c:509 lib/ap_search.c:152 +#, fuzzy, c-format +msgid "Failure in sendto(): %s. Press any key." +msgstr "B³±d sendto() : %s. Wci¶nij dowolny klawisz." + +#: lib/aps.c:518 +msgid "You have just initiated the AP scan. Be advised that it may" +msgstr "" + +#: lib/aps.c:521 +msgid "take a few seconds for your Access Point to find out some" +msgstr "" + +#: lib/aps.c:524 +msgid "values, so expect finishing the scan in about 5 seconds." +msgstr "" + +#: lib/aps.c:527 +msgid "Also note that your Access Point stops forwarding the network" +msgstr "" + +#: lib/aps.c:530 +msgid "traffic while the scan is in progress, but restores itself" +msgstr "" + +#: lib/aps.c:533 +msgid "to normal operation in time ranging up to 1 minute." +msgstr "" + +#: lib/aps.c:536 +msgid "Hence, if you are connected to target Access Point via its" +msgstr "" + +#: lib/aps.c:539 +msgid "wireless port, you need to wait a bit longer" +msgstr "" + +#: lib/aps.c:542 +msgid "after pressing 'S'." +msgstr "" + +#: lib/ap_search.c:49 +msgid "# Type IP Description" +msgstr "" + +#: lib/ap_search.c:88 +msgid "Please wait while scanning, or press 'Q' to quit." +msgstr "" + +# lib/ap_search.c:110 +#: lib/ap_search.c:104 +#, fuzzy +msgid "Can't set broadcast option on socket. Press any key." +msgstr "Nie moge ustawiæ trybu BROADCAST. Wci¶nij dowolny klawisz." + +# lib/ap_search.c:117 +#: lib/ap_search.c:113 +#, fuzzy +msgid "Can't set multicast membership on socket. Press any key." +msgstr "Nie moge ustawiæ przynale¿no¶ci multicast. Wci¶nij dowolny klawisz." + +#: lib/ap_search.c:119 +msgid "Scanning via network interface:" +msgstr "" + +#: lib/ap_search.c:120 +#, c-format +msgid " Index: %i" +msgstr "" + +# lib/ap-utils.h:78 +#: lib/ap_search.c:122 +#, fuzzy, c-format +msgid " Name: %s" +msgstr "[N] Nazwa urz±dzenia:" + +#: lib/ap_search.c:124 +#, c-format +msgid " IP: %s" +msgstr "" + +#: lib/ap_search.c:133 +#, c-format +msgid "Scanning for AP type: %s" +msgstr "" + +# lib/ap_search.c:128 +#: lib/ap_search.c:311 +msgid "Access Points Search" +msgstr "Szukanie Access-pointów" + +# src/ap-mrtg.c:178 +#: lib/ap_search.c:328 +#, fuzzy +msgid "realloc() error." +msgstr "B³±d otwarcia socket'a" + +#: lib/ap_search.c:340 +msgid "Network interface discovery error." +msgstr "" + +# src/stat.c:41 +#: lib/ap_search.c:415 +#, fuzzy +msgid "No local network interfaces found. Press any key." +msgstr "B³±d tworzenia procesu (fork). Wci¶nij dowolny klawisz." + +#: lib/ap_search.c:417 +msgid "No directly reachable Access Points found. Press any key." +msgstr "" + +#: lib/ap_search.c:421 +msgid "Program-hardcoded maximum number of APs found." +msgstr "" + +# lib/common.c:118 +#: lib/ap_search.c:425 +#, fuzzy +msgid "# - connect to AP; Q - quit" +msgstr "Wybór Access-pointa" + +# src/sysinfo.c:402 +#: lib/ap-utils.h:74 +#, fuzzy +msgid "MAC address: " +msgstr "Adres IP: %s" + +# lib/ap-utils.h:80 +#: lib/ap-utils.h:75 +#, fuzzy +msgid "[S] SNMP traps: " +msgstr "[S] Sygnalizacja SNMP: %s" + +# lib/ap-utils.h:68 +#: lib/ap-utils.h:77 +#, fuzzy +msgid "[C] Frequency channel: " +msgstr "[C] Czêstotliwo¶æ fali: %02u (%u MHz)" + +# src/stat.c:123 +#: lib/ap-utils.h:79 +#, fuzzy +msgid "Receive antenna:" +msgstr "Odebrane:" + +# src/test.c:70 +#: lib/ap-utils.h:80 +#, fuzzy +msgid "[U] Left" +msgstr "Lewa" + +# src/test.c:70 +#: lib/ap-utils.h:81 +#, fuzzy +msgid "[I] Right" +msgstr "Prawa" + +# src/stat.c:124 +#: lib/ap-utils.h:82 +#, fuzzy +msgid "Transmit antenna:" +msgstr "Wys³ane:" + +# src/test.c:70 +#: lib/ap-utils.h:83 +#, fuzzy +msgid "[O] Left" +msgstr "Lewa" + +# src/test.c:70 +#: lib/ap-utils.h:84 +#, fuzzy +msgid "[P] Right" +msgstr "Prawa" + +# src/sysinfo.c:358 +#: lib/ap-utils.h:85 +#, fuzzy +msgid "Diversity select:" +msgstr "Wiêksza moc: %s" + +# src/test.c:70 +#: lib/ap-utils.h:86 +#, fuzzy +msgid "[T] Left" +msgstr "Lewa" + +# src/test.c:70 +#: lib/ap-utils.h:87 +#, fuzzy +msgid "[Y] Right" +msgstr "Prawa" + +#: lib/ap-utils.h:89 +msgid "Yes" +msgstr "" + +#: lib/ap-utils.h:90 +msgid "No" +msgstr "" + +#: lib/ap-utils.h:92 +msgid "On" +msgstr "" + +# lib/ap-utils.h:55 +#: lib/ap-utils.h:93 +#, fuzzy +msgid "Off" +msgstr "wy³" + +# lib/ap-utils.h:56 +#: lib/ap-utils.h:95 +#, fuzzy +msgid "Basic" +msgstr "podstawowy" + +# lib/ap-utils.h:58 +#: lib/ap-utils.h:97 +msgid "Press any key to continue." +msgstr "Wci¶nij dowolny klawisz aby kontynuowaæ" + +# lib/ap-utils.h:86 +#: lib/ap-utils.h:99 +msgid "Unable to write data to AP. Press any key to continue." +msgstr "Nie moge wys³aæ danych do AP. Wci¶nij dowolny klawisz." + +# lib/ap-utils.h:87 +#: lib/ap-utils.h:100 +msgid "Unable to retrieve data from AP. Press any key to continue." +msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz." + +# lib/ap-utils.h:88 +#: lib/ap-utils.h:101 +msgid "Retrieving data from AP. Please wait..." +msgstr "Pobieram dane z AP. Proszê czekaæ..." + +# lib/ap-utils.h:89 +#: lib/ap-utils.h:102 +msgid "Writing data to AP. Please wait..." +msgstr "Zapisuje dane do AP. Proszê czekaæ..." + +# lib/ap-utils.h:86 +#: lib/ap-utils.h:103 +#, fuzzy +msgid "Configuration written to the AP. Press any key to continue." +msgstr "Nie moge wys³aæ danych do AP. Wci¶nij dowolny klawisz." + +# lib/ap-utils.h:92 +#: lib/ap-utils.h:105 +msgid "Create socket error. Press any key." +msgstr "Nie moge utworzyæ socket'a. Wci¶nij dowolny klawisz." + +# lib/ap-utils.h:93 +#: lib/ap-utils.h:106 +msgid "Bind socket error. Press any key." +msgstr "Bl±d bind(). Wci¶nij dowolny klawisz." + +# lib/ap-utils.h:102 +#: lib/ap-utils.h:108 +msgid "Back to main menu" +msgstr "Powtór do menu g³ównego" + +# lib/ap-utils.h:103 +#: lib/ap-utils.h:109 +msgid "Exit program" +msgstr "Wyj¶cie z programu" + +# lib/ap-utils.h:104 +#: lib/ap-utils.h:110 +#, fuzzy +msgid "Run subshell. To return type 'exit'." +msgstr "Uruchomienie shella. Wpisz 'exit' aby wróciæ" + +# lib/ap-utils.h:105 +#: lib/ap-utils.h:111 +msgid "Short info about program" +msgstr "O programie" + +# lib/ap-utils.h:106 +#: lib/ap-utils.h:112 +msgid "Find connected Access Points" +msgstr "Znajd¼ pod³±czone Access-pointy" + +# lib/ap-utils.h:107 +#: lib/ap-utils.h:113 +msgid "Set connection options: ip and community" +msgstr "Ustawianie opcji po³±czeñ: ip i grupa" + +# lib/ap-utils.h:108 +#: lib/ap-utils.h:114 +#, fuzzy +msgid "Set encryption; edit WEP keys" +msgstr "Ustawianie szyfracji, zmiana kluczy" + +# lib/ap-utils.h:109 +#: lib/ap-utils.h:115 +#, fuzzy +msgid "Set MAC authorization; edit MAC authorization table" +msgstr "Ustawianie praw dostêpu w/g MAC i listy MAC" + +# lib/ap-utils.h:110 +#: lib/ap-utils.h:116 +#, fuzzy +msgid "Set SNMP community/password for access to the AP" +msgstr "Ustawianie hase³/praw SNMP dla AP" + +# lib/ap-utils.h:111 +#: lib/ap-utils.h:117 +#, fuzzy +msgid "Get info about AP hardware and firmware" +msgstr "Informacja o sprzêcie i oprogramowaniu AP" + +# lib/ap-utils.h:112 +#: lib/ap-utils.h:118 +#, fuzzy +msgid "Get wireless port statistics" +msgstr "Statystyki portu radiowego" + +# lib/ap-utils.h:113 +#: lib/ap-utils.h:119 +#, fuzzy +msgid "Get list of currently associated stations (Access Point clients)" +msgstr "Lista aktualnie przy³±czonych stacji" + +# lib/ap-utils.h:114 +#: lib/ap-utils.h:120 +#, fuzzy +msgid "Get info and statistics from AP" +msgstr "Pobieram informacje i statystyki z AP" + +# lib/ap-utils.h:115 +#: lib/ap-utils.h:121 +#, fuzzy +msgid "Set various configuration options" +msgstr "Ustawianie opcji - ró¿ne" + +# src/cmd.c:24 +#: lib/cmd.c:25 +#, fuzzy +msgid "" +"(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" +msgstr "(Y - Tak; N - Nie (lepiej nie)" + +# src/cmd.c:37 +#: lib/cmd.c:44 +msgid "Restore factory default configuration" +msgstr "Przywróæ ustawienia fabryczne." + +# src/cmd.c:40 +#: lib/cmd.c:47 +#, fuzzy +msgid "After restoring factory defaults your current configuration." +msgstr "Po odtworzeniu ustawieñ fabrycznych CA£O¦Æ ustawien zostanie stracona." + +#: lib/cmd.c:48 +msgid "will be lost." +msgstr "" + +# src/cmd.c:71 +#: lib/cmd.c:79 +#, fuzzy +msgid "Factory default settings loaded. Press any key to continue." +msgstr "Ustawiono konfiguracje domy¶ln±. Wci¶nij dowolny klawisz." + +# src/cmd.c:81 +#: lib/cmd.c:88 +msgid "Reset Access Point" +msgstr "Zresetuj Access pointa" + +# src/cmd.c:84 +#: lib/cmd.c:91 +#, fuzzy +msgid "By reset you'll lose all non-uploaded configuration." +msgstr "Przy resecie stracisz wszystkie nie za³adowane informacje." + +# src/cmd.c:106 +#: lib/cmd.c:113 +msgid "Access Point reset. Press any key to continue." +msgstr "Access point zresetowany. Wci¶nij dowolny klawisz." + +# src/cmd.c:134 +#: lib/cmd.c:146 +msgid "Upload configuration" +msgstr "Za³aduj konfiguracje" + +# src/cmd.c:137 +#: lib/cmd.c:149 +#, fuzzy +msgid "You need to upload the configuration only if you've changed" +msgstr "Musisz za³adowaæ konfiguracje tylko je¶li co¶ zmieni³e¶." + +#: lib/cmd.c:152 +msgid "some option values before. Using this option may cause loss" +msgstr "" + +# src/ap-config.c:78 +#: lib/cmd.c:153 +#, fuzzy +msgid "of your current configuration." +msgstr "Zapisuje aktualn± konfiguracje na sta³e" + +# src/cmd.c:163 +#: lib/cmd.c:176 +#, fuzzy +msgid "Configuration uploaded. Press any key to continue." +msgstr "Konfiguracja za³adowana. Wci¶nij dowolny klawisz." + +#: lib/common.c:30 +msgid "Autodetect AP type? " +msgstr "" + +# lib/common.c:120 +#: lib/common.c:31 +#, fuzzy +msgid "Access Point IP-address: " +msgstr "Adres IP:" + +# lib/common.c:121 +#: lib/common.c:32 +#, fuzzy +msgid "Password (community): " +msgstr "Has³o (prawa dostêpu):" + +# lib/common.c:122 +#: lib/common.c:33 +#, fuzzy +msgid "AP type: " +msgstr "Typ Access-pointa" + +# lib/common.c:159 +#: lib/common.c:34 +#, fuzzy +msgid "Save connect-settings: " +msgstr "Zapisaæ na sta³e:" + +# lib/common.c:67 +#: lib/common.c:69 +#, c-format +msgid "From %s" +msgstr "Z %s" + +# lib/common.c:69 +#: lib/common.c:71 +#, c-format +msgid "Version %s" +msgstr "Wersja %s" + +# lib/common.c:72 +#: lib/common.c:74 +msgid "Written by Roman Festchook roma@polesye.net" +msgstr "Napisa³ Roman Festchook (roma@polesye.net)" + +# lib/common.c:74 +#: lib/common.c:76 +#, fuzzy +msgid "Copyright (c) Roman Festchook 2001-2004" +msgstr "Prawa autorskie © Roman Festchook 2001-2002" + +# lib/common.c:77 +#: lib/common.c:79 +msgid "This program is distributed under the terms" +msgstr "Program dostêpnu wed³ug zasad" + +# lib/common.c:79 +#: lib/common.c:81 +msgid "of the GNU General Public License version 2." +msgstr "Publicznej licencji GNU w wersji 2." + +# lib/common.c:81 +#: lib/common.c:83 +msgid "See the included COPYING file for details." +msgstr "Szczegó³ny - przeczytaj plik COPYING." + +# lib/common.c:118 +#: lib/common.c:135 +msgid "Connect options" +msgstr "Wybór Access-pointa" + +# lib/common.c:124 +#: lib/common.c:143 +msgid "Enter IP address of your Access Point." +msgstr "Wpisz adres IP Access pointa" + +# lib/common.c:133 +#: lib/common.c:148 +msgid "Entered characters will not be displayed for security reason." +msgstr "Wpisywane litery nie bêd± wy¶wietlane bo to has³o." + +# lib/ap-utils.h:88 +#: lib/common.c:171 +#, fuzzy +msgid "Determining AP type. Please wait..." +msgstr "Pobieram dane z AP. Proszê czekaæ..." + +# lib/ap-utils.h:87 +#: lib/common.c:196 +#, fuzzy +msgid "Unable to determine AP type (no response). Press any key." +msgstr "Nie moge pobraæ danych z AP. Wci¶nij dowolny klawisz." + +#: lib/file.c:176 +msgid "NUM IP ADDRESS TYPE" +msgstr "" + +#: lib/file.c:177 +msgid "Choose an AP to connect to" +msgstr "" + +#: lib/file.c:182 +msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll" +msgstr "" + +# lib/common.c:118 +#: lib/file.c:225 +#, fuzzy +msgid "Connect to AP num:" +msgstr "Wybór Access-pointa" + +# lib/ap-utils.h:121 +#: lib/file.c:250 +msgid "Delete num:" +msgstr "Skasuj pozycje:" + +# src/bridge.c:31 +#: lib/input.c:31 +#, fuzzy +msgid "Invalid value. Press any key to continue." +msgstr "B³êdny adres IP. Wci¶nij dowolny klawisz." + +# lib/ap-utils.h:86 +#: lib/input.c:32 +#, fuzzy, c-format +msgid "Value must be in range %i - %i. Press any key to continue." +msgstr "Nie moge wys³aæ danych do AP. Wci¶nij dowolny klawisz." + +# lib/oui.c:6048 +#: lib/oui.c:6052 +msgid "Unknown or Private" +msgstr "Nieznany lub w³asny" + +# src/radio.c:93 +#: lib/radio.c:27 +#, fuzzy +msgid "" +"[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" +msgstr "Kl. - moc sygna³y; UIOP - antena; W - Zapis.; Q - Koniec" + +# src/test.c:28 +#: lib/radio.c:29 +#, fuzzy +msgid "Antenna:" +msgstr "[A] Antena: %s" + +# src/test.c:70 +#: lib/radio.c:30 +#, fuzzy +msgid "[L] Left:" +msgstr "Lewa" + +# src/test.c:70 +#: lib/radio.c:31 +#, fuzzy +msgid "[R] Right:" +msgstr "Prawa" + +# src/radio.c:100 +#: lib/radio.c:114 +msgid "Radio Configuration" +msgstr "Konfiguracja radia" + +#: lib/radio.c:115 +msgid "Output RF signal power level (CR31 register values)" +msgstr "" + +# src/radio.c:103 +#: lib/radio.c:117 +#, fuzzy +msgid "Key Channel Level" +msgstr "Kl. kana³ poziom" + +# src/radio.c:225 +#: lib/radio.c:273 +#, fuzzy +msgid "" +"You can't disable both antennas; unable to save antenna-config. Press any " +"key." +msgstr "Nie wy³±cza siê wszystkich anten!!! Wci¶nij dowolny klawisz" + +# lib/scr.c:112 +#: lib/scr.c:134 +#, c-format +msgid "Current AP: %s Type: %s" +msgstr "Aktualny AP: %s Typ: %s" + +# lib/ap-utils.h:95 +#: lib/set_community.c:28 +msgid "Set community/password" +msgstr "Ustawianie hase³" + +# lib/ap-utils.h:96 +#: lib/set_community.c:29 +#, fuzzy +msgid "Key Access level" +msgstr "Kl. Prawa dostêpu" + +# lib/ap-utils.h:97 +#: lib/set_community.c:30 +msgid "Community/Password" +msgstr "Has³o" + +# lib/ap-utils.h:98 +#: lib/set_community.c:31 +msgid "[U] User" +msgstr "[U] U¿ytkownik" + +# lib/ap-utils.h:99 +#: lib/set_community.c:32 +msgid "[A] Administrator" +msgstr "[A] Administrator" + +# lib/ap-utils.h:100 +#: lib/set_community.c:33 +#, fuzzy +msgid "" +"[key] - set community/password; W - write config to AP; Q - quit to menu" +msgstr "Kl. - ustaw has³o; W - zapisz konfiguracje; Q - wyj¶cie" + +# lib/set_community.c:64 +#: lib/set_community.c:80 +msgid "[M] Manufacturer" +msgstr "[M] Producent" + +# src/stat.c:37 +#: lib/stat.c:29 +msgid "Unable to get data from AP. Press Q to continue." +msgstr "Nie moge zczytaæ danych z Access pointa. Wci¶nij Q aby kontynuowaæ." + +# src/stat.c:38 src/stat.c:423 +#: lib/stat.c:30 lib/stat.c:428 +msgid "Q - quit to menu." +msgstr "Q - powrót do menu." + +# src/stat.c:39 +#: lib/stat.c:31 +msgid "pipe error. Press any key." +msgstr "B³±d 'pipe'. Wci¶nij dowolny klawisz." + +# src/stat.c:40 +#: lib/stat.c:32 +msgid "fcntl error. Press any key." +msgstr "B³±d fcntl(). Wci¶nij dowolny klawisz." + +# src/stat.c:41 +#: lib/stat.c:33 +msgid "fork error. Press any key." +msgstr "B³±d tworzenia procesu (fork). Wci¶nij dowolny klawisz." + +# src/stat.c:72 +#: lib/stat.c:72 +msgid "Ethernet Statistics" +msgstr "Statystyki ethernetu" + +# src/stat.c:108 +#: lib/stat.c:108 +msgid "EthRxStat packet error. Press Q to continue." +msgstr "B³êdny pakiet EthRxStat. Wci¶nij Q aby kontynuowaæ." + +# src/stat.c:120 +#: lib/stat.c:120 +msgid "EthTxStat packet error. Press Q to continue." +msgstr "B³êdny pakiet EthTxStat. Wci¶nij Q aby kontynuowaæ." + +# src/stat.c:123 +#: lib/stat.c:123 +msgid "Received:" +msgstr "Odebrane:" + +# src/stat.c:124 +#: lib/stat.c:124 +#, fuzzy +msgid "Transmitted:" +msgstr "Wys³ane:" + +# src/stat.c:246 src/stat.c:422 +#: lib/stat.c:251 lib/stat.c:427 +msgid "Wireless Statistics" +msgstr "Statystyki radiowe" + +# src/stat.c:277 +#: lib/stat.c:282 +msgid "WirelessStat packet error. Press Q to continue." +msgstr "B³êdny pakiet WirelessStat. Wci¶nij dowolny klawisz." + +# src/stat.c:414 +#: lib/stat.c:419 +msgid "pipe error. Press any key" +msgstr "B³±d 'pipe'. Wci¶nij dowolny klawisz." + +# src/stat.c:419 +#: lib/stat.c:424 +msgid "fcntl error. Press any key" +msgstr "B³±d fcntl(). Wci¶nij dowolny klawisz." + +# src/stat.c:428 +#: lib/stat.c:433 +msgid "fork error. Press any key" +msgstr "B³±d tworzenia procesu (fork). Wci¶nij dowolny klawisz." + +# src/sysinfo.c:42 +#: lib/sysinfo.c:31 +msgid "System Description: " +msgstr "Opis systemu: " + +# src/sysinfo.c:83 src/sysinfo.c:257 +#: lib/sysinfo.c:93 lib/sysinfo.c:277 +msgid "System Info" +msgstr "Informacja o systemie" + +#: lib/sysinfo.c:95 +msgid "Device hardware/software/name info:" +msgstr "" + +# src/sysinfo.c:103 src/sysinfo.c:285 +#: lib/sysinfo.c:130 +#, fuzzy +msgid "Product name:" +msgstr "Nazwa produktu:" + +# src/sysinfo.c:108 +#: lib/sysinfo.c:135 +#, fuzzy, c-format +msgid "Product type: %u" +msgstr "Typ produktu: %u" + +# src/sysinfo.c:111 +#: lib/sysinfo.c:138 +#, fuzzy, c-format +msgid "Hardware revision: %u" +msgstr "Wersja sprzêtu/uk³adu: %u" + +# src/sysinfo.c:116 +#: lib/sysinfo.c:141 +#, fuzzy +msgid "OEM name:" +msgstr "Nazwa OEM:" + +# src/sysinfo.c:316 +#: lib/sysinfo.c:149 +#, fuzzy, c-format +msgid "Regulation domain: %s [%d]" +msgstr "Regulacje dot. kana³ów: %s" + +# src/sysinfo.c:126 src/sysinfo.c:317 +#: lib/sysinfo.c:150 lib/sysinfo.c:337 +msgid "FCC (USA)" +msgstr "FCC (USA)" + +# src/sysinfo.c:127 src/sysinfo.c:318 +#: lib/sysinfo.c:151 lib/sysinfo.c:338 +msgid "DOC (Canada)" +msgstr "DOC (Kanada)" + +# src/sysinfo.c:128 src/sysinfo.c:319 +#: lib/sysinfo.c:152 lib/sysinfo.c:339 +msgid "ETSI (Europe)" +msgstr "ETSI (Europa)" + +# src/sysinfo.c:129 src/sysinfo.c:320 +#: lib/sysinfo.c:153 lib/sysinfo.c:340 +msgid "Spain" +msgstr "Hiszpania" + +# src/sysinfo.c:130 src/sysinfo.c:321 +#: lib/sysinfo.c:154 lib/sysinfo.c:341 +msgid "France" +msgstr "Francja" + +# src/sysinfo.c:131 src/sysinfo.c:322 +#: lib/sysinfo.c:155 lib/sysinfo.c:342 +msgid "MKK (Japan)" +msgstr "MKK (Japonia)" + +# src/sysinfo.c:131 src/sysinfo.c:216 src/sysinfo.c:322 +#: lib/sysinfo.c:155 lib/sysinfo.c:236 lib/sysinfo.c:342 +msgid "unknown" +msgstr "nieznany" + +# src/sysinfo.c:134 +#: lib/sysinfo.c:158 +#, fuzzy, c-format +msgid "Info structure version: %u" +msgstr "StructVersion: %u" + +# src/sysinfo.c:138 src/sysinfo.c:279 +#: lib/sysinfo.c:161 lib/sysinfo.c:299 +#, c-format +msgid "Manufacturer OUI: %02X %02X %02X (%s)" +msgstr "OUI producenta: %02X %02X %02X (%s)" + +# src/sysinfo.c:213 +#: lib/sysinfo.c:233 +msgid "FHSS 2.4 GHz" +msgstr "FHSS 2.4 GHz" + +# src/sysinfo.c:213 +#: lib/sysinfo.c:233 +msgid "DSSS 2.4 GHz" +msgstr "DSSS 2.4 GHz" + +# src/sysinfo.c:213 +#: lib/sysinfo.c:233 +msgid "IR Baseband" +msgstr "IR Baseband" + +# src/sysinfo.c:214 +#: lib/sysinfo.c:234 +msgid "Commercial range 0..40 C" +msgstr "Temp. standardowe: 0..40 C" + +# src/sysinfo.c:215 +#: lib/sysinfo.c:235 +msgid "Industrial range -30..70 C" +msgstr "Temp przemys³owe: -30..70 C" + +# src/sysinfo.c:218 +#: lib/sysinfo.c:238 +msgid "manual" +msgstr "rêczne" + +# src/sysinfo.c:218 +#: lib/sysinfo.c:238 +msgid "notsupported" +msgstr "nie obs³ugiwane" + +# src/sysinfo.c:218 +#: lib/sysinfo.c:238 +msgid "dynamic" +msgstr "dynamiczne" + +# src/sysinfo.c:267 +#: lib/sysinfo.c:287 +msgid "Manufacturer:" +msgstr "Producent:" + +# src/sysinfo.c:273 +#: lib/sysinfo.c:293 +msgid "Manufacturer ID:" +msgstr "ID producenta:" + +# src/sysinfo.c:103 src/sysinfo.c:285 +#: lib/sysinfo.c:305 +msgid "Product Name:" +msgstr "Nazwa produktu:" + +# src/sysinfo.c:292 +#: lib/sysinfo.c:312 +msgid "Product ID:" +msgstr "ID produktu:" + +# src/sysinfo.c:298 +#: lib/sysinfo.c:318 +msgid "Product Version:" +msgstr "Wersja produktu:" + +# src/sysinfo.c:306 +#: lib/sysinfo.c:326 +#, c-format +msgid "PHYType: %s" +msgstr "Typ PHY: %s" + +# src/sysinfo.c:309 +#: lib/sysinfo.c:329 +#, c-format +msgid "Temperature: %s" +msgstr "Temperatura: %s" + +# src/sysinfo.c:316 +#: lib/sysinfo.c:336 +#, c-format +msgid "Regulation Domain: %s" +msgstr "Regulacje dot. kana³ów: %s" + +# src/sysinfo.c:325 +#: lib/sysinfo.c:345 +#, c-format +msgid "Transmit Power: %u mW" +msgstr "Moc wyj¶ciowa: %u mW" + +# src/sysinfo.c:355 +#: lib/sysinfo.c:375 +#, c-format +msgid "WEP inplemented: %s" +msgstr "WEP: %s" + +# src/sysinfo.c:358 +#: lib/sysinfo.c:378 +#, c-format +msgid "Diversity: %s" +msgstr "Wiêksza moc: %s" + +# src/sysinfo.c:386 +#: lib/sysinfo.c:406 +#, c-format +msgid "Uptime: %u:%02u:%02u.%02u" +msgstr "Dzia³a ju¿: %u:%02u:%02u.%02u" + +# src/sysinfo.c:402 +#: lib/sysinfo.c:422 +#, c-format +msgid "IP Address: %s" +msgstr "Adres IP: %s" + +# src/test.c:32 +#: lib/test.c:27 +#, fuzzy +msgid "[T] Test mode: " +msgstr "[T] Tryb testowy: %s" + +# src/test.c:28 +#: lib/test.c:28 +#, fuzzy +msgid "[A] Antenna: " +msgstr "[A] Antena: %s" + +# src/test.c:117 +#: lib/test.c:29 +#, fuzzy +msgid "[S] Signal level: " +msgstr "[S] Poziom sygna³u: %03u" + +# src/test.c:29 +#: lib/test.c:30 +#, fuzzy +msgid "[R] Rate: " +msgstr "[R] Prêdko¶æ: %.1f Mbit/s" + +# src/test.c:31 +#: lib/test.c:31 +#, fuzzy +msgid "[F] TxFiler: " +msgstr "[F] TxFiler: %s" + +# src/test.c:30 +#: lib/test.c:32 +#, fuzzy +msgid "[O] Command: " +msgstr "[O] Komenda: %s" + +# src/test.c:33 +#: lib/test.c:33 +#, fuzzy +msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" +msgstr "T - Test W³/Wy³; CASRFO - ustawianie; Q - koniecmenu" + +# src/test.c:70 +#: lib/test.c:71 +msgid "Left" +msgstr "Lewa" + +# src/test.c:70 +#: lib/test.c:71 +msgid "Right" +msgstr "Prawa" + +# src/test.c:78 +#: lib/test.c:88 +#, fuzzy +msgid "Test mode" +msgstr "Tryb testowy" + +# src/test.c:81 +#: lib/test.c:91 +#, fuzzy +msgid "Using the \"Test mode\" may cause loss of your current" +msgstr "U¿ycie trybu testowego mo¿e spowodowaæ utrate konfiguracji." + +# src/cmd.c:134 +#: lib/test.c:92 +#, fuzzy +msgid "configuration." +msgstr "Za³aduj konfiguracje" + +# src/test.c:84 +#: lib/test.c:95 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No.)" +msgstr "(Y - Tak; N - Nie (lepiej nie)" + +# src/test.c:106 +#: lib/test.c:118 +msgid "Options:" +msgstr "Opcje" + +# src/test.c:132 +#: lib/test.c:144 +msgid "Statistics:" +msgstr "Statystyki:" + +# src/test.c:133 +#: lib/test.c:145 +msgid "Success Frames: 0 Failed Frames: 0" +msgstr "Ramki OK: 0 Ramki z³e: 0" + +# src/test.c:197 +#: lib/test.c:207 +#, c-format +msgid "Success Frames: %lu Failed Frames: %lu" +msgstr "Ramki OK: %lu Ramki z³e: %lu" + +# lib/ap-utils.h:62 +#: lib/wep.c:29 +#, fuzzy +msgid "[E] Standard encryption mechanism: " +msgstr "[E] Tryb szyfrowania: %s" + +# src/wep.c:29 +#: lib/wep.c:30 +#, fuzzy +msgid "[A] Allow unencrypted: " +msgstr "[A] Dopu¶æ bez szyfracji: %s" + +# src/wep.c:31 +#: lib/wep.c:31 +#, fuzzy +msgid "[K] Default WEP key: " +msgstr "[K] U¿ywany klucz nr: %d" + +# src/wep.c:30 +#: lib/wep.c:32 +#, fuzzy +msgid "[P] Public key: " +msgstr "[P] Klucz publiczny: %s" + +# src/wep.c:73 +#: lib/wep.c:85 +msgid "EK1234 - set; W - write conf; Q - quit to menu" +msgstr "EK1234 - ustaw; W - zapisz; Q - wyj¶cie" + +# src/wep.c:75 src/wep.c:236 +#: lib/wep.c:87 lib/wep.c:249 +msgid "Privacy Settings" +msgstr "Ustawienia szyfracji" + +# src/wep.c:82 src/wep.c:250 +#: lib/wep.c:94 lib/wep.c:263 +msgid "Key WEP" +msgstr "Klucz WEP" + +#: lib/wep.c:101 +msgid "Hint! Confused by WEP key values? See man ap-config for info..." +msgstr "" + +# src/wep.c:234 +#: lib/wep.c:247 +msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" +msgstr "AEPK1234 - ustaw opcje; W - Zapis; Q - Wyj¶cie" + +#: lib/wlan.c:28 +msgid "[E] ESSID: " +msgstr "" + +# lib/ap-utils.h:78 +#: lib/wlan.c:29 +#, fuzzy +msgid "[N] AP name: " +msgstr "[N] Nazwa urz±dzenia:" + +# src/wlan.c:579 +#: lib/wlan.c:31 +#, fuzzy +msgid "[K] AP contact: " +msgstr "[E] Osoba kontaktowa: %s" + +# src/wlan.c:577 +#: lib/wlan.c:32 +#, fuzzy +msgid "[L] AP location: " +msgstr "[L] Lokalizacja: %s" + +# lib/ap-utils.h:71 +#: lib/wlan.c:34 +#, fuzzy +msgid "[R] RTS threshold: " +msgstr "[R] Min. bajtów do RTS: %d" + +# lib/ap-utils.h:72 +#: lib/wlan.c:35 +#, fuzzy +msgid "[F] Fragmentation threshold: " +msgstr "[F] Min. bajtów do fragmentacji: %d" + +# src/wlan.c:33 +#: lib/wlan.c:36 +#, fuzzy +msgid "[P] Preambule type: " +msgstr "[P] Typ nag³ówka: %s" + +# lib/ap-utils.h:69 +#: lib/wlan.c:37 +#, fuzzy +msgid "[A] Auth type: " +msgstr "[A] Tryb autoryzacji: %s" + +# lib/ap-utils.h:64 +#: lib/wlan.c:38 +#, fuzzy +msgid "Open system" +msgstr "Bez kluczy (Open System)" + +# lib/ap-utils.h:65 +#: lib/wlan.c:39 +#, fuzzy +msgid "Shared key" +msgstr "Wspólny klucz" + +# lib/ap-utils.h:66 +#: lib/wlan.c:40 +#, fuzzy +msgid "Both types" +msgstr "Oba" + +# src/wlan.c:32 +#: lib/wlan.c:41 +#, fuzzy +msgid "[U] Auto rate fallback: " +msgstr "[U] Automatyczne spowalnianie: %s" + +# src/wlan.c:31 +#: lib/wlan.c:42 +#, fuzzy +msgid "[S] Insert ESSID in broadcast packets: " +msgstr "[S] Wysy³aæ ESSID w pakietach rozg³oszeniowych (broadcast): %s" + +# lib/ap-utils.h:74 +#: lib/wlan.c:43 +#, fuzzy +msgid "Basic and Supported rates:" +msgstr "Podstawowe i obs³ugiwane prêdko¶ci:" + +# lib/ap-utils.h:75 +#: lib/wlan.c:44 +msgid "Key Rate Status" +msgstr "Klaw. Prêd. Stan" + +# src/bridge.c:35 +#: lib/wlan.c:46 +#, fuzzy +msgid "[I] International roaming: " +msgstr "[O] Tryb pracy: %s" + +#: lib/wlan.c:47 +msgid "[B] Beacon period (msec): " +msgstr "" + +#: lib/wlan.c:48 +msgid "[D] DTIM sending interval (beacons): " +msgstr "" + +# src/wlan.c:185 +#: lib/wlan.c:49 +msgid "[key] - set option; W - write conf; Q - quit to menu" +msgstr "[kl] - ustaw opcje; W - zapis; Q - wyj¶ciele menu" + +# src/wlan.c:100 +#: lib/wlan.c:140 +msgid "Short" +msgstr "Krótki" + +# src/wlan.c:100 +#: lib/wlan.c:140 +msgid "Long" +msgstr "D³ugi" + +# src/wlan.c:104 +#: lib/wlan.c:265 +msgid "Wireless Settings" +msgstr "Parametry radia" + +# src/wlan.c:584 +#: lib/wlan.c:753 +msgid "Antenna Configuration:" +msgstr "Konfiguracja anten:" + +# src/wlan.c:596 +#: lib/wlan.c:770 +msgid "General Options" +msgstr "Opcje ogólne" + +# src/wlan.c:598 +#: lib/wlan.c:772 +msgid "" +"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu" +msgstr "UIOPTY - antena; SCANLEDFR1234 - opcje; W - zapis; Q - powrót" + +# src/ap-config.c:55 +#: src/ap-config.c:59 +msgid "General" +msgstr "Ogólne" + +# src/ap-config.c:55 +#: src/ap-config.c:59 +msgid "Set general options" +msgstr "Opcje ogólne" + +# src/ap-config.c:56 +#: src/ap-config.c:60 +msgid "Advanced" +msgstr "Zaawansowane" + +# src/ap-config.c:56 +#: src/ap-config.c:60 +msgid "Set advanced options" +msgstr "Opcje zaawansowane" + +# +# src/ap-config.c:89 +#: src/ap-config.c:94 +msgid "Reset AP." +msgstr "Reset AP." + +# src/ap-config.c:123 +#: src/ap-config.c:129 +msgid "Latest" +msgstr "Ostatnie" + +# src/ap-config.c:123 +#: src/ap-config.c:129 +msgid "Get info about latest events" +msgstr "Pobiera info o ostatnich zdarzeniach" + +# src/ap-mrtg.c:45 +#: src/ap-mrtg.c:42 +msgid "" +"\n" +"Usage:\n" +msgstr "" +"\n" +"U¿ycie:\n" + +# src/ap-mrtg.c:47 +#: src/ap-mrtg.c:44 +#, fuzzy +msgid "" +"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-" +"h] [-r]\n" +"\n" +msgstr "" +"\tap-mrtg -i ip -c has³o -t typ [-b bssid] [-v] [-h] [-r]\n" +"\n" + +# src/ap-mrtg.c:49 +#: src/ap-mrtg.c:46 +msgid "" +"Get stats from AP and return it in MRTG parsable format\n" +"\n" +msgstr "" +"Pobierz statystyki z AP i wypisz w formacie strawnym dla MRTG\n" +"\n" + +# src/ap-mrtg.c:50 +#: src/ap-mrtg.c:47 +msgid "-i ip - AP ip address\n" +msgstr "-i ip - adres IP\n" + +# src/ap-mrtg.c:51 +#: src/ap-mrtg.c:48 +msgid "-c community - SNMP community string\n" +msgstr "-c communauté has³o SNMP\n" + +# src/ap-mrtg.c:53 +#: src/ap-mrtg.c:50 +msgid "" +"-t type - statistics type ireless, thernet, associated tations " +"or ink quality in client mode\n" +msgstr "" +"-t type typ statystyk radio, thernet, tacje lub jako¶æ " +"po³±czenia w trybie klienta\n" + +# src/ap-mrtg.c:55 +#: src/ap-mrtg.c:52 +msgid "" +"-b bssid - mac address of the AP to which get link quality, only if " +"type=l\n" +msgstr "" +"-b bssid - adres fizyczny AP z którego braæ dane dot jako¶ci ³±cza " +"(tylko typ=l)\n" + +#: src/ap-mrtg.c:53 +msgid "-n name - AP name - for check only\n" +msgstr "" + +#: src/ap-mrtg.c:54 +msgid "" +"-a aptype - AP type - 410 (default) or 510 for ATMEL12350's, like the " +"ME-102\n" +msgstr "" + +# src/ap-mrtg.c:57 +#: src/ap-mrtg.c:56 +msgid "-v - report MRTG about problems connecting to AP\n" +msgstr "-v - Zg³aszaj MRTG o problemach z po³±czeniem do AP\n" + +# src/ap-mrtg.c:58 +#: src/ap-mrtg.c:57 +msgid "-r - reset AP when getting LinkQuality stats\n" +msgstr "-r - resetuj AP po wziêciu statystyk jako¶ci ³±cza\n" + +# src/ap-mrtg.c:59 +#: src/ap-mrtg.c:58 +msgid "" +"-h - print this help screen\n" +"\n" +msgstr "" +"-h - ten tekst\n" +"\n" + +# src/ap-mrtg.c:60 +#: src/ap-mrtg.c:59 +#, fuzzy, c-format +msgid "" +"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" +"\n" +msgstr "" +"ap-mrtg %s Prawa autorskie © 2002 Roman Festchook\n" +"\n" + +# src/ap-mrtg.c:142 +#: src/ap-mrtg.c:143 +msgid "Invalid IP-address\n" +msgstr "B³êdny adres IP\n" + +#: src/ap-mrtg.c:188 +#, c-format +msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" +msgstr "" + +# src/ap-mrtg.c:178 +#: src/ap-mrtg.c:207 +msgid "Create socket error" +msgstr "B³±d otwarcia socket'a" + +# src/ap-mrtg.c:182 +#: src/ap-mrtg.c:211 +msgid "Bind socket error" +msgstr "B³±d bind()" + +# src/ap-trapd.c:150 +#: src/ap-trapd.c:148 +#, c-format +msgid "ap-trapd %s started%s%s." +msgstr "ap-trapd %s uruchomiony%s%s." + +# src/ap-trapd.c:151 +#: src/ap-trapd.c:149 +msgid " on " +msgstr " w³ " + +# src/ap-trapd.c:157 +#: src/ap-trapd.c:155 +msgid "Unable to fork. Exiting." +msgstr "Nie moge utworzyæ procesu. Wychodze." + +# src/ap-trapd.c:161 +#: src/ap-trapd.c:159 +msgid "Can't create socket. Exiting." +msgstr "Nie moge utworzyæ socket'a. Wychodze." + +# src/ap-trapd.c:167 +#: src/ap-trapd.c:165 +msgid "Can't bind socket. Exiting." +msgstr "Nie dzia³a bind(). Wychodze." + +# src/ap-trapd.c:174 +#: src/ap-trapd.c:172 +#, c-format +msgid "Can't bind to device %s. Exiting." +msgstr "Nie moge pod³±czyæ siê do urz±dzenia %s. Wychodze." + +# src/ap-trapd.c:185 +#: src/ap-trapd.c:183 +#, c-format +msgid "Unable to process username %s. Error: %m." +msgstr "Nie moge skumaæ u¿ytkownika %s. B³±d: %m." + +# src/ap-trapd.c:190 +#: src/ap-trapd.c:188 +#, c-format +msgid "Unable to change to uid %d." +msgstr "Nie moge przej¶æ na UID %d" + +# src/ap-trapd.c:237 +#: src/ap-trapd.c:235 +#, c-format +msgid "" +"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." +msgstr "Odebra³em nieznany pakiet SNMP %d z %s:%d agent: %s grupa: %s." + +# src/ap-trapd.c:309 +#: src/ap-trapd.c:307 +#, c-format +msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" +msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. Dzia³a ju¿ %d:%02d:%02d.%02d" + +#: src/bridge.c:36 +msgid "[C] Configuration-enabled port(s): " +msgstr "" + +#: src/bridge.c:39 +msgid "[B] Isolate wireless clients (broadcast traffic): " +msgstr "" + +#: src/bridge.c:40 +msgid "[U] Isolate wireless clients (unicast traffic): " +msgstr "" + +# lib/ap-utils.h:66 +#: src/bridge.c:137 +#, fuzzy +msgid "Both" +msgstr "Oba" + +# src/nwn_advanced.c:64 +#: src/nwn_advanced.c:61 +#, c-format +msgid "[D] DB Station Timeout: %d" +msgstr "[D] DB Station Timeout: %d" + +# src/nwn_advanced.c:66 +#: src/nwn_advanced.c:63 +#, c-format +msgid "[A] ACK Window: %d" +msgstr "[A] Okno potwierdzenia (ACK): %d" + +# src/nwn_advanced.c:69 +#: src/nwn_advanced.c:66 +msgid "Advanced Options" +msgstr "Opcje zaawansowane" + +# src/nwn_advanced.c:70 +#: src/nwn_advanced.c:67 +msgid "DA - options; W - write conf; Q - quit to menu" +msgstr "DA - opcje; W - zapis; Q - powrót" + +# src/nwn_latest.c:31 +#: src/nwn_latest.c:31 +#, c-format +msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" +msgstr "Przyczyna: %u Stacja: %02X%02X%02X%02X%02X%02X" + +# src/nwn_latest.c:89 +#: src/nwn_latest.c:89 +msgid "Latest Events" +msgstr "Ostatnie zdarzenia" + +# src/nwn_latest.c:90 +#: src/nwn_latest.c:90 +msgid "Disassociate:" +msgstr "Oddziel:" + +# src/nwn_latest.c:97 +#: src/nwn_latest.c:97 +msgid "Deauthenticate:" +msgstr "Wyloguj:" + +# src/nwn_latest.c:104 +#: src/nwn_latest.c:104 +#, fuzzy +msgid "Authenticate Fail:" +msgstr "B³±d autoryzacji:" + +# src/nwn_latest.c:110 +#: src/nwn_latest.c:110 +msgid "Last error:" +msgstr "Ostatni b³±d:" + +# src/nwn_latest.c:111 +#: src/nwn_latest.c:111 +msgid "Error:" +msgstr "B³±d:" + +# src/stations.c:84 +#: src/stations.c:113 +#, fuzzy +msgid "Id MAC address" +msgstr "Id Adres fizyczny" + +# src/stations.c:194 src/stations.c:278 +#: src/stations.c:223 src/stations.c:307 +msgid "Associated stations" +msgstr "Przynale¿ne stacje" + +# src/stations.c:196 +#: src/stations.c:225 +#, fuzzy +msgid "Id MAC address Quality Age RSSI" +msgstr "Id Adres fizyczny Jako¶æ Wiek RSSI" + +# lib/common.c:66 +#~ msgid "Wireless Access Point Configurator" +#~ msgstr "Program do konfiguracji Access-pointów radiowych" + +# lib/ap_search.c:95 +#~ msgid "Invalid multicast address. Press any key." +#~ msgstr "B³êdny adres multicast. Wci¶nij dowolny klawisz." + +# lib/ap_search.c:129 +#~ msgid "Searching please wait..." +#~ msgstr "Proszê czekaæ wyszukiwanie..." + +# lib/ap_search.c:194 +#~ msgid "No Access Points found." +#~ msgstr "Nie znaleziono ¿adnych Access-pointów." + +# src/radio.c:101 +#~ msgid "Output Signal Power Level" +#~ msgstr "Moc sygna³u wyj¶ciowego" + +# src/sysinfo.c:85 +#~ msgid "SysInfo:" +#~ msgstr "SysInfo:" + +# src/sysinfo.c:125 +#~ msgid "RegulationDomain: %s" +#~ msgstr "Regulacje dot. kana³ów: %s" + +# lib/ap-utils.h:60 +#~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" +#~ msgstr "Adres fizyczny: %02X%02X%02X%02X%02X%02X" + +# src/test.c:104 +#~ msgid "[T] Test Mode: Off" +#~ msgstr "[T] Test: Off" + +# lib/ap-utils.h:82 +#~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" +#~ msgstr "Antena nadawcza: [O] Lewa %3s, [P] Prawa %3s" + +# lib/ap-utils.h:83 +#~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" +#~ msgstr "Antena odbiorcza: [U] Lewa %3s, [I] Prawa %3s" + +# lib/ap-utils.h:84 +#~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" +#~ msgstr "Mocniejszy sygna³ na: [T] Lewej %3s, [Y] Prawej %3s" + +# lib/ap-utils.h:54 +#~ msgid "on" +#~ msgstr "w³" + +# lib/ap-utils.h:90 +#~ msgid "Write configuration to AP done. Press any key to continue." +#~ msgstr "Konfiguracja zapisana. Wci¶nij dowolny klawisz." + +# src/cmd.c:140 +#~ msgid "Using this option may cause lost of current configuration." +#~ msgstr "U¿ycie tego mo¿e spowodowaæ strate aktualnej konfiguracji." + +# src/aps.c:90 +#~ msgid "" +#~ "Getting known AP's info need to reboot you AP and may cause lost of " +#~ "current configuration." +#~ msgstr "" +#~ "Pobranie informacji o znanych AP mo¿e spowodowaæ strate aktualnej " +#~ "konfiguracji." + +# src/aps.c:189 +#~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" +#~ msgstr "CN: Kana³; RSSI: Moc sygna³u; LQ: Jako¶æ ³±cza" + +#~ msgid "Found AP at %s" +#~ msgstr "Znaleziono AP pod %s" + +#~ msgid "Access Point Configurator for Atmel ver. %s" +#~ msgstr "Configurateur du point d'accès Atmel de version %s" + +#~ msgid "Access Point Configurator for NWN ver. %s" +#~ msgstr "Configurateur de point d'accès pour NWN version %s" + +#~ msgid "" +#~ "Usage: %s []\n" +#~ "ap-mrtg version %s, Copyright (C) 2002 Roman Festchook\n" +#~ "Get stats from AP and return it in MRTG parsable format.\n" +#~ " ip - AP ip address;\n" +#~ " community - SNMP community string;\n" +#~ " type - Statistics type ireless, thernet, associated " +#~ "tations or ink quality in client mode;\n" +#~ " bssid - Mac address of the AP to which get link quality.\n" +#~ msgstr "" +#~ "Usage: %s []\n" +#~ "ap-mrtg version %s, Copyright © 2002 Roman Festchook\n" +#~ "Obtenir les statistiques d'un point d'accès et les retourner dans un " +#~ "format MRTG.\n" +#~ " ip - adresse IP du point d'accès\n" +#~ " community - chaîne de la communauté SNMP\n" +#~ " type - type de statiques sans fil, Ethernet, tations " +#~ "associées ou qualité du ien en mode client\n" +#~ " bssid - adresse Mac du point d'accès de laquelle la qualité du lien " +#~ "est déterminée\n" + +#~ msgid "Invalid type of statictics\n" +#~ msgstr "Type invalide de statistiques\n" + +#~ msgid "Pream" +#~ msgstr "Préam" + +#~ msgid "ColdStart" +#~ msgstr "DÉmarrage à froid" + +#~ msgid "WarmStart" +#~ msgstr "Démarrage à chaud" + +#~ msgid "LinkDown" +#~ msgstr "Liaison vers le bas (linkdown)" + +#~ msgid "LinkUp" +#~ msgstr "Liaison vers le haut (linkup)" + +#~ msgid "AuthenticationFailure" +#~ msgstr "Échec d'authentification" + +#~ msgid "EgpNeighborLoss" +#~ msgstr "EgpNeighborLoss" + +#~ msgid "EnterpriseSpecific" +#~ msgstr "EnterpriseSpecific" + +#~ msgid "Reassociation" +#~ msgstr "Réassociation" + +#~ msgid "RoamOut" +#~ msgstr "RoamOut" + +#~ msgid "Association" +#~ msgstr "Association" + +#~ msgid "Disassociation" +#~ msgstr "Déassociation" + +#~ msgid "AssociationExpire" +#~ msgstr "Délai d'expiration d'association" + +#~ msgid "SettingPingIPAddress" +#~ msgstr "Configuration d'adresse IP pour le ping" + +#~ msgid "StartUp" +#~ msgstr "Démarrage" + +#~ msgid "FailedToEraseFlash" +#~ msgstr "Échec d'effacement de la mémoire Flash" diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/ro.gmo b/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..fa2f73803f3f889587b429acb9a462e374937546 GIT binary patch literal 14690 zcmbW733OandB<-cPKZbX30v527899x#mU}6wb*2rw3A63a4c`IQ{+ayKiPB z%f|5HJO8)b<-6bgzVCkbuYC97v+puopQb#Ga`rjKoOPBl4?S9Mjrs4#81pFbr{LM( zufYA_!{ADA|6`505=_CTgYN*Z20sbL;LpI#;Pget41;%rqu_(!MzH^4V^)9xcs@7_ zJ`QYwMesK8@!%&w$?;{7F3mSU_4`BciQr{4S`Tgl)jsxk3;0Z)-vUbB`#^>^-|_ep z@KT;Ni2A<_d@6VqsP{WT%`5WXUjtsk^BchPzz>3mU_J(-I`c*FT<|L(Dl*^j-+ury zl=%gCIe7jPjCm3`0BWAQK+S*N0D)1U`9F%;o2Uml4dHg$2{r?x}FsHt`g^v=HK6LP2esbUg0in^Q1+65YWFr!cJY2t z^*;w{+^_oQZ-SEd`=IpjFsOdc<)!Lh0;-=YK)oLXWmm(X>@fi42MMV8Er435JHcJx zaZvhyBto#n<^oXTUk<9>YEa(?!42RRQ2J?tn#Zl61wRDJU%w2h-OoYk=U3pf!LwK_ zOw_CfWv4?RCSgLbAAAWY`R)N#|9(*QzYnUvUwV8PWGT!FCaL$&0447gp!87yp9O9L zWfw05rMFjt>hBIv_1*=_E8uweE*8M+0mexEB$}XOQ5o(;P!1dsIQ1gjE>E{+u^=}7RGII|o zc|Ysle;d?%{uh+r{sxpC^&y1nT@9-J0Z{!_!RRdFEhv3|mr2Qvegw{fKL^)>&%Yv@ z&+9?U^8?^6@Oxki_G4sPhr7W&;E%wA;MFX$>fH%Su73d~*S~|((~rQ7;0e&lcV#Bm z0Z{t50o1zP3~GJe2W|mB3Cb>h;qg)ZnOv8EbY(Vyn&%5are@ zHGUsPqI$#Nx!??__Aw|scrB>)dNU~b-{;?d%)fsClzd+UF@5s`kbmY87>oR8HK=(E zgKGaWkFNtY&$of+f%k%1hmZU3pYiw=Q2l%h+zS2_R6H5Ls0!d#a0sk|lK-RN)!==g z=JyluQQ(!Uv-uBzn1&ev&jDvZ*<}rs94`mY2X6;e@2#Nf-4Cjt&wv`|OQ7WcIw<`; z2x`0)2qpX93ToalI1b(mUI6|YRJ-%ov~Xeb6tEB62rAAGgPQLIsP&3KeSayab-4{x z`}cqsf*%JZ&*wnZ{|8X=eh)kw{2{1ue+n*(ybhGU$3d!^GPoan6R2_9 z;3eQgpyss#Csex&K=uDPPu4a%+_1l7+kL8s5>WOidg>3=<_{;mNf{~RcPek&+BKMOt%{5q)df8f7g ziqomyZtw|U3Tl3LfU>)HfER+F2Q|(=gFC_RfSTtO8#Db}16rO(LCtdpWUDc^`uF#M zn$H(O>FXO`L&muS5P)mM)H^7&6G8iIm(ME8z_e; zx^AO<*xhx1-rK!(dEt3HZ=>w-@5jLk<*z9dl*=i)dkJfYF!6cXsOMS-HV`~c2b~;I-iq%!HwV-T+N~IYliLKAr)?8?Z#%-%^ z=jWpGoSh9@wi?BU?TgZ&8nqTy(?@l|M$}wrgx6I2OrdPc^;#{B`AUD2`}U6ayhvKj zD4wO(oEtCuDcA;YTMQN@b}p`>7 zSfaKV%kDwk1DUioX$7r>c8rC%`RIBZC9SBOWUsf(Z;hH^6&0+uTf(jApc#j))iy|y zdN~SOVa0AqwyIG*MoUe*rMk68CpL<0xf+Gcs8+9p40mLSn2ma~W%o`@?XgnYD#YtA|VZhs}0h$;RRQW;;@{6+~=>o9&^JO@brb94N6Y zQERgen$7xr!s~LgUaguTbQ7elIa+gh#X#m2d}He@7z)r?YOhUAYQPC!v%GS zOlT(!i;Jo!b}|f_u+q7)`!g}k&@AgwIj)j%IL3t{`d?uZ1 zEv~hlCT{Ein{x;(MaZ6?ES{{ zE8&r-j4sjak{Wn69^^&n{YuaX;!0wMxe1&2S=Ba!cs8^H#p3z_JM2EVu+qI-GmcNr z*P9hyX>9~@pd526?K~qI@gYuYB{SSBh}Y^e?@rRjaN2Cjw}-|{vZW~kiEhk@-0aM~ zVr2iY?MIzGbxD^b#@1`AY}A#x^RIVIRE5W9n<9@ARZT{5Gs zxrw84kVW>Kuf>7hY0;)NH}$(zcHvyD+>Ld9=)%7lJ&HUo^kv4V9kO?JR3H-SM=^W0 z8Pv>}IF1c0xhMEp3_@_X;7+?q#&(-VKc>W)B@_aiGM#bmhU0W-8kg&hV;EAl$oq zx9z_!XatZ$dxOL5l|CqB)Ad_~#r$zhYQ*Ub_ehNYjFc9?*ne;gH4F?sx95iqN*#Bb zmCU|_dwmvx{)R?ICPuL~Yo~4)A2s{J7D4c^LXq(sUdfE_x}g)BPP31WH=`p#dBJ#O z?OfWF@SsXa<)teCUs#R~|WSB|4xxoJEV*cV@)Nt8a2%$|_g5o=Dy`;UBpcUklAKpKH!`Qx^E{AcRTM1i1R7Fu32hl&vvGTpny`1(b zf(s&eBk3~=t1PP1IToyGtDP3;c!#I$=}om6dLX{7-}^68=**a~ZQBqSM+T;f`?`ly$#!cl#WhbX3H(RES50MUMBCTpcbt#CR|I*6uVDSBgBtOU-XmO+97jrZ2$Pw z4Wuw$cbo0x@X)?Jqa!;eeAa*Fxy`}Y?HI~E=3ENLT}qh73r+VM8_MCH1hD&oliO1B zZR+f>WZUmHVB+p@!G6??Sq$gnStemu)_TWef0KidhAegu*Z;ETjP5AesmL{SX=I*_ zoT6D4lE`sfWNn4!pbHHimUwn{_Rw1B@R9xK@R1rHWEFy9lOj8KSaB9`$Xm6^ zZx#pQ;m(l-L5Pe+*H7*VF0l`@GnrDVy`-5@c0%iPx3tcZ&vKW?(AtQ3m9!wHZ$e8Rn0PxCAM{%Pemg?Iz_8feJL7L z2Pa}k%9FIA+>%4H=X-YUJ7|4MYRA**YE*_pDTgup2Nt9qpQDOtL=Y(MEV@+IQ+_EL zzfmiLxS7PbFjgse`z|S2Ok3_@>7XaCxIB3|>lx@ZCs*{ih zkUe^uyEbi-j21}mXO0$|^{st-2x4h48y2R*pjOHZFT(b=u%2;}uhmr-`=skqut4_Ee`bIn^-d9xD#Y6Jla~r$ta39yQ34Pb`i8)N@06Cn-r$%CEI8EcGSr^aCq^3 zE+54emy&*g_`Y_={gKxc(rOx!g4k+c%K=#lE3XinHrqTy`>_ywsmI~bh%74V7bCc8 zwGO5M?SgXKwxULt3{<8?6a2*`Xvd?bI;Usk3F)51z*m7QTTBcFGtu!dIMzmV{M?3R zrmx1q%_+;b3_+O9gc|UKoN1Ql2wjhEp0@lT=|a!^aLkMgWFN=uJJexD8s=PNK@)Ur zqT>xCdn(E>BMMJM5#(XU9l{W$9W7c>hv96S4ZWRd(f$OYrcV0k2*i`Q!@&8fG@{d4 zwo0-5;4>JeHxN-+wz zVLqE}vTc^TrKBPT9L+#fsD@(~U3VVqE+HA) z&4}=NLPnOwSLH={J9lU}5lKjf%i25bg>jU^l_W$E(|am0!x<^N=w0taMj!_*viU|k z36QyNTLg@@Z7|Iy%a*Z^OcuVYol3bf#@;?il84BTlc2>(%t>zjGr|yDeqRofV3Bc; z%-A|YvP}l+HQOO?GX~PFom7GIpsr;VL@wWAhLIiec9}otb_x?y*Zg1|=h)@Cyk*Wu zF0F71Lel(WjLk-!l_5=s>@PL}Xu9CrK9A#bwE&D3%lU9ed@S!N| z&#B5)W?$;ux~{;(sjAcdq#=rS%-LS?Oqyi8CT{0a%;g%2-}J(#)o$OMIK%i@WX43I zL0Ty2d6u(>-}GUS3FQ$Hh7%4y&=foC@8;`V+jfi$)6AT@=c9A`j4teITJrUZm`1sd zS%&Omhn!vF2AKA^_4KEbPm-mEOF}*M`TIHQ>3Ps@d?}f+T7zVSKTVi>U2w7c#N&>H z$DGX)7fR;(0PYAE$;5&n$BEh5&<=@Z%9kZ1D605fBTEk{3UfQDh{Pan3k@7Qx+orG z5&8(n{$>j2obP#rYFIQeEbKjTYLAef&(I4VD}!ZYXBQB8r1;`VQa*?ul~+QLX5PtH z@1R}AG+(s?%Z07w+GXTv*RPgu=!r@ysltWK8arp`MQSjat9WqpW7j$z zfjSHc-d@xPL@{dfhK>=4MLiL){t6cyk9^MBaS8t%D%&J?k#ybN9kPG}f6lJ2BtyXqk;e5zOz~+O>NMqcWl^r&;rhOQyH^q|HjZ^XBE)$D)+Hzk;Er>3 zTRpkXv1I4<*%ojDHfH7R3}ljQIBfNM;?~Va2@`71 zzC_0``R?a@9tm7>3P<9EeXzH79uagj;%!*FV@PmrwLqjGQkH3mNUJ(Cs66 zgT$+%0O5Lc&6o1M0j746{Y8F{!x0G!GXcbExvfrGd36M2nHe^(nr#=|s^wH1A<{!t zW#5>Fy}oUm>1?}Z12Xf5az90Y5k%l2&t{E62fJC8IFjY$RIuZQVHoiZ@?i17RYHhd zNCWvC-3D3a8!mlM>gGftwB$T7(GC~z?b$T^dO;17?zHm{dB+O+I%~36oV#e-ZLzc} zIks40CxhIf!6G1H64pc!XM8ao^Neg0vxe^wQn!oAR2xrgDWPm z_(ZyApDbyss$nE9hS|jN#+aS>;?9Tgc#4kP+vTgn8=q9UOC4vNv70GJ(h!zHQ90kq zCfz&JrH|Xr>YJKK1l0sK z=a%!_-zQ>@U+xamBvQ%ymLKOd!MxjrJL6{UnW$Vh7xQ$@yAe|Sg4+{XOBiQ1hMvGB zK3eIC)^1tO8Eg(Gohw;;6wo~ zMwUCg8?~N_oraQbKt-{GwfnVV(9^3da*GKV*`76osdoFhOHz7xYDZsqrdmq!VefZ6 z^PEIo2Q5!sM;Ue9)vqJ5yBhU2o1a&f|C%3bq`J(3mzaFsoJ4=w?_EASgw7_jhkkLK v^@%X@9Cny<+T1{JJ0{zi_+Z{SgXbJWzc}nwC(j~FI3?z9saZ7LoW=Y, 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: ap-utils-1.3.2-pre3\n" +"POT-Creation-Date: 2004-04-04 20:22+0300\n" +"PO-Revision-Date: 2003-05-19 12:51+0300\n" +"Last-Translator: Eugen Hoanca \n" +"Language-Team: Romanian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" +"Report-Msgid-Bugs-To: \n" + +#: ap-gl/ap-gl.c:47 ap-gl/bridge.c:179 src/ap-config.c:46 src/bridge.c:222 +msgid "Bridging" +msgstr "Conexiune(Bridging)" + +#: ap-gl/ap-gl.c:47 src/ap-config.c:46 +msgid "Set bridging and IP-related options" +msgstr "Setare opþiuni legate de bridging ºi IP" + +#: ap-gl/ap-gl.c:49 ap-gl/ap-gl.c:85 ap-gl/bridge.c:133 src/ap-config.c:48 +#: src/ap-config.c:118 src/ap-config.c:127 src/bridge.c:135 src/bridge.c:139 +msgid "Wireless" +msgstr "Wireless" + +#: ap-gl/ap-gl.c:49 src/ap-config.c:48 +msgid "Set wireless options" +msgstr "Setare opþiuni wireless" + +#: ap-gl/ap-gl.c:50 src/ap-config.c:49 src/ap-config.c:61 +msgid "Privacy" +msgstr "Secret(Privacy)" + +#: ap-gl/ap-gl.c:51 src/ap-config.c:50 src/ap-config.c:62 +#, fuzzy +msgid "MAC auth" +msgstr "Autorizare Mac" + +#: ap-gl/ap-gl.c:52 src/ap-config.c:51 src/ap-config.c:63 +msgid "Community" +msgstr "Comunitate" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Radio" +msgstr "Radio" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Set radio signal power and antenna options" +msgstr "Setãri putere semnal radio ºi opþiuni antenã" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Upload" +msgstr "Upload" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Make current configuration active" +msgstr "Seteazã configuraþia curentã ca activã" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Defaults" +msgstr "Implicite" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Restore factory default settings" +msgstr "Restaureazã setãrile implicite din fabricã" + +#: ap-gl/ap-gl.c:69 src/ap-config.c:86 src/ap-config.c:94 +msgid "Reset" +msgstr "Reset" + +#: ap-gl/ap-gl.c:70 src/ap-config.c:87 +msgid "Reset AP. All not uploaded configuration will be lost" +msgstr "Resetare AP. Toate configuraþiile ne-uploadate vor fi pierdute" + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "TestMode" +msgstr "ModTestare" + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "Put Access Point in test mode" +msgstr "Aducere Access Point în mod testare" + +#: ap-gl/ap-gl.c:83 src/ap-config.c:116 src/ap-config.c:126 +msgid "SysInfo" +msgstr "SysInfo" + +#: ap-gl/ap-gl.c:84 ap-gl/bridge.c:132 src/ap-config.c:117 src/bridge.c:134 +#: src/bridge.c:138 +msgid "Ethernet" +msgstr "Ethernet" + +#: ap-gl/ap-gl.c:84 src/ap-config.c:117 +msgid "Get ethernet port statistics" +msgstr "Procurare statistici port ethernet" + +#: ap-gl/ap-gl.c:86 src/ap-config.c:119 src/ap-config.c:128 +msgid "Stations" +msgstr "Staþii" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "KnownAPs" +msgstr "AP-uri cunoscute" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "Get info about known Access Points" +msgstr "Procurare informaþii despre Access Point-urile cunoscute" + +#: ap-gl/ap-gl.c:105 src/ap-config.c:154 +msgid "Info" +msgstr "Informaþii" + +#: ap-gl/ap-gl.c:106 src/ap-config.c:155 +msgid "Config" +msgstr "Configuraþie" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Commands" +msgstr "Comenzi" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Execute commands on Access Point" +msgstr "Executare comenzi pe Access Point" + +#: ap-gl/ap-gl.c:109 src/ap-config.c:158 +msgid "Connect" +msgstr "Conectare " + +#: ap-gl/ap-gl.c:110 src/ap-config.c:159 +msgid "Search" +msgstr "Cãutare" + +#: ap-gl/ap-gl.c:111 lib/common.c:52 src/ap-config.c:160 +msgid "About" +msgstr "Despre" + +#: ap-gl/ap-gl.c:112 src/ap-config.c:161 +msgid "Shell" +msgstr "Shell" + +#: ap-gl/ap-gl.c:113 src/ap-config.c:162 +msgid "Exit" +msgstr "Ieºire" + +#: ap-gl/ap-gl.c:162 src/ap-config.c:211 +#, c-format +msgid "Wireless Access Point Configurator ver. %s" +msgstr "Wireless Access Point Configurator ver. %s" + +#: ap-gl/auth_mac.c:28 src/auth_mac.c:28 +msgid "AuthorizedMacTableString packet error" +msgstr "Eroare pachet AuthorizedMacTableString" + +#: ap-gl/auth_mac.c:30 src/auth_mac.c:30 +#, fuzzy +msgid "[A] MAC authorization: " +msgstr "[A] Autorizare prin MAC: %s" + +#: ap-gl/auth_mac.c:31 src/auth_mac.c:31 +#, fuzzy +msgid "Enter MAC: " +msgstr "Introducere Mac:" + +#: ap-gl/auth_mac.c:32 src/auth_mac.c:32 +#, fuzzy +msgid "Delete Num: " +msgstr "ªterge Num:" + +#: ap-gl/auth_mac.c:33 src/auth_mac.c:33 +#, fuzzy +msgid "Authorized MAC addresses" +msgstr "Adrese MAC Autorizate" + +#: ap-gl/auth_mac.c:34 src/auth_mac.c:34 +#, fuzzy +msgid "NUM MAC address" +msgstr "NUM adresã MAC" + +#: ap-gl/auth_mac.c:35 src/auth_mac.c:35 +msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit" +msgstr "" +"A - autentificare; N - nou; D - ºtergere; sãgeþi -scroll; W- scriere conf; Q " +"- ieºire" + +#: ap-gl/auth_mac.c:36 +#, fuzzy +msgid "A - auth; IPSTF - set; W - write conf; Q - quit" +msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu" + +#: ap-gl/auth_mac.c:37 +#, fuzzy +msgid "A - auth; W - write conf; Q - quit" +msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu" + +#: ap-gl/auth_mac.c:39 +msgid "[I] RADIUS SERVER IP: " +msgstr "" + +#: ap-gl/auth_mac.c:40 +msgid "[P] RADIUS SERVER PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:41 +msgid "[S] RADIUS SERVER SECRET: " +msgstr "" + +#: ap-gl/auth_mac.c:42 +msgid "[T] REAUTHORIZATION TIME: " +msgstr "" + +#: ap-gl/auth_mac.c:43 +msgid "[F] RADIUS SOURCE PORT: " +msgstr "" + +#: ap-gl/auth_mac.c:88 +#, fuzzy +msgid "Internal" +msgstr "General" + +#: ap-gl/auth_mac.c:96 +msgid "" +msgstr "" + +#: ap-gl/bridge.c:27 src/bridge.c:27 +msgid "[I] IP: " +msgstr "" + +#: ap-gl/bridge.c:28 src/bridge.c:28 +#, fuzzy +msgid "[N] Netmask: " +msgstr "[N] Netmask: %s" + +#: ap-gl/bridge.c:29 src/bridge.c:29 +#, fuzzy +msgid "[G] Gateway: " +msgstr "[G] Gateway %s" + +#: ap-gl/bridge.c:30 src/bridge.c:30 +#, fuzzy +msgid "[F] Filter non-IP traffic: " +msgstr "[F] Filtrare traficul non IP: %s" + +#: ap-gl/bridge.c:31 src/bridge.c:31 +#, fuzzy +msgid "[P] Primary port: " +msgstr "[P] Port primar: %s" + +#: ap-gl/bridge.c:32 src/bridge.c:32 +#, fuzzy +msgid "Attached station MAC: " +msgstr "MAC ataºat staþiei: %02X%02X%02X%02X%02X%02X" + +#: ap-gl/bridge.c:33 src/bridge.c:33 +#, fuzzy +msgid "[D] DHCP client: " +msgstr "[D] Protocol DHCP: %s" + +#: ap-gl/bridge.c:34 src/bridge.c:34 +#, fuzzy +msgid "[O] Operational mode: " +msgstr "[O] Mod Operaþional: %s" + +#: ap-gl/bridge.c:35 src/bridge.c:35 +#, fuzzy +msgid "[M] Preferred BSSID (remote MAC addr.): " +msgstr "[R] Adresã Mac remote: %02X:%02X:%02X:%02X:%02X:%02X" + +#: ap-gl/bridge.c:37 src/bridge.c:37 +msgid "[T] Trap-sending port(s): " +msgstr "" + +#: ap-gl/bridge.c:38 src/bridge.c:38 +msgid "[R] Forward broadcast traffic: " +msgstr "" + +#: ap-gl/bridge.c:40 +msgid "[U] Isolate wireless clients: " +msgstr "" + +#: ap-gl/bridge.c:41 src/bridge.c:41 +#, fuzzy +msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu" +msgstr "BPGINFDRT - setãri; W - scriere configuraþie; Q - ieºire în meniu" + +#: ap-gl/bridge.c:125 src/bridge.c:127 +msgid "Wireless Bridge Point to MultiPoint" +msgstr "Conexiune(bridge) Wireless Point to MultiPoint" + +#: ap-gl/bridge.c:126 src/bridge.c:128 +msgid "Access Point" +msgstr "Access Point" + +#: ap-gl/bridge.c:127 src/bridge.c:129 +msgid "Access Point client" +msgstr "Client Access Point" + +#: ap-gl/bridge.c:128 src/bridge.c:130 +msgid "Wireless Bridge Point to Point" +msgstr "Conexiune(bridge) Wireless Point to Point" + +#: ap-gl/bridge.c:129 src/bridge.c:131 +msgid "Repeater" +msgstr "Repetor" + +#: ap-gl/stations.c:31 src/stations.c:29 +msgid "Associated Stations" +msgstr "Staþii Asociate" + +#: ap-gl/stations.c:83 src/stations.c:87 +msgid "AP now in AP Client Mode and don't has any associated stations" +msgstr "" + +#: ap-gl/stations.c:109 +msgid "# MAC LQ RSSI Status Port IP" +msgstr "" + +#: ap-gl/stations.c:135 src/stations.c:139 +msgid "AssociatedSTAsInfo packet error" +msgstr "Eroare pachet AssociatedSTAsInfo" + +#: ap-gl/stations.c:164 src/stations.c:161 src/stations.c:313 +msgid "Arrows - scroll; S - save to file; Q - quit to menu." +msgstr "Sãgeþi - scroll; S - salvare în fiºier; Q - ieºire în meniu." + +#: lib/aps.c:128 +msgid "Your Access Point is not in \"AP client\" mode => getting" +msgstr "" + +#: lib/aps.c:131 +msgid "up-to-date \"Known APs\" info requires your AP to be" +msgstr "" + +#: lib/aps.c:134 +msgid "temporarily configured into \"AP client\" mode and rebooted." +msgstr "" + +#: lib/aps.c:137 +msgid "Your AP will be reconfigured back to original mode by this" +msgstr "" + +#: lib/aps.c:140 +msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" +msgstr "" + +#: lib/aps.c:143 +#, fuzzy +msgid "cause loss of Access Point's current configuration." +msgstr "Seteazã configuraþia curentã ca activã" + +#: lib/aps.c:147 +msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" +msgstr "" + +#: lib/aps.c:150 +#, fuzzy +msgid "via its wireless port." +msgstr "Setare opþiuni wireless" + +#: lib/aps.c:152 lib/cmd.c:49 lib/cmd.c:92 lib/test.c:93 +msgid "Do you want to continue? " +msgstr "Doriþi sã continuaþi? " + +#: lib/aps.c:154 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No)" +msgstr "(Y - Da; N - Nu (e mai sigur sã rãspundeþi Nu)" + +#: lib/aps.c:202 +msgid "Known Access Points" +msgstr "Access Point-uri Cunoscute" + +#: lib/aps.c:217 +msgid "NetworkType" +msgstr "TipReþea" + +#: lib/aps.c:293 +msgid "Infrastructure" +msgstr "Infrastructurã" + +#: lib/aps.c:352 lib/aps.c:360 lib/aps.c:368 +#, fuzzy +msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);" +msgstr "P: Tip Preambul; S: Scurt; L: Lung" + +#: lib/aps.c:354 +msgid "RSSI: Radio Signal Strength Indicator [%];" +msgstr "" + +#: lib/aps.c:356 lib/aps.c:364 +msgid "LQ: Link Quality [%]" +msgstr "" + +#: lib/aps.c:362 +msgid "RSSI: Radio Signal Strength Indicator [dBm];" +msgstr "" + +#: lib/aps.c:370 +msgid "RSSI: Radio Signal Strength Indicator [raw];" +msgstr "" + +#: lib/aps.c:372 +msgid "LQ: Link Quality [raw]" +msgstr "" + +#: lib/aps.c:378 +#, fuzzy +msgid "" +"# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q " +"quit" +msgstr "" +"# conectare la acest AP; R împrospãtare cu reset; G împrospãtare fãrã reset; " +"Q ieºire" + +#: lib/aps.c:380 +#, fuzzy +msgid "" +"# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit" +msgstr "" +"# conectare la acest AP; R împrospãtare cu reset; G împrospãtare fãrã reset; " +"Q ieºire" + +#: lib/aps.c:509 lib/ap_search.c:152 +#, fuzzy, c-format +msgid "Failure in sendto(): %s. Press any key." +msgstr "Sendto invalid: %s. Apãsaþi o tastã." + +#: lib/aps.c:518 +msgid "You have just initiated the AP scan. Be advised that it may" +msgstr "" + +#: lib/aps.c:521 +msgid "take a few seconds for your Access Point to find out some" +msgstr "" + +#: lib/aps.c:524 +msgid "values, so expect finishing the scan in about 5 seconds." +msgstr "" + +#: lib/aps.c:527 +msgid "Also note that your Access Point stops forwarding the network" +msgstr "" + +#: lib/aps.c:530 +msgid "traffic while the scan is in progress, but restores itself" +msgstr "" + +#: lib/aps.c:533 +msgid "to normal operation in time ranging up to 1 minute." +msgstr "" + +#: lib/aps.c:536 +msgid "Hence, if you are connected to target Access Point via its" +msgstr "" + +#: lib/aps.c:539 +msgid "wireless port, you need to wait a bit longer" +msgstr "" + +#: lib/aps.c:542 +msgid "after pressing 'S'." +msgstr "" + +#: lib/ap_search.c:49 +msgid "# Type IP Description" +msgstr "" + +#: lib/ap_search.c:88 +msgid "Please wait while scanning, or press 'Q' to quit." +msgstr "" + +#: lib/ap_search.c:104 +#, fuzzy +msgid "Can't set broadcast option on socket. Press any key." +msgstr "Nu se poate seta opþiunea de broadcast spre socket. Apãsaþi o tastã." + +#: lib/ap_search.c:113 +#, fuzzy +msgid "Can't set multicast membership on socket. Press any key." +msgstr "" +"Nu se poate seta apartenenþa(membership) multicast la socket. Apãsaþi o " +"tastã." + +#: lib/ap_search.c:119 +msgid "Scanning via network interface:" +msgstr "" + +#: lib/ap_search.c:120 +#, c-format +msgid " Index: %i" +msgstr "" + +#: lib/ap_search.c:122 +#, fuzzy, c-format +msgid " Name: %s" +msgstr "[N] Nume AP:" + +#: lib/ap_search.c:124 +#, c-format +msgid " IP: %s" +msgstr "" + +#: lib/ap_search.c:133 +#, c-format +msgid "Scanning for AP type: %s" +msgstr "" + +#: lib/ap_search.c:311 +msgid "Access Points Search" +msgstr "Cãutare de Access Points." + +#: lib/ap_search.c:328 +#, fuzzy +msgid "realloc() error." +msgstr "Eroare în crearea socketului" + +#: lib/ap_search.c:340 +msgid "Network interface discovery error." +msgstr "" + +#: lib/ap_search.c:415 +#, fuzzy +msgid "No local network interfaces found. Press any key." +msgstr "Eroare la fork. Apãsaþi o tastã." + +#: lib/ap_search.c:417 +msgid "No directly reachable Access Points found. Press any key." +msgstr "" + +#: lib/ap_search.c:421 +msgid "Program-hardcoded maximum number of APs found." +msgstr "" + +#: lib/ap_search.c:425 +#, fuzzy +msgid "# - connect to AP; Q - quit" +msgstr "Conectare la AP num:" + +#: lib/ap-utils.h:74 +#, fuzzy +msgid "MAC address: " +msgstr "Adresã IP: %s" + +#: lib/ap-utils.h:75 +#, fuzzy +msgid "[S] SNMP traps: " +msgstr "[S] Referinþe(traps) SNMP: %s" + +#: lib/ap-utils.h:77 +#, fuzzy +msgid "[C] Frequency channel: " +msgstr "[C] Frecvenþã Canal: %02u (%u MHz)" + +#: lib/ap-utils.h:79 +#, fuzzy +msgid "Receive antenna:" +msgstr "Primite:" + +#: lib/ap-utils.h:80 +#, fuzzy +msgid "[U] Left" +msgstr "Stânga" + +#: lib/ap-utils.h:81 +#, fuzzy +msgid "[I] Right" +msgstr "Dreapta" + +#: lib/ap-utils.h:82 +#, fuzzy +msgid "Transmit antenna:" +msgstr "Transmise:" + +#: lib/ap-utils.h:83 +#, fuzzy +msgid "[O] Left" +msgstr "Stânga" + +#: lib/ap-utils.h:84 +#, fuzzy +msgid "[P] Right" +msgstr "Dreapta" + +#: lib/ap-utils.h:85 +#, fuzzy +msgid "Diversity select:" +msgstr "Variaþie: %s" + +#: lib/ap-utils.h:86 +#, fuzzy +msgid "[T] Left" +msgstr "Stânga" + +#: lib/ap-utils.h:87 +#, fuzzy +msgid "[Y] Right" +msgstr "Dreapta" + +#: lib/ap-utils.h:89 +msgid "Yes" +msgstr "" + +#: lib/ap-utils.h:90 +msgid "No" +msgstr "" + +#: lib/ap-utils.h:92 +msgid "On" +msgstr "" + +#: lib/ap-utils.h:93 +#, fuzzy +msgid "Off" +msgstr "oprit(off)" + +#: lib/ap-utils.h:95 +#, fuzzy +msgid "Basic" +msgstr "de bazã" + +#: lib/ap-utils.h:97 +msgid "Press any key to continue." +msgstr "Apãsaþi o tastã pentru continuare." + +#: lib/ap-utils.h:99 +msgid "Unable to write data to AP. Press any key to continue." +msgstr "Nu se pot scrie date în AP. Apãsaþi o tastã pentru continuare." + +#: lib/ap-utils.h:100 +msgid "Unable to retrieve data from AP. Press any key to continue." +msgstr "Nu se pot recupera date din AP. Apãsaþi o tastã pentru continuare." + +#: lib/ap-utils.h:101 +msgid "Retrieving data from AP. Please wait..." +msgstr "Recuperare date din AP. Vã rugãm aºteptaþi..." + +#: lib/ap-utils.h:102 +msgid "Writing data to AP. Please wait..." +msgstr "Scriere date în AP. Vã rugãm aºteptaþi..." + +#: lib/ap-utils.h:103 +#, fuzzy +msgid "Configuration written to the AP. Press any key to continue." +msgstr "Nu se pot scrie date în AP. Apãsaþi o tastã pentru continuare." + +#: lib/ap-utils.h:105 +msgid "Create socket error. Press any key." +msgstr "Eroare în creare socket. Apãsaþi o tastã." + +#: lib/ap-utils.h:106 +msgid "Bind socket error. Press any key." +msgstr "Eroare de legãturã. Apãsaþi o tastã." + +#: lib/ap-utils.h:108 +msgid "Back to main menu" +msgstr "Înapoi în meniul principal" + +#: lib/ap-utils.h:109 +msgid "Exit program" +msgstr "Ieºire din program" + +#: lib/ap-utils.h:110 +#, fuzzy +msgid "Run subshell. To return type 'exit'." +msgstr "Rulare subshell. Pentru întoarcere scrieþi 'exit'" + +#: lib/ap-utils.h:111 +msgid "Short info about program" +msgstr "Scurte informaþii despre program" + +#: lib/ap-utils.h:112 +msgid "Find connected Access Points" +msgstr "Cautã Access Pointurile conectate" + +#: lib/ap-utils.h:113 +msgid "Set connection options: ip and community" +msgstr "Setare opþiuni conexiune: ip ºi comunitate" + +#: lib/ap-utils.h:114 +#, fuzzy +msgid "Set encryption; edit WEP keys" +msgstr "Setare encripþie, editare chei WEP" + +#: lib/ap-utils.h:115 +#, fuzzy +msgid "Set MAC authorization; edit MAC authorization table" +msgstr "Setare autorizare prin mac, editare tabel autorizare prin mac" + +#: lib/ap-utils.h:116 +#, fuzzy +msgid "Set SNMP community/password for access to the AP" +msgstr "Setare comunitate/parolã SNMP pentru accesare AP" + +#: lib/ap-utils.h:117 +#, fuzzy +msgid "Get info about AP hardware and firmware" +msgstr "Procurare informaþii despre hardware ºi software AP" + +#: lib/ap-utils.h:118 +#, fuzzy +msgid "Get wireless port statistics" +msgstr "Procurare statistici porturi wireless" + +#: lib/ap-utils.h:119 +#, fuzzy +msgid "Get list of currently associated stations (Access Point clients)" +msgstr "Procurare listã staþii asociate în acest moment" + +#: lib/ap-utils.h:120 +#, fuzzy +msgid "Get info and statistics from AP" +msgstr "Procurare informaþii ºi statistici din AP" + +#: lib/ap-utils.h:121 +#, fuzzy +msgid "Set various configuration options" +msgstr "Setare diverse opþiuni de configurare" + +#: lib/cmd.c:25 +#, fuzzy +msgid "" +"(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" +msgstr "" +"(Y - Da; N - Nu (E mai sigur sa raspundeþi Nu, în afarã de cazul când aveþi " +"nevoie neapãrat de asta.)" + +#: lib/cmd.c:44 +msgid "Restore factory default configuration" +msgstr "Restaureazã configuraþia implicitã din fabricã" + +#: lib/cmd.c:47 +#, fuzzy +msgid "After restoring factory defaults your current configuration." +msgstr "" +"Dupã restaurarea valorilor implicite din fabricã aþi pierdut configuraþia " +"curentã." + +#: lib/cmd.c:48 +msgid "will be lost." +msgstr "" + +#: lib/cmd.c:79 +#, fuzzy +msgid "Factory default settings loaded. Press any key to continue." +msgstr "Configuraþia implicitã activatã. Apãsaþi o tastã pentru continuare." + +#: lib/cmd.c:88 +msgid "Reset Access Point" +msgstr "Resetare Access Point" + +#: lib/cmd.c:91 +#, fuzzy +msgid "By reset you'll lose all non-uploaded configuration." +msgstr "Când resetaþi veþi pierde toate configuraþiile ne-uploadate." + +#: lib/cmd.c:113 +msgid "Access Point reset. Press any key to continue." +msgstr "Access Point resetat. Apãsaþi o tastã pentru continuare." + +#: lib/cmd.c:146 +msgid "Upload configuration" +msgstr "Upload de configuraþie" + +#: lib/cmd.c:149 +#, fuzzy +msgid "You need to upload the configuration only if you've changed" +msgstr "" +"E nevoie sã uploadaþi configuraþia numai dacã schimbaþi anumite opþiuni." + +#: lib/cmd.c:152 +msgid "some option values before. Using this option may cause loss" +msgstr "" + +#: lib/cmd.c:153 +#, fuzzy +msgid "of your current configuration." +msgstr "Seteazã configuraþia curentã ca activã" + +#: lib/cmd.c:176 +#, fuzzy +msgid "Configuration uploaded. Press any key to continue." +msgstr "Upload-ul de configuraþie efectuat. Apãsaþi o tastã pentru continuare." + +#: lib/common.c:30 +msgid "Autodetect AP type? " +msgstr "" + +#: lib/common.c:31 +#, fuzzy +msgid "Access Point IP-address: " +msgstr "Adresã IP Access Point:" + +#: lib/common.c:32 +#, fuzzy +msgid "Password (community): " +msgstr "Parolã (comunitate):" + +#: lib/common.c:33 +#, fuzzy +msgid "AP type: " +msgstr "Tip AP:" + +#: lib/common.c:34 +#, fuzzy +msgid "Save connect-settings: " +msgstr "Salvare setãri conectare:" + +#: lib/common.c:69 +#, c-format +msgid "From %s" +msgstr "De la %s" + +#: lib/common.c:71 +#, c-format +msgid "Version %s" +msgstr "Versiunea %s" + +#: lib/common.c:74 +msgid "Written by Roman Festchook roma@polesye.net" +msgstr "Scris de Roman Festchook roma@polesye.net" + +#: lib/common.c:76 +#, fuzzy +msgid "Copyright (c) Roman Festchook 2001-2004" +msgstr "Copyright (c) Roman Festchook 2001-2002" + +#: lib/common.c:79 +msgid "This program is distributed under the terms" +msgstr "Acest program este distribuit sub termenii " + +#: lib/common.c:81 +msgid "of the GNU General Public License version 2." +msgstr "Licenþei Publice Generale GNU versiunea 2" + +#: lib/common.c:83 +msgid "See the included COPYING file for details." +msgstr "Citiþi fiºierul COPYING inclus pentru detalii." + +#: lib/common.c:135 +msgid "Connect options" +msgstr "Opþiuni conectare" + +#: lib/common.c:143 +msgid "Enter IP address of your Access Point." +msgstr "Scrieþi adresa IP a Access Point-ului vostru:" + +#: lib/common.c:148 +msgid "Entered characters will not be displayed for security reason." +msgstr "Caracterele introduse nu vor fi afiºate din motive de securitate." + +#: lib/common.c:171 +#, fuzzy +msgid "Determining AP type. Please wait..." +msgstr "Recuperare date din AP. Vã rugãm aºteptaþi..." + +#: lib/common.c:196 +#, fuzzy +msgid "Unable to determine AP type (no response). Press any key." +msgstr "Nu se pot recupera date din AP. Apãsaþi o tastã pentru continuare." + +#: lib/file.c:176 +msgid "NUM IP ADDRESS TYPE" +msgstr "NUM ADRES? IP TIP" + +#: lib/file.c:177 +#, fuzzy +msgid "Choose an AP to connect to" +msgstr "Alege?i AP-ul la care se efectueaz? conexiunea" + +#: lib/file.c:182 +msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll" +msgstr "" +"1-9,C: conectare; N: nou; D: ?tergere; W: salvare; Q: ie?ire; s?ge?i: scroll" + +#: lib/file.c:225 +msgid "Connect to AP num:" +msgstr "Conectare la AP num:" + +#: lib/file.c:250 +msgid "Delete num:" +msgstr "ªterge Num:" + +#: lib/input.c:31 +#, fuzzy +msgid "Invalid value. Press any key to continue." +msgstr "Adresã IP invalidã. Apãsaþi o tastã pentru continuare." + +#: lib/input.c:32 +#, fuzzy, c-format +msgid "Value must be in range %i - %i. Press any key to continue." +msgstr "Nu se pot scrie date în AP. Apãsaþi o tastã pentru continuare." + +#: lib/oui.c:6052 +msgid "Unknown or Private" +msgstr "Necunoscut sau Privat" + +#: lib/radio.c:27 +#, fuzzy +msgid "" +"[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" +msgstr "" +"Tastã - nivel putere; UIOP - antena; W - scriere configuraþie; Q - ieºire" + +#: lib/radio.c:29 +#, fuzzy +msgid "Antenna:" +msgstr "[A] Antena: %s" + +#: lib/radio.c:30 +#, fuzzy +msgid "[L] Left:" +msgstr "Stânga" + +#: lib/radio.c:31 +#, fuzzy +msgid "[R] Right:" +msgstr "Dreapta" + +#: lib/radio.c:114 +msgid "Radio Configuration" +msgstr "Configuraþie Radio" + +#: lib/radio.c:115 +msgid "Output RF signal power level (CR31 register values)" +msgstr "" + +#: lib/radio.c:117 +#, fuzzy +msgid "Key Channel Level" +msgstr "cheie nivel canal" + +#: lib/radio.c:273 +#, fuzzy +msgid "" +"You can't disable both antennas; unable to save antenna-config. Press any " +"key." +msgstr "" +"Nu puteþi dezactiva ambele antene, nu se poate salva configuraþia antenei. " +"Apãsaþi o tastã." + +#: lib/scr.c:134 +#, c-format +msgid "Current AP: %s Type: %s" +msgstr "AP Current: %s Tip: %s" + +#: lib/set_community.c:28 +msgid "Set community/password" +msgstr "Setare comunitate/parolã" + +#: lib/set_community.c:29 +#, fuzzy +msgid "Key Access level" +msgstr "Nivel Access Cheie(Key)" + +#: lib/set_community.c:30 +msgid "Community/Password" +msgstr "Comunitate/Parola" + +#: lib/set_community.c:31 +msgid "[U] User" +msgstr "[U] User" + +#: lib/set_community.c:32 +msgid "[A] Administrator" +msgstr "[A] Administrator" + +#: lib/set_community.c:33 +#, fuzzy +msgid "" +"[key] - set community/password; W - write config to AP; Q - quit to menu" +msgstr "" +"CHEIE - setare comunitate/parolã; W - scriere configurare în AP;Q - ieºire" + +#: lib/set_community.c:80 +msgid "[M] Manufacturer" +msgstr "[M] Producãtor" + +#: lib/stat.c:29 +msgid "Unable to get data from AP. Press Q to continue." +msgstr "Nu se pot procura date din AP. Apãsaþi Q pentru continuare." + +#: lib/stat.c:30 lib/stat.c:428 +msgid "Q - quit to menu." +msgstr "Q - ieºire în meniu." + +#: lib/stat.c:31 +msgid "pipe error. Press any key." +msgstr "eroare de legãturã(pipe). Apãsaþi o tastã." + +#: lib/stat.c:32 +msgid "fcntl error. Press any key." +msgstr "Eroare fcntl. Apãsaþi o tastã." + +#: lib/stat.c:33 +msgid "fork error. Press any key." +msgstr "Eroare la fork. Apãsaþi o tastã." + +#: lib/stat.c:72 +msgid "Ethernet Statistics" +msgstr "Statistici Ethernet" + +#: lib/stat.c:108 +msgid "EthRxStat packet error. Press Q to continue." +msgstr "Eroare de pachet EthRxStat Apãsaþi Q pentru continuare." + +#: lib/stat.c:120 +msgid "EthTxStat packet error. Press Q to continue." +msgstr "Eroare de pachet EthTxStat. Apãsaþi Q pentru continuare." + +#: lib/stat.c:123 +msgid "Received:" +msgstr "Primite:" + +#: lib/stat.c:124 +#, fuzzy +msgid "Transmitted:" +msgstr "Transmise:" + +#: lib/stat.c:251 lib/stat.c:427 +msgid "Wireless Statistics" +msgstr "Statistici Wireless" + +#: lib/stat.c:282 +msgid "WirelessStat packet error. Press Q to continue." +msgstr "Eroare de pachet WirelessStat. Apãsaþi Q pentru continuare." + +#: lib/stat.c:419 +msgid "pipe error. Press any key" +msgstr "Eroare de legãturã(pipe). Apãsaþi o tastã" + +#: lib/stat.c:424 +msgid "fcntl error. Press any key" +msgstr "Eroare de fcntl. Apãsaþi o tastã" + +#: lib/stat.c:433 +msgid "fork error. Press any key" +msgstr "Eroare de fork. Apãsaþi o tastã" + +#: lib/sysinfo.c:31 +msgid "System Description: " +msgstr "Descriere sistem: " + +#: lib/sysinfo.c:93 lib/sysinfo.c:277 +msgid "System Info" +msgstr "Informaþii Sistem" + +#: lib/sysinfo.c:95 +msgid "Device hardware/software/name info:" +msgstr "" + +#: lib/sysinfo.c:130 +#, fuzzy +msgid "Product name:" +msgstr "Nume Produs:" + +#: lib/sysinfo.c:135 +#, fuzzy, c-format +msgid "Product type: %u" +msgstr "TipProdus: %u" + +#: lib/sysinfo.c:138 +#, fuzzy, c-format +msgid "Hardware revision: %u" +msgstr "RevizieHardware: %u" + +#: lib/sysinfo.c:141 +#, fuzzy +msgid "OEM name:" +msgstr "NumeOEM:" + +#: lib/sysinfo.c:149 +#, fuzzy, c-format +msgid "Regulation domain: %s [%d]" +msgstr "Domeniu Regularizare: %s" + +#: lib/sysinfo.c:150 lib/sysinfo.c:337 +msgid "FCC (USA)" +msgstr "FCC (USA)" + +#: lib/sysinfo.c:151 lib/sysinfo.c:338 +msgid "DOC (Canada)" +msgstr "DOC (Canada)" + +#: lib/sysinfo.c:152 lib/sysinfo.c:339 +msgid "ETSI (Europe)" +msgstr "ETSI (Europa)" + +#: lib/sysinfo.c:153 lib/sysinfo.c:340 +msgid "Spain" +msgstr "Spania" + +#: lib/sysinfo.c:154 lib/sysinfo.c:341 +msgid "France" +msgstr "Franþa" + +#: lib/sysinfo.c:155 lib/sysinfo.c:342 +msgid "MKK (Japan)" +msgstr "MKK (Japonia)" + +#: lib/sysinfo.c:155 lib/sysinfo.c:236 lib/sysinfo.c:342 +msgid "unknown" +msgstr "necunoscut" + +#: lib/sysinfo.c:158 +#, fuzzy, c-format +msgid "Info structure version: %u" +msgstr "VersiuneStruct: %u" + +#: lib/sysinfo.c:161 lib/sysinfo.c:299 +#, c-format +msgid "Manufacturer OUI: %02X %02X %02X (%s)" +msgstr "OUI Producãtor: %02X %02X %02X (%s)" + +#: lib/sysinfo.c:233 +msgid "FHSS 2.4 GHz" +msgstr "FHSS 2.4 GHz" + +#: lib/sysinfo.c:233 +msgid "DSSS 2.4 GHz" +msgstr "DSSS 2.4 GHz" + +#: lib/sysinfo.c:233 +msgid "IR Baseband" +msgstr "Bandã de bazã IR" + +#: lib/sysinfo.c:234 +msgid "Commercial range 0..40 C" +msgstr "Interval comercial 0..40 C" + +#: lib/sysinfo.c:235 +msgid "Industrial range -30..70 C" +msgstr "Interval industrial -30..70 C" + +#: lib/sysinfo.c:238 +msgid "manual" +msgstr "manual" + +#: lib/sysinfo.c:238 +msgid "notsupported" +msgstr "nesuportat" + +#: lib/sysinfo.c:238 +msgid "dynamic" +msgstr "dinamic" + +#: lib/sysinfo.c:287 +msgid "Manufacturer:" +msgstr "Producãtor:" + +#: lib/sysinfo.c:293 +msgid "Manufacturer ID:" +msgstr "ID Producãtor:" + +#: lib/sysinfo.c:305 +msgid "Product Name:" +msgstr "Nume Produs:" + +#: lib/sysinfo.c:312 +msgid "Product ID:" +msgstr "ID Produs:" + +#: lib/sysinfo.c:318 +msgid "Product Version:" +msgstr "Versiune Produs:" + +#: lib/sysinfo.c:326 +#, c-format +msgid "PHYType: %s" +msgstr "TipPHY: %s" + +#: lib/sysinfo.c:329 +#, c-format +msgid "Temperature: %s" +msgstr "Temperaturã: %s" + +#: lib/sysinfo.c:336 +#, c-format +msgid "Regulation Domain: %s" +msgstr "Domeniu Regularizare: %s" + +#: lib/sysinfo.c:345 +#, c-format +msgid "Transmit Power: %u mW" +msgstr "Putere Transmisie: %u mW" + +#: lib/sysinfo.c:375 +#, c-format +msgid "WEP inplemented: %s" +msgstr "WEP inplementat: %s" + +#: lib/sysinfo.c:378 +#, c-format +msgid "Diversity: %s" +msgstr "Variaþie: %s" + +#: lib/sysinfo.c:406 +#, c-format +msgid "Uptime: %u:%02u:%02u.%02u" +msgstr "Uptime: %u:%02u:%02u.%02u" + +#: lib/sysinfo.c:422 +#, c-format +msgid "IP Address: %s" +msgstr "Adresã IP: %s" + +#: lib/test.c:27 +#, fuzzy +msgid "[T] Test mode: " +msgstr "[T] Mod Testare: %s" + +#: lib/test.c:28 +#, fuzzy +msgid "[A] Antenna: " +msgstr "[A] Antena: %s" + +#: lib/test.c:29 +#, fuzzy +msgid "[S] Signal level: " +msgstr "[S] Nivel semnal: %03u" + +#: lib/test.c:30 +#, fuzzy +msgid "[R] Rate: " +msgstr "[R] Ratã: %.1f Mbit/s" + +#: lib/test.c:31 +#, fuzzy +msgid "[F] TxFiler: " +msgstr "[F] TxFiler: %s" + +#: lib/test.c:32 +#, fuzzy +msgid "[O] Command: " +msgstr "[O] Comandã: %s" + +#: lib/test.c:33 +#, fuzzy +msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" +msgstr "" +"T - ModTest Activat/Dezactivat; CASRFO - setãri opþiuni; Q - ieºire în meniu" + +#: lib/test.c:71 +msgid "Left" +msgstr "Stânga" + +#: lib/test.c:71 +msgid "Right" +msgstr "Dreapta" + +#: lib/test.c:88 +#, fuzzy +msgid "Test mode" +msgstr "Mod Testare" + +#: lib/test.c:91 +#, fuzzy +msgid "Using the \"Test mode\" may cause loss of your current" +msgstr "" +"Folosirea modului de testare poate cauza pierderea configuraþiei curente." + +#: lib/test.c:92 +#, fuzzy +msgid "configuration." +msgstr "Upload de configuraþie" + +#: lib/test.c:95 +#, fuzzy +msgid "(Y - Yes; N - No (it's safer to answer No.)" +msgstr "(Y - Da; N - Nu (e mai sigur sa raspundeþi Nu.)" + +#: lib/test.c:118 +msgid "Options:" +msgstr "Opþiuni:" + +#: lib/test.c:144 +msgid "Statistics:" +msgstr "Statistici:" + +#: lib/test.c:145 +msgid "Success Frames: 0 Failed Frames: 0" +msgstr "Frame-uri cu succes: 0 Frame-uri eºuate: 0" + +#: lib/test.c:207 +#, c-format +msgid "Success Frames: %lu Failed Frames: %lu" +msgstr "Frame-uri cu succes: %lu Frame-uri eºuate: %lu" + +#: lib/wep.c:29 +#, fuzzy +msgid "[E] Standard encryption mechanism: " +msgstr "[E] Mecanism de encripþie standard: %s" + +#: lib/wep.c:30 +#, fuzzy +msgid "[A] Allow unencrypted: " +msgstr "[A] Permite Necriptare: %s" + +#: lib/wep.c:31 +#, fuzzy +msgid "[K] Default WEP key: " +msgstr "[K] Cheie WEP Implicitã: %d" + +#: lib/wep.c:32 +#, fuzzy +msgid "[P] Public key: " +msgstr "[P] Cheie Publicã: %s" + +#: lib/wep.c:85 +msgid "EK1234 - set; W - write conf; Q - quit to menu" +msgstr "EK1234 - setare; W - scriere configuraþie; Q - ieºire în meniu" + +#: lib/wep.c:87 lib/wep.c:249 +msgid "Privacy Settings" +msgstr "Setãri de Secretizare(Privacy)" + +#: lib/wep.c:94 lib/wep.c:263 +msgid "Key WEP" +msgstr "Cheie WEP" + +#: lib/wep.c:101 +msgid "Hint! Confused by WEP key values? See man ap-config for info..." +msgstr "" +"Sfat! Z?p?ci?i de valorile cheilor WEP? Citi?i man ap-onfig pentru informa?" +"ii..." + +#: lib/wep.c:247 +msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" +msgstr "" +"AEPK1234 - setãri opþiuni; W - scriere configuraþie; Q - ieºire în meniu" + +#: lib/wlan.c:28 +msgid "[E] ESSID: " +msgstr "" + +#: lib/wlan.c:29 +#, fuzzy +msgid "[N] AP name: " +msgstr "[N] Nume AP:" + +#: lib/wlan.c:31 +#, fuzzy +msgid "[K] AP contact: " +msgstr "[E] Contact AP: %s" + +#: lib/wlan.c:32 +#, fuzzy +msgid "[L] AP location: " +msgstr "[L] Locaþie AP: %s" + +#: lib/wlan.c:34 +#, fuzzy +msgid "[R] RTS threshold: " +msgstr "[R] Prag(Threshold) RTS: %d" + +#: lib/wlan.c:35 +#, fuzzy +msgid "[F] Fragmentation threshold: " +msgstr "[F] Prag(theshold) de Fragmentare: %d" + +#: lib/wlan.c:36 +#, fuzzy +msgid "[P] Preambule type: " +msgstr "[P] Tip Preambul: %s" + +#: lib/wlan.c:37 +#, fuzzy +msgid "[A] Auth type: " +msgstr "[A] Tip Autentificare: %s" + +#: lib/wlan.c:38 +#, fuzzy +msgid "Open system" +msgstr "Sistem Deschis(Open)" + +#: lib/wlan.c:39 +#, fuzzy +msgid "Shared key" +msgstr "Cheie Partajatã(shared)" + +#: lib/wlan.c:40 +#, fuzzy +msgid "Both types" +msgstr "Ambele Tipuri" + +#: lib/wlan.c:41 +#, fuzzy +msgid "[U] Auto rate fallback: " +msgstr "[U] AutoRateFallBack: %s" + +#: lib/wlan.c:42 +#, fuzzy +msgid "[S] Insert ESSID in broadcast packets: " +msgstr "[S] Insereazã ESSID în pachetele de broadcast: %s" + +#: lib/wlan.c:43 +#, fuzzy +msgid "Basic and Supported rates:" +msgstr "Rate de bazã ºi suportate:" + +#: lib/wlan.c:44 +msgid "Key Rate Status" +msgstr "Cheie Ratã Stare" + +#: lib/wlan.c:46 +#, fuzzy +msgid "[I] International roaming: " +msgstr "[O] Mod Operaþional: %s" + +#: lib/wlan.c:47 +msgid "[B] Beacon period (msec): " +msgstr "" + +#: lib/wlan.c:48 +msgid "[D] DTIM sending interval (beacons): " +msgstr "" + +#: lib/wlan.c:49 +msgid "[key] - set option; W - write conf; Q - quit to menu" +msgstr "" +"[tastã] - setãri opþiuni; W - scriere configuraþie; Q - ieºire în meniu" + +#: lib/wlan.c:140 +msgid "Short" +msgstr "Scurt" + +#: lib/wlan.c:140 +msgid "Long" +msgstr "Lung" + +#: lib/wlan.c:265 +msgid "Wireless Settings" +msgstr "Setãri Wireless" + +#: lib/wlan.c:753 +msgid "Antenna Configuration:" +msgstr "Configuraþie Antenã:" + +#: lib/wlan.c:770 +msgid "General Options" +msgstr "Opþiuni Generale" + +#: lib/wlan.c:772 +msgid "" +"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu" +msgstr "" +"UIOPTY - antenã; SCANLEDFR1234 - opþiuni; W - scriere configuraþie; Q - " +"ieºire în meniu" + +#: src/ap-config.c:59 +msgid "General" +msgstr "General" + +#: src/ap-config.c:59 +msgid "Set general options" +msgstr "Setare opþiuni generale" + +#: src/ap-config.c:60 +msgid "Advanced" +msgstr "Avansat" + +#: src/ap-config.c:60 +msgid "Set advanced options" +msgstr "Setare opþiuni avansate" + +#: src/ap-config.c:94 +msgid "Reset AP." +msgstr "Resetare AP." + +#: src/ap-config.c:129 +msgid "Latest" +msgstr "Ultimul" + +#: src/ap-config.c:129 +msgid "Get info about latest events" +msgstr "Procurare informaþii despre ultimele evenimente" + +#: src/ap-mrtg.c:42 +msgid "" +"\n" +"Usage:\n" +msgstr "" +"\n" +"Folosire:\n" + +#: src/ap-mrtg.c:44 +#, fuzzy +msgid "" +"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-" +"h] [-r]\n" +"\n" +msgstr "" +"\tap-mrtg -i ip -c comunitate -t tip [-b bssid] [-v] [-h] [-r]\n" +"\n" + +#: src/ap-mrtg.c:46 +msgid "" +"Get stats from AP and return it in MRTG parsable format\n" +"\n" +msgstr "" +"Procurã statistici din AP ºi le returneazã în format MRTG\n" +"\n" + +#: src/ap-mrtg.c:47 +msgid "-i ip - AP ip address\n" +msgstr "-i ip - Adresã de ip AP \n" + +#: src/ap-mrtg.c:48 +msgid "-c community - SNMP community string\n" +msgstr "-c comunitate - SNMP ºir de caractere comunitate\n" + +#: src/ap-mrtg.c:50 +msgid "" +"-t type - statistics type ireless, thernet, associated tations " +"or ink quality in client mode\n" +msgstr "" +"-t tip - tip statistici ireless, thernet, taþii asociate sau " +"calitate egãturã(link) în mod client\n" + +#: src/ap-mrtg.c:52 +msgid "" +"-b bssid - mac address of the AP to which get link quality, only if " +"type=l\n" +msgstr "" +"-b bssid - adresã mac a AP-ului de la care se procurã calitatea " +"conexiunii(link), numai dacã tip=l\n" + +#: src/ap-mrtg.c:53 +msgid "-n name - AP name - for check only\n" +msgstr "" + +#: src/ap-mrtg.c:54 +msgid "" +"-a aptype - AP type - 410 (default) or 510 for ATMEL12350's, like the " +"ME-102\n" +msgstr "" + +#: src/ap-mrtg.c:56 +msgid "-v - report MRTG about problems connecting to AP\n" +msgstr "" +"-v - raporteazã MRTG-ului problemele apãrute la conectarea la AP\n" + +#: src/ap-mrtg.c:57 +msgid "-r - reset AP when getting LinkQuality stats\n" +msgstr "" +"-r - reseteazã AP-ul când se procurã statisticile LinkQuality\n" + +#: src/ap-mrtg.c:58 +msgid "" +"-h - print this help screen\n" +"\n" +msgstr "" +"-h - afiºeazã acest ecran de ajutor\n" +"\n" + +#: src/ap-mrtg.c:59 +#, fuzzy, c-format +msgid "" +"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" +"\n" +msgstr "" +"ap-mrtg %s Copyright (c) 2002 Roman Festchook\n" +"\n" + +#: src/ap-mrtg.c:143 +msgid "Invalid IP-address\n" +msgstr "Adresã de IP invalidã\n" + +#: src/ap-mrtg.c:188 +#, c-format +msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" +msgstr "" + +#: src/ap-mrtg.c:207 +msgid "Create socket error" +msgstr "Eroare în crearea socketului" + +#: src/ap-mrtg.c:211 +msgid "Bind socket error" +msgstr "Eroare în legãtura(bind) la socket" + +#: src/ap-trapd.c:148 +#, c-format +msgid "ap-trapd %s started%s%s." +msgstr "ap-trapd %s startat%s%s." + +#: src/ap-trapd.c:149 +msgid " on " +msgstr " activat " + +#: src/ap-trapd.c:155 +msgid "Unable to fork. Exiting." +msgstr "Nu se poate face fork. Ieºire." + +#: src/ap-trapd.c:159 +msgid "Can't create socket. Exiting." +msgstr "Nu se poate crea socketul. Ieºire." + +#: src/ap-trapd.c:165 +msgid "Can't bind socket. Exiting." +msgstr "Nu se poate face legãtura(bind) la socket. Ieºire." + +#: src/ap-trapd.c:172 +#, c-format +msgid "Can't bind to device %s. Exiting." +msgstr "Nu se poate face legãtura(bind) la device-ul %s. Ieºire." + +#: src/ap-trapd.c:183 +#, c-format +msgid "Unable to process username %s. Error: %m." +msgstr "Nu pot procesa username-ul %s. Eroare: %m." + +#: src/ap-trapd.c:188 +#, c-format +msgid "Unable to change to uid %d." +msgstr "Nu pot schimba în uid %d." + +#: src/ap-trapd.c:235 +#, c-format +msgid "" +"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." +msgstr "" +"S-a primit trap necunoscut SNMP ver %d. De la %s:%d. Agent: %s. Comunitate: %" +"s." + +#: src/ap-trapd.c:307 +#, c-format +msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" +msgstr "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" + +#: src/bridge.c:36 +msgid "[C] Configuration-enabled port(s): " +msgstr "" + +#: src/bridge.c:39 +msgid "[B] Isolate wireless clients (broadcast traffic): " +msgstr "" + +#: src/bridge.c:40 +msgid "[U] Isolate wireless clients (unicast traffic): " +msgstr "" + +#: src/bridge.c:137 +#, fuzzy +msgid "Both" +msgstr "Ambele Tipuri" + +#: src/nwn_advanced.c:61 +#, c-format +msgid "[D] DB Station Timeout: %d" +msgstr "[D] Timp Limitã(timeout) Staþie DB: %d" + +#: src/nwn_advanced.c:63 +#, c-format +msgid "[A] ACK Window: %d" +msgstr "[A] Fereastrã ACK: %d" + +#: src/nwn_advanced.c:66 +msgid "Advanced Options" +msgstr "Opþiuni Avansate" + +#: src/nwn_advanced.c:67 +msgid "DA - options; W - write conf; Q - quit to menu" +msgstr "DA - opþiuni; W - scriere configuraþie; Q - ieºire în meniu" + +#: src/nwn_latest.c:31 +#, c-format +msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" +msgstr "Motiv: %u Staþie: %02X:%02X:%02X:%02X:%02X:%02X" + +#: src/nwn_latest.c:89 +msgid "Latest Events" +msgstr "Ultimele Evenimente" + +#: src/nwn_latest.c:90 +msgid "Disassociate:" +msgstr "Dezasociere:" + +#: src/nwn_latest.c:97 +msgid "Deauthenticate:" +msgstr "Deautentificare:" + +#: src/nwn_latest.c:104 +#, fuzzy +msgid "Authenticate Fail:" +msgstr "Autentificare Eºuatã:" + +#: src/nwn_latest.c:110 +msgid "Last error:" +msgstr "Ultima eroare:" + +#: src/nwn_latest.c:111 +msgid "Error:" +msgstr "Eroare:" + +#: src/stations.c:113 +#, fuzzy +msgid "Id MAC address" +msgstr "Id adresã MAC" + +#: src/stations.c:223 src/stations.c:307 +msgid "Associated stations" +msgstr "Staþii asociate" + +#: src/stations.c:225 +#, fuzzy +msgid "Id MAC address Quality Age RSSI" +msgstr "Id Adresã MAC Calitate Vechime RSSI" + +#~ msgid "Wireless Access Point Configurator" +#~ msgstr "Wireless Access Point Configurator" + +#~ msgid "Invalid multicast address. Press any key." +#~ msgstr "Adresã de multicast invalidã. Apãsaþi o tastã." + +#~ msgid "Searching please wait..." +#~ msgstr "Cãutare vã rugãm aºteptaþi..." + +#~ msgid "No Access Points found." +#~ msgstr "Nici un Access Point gãsit" + +#~ msgid "Output Signal Power Level" +#~ msgstr "Nivel Putere Semnal Output" + +#~ msgid "SysInfo:" +#~ msgstr "SysInfo:" + +#~ msgid "RegulationDomain: %s" +#~ msgstr "DomeniuRegularizare: %s" + +#~ msgid "Mac Address: %02X%02X%02X%02X%02X%02X" +#~ msgstr "Adresã Mac: %02X:%02X:%02X:%02X:%02X:%02X" + +#~ msgid "[T] Test Mode: Off" +#~ msgstr "[T] Mod Testare: Dezactivat" + +#~ msgid "Transmit Antenna: [O] Left %3s, [P] Right %3s" +#~ msgstr "Antenã de Transmisie: [O] Stânga %3s, [P] Dreapta %3s" + +#~ msgid "Receive Antenna: [U] Left %3s, [I] Right %3s" +#~ msgstr "Antenã Recepþie: [U] Stânga %3s, [I] Dreapta %3s" + +#~ msgid "Diversity Select: [T] Left %3s, [Y] Right %3s" +#~ msgstr "Selecþie Variaj: [T] Stânga %3s, [Y] Dreapta %3s" + +#~ msgid "on" +#~ msgstr "pornit(on)" + +#~ msgid "Write configuration to AP done. Press any key to continue." +#~ msgstr "" +#~ "Scriere configuraþie în AP efectuatã. Apãsaþi o tastã pentru continuare." + +#~ msgid "Using this option may cause lost of current configuration." +#~ msgstr "" +#~ "Folosirea acestei opþiuni poate cauza pierderea configuraþiei curente." + +#~ msgid "" +#~ "Getting known AP's info need to reboot you AP and may cause lost of " +#~ "current configuration." +#~ msgstr "" +#~ "Procurarea de informaþii cunoscute din AP necesitã rebootarea AP-ului ºi " +#~ "poate cauza pierderea configuraþiei curente." + +#~ msgid "CN: Channel; RSSI: Signal Strenght; LQ: Link Quality" +#~ msgstr "CN: Canal; SS: Putere Semnal; LQ: Calitate Conexiune" diff --git a/po/uk.gmo b/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5728b2a5a7d46dd2bf093c84edcd6ec67028c585 GIT binary patch literal 30408 zcmbW93t(JFeeO>}2*e>IA>_d$FnJiu!CF7!Bt&)|vLwe&Y)h8pyd0OTrM0v~+7-Ji zJMN{IUdroI`k;Zf7ifXjY$z>-P)I2)T(6^zBTL$q^{|W#E`~s$A;H)IgTqbl@0*#k z4@r*QE*^d7%$YN1=0E@UOgQ|yb3PI9d-qvE@Mdt=`9W};>qVEVHVA(GmLS*!{sw$C z*!)(9_kuJHqToER7d!`i7+ebe9{6_f%ix>9L*P2_1h@fgG(m73_z1WL{5GieuevG- z+QI9=X7Iz{eDEN+0DK9&5`5d$?!FPciTfTf0qz1oMXf*RjB3mqM=1U2pj;JIKOxD2cZMVActD)1}dh2S?pwSNj^2*Dvx zba@5L!jc7-gJR7Upy=NQYJJ}4@lQbY^J!4y`3GPBbx{1e2UI@=kH^3ZxW5eM6aB6Q zb$=tM@il^4_umKgy-)h*gCL|2roi*Tmq4xWyhU!FYe4=5%^u$aYCL}jYCc~D4frIe z^>_w+4fr$gJn%RE{uQ-u92bG2$2w4QngK=6kAb4!UwZs3sQG^ZRJ(70dT$aGzyCj9 zZlW~Ka0_@d_}8G`I|yD1{t~PM&qsJ}16PALf*%C+oo|7f{|G2P{0;~yg6Bc; z#T%En`P~5Oz7BjXxCsb)<3l9#W6`tAWx^7ag}T{crsJs}N$AHn;+mT;Bm+48}l2 zBG>`Kg2CT-EP~Q2zXdM=&%VJuzYNrS4d5DZ6R7$9HFzob1yJMsHmG@h2UI^l0M+g% zApe46{COQ%19OSaD?kHALGkbVK)v@x5S1Hz1(Y6`1f_4D1I5qhVhpt2Zv!=tT97FR z_kyra@KNyf;I}~Ofidth@K<0BcmYaH^tch!JljF_(+!Fr9s%|K*TH${v@b*iwU$Y=Yi52mxAJ#m7vz|ouK;d0@dz4pzOzo!3)7WD0)qT>hIsdw}U?c zF9ly;=hopmPD*TC#ZQm=%1(j^Y?%?)c+Bv{vY=^;BgGp zcfJp*|DS?dzhIT4&!wQgQv+(8H-qA@R`9Lh1EALBJ)qY0Pd$DLlsslZ(X9ZgpPz!F z`$*#syosM41L5=qoQ0sIjcn-J;ybin{lpK8kyb62_q>EtO@Zv}r1YP>gXbnW}VS8@M-P~-ZjuYbzpcfo6^KMJb9OIw{jxz6J% za3S^ggQCy-L5<^YL5=&L!K=aDp!oBLpyu~m@LcewHix%@TDK-p&+i16fgb?%{x`r{ z@DOOg^I!(8<8>gc7Gyy2^S^?c&m{O}@O$8S;7RZz@SIKV{!&nMdn+jVJmBj;30}zk zF7S2W*T8GQy`aYbEU59FbGOrTw}Ca>ZvkHeeh}0;KLTD1eg+gB9s||yH~sT{p!nwi zxD8rH5B;cKq}JsQNxo>-LY}a`0JD zbTAJ%jDY&?N>KeZgZlm-fRc;PgBtf&K*>`c)H+RolD{8=djHZb?)@52_YZ)YXVTyA z0QKHSK=t=&Q0x8}D7tjzMmxGPqW>D{c)<6Fu_zLd7 z1ZupGfqH)rsP!HJHNSHnblQDHgOZcK0yXX;_-61s;3Du>pw{D>txoUW0IJ>Zfo}jm z1il6Q9H?>b1})!u90#RG4uM+lt2-Q>ZvZu}dqJ(kc2Mi}X;9<-8}M>)47>#V5AbU6 zB~b0I>U8>Z0a(ZVI&c~IA@Hr>H$n0LH25a)te6|;mEhaCUkU2_-QacL2f?er$3O#) zgH{iKlJ~Q>xp|!rs{Rsxf0f6Dpw@9II3K(PRDT`*`3FF~_eY@S^C@sO_+{`y@K>PL z^V}}Szn6k<bTmEgtia`JsSC_1kOF9o-HeAwe3 zgX(V=DEb@%wVr1^AqsQ3TM*MHsLPk?&wXW(nVUxJeNvy+Z*E(g!&e!jn7 z3ab5Wpw?{-D8Ab4F$wDZKL9n4zXbLDuY#igzk#m>e*j(x{sPqVv-;e6o)2o?b)fXi z-JtsG0`=YZfa>=HzWy_y+J6nK1xG=x-%Ft6Z0Wn*d(EJ}doQT(b%9#fcY~|IFM{Ih z=RmFBvXt}Z*MRDOr@#LMcp3Lkg6ijc;LYGOp!C62Y1i)qpz1#Xo(mSii@*cmLhu<- z`tIV4YaapCz6*RE_&IPn_%%@c`%_TzX8PUwH-Wct-wkRUUjSEtUj=Ugp9dvBi?+M< z$$*;whruP_Uw~(U`YodDqi9@vDc_+)c-RDnzw@}?#mzd(zf%rS4CP-aeLVXu*g(Q$;|7xUP5^#*D=Zil&@1hLiqd zqU`{9kn&+lJ>`=W`{P+LyaxZAf_Mh^__{ZNzeo9fe=qnpgey%T~T*Lj@zHSTn2zCF5GDNwD`>m8-t`AZ4lihlWas~B|g3CeK zl(&HAQ}p{erPE$HeY4Wnf0epbTyFvszAnr4-M;OG)NSGVr<54i9|fPMyn!-Ext6*+ z!M~>5PFc(SeIV*3_yh&@YV%A$@LtLblzQ4ct_psaQ7)wX73KBRUk5G&b718!PTiX+ zvROBRiHe8!asNcc{Zg)9L*0+Sw^J_W`qki{P%h`>B;c-0QYBe za})R&_!|G9BWwUpQVNuZDK}H}d&ohsn)j}xoWuP}U-t^|gZ}#SU_WIeZ7P3X^Edxg zS?RBD0pCFTUxR;1+2-p7ub}>&lp|bUOu2*WS5fqvauB?h`y04^j#5L}#Qm2+*$w@c za(}yj$JOA6aIt|p>2CcNb3F`>+dJ$ico*egDc`5`Q1nxd&vM-h zK1BJSTz7%`Edt*~`IWm3TES)hTJQ_X)Bb)VIN!ggs&`QC_4gUBPf)J%_g8SOpYiwq zkLz}>+x)$reTA}H7yPbuVDk{&zRiD9*Ws_0uH9<3rql7xEnFr{BHA0%Rn$cL^jz25 z^`~2ZQd{QD3+8P~N4sKm^8#bmw$z#VXDg%#u~?^_e&oN<5p7HBA1*_!2xb|k z)+}GT#ME@gwnh7UG7C*IWp1Ei8(81IzG>akW!K-ZWI=k7>4`rSP)A5WcV z_@OgS2@2h5+8y1oj)&~%XqT$`nq>-+Zbx@4p($k;lUc{KHo94vGz^{QJ;qd$kXlHOsl)dtc=|XRa1#rW|4`e)5#9;bEjFEzLl;JAgGx#D|>FOpdD;) zI(p(UX5O3ZjPbecGltnGfm+|%eus%}P4;IXQ*vuhtT!D>mxgTxY+kUm_U1(mb>Raz zxDGZ$a2o4OCqvA{R+xM0VCC&xY^<~VzQROPspO6{)g7s1PfxJ2JKotDOWYdNL&Io) zrh5g_+}6IDJ1a%^aIqs5M^2I9Z52XYZZE-c-{pc2hu=^a_9G1A^u3(ANmI*Ru<~+s z2PY=2ZbDv9^@6C=8%y*D;*I1EQJkv=NA&d&9hvSloyo+4jOmW1x!YN}dSU~uon99s z)R~}O3lY?JbVxv2lCW*n4Fs$8?5V~T&HPeV*I7=Cm=-H;`uIb!ofS(-&VNwO%f0wp0mYxw}@K5Q%`e;Xc6d`W2ig3n< z`ZKU(MrPA9+-)XU#Zc^=qA;)JZhSQiVM(VJ&zRzp9C(C_HOORh__3r*0j}`Hpqo}URP(R|E}FiQ?As1R|#C zVVr|RSETY8tKJ#g9`Aq?;ma8b~=3$F=RV#dN&E0ZemvZ@@hQxiD^^)07+SL4@b?L55hE#1?L zlx%-*9aVihQ}M3ujH&5ZXj+p@)~rS)bwHAb%(5j*me%rTdC*X~P+r*PsGBh?*2Jr? zdh6&~ZnCazqwLU`+l0pE22%sWMLVMlgT}VDHnS|U+}yF|cZ0^5tY0YHb=*7c$%Ra* z*}yDKcw?vBNOh_gKNg+qWtU<1#G(kxj%Yj+i9~2`Ikp@9hYpM_PA9iz?1lAO;^-Z| z6i=7D2i`EW<3qQ*@)X*M*shkohRxUN^r6_ccw&^S#MCiVw>0Cck9Da^HnM}WSxzb zQ{(vGwcpmc6jyj`IV9riU319H9_SA}xhbY4&J9(4#+c-nvrJ-e7eDY`3Yc zeqpeBO$E=buC~09pDBLI-Hk`?vPJ*mYKP!%fNXHVLnPkmE@yCpJBEf3uRaCWS zi^_qfgVm^@ju?>a<=x89^jb=4!&#+SDvm6Z==>15oUTfR+$uWzw0_fRM9^Ue-YN=dRx zrW`k?k_g^MOE0t?s9!u5*QFhQDwgR_B@BxRrLAAy7fq#Q&c&O((F_rb#=XOb1!g9F z)_B>6d$-5acqA-Sf3PM7;TL(y#VMaDy3te@omLHWdpyc8(!m-W(5sB}dVd-T*}Bu* z)6`hEAR$OuS9dP?#NywWRWhrV2AX*)x@sx{1A`0-3feuz~U{pr9~u{!p`FJ=$?++!<3Z)u&Y znL{A%QeAyZI#@^ireM{CwA(y?%N&)dC`TpM$zQQNz%I5HmY#Gf{NwB zxY;|5V6gtKyG+fU(Y|P6VX!_*@?g&3!Jxe`RZ)|LBLQfjgeqT#d#j}d>1{+))fmpKOeBWA)jwGzH)6G5- zHqr728E*1kHW8UFn_aOstn{8=3H|KhsBy-@4kQ<6ST<%0t;E%OdzGt=BJQpj{|6DxGjI z3|iLQrwLgZ4E;l#t}vg76$mPv5an=~q%v%BRLI?=uu2MK7i?T0{#E=G393BcYPN1k z#kWU0cGAQm%EcKeDw3VZqh0dw+NK;!Pww_&TB?xOQ&+l^5L#u(+cJ~2G8`R*L!D@^ zhvU8dz49$_yQR{R0>3yx3nZ&tHECvRDU?zPW(S4RFm(uKXFO@z9GwZpVu>!2g(x0H zb5I3|S`nOK)6P}BXWm#sNzeMc`)hS~DFzQ(tyd#LI4{HMH3UXNGqcdRBZkl!Y?BS2 z>%y8&l8(-%wkiFF7!a|WOe)$JG2Xrt*hi#u3HYt2pqRu)9QL-0Q$c+{u(E5!xI#QkN(BIPSn@4dS)XsHe#o%e_5N2pnPztVN3V-^XU zJHusi_RU8``rMqYLdS{*7#Zv^E_-J*6AdjrdcE3jZ&fH0wDu#i{ae%ICwn5MU0G!7 z42W^ff*2m&f=JM&l!SM%YQqm9gl%5rtnKyjfu&>VfeiXAg;E#zgpZ84VzhXoqo-do z(a_v-AGX`(K5VDt4R8X}3;|amRNl%(*ri)xVx4#`v+7MoYR|r7Ii;jI7Wd&SDcZE1 zM;-OUFrvl25cNr@FygY6TYcKVx=WZ&(xdP~XH}coAF;1`vWd}r3|FW95hdtKZ`g)- zOR1e!Yx-$S>e#Y*0A7yz{OAw_{=73RvIOYSSn-R~%kFWyTg$IS2Px2Yw%uc(^U zY{|?#6vGNxiHN9^b-ZG(3Fpmw>|QkbSWu^1b*!Zg&kwXSY<{$M!!**UhL zJ=WU?wPo%tJC{1*NjjqhYtXKwzMs0`l5h^O+e*+RE!Bx?5@Vw;decEWAxOFxMs1Pl zqsM;Jdr!Hxq~^kQ^idaVTHD;xuALkInBAU+`VH%v8dtaaRPmXo1U4nC8=!cY>=hm< zSN-^nD9fPyOgTCQ`^uTPoq(Ez-Bs#iJ!1=JIEIyP5+yuTk&!BQDF=Us60(MQM&Me0 z0gBobG;Tj0u2Ql}gxOfw%(wIoMC@ zA7o;|CYvAhP%TqbDwV87Rxa87Q7*YZ*p!w|7F%3hVyLTe19qB@DD#zFu$xmhui)L$ z;BLh`B`;+Wb<tD0Mfp&5Xxrbejn%f4{6UN_DC_lhnsOBu`2f zFI>}Vd#5JK3ldDW&dA*n3rBD7OS0v)GZw*I1*DvU``FpUzLB>@wypeZC7B$GBfB&G zC8@G0doQOx9G$T;5!+q2?C86+mf_a0HcYL&$$O2MRpg*M387IUcE16g0e{$c-R>%K zYkAMUHba^F9ZRLjWUj5Gcj{fXEZ7uO?g@By3TaLlz`Yoou;VyFzd70!6n61-Qbt;pHnv^fJ5C zM;WlS=7^w2YZ^krg^k5N-Ooh0jvaE-3l@c@YBO!kn_3&1 zOiOcXyML|yVLFxl3O3)d#oPfscSLvUZY=~RXYDQ&swQmD%z_OG*1XF<3wv&Ay}PNk z{EBl#H{S)*XiuGSkrJjiDtv}I%>Jl$oo%L2RepxAQMg|hY+es@RD|5Ng0PQs4)SDH ziG-#m73|$=Pz1rA~Z*WKG-5X6mr2d=53^oty?`(2G)dajSGsEzbqvtJK zFcaa9kPH8OWxO{^+^*bN*sgzT51UT2_O|L3 zRUJ#EFX&QEKa^@?$uR2d!&}CZM3*JOZ4=_B*>=@~YHMm}ZL%Ce7uLDv`+Z?sA9~v0 zUaz-rF^*VVv^LdmYG2dby7vD1_O;C$3~b-z+my^fEz<_q^)t;U* zI}uBEhPQPjGCe-+B@x3}@^0SCJc6+hN;j_BM~no0aiVLRzntMGocc*5K&xOcJ8Bk&xxaK02iYyQ zPn}`lnQtrt(`rHO$s^yO+RqF!%6XC;i0#1kKymhXcysoimKbiE_E&UJM;{D`yAVm@ zNm7jAQlVY3T*=v9f#T6rY-u&127A$gkCy`}_3Cr3Sk}FvUC0 zEc+y%yd}9x@#OaVJyIrkN^Ej43-(YJS$EB)F&9BD z6MMLiWUMF{XJg$iNjL%aF6`;28^Q&M@E;x7?T@mXBHb4WLf1`+Bi*^fSynMFvV#kK zLv6{js9X8lL+%^B)sjlSiviTG?W_$mmD)1V^wMT&WO-!iyq4znTDv`s9jk4$rb64; zwe}y|+I7p8y?x2`OP0{Ew$<z4sawAM?Mrxbo|5ym?TUHvx!A;sBKD+g=InN%sU|0JhFR`x^{iKE8bbVs=q5;+n%g5^X53! zI#e8aaCad)k=3cziNR4$s{WS`wVoIpDvk|~Pvi=P{nck%A1@5#hsN<1b-4BMkp=s0 zsAdYe^5NDO_-6G_+g9Q4=c9w;FMq1__(X1k)<=tD6Zl~ERO@JVV8O0|LT+Mke7_ke zA|B3IObzav7^KDM*kI-3Bga;lRx_O&ogAMSoES8t#Y2-rI*mG7EEK1x(ZSZy{8)Zu zs4%I!jpk*0Qq$?&RIV_QJ7C{FeNXnF>O_vO>S$geYijo7r$_UL3)w??GnE|}Ely<_ z98dgN)H7{iCT7;A%#i_%SP@u4Tp~>wj+AX_*;r$h-Ts1cH+>how-8zyR zs?80I<;QboPj0$6ReaQlxt_>As@2>-#QoIZbRl<`73LPo95ln(!qDWDXT;*v+jD<22xv>d1 zBE3IZS_D|zu*icW&^~Jh_&fL%{4T1M$wY@v*4=`-#iUE*Wnz#O-N9Op&qd!GkZXuzOpzd2?8exoq+_06p zd(8A6Xt=jRVplNav8=l1Q$u5u6GORRB_w-F^C|ihwNn!)v+3Lu+5P2%wNv6hrwil- zqbml-Ay=hZsW-XGH|>ye)gvl>T*DgPKOmR3vMZ-m>@nTSu1@*I@-f?r@!4YmmA%$_ zZS{P9B)7|ix>0=LglZoXdI1XO%+p?yD_3q8D;G#dA2~)OadfP>cPuxO3w|KE%=sSn z2ag{MS>85#b~wv>;|J-}ePe%cv_dK7wXBj=7PuHOKbRai2=C-zl-yMIP|mUcSaF~@ zbwEuc!BJ^su|aVtl(!FBz9Atr^PDY;^#DtYgdUhc z_n?GNCu)V4R*Uk8Hoeg5(Qz!4W~OE;#Oax3!Haa&nF*uc#a52j1k!)d* zla!p(eO5}<9?+FAj*jJXBYP%?2krUXXNzM+RGB@Y`*d+?Z*C#0VMdAvCc{bb1vjgR zIf1qtI4~KRqlqIRbU;y|Z?#u3tM&NA6zcJ1x+|+9vuCWB8yL!sPgs7kR6RZI$^)zD zX=HNvAf{b`lt?5vF^E`XaSe_fvl^vjQ4liBew2ui zbgPt!Wvc8x`TqtEwsC+x30z)fm*JVqbT#S>uq0pr)_(EmaeD;#nP;8|p3cuyH$Qet zKFjhuM*!D=Rjw=FLyi;9d))1nh_&bk2E;3tjfQjMLphzhd%W;uaco3-j0xbI_(>R8 z1);@$ET-BT#KqQ`tJ8p_X`SkW1G8gJix29f6?fWwLPou7Kai8ViqXIf%2uE$LKTY> zSG0Dc%q`}OwWK*N~M%L4__U0uZl?s6<)wW8Vvo=*^RTVG3L~U zH>1UY?4xtGVgMDRmliBHlMx=y4pl@l6|Qg%!3wTxR$6$WduMW&jia!})tqlQM^mawoyri!81u*$R85vxVuEBYA6Rnj42bU^Wd4_0TXfhV$99~%zK zkt`_$b69SLdGt{vf&Oz>nWqP*ByC19veo2lnAeIGvQxL|;o$f|GJ6%LjpsaMT-GGj z3Zz131mtR5tZNlI`f`jfj!hNidxih`vbLsNqf(XKuJS>$4MKn6!qXq*rw35B#|LpF z#|QT+jzkF$keC^>zJ8^lE}u6ptLfl`B_)eb#Eya>*;1iQJyy z!6)|1cgBCxCJeHlx7Y>Hef~ss_%}ZnUNpQl+OcgKqN-Ib9w6P~_$ve=Y$x}QiTA2g4o7Ps`RvbyzK}-GjkC-Umx-Kv#WI7o0$kWGu zbo>bPGB5n}s3obcjVT2oxzO(LfpFo7mq=UWu`MP`+%@)Oe&2X@DiX-+wvV#G^Zc_b zy$@4Y^b=J)T_7mjKQf8xIFseC>|^eao0ys8AkS{~`QyiO={15r2Ts z>LTL0z;hIHlM&imbV(jBXQrk^0KtLV67D=;Q-f7>X=80SpG4+| ztP3+*L@hxUR#*|c5<@l(Ypu49FIU)Y6P!Nqe{t~1F}Vs@j?z5Lp>idxA}>g?UKfZC z6}Mg$obtI=wDeHA_as)+t|<9O{1@3p5^GAuIa`J=U=xZ;H?qVq55l1QFn4JG39@q5 zaj|JHd#KqabbJi%4=SV0U~5uL5`xJC1^SS;WK~_|f##QQS9zNGjH3&@4h5ZvnI5)p{l00E?40T-GGlGD^ z5^8knC+?Ut$pPNltr;J4S<@08tq8{5BH}L25r4C^xPs+;5g`I5n@M0=iwtsBHA!lbPVF6B6PuOL-CklTx-^UN7#!s*iUM=M{ooP_%EAvsgP zDY9Z3=G6$8}>y}lvou2KIR}8{w4eK$K1y-ZB!Z%piQF%<2{5y9G>z8`_c6<~y zr=UYaBZoz(P#{sx9-p#INTniS8}^RiosEx@soJkVN*gp40TscZBJigOdH6p3#3^aq zq?vUyS}mE?W=U||n=)+%db>tE?P_tKON_Ta&@pMNeyuh}C+CJ17qS%xrKieV5t66E zoefp>3;7XJ>c?_R0z*WD_`pxIoC%* zDd!hUR#T|ROYGvD^y$oWMOQ4eL|BJZ=Exlu!^qO*Q7LnI_@n_B#V7SBLx%8cd~1opEjvwQ}SnUdI~;N6zFrva$sDzr;VOHWW+ID1A|26=~%_A$PVe0SE(z5;8F7TIMVBI!W5 zAl)fvXc#jydpirYQQA0k8-Te*rM+m*Vc^RQK4s5CpU4g|9v!KMrQBiaBLj?5L5Eyp z+vsTx-egYn$eY~FVv+O7zPM;4(Rt-B*3%#}#}|<%VsF7)Ot|s!=DaIT*qx-5A1i)TSoO z(Hb9~+R^bupBUhj0LxPLKGZp9qJNBmC%&^2F63)*cpyAGcK-2m`2#saCTA~uX%leN zqrToIKQ$|*NW+8GcAGFe<(r($!94}}+kRK`a8^$^VEy9o?rB|ey83Z#CF|n3?12LQ z+kpBUD^9`!drM8i4P}2`cN}V9lKo@n`szsavqgqDGy$_?vBxn#YC(PIS}|5cs(c63ii-74n1y5Uc-d9)RZIDHr&+zxrx1dPJ0Hr z<{UL)jA-xgT$fZIllo?!dx{f-dd5L$7lZn}JYVNivyRHX?&##6VYaTtQ21nFWyLB~ zkcVzPc{m{LJPTs83P#2ybDZo}jaGKSIclwrxh*B7{Jrmv6Vh@-r|f}^CVToE1u?7R zJlRvdNOQEfob%aB7#_A(C}?Rxh0jj-SXe!9%Gwc+3q;CtR9UVqSMsFVIrHyX*~B)F zI?>U0+^9GKEtMYbC&M&(?^1aMV0VU{zh)0&pHekU7TDre$X~4(_`oS%(a?D6ro;u? zwm7!1-(h6Vao4 z$AM)s{M4U$(CUz*NB%UAu^+&@#_~?h_I5~?kSq+m$78(1qd;6LB|QGA6ig&=5$PBq z0w2I}XVYOC2WUEHo|?kZE3k)I&aF60tY&2gFuO<{qt4_&?B2!L_Q=^PXmi?z>a3^_ zL;^x{wbX7}wPTJ~irc-5FmL2Ao7C2$3uW2aK)IjD@_>BUX%|ONnyXLP&a6OP9Wjp= z, 2002-2004. +# +msgid "" +msgstr "" +"Project-Id-Version: ap-utils 1.4.1\n" +"POT-Creation-Date: 2004-04-04 20:22+0300\n" +"PO-Revision-Date: 2004-02-27 00:44+0200\n" +"Last-Translator: Roman Festchook \n" +"Language-Team: UK \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-u\n" +"Content-Transfer-Encoding: 8bit\n" +"Report-Msgid-Bugs-To: \n" + +#: ap-gl/ap-gl.c:47 ap-gl/bridge.c:179 src/ap-config.c:46 src/bridge.c:222 +msgid "Bridging" +msgstr "íÏÓÔ" + +#: ap-gl/ap-gl.c:47 src/ap-config.c:46 +msgid "Set bridging and IP-related options" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÏÐæ§ ÍÏÓÔÁ ÔÁ ¶ò ÐÒÏÔÏËÏÌÕ" + +#: ap-gl/ap-gl.c:49 ap-gl/ap-gl.c:85 ap-gl/bridge.c:133 src/ap-config.c:48 +#: src/ap-config.c:118 src/ap-config.c:127 src/bridge.c:135 src/bridge.c:139 +msgid "Wireless" +msgstr "òÁĦÏ" + +#: ap-gl/ap-gl.c:49 src/ap-config.c:48 +msgid "Set wireless options" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ ÒÁĦÏÍÅÒÅÖ¦" + +#: ap-gl/ap-gl.c:50 src/ap-config.c:49 src/ap-config.c:61 +msgid "Privacy" +msgstr "ûÉÆÒÕ×ÁÎÎÑ" + +#: ap-gl/ap-gl.c:51 src/ap-config.c:50 src/ap-config.c:62 +msgid "MAC auth" +msgstr "íáó ÄÏÓÔÕÐ" + +#: ap-gl/ap-gl.c:52 src/ap-config.c:51 src/ap-config.c:63 +msgid "Community" +msgstr "ëÏÍ'ÀΦԦ" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Radio" +msgstr "ðÅÒÅÄÁ×ÁÞ" + +#: ap-gl/ap-gl.c:53 src/ap-config.c:52 +msgid "Set radio signal power and antenna options" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÏÔÕÖΦÓÔØ ÐÅÒÅÄÁ×ÁÞÁ ÔÁ ÁÎÔÅÎÉ" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Upload" +msgstr "úÁ×ÁÎÔÁÖÉÔÉ" + +#: ap-gl/ap-gl.c:66 src/ap-config.c:83 +msgid "Make current configuration active" +msgstr "úÒÏÂÉÔÉ ÐÏÔÏÞÎÕ ËÏÎƦÇÕÒÁæÀ ÁËÔÉ×ÎÏÀ" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Defaults" +msgstr "æÁÂÒ¦ÞΦ" + +#: ap-gl/ap-gl.c:67 src/ap-config.c:84 +msgid "Restore factory default settings" +msgstr "÷¦ÄÎÏ×ÉÔÉ ÆÁÂÒ¦ÞΦ ÎÁÓÔÒÏÊËÉ." + +#: ap-gl/ap-gl.c:69 src/ap-config.c:86 src/ap-config.c:94 +msgid "Reset" +msgstr "òÅÓÔÁÒÔ" + +#: ap-gl/ap-gl.c:70 src/ap-config.c:87 +msgid "Reset AP. All not uploaded configuration will be lost" +msgstr "ðÅÒÅÚÁ×ÁÎÔÁÖÉÔÉ áò. îÅÁËÔÉצÚÏ×ÁΦ ÚͦÎÉ Õ ËÏÎƦÇÕÒÁæ§ ÂÕÄÁ ×ÔÒÁÞÅÎÏ." + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "TestMode" +msgstr "ôÅÓÔ" + +#: ap-gl/ap-gl.c:72 src/ap-config.c:89 +msgid "Put Access Point in test mode" +msgstr "ðÏÓÔÁ×ÉÔÉ áò Õ ÔÅÓÔÏ×ÉÊ ÒÅÖÉÍ" + +#: ap-gl/ap-gl.c:83 src/ap-config.c:116 src/ap-config.c:126 +msgid "SysInfo" +msgstr "óÉÓÔÅÍÁ" + +#: ap-gl/ap-gl.c:84 ap-gl/bridge.c:132 src/ap-config.c:117 src/bridge.c:134 +#: src/bridge.c:138 +msgid "Ethernet" +msgstr "åÚÅÒÎÅÔ" + +#: ap-gl/ap-gl.c:84 src/ap-config.c:117 +msgid "Get ethernet port statistics" +msgstr "ïÔÒÉÍÁÔÉ ÓÔÁÔÉÓÔÉËÕ ÅÚÅÒÎÅÔ ÐÏÒÔÕ" + +#: ap-gl/ap-gl.c:86 src/ap-config.c:119 src/ap-config.c:128 +msgid "Stations" +msgstr "óÔÁÎæ§" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "KnownAPs" +msgstr "÷¦ÄÏͦôÏÞËÉ" + +#: ap-gl/ap-gl.c:88 src/ap-config.c:121 +msgid "Get info about known Access Points" +msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁÃÉÀ ÐÒÏ ×¦ÄÏͦ ôÏÞËÉ äÏÓÔÕÐÕ" + +#: ap-gl/ap-gl.c:105 src/ap-config.c:154 +msgid "Info" +msgstr "¶ÎÆÏÒÍÁæÑ" + +#: ap-gl/ap-gl.c:106 src/ap-config.c:155 +msgid "Config" +msgstr "õÓÔÁÎÏ×ËÉ" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Commands" +msgstr "ëÏÍÁÎÄÉ" + +#: ap-gl/ap-gl.c:107 src/ap-config.c:156 +msgid "Execute commands on Access Point" +msgstr "÷ÉËÏÎÁÔÉ ËÏÍÁÎÄÉ ÎÁ áò" + +#: ap-gl/ap-gl.c:109 src/ap-config.c:158 +msgid "Connect" +msgstr "ú'¤ÄÎÁÎÎÑ" + +#: ap-gl/ap-gl.c:110 src/ap-config.c:159 +msgid "Search" +msgstr "ðÏÛÕË" + +#: ap-gl/ap-gl.c:111 lib/common.c:52 src/ap-config.c:160 +msgid "About" +msgstr "ðÒÏÇÒÁÍÁ" + +#: ap-gl/ap-gl.c:112 src/ap-config.c:161 +msgid "Shell" +msgstr "ïÂÏÌÏÎËÁ" + +#: ap-gl/ap-gl.c:113 src/ap-config.c:162 +msgid "Exit" +msgstr "÷ÉȦÄ" + +#: ap-gl/ap-gl.c:162 src/ap-config.c:211 +#, c-format +msgid "Wireless Access Point Configurator ver. %s" +msgstr "ëÏÎƦÇÕÒÁÔÏÒ ÔÏÞËÉ ÄÏÓÔÕÐÕ ÒÁĦÏÍÅÒÅÖ¦ ×ÅÒ. %s" + +#: ap-gl/auth_mac.c:28 src/auth_mac.c:28 +msgid "AuthorizedMacTableString packet error" +msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ AuthorizedMacTableString" + +#: ap-gl/auth_mac.c:30 src/auth_mac.c:30 +msgid "[A] MAC authorization: " +msgstr "[A] Máó Á×ÔÏÒÉÚÁæÑ: " + +#: ap-gl/auth_mac.c:31 src/auth_mac.c:31 +msgid "Enter MAC: " +msgstr "÷×ÅĦÔØ íáó:" + +#: ap-gl/auth_mac.c:32 src/auth_mac.c:32 +msgid "Delete Num: " +msgstr "÷ÉÄÁÌÉÔÉ ÎÏÍÅÒ:" + +#: ap-gl/auth_mac.c:33 src/auth_mac.c:33 +msgid "Authorized MAC addresses" +msgstr "á×ÔÏÒÉÚÏ×ÁΦ íáó ÁÄÒÅÓÉ" + +#: ap-gl/auth_mac.c:34 src/auth_mac.c:34 +msgid "NUM MAC address" +msgstr "# íáó ÁÄÒÅÓÁ" + +#: ap-gl/auth_mac.c:35 src/auth_mac.c:35 +msgid "A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit" +msgstr "" +"A Á×ÔÏÒÉÚÁæÑ; N ÎÏ×Á; D ×ÉÄÁÌÉÔÉ; ÓÔÒ¦ÌËÉ ÐÅÒÅÇÌÑÄ; W ÚÁÐÉÓÁÔÉ; Q ×ÉÊÔÉ" + +#: ap-gl/auth_mac.c:36 +msgid "A - auth; IPSTF - set; W - write conf; Q - quit" +msgstr "A - a×ÔÏÒÉÚÁæÑ; IPSTF - ×ÓÔÁÎÏ×ÉÔÉ;W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" + +#: ap-gl/auth_mac.c:37 +msgid "A - auth; W - write conf; Q - quit" +msgstr "A - a×ÔÏÒÉÚÁæÑ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" + +#: ap-gl/auth_mac.c:39 +msgid "[I] RADIUS SERVER IP: " +msgstr "[I] ¶ò ÁÄÒÅÓÁ RADIUS ÓÅÒ×ÅÒÁ: " + +#: ap-gl/auth_mac.c:40 +msgid "[P] RADIUS SERVER PORT: " +msgstr "[P] ðÏÒÔ RADIUS ÓÅÒ×ÅÒÁ: " + +#: ap-gl/auth_mac.c:41 +msgid "[S] RADIUS SERVER SECRET: " +msgstr "[S] ðÁÒÏÌØ RADIUS ÓÅÒ×ÅÒÁ: " + +#: ap-gl/auth_mac.c:42 +msgid "[T] REAUTHORIZATION TIME: " +msgstr "[T] þÁÓ ÐÅÒÅÁ×ÔÏÒÉÚÁæ§: " + +#: ap-gl/auth_mac.c:43 +msgid "[F] RADIUS SOURCE PORT: " +msgstr "[F] ÷ÉȦÄÎÉÊ ÐÏÒÔ RADIUS ÐÁËÅÔ¦×: " + +#: ap-gl/auth_mac.c:88 +msgid "Internal" +msgstr "÷ÎÕÔÒ¦ÛÎÑ ÔÁÂÌÉÃÑ" + +#: ap-gl/auth_mac.c:96 +msgid "" +msgstr "<ÐÒÉÈÏ×ÁÎÏ>" + +#: ap-gl/bridge.c:27 src/bridge.c:27 +msgid "[I] IP: " +msgstr "[I] ¶ò: " + +#: ap-gl/bridge.c:28 src/bridge.c:28 +msgid "[N] Netmask: " +msgstr "[N] íÁÓËÁ: " + +#: ap-gl/bridge.c:29 src/bridge.c:29 +msgid "[G] Gateway: " +msgstr "[G] ûÌÀÚ: " + +#: ap-gl/bridge.c:30 src/bridge.c:30 +msgid "[F] Filter non-IP traffic: " +msgstr "[F] æ¦ÌØÔÒÕ×ÁÔÉ ÎÅ-¶ò ÔÒÁƦË: " + +#: ap-gl/bridge.c:31 src/bridge.c:31 +msgid "[P] Primary port: " +msgstr "[P] çÏÌÏ×Î¦Ê ÐÏÒÔ: " + +#: ap-gl/bridge.c:32 src/bridge.c:32 +msgid "Attached station MAC: " +msgstr "ð¦Ä'¤ÄÎÁÎÁ ÓÔÁÎæÑ: " + +#: ap-gl/bridge.c:33 src/bridge.c:33 +msgid "[D] DHCP client: " +msgstr "[D] DHCP Ë̦¤ÎÔ: " + +#: ap-gl/bridge.c:34 src/bridge.c:34 +msgid "[O] Operational mode: " +msgstr "[O] òÅÖÉÍ ÒÏÂÏÔÉ: " + +#: ap-gl/bridge.c:35 src/bridge.c:35 +msgid "[M] Preferred BSSID (remote MAC addr.): " +msgstr "[M] ÷¦ÄÄÁÌÅÎÉÊ Máó: " + +#: ap-gl/bridge.c:37 src/bridge.c:37 +msgid "[T] Trap-sending port(s): " +msgstr "[T] ðÏÒÔ ×¦ÄÐÒÁ×ËÉ ÔÒÁЦ×: " + +#: ap-gl/bridge.c:38 src/bridge.c:38 +msgid "[R] Forward broadcast traffic: " +msgstr "[R] ðÅÒÅÄÁÞÁ ÂÒÏÁÄËÁÓÔÏ×ÉÈ ÐÁËÕÎ˦×: " + +#: ap-gl/bridge.c:40 +msgid "[U] Isolate wireless clients: " +msgstr "[U] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎÔ¦×: " + +#: ap-gl/bridge.c:41 src/bridge.c:41 +msgid "INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu" +msgstr "INGFPDOMSCTRBU - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" + +#: ap-gl/bridge.c:125 src/bridge.c:127 +msgid "Wireless Bridge Point to MultiPoint" +msgstr "òÁĦÏÍÏÓÔ ÔÏÞËÁ-ÂÁÇÁÔÏÔÏÞËÁ" + +#: ap-gl/bridge.c:126 src/bridge.c:128 +msgid "Access Point" +msgstr "âÁÚÏ×Á ÓÔÁÎæÑ" + +#: ap-gl/bridge.c:127 src/bridge.c:129 +msgid "Access Point client" +msgstr "ë̦¤ÎÔÓØËÁ ÓÔÁÎæÑ" + +#: ap-gl/bridge.c:128 src/bridge.c:130 +msgid "Wireless Bridge Point to Point" +msgstr "òÁĦÏÍÏÓÔ ÔÏÞËÁ-ÔÏÞËÁ" + +#: ap-gl/bridge.c:129 src/bridge.c:131 +msgid "Repeater" +msgstr "ðÏ×ÔÏÒÀ×ÁÞ" + +#: ap-gl/stations.c:31 src/stations.c:29 +msgid "Associated Stations" +msgstr "áÓÏæÊÏ×ÁΦ ÓÔÁÎæ§" + +#: ap-gl/stations.c:83 src/stations.c:87 +msgid "AP now in AP Client Mode and don't has any associated stations" +msgstr "îÅÍÁ¤ ЦÄ'¤ÄÎÁÎÉÈ ÓÔÁÎÃ¦Ê - ôÏÞËÁ äÏÓÔÕÐÕ Õ ÒÅÖÉͦ Ë̦¤ÎÔÁ" + +#: ap-gl/stations.c:109 +msgid "# MAC LQ RSSI Status Port IP" +msgstr "# MAC LQ RSSI óÔÁÔ ðÏÒÔ IP" + +#: ap-gl/stations.c:135 src/stations.c:139 +msgid "AssociatedSTAsInfo packet error" +msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ AssociatedSTAsInfo." + +#: ap-gl/stations.c:164 src/stations.c:161 src/stations.c:313 +msgid "Arrows - scroll; S - save to file; Q - quit to menu." +msgstr "óÔÒ¦ÌËÉ - ÐÒÏËÒÕÔËÁ; S - ÚÂÅÒÅÇÔÉ Õ ÆÁÊÌ; Q - ×ÉÊÔÉ × ÍÅÎÀ." + +#: lib/aps.c:128 +msgid "Your Access Point is not in \"AP client\" mode => getting" +msgstr "÷ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÎÅ Õ ÒÅÖÉͦ ë̦¤ÎÔÁ, ÏÔÒÉÍÁÎÎÑ ÄÁÎÎÉÈ" + +#: lib/aps.c:131 +msgid "up-to-date \"Known APs\" info requires your AP to be" +msgstr "ÐÒÏ ×¦ÄÏͦ ÔÏÞËÉ ÄÏÓÔÕÐÕ ×ÉÍÁÇÁ¤ ÔÉÍÞÁÓÏ×ÏÇÏ ËÏÎƦÇÕÒÕ×ÁÎÎÑ" + +#: lib/aps.c:134 +msgid "temporarily configured into \"AP client\" mode and rebooted." +msgstr "Õ ÒÅÖÉÍ ë̦¤ÎÔÁ ÔÁ ÐÅÒÅÚÁ×ÁÎÔÁÖÅÎÎÑ." + +#: lib/aps.c:137 +msgid "Your AP will be reconfigured back to original mode by this" +msgstr "÷ÁÛÕ ÔÏÞËÕ ÄÏÓÔÕÐÕ ÂÕÄÅ ÐÏ×ÅÒÎÅÎÏ ÄÏ ÐÏÞÁÔËÏ×ÏÇÏ ÓÔÁÎÕ ËÏÌÉ" + +#: lib/aps.c:140 +msgid "utility once you quit the \"KnownAP\" view. This, in turn, may" +msgstr "÷É ×ÉÊÄÅÔÅ Ú ÒÅÖÉÍÕ \"÷¦ÄÏͦôÏÞËÉ\". ¶ÎËÏÌÉ, ÃÅ ÍÏÖÅ ÓÐÒÉÞÉÎÉÔÉ" + +#: lib/aps.c:143 +msgid "cause loss of Access Point's current configuration." +msgstr "×ÔÒÁÔÕ ÐÏÔÏÞÎϧ ËÏÎƦÇÕÒÁæ§ ÷ÁÛϧ ôÏÞËÉ äÏÓÔÕÐÕ" + +#: lib/aps.c:147 +msgid "Do NOT answer \"Yes\" if you're connected to the Access Point" +msgstr "îŠצÄÐÏצÄÁÊÔÅ ôÁË ÑËÝÏ ÷É Ð¦Ä'¤ÄÎÁΦ ÄÏ ÔÏÞËÉ ÄÏÓÔÕÐÕ" + +#: lib/aps.c:150 +msgid "via its wireless port." +msgstr "ÞÅÒÅÚ §§ ÒÁĦÏÐÏÒÔ." + +#: lib/aps.c:152 lib/cmd.c:49 lib/cmd.c:92 lib/test.c:93 +msgid "Do you want to continue? " +msgstr "âÁÖÁ¤ÔÅ ÐÒÏÄÏ×ÖÉÔÉ? " + +#: lib/aps.c:154 +msgid "(Y - Yes; N - No (it's safer to answer No)" +msgstr "(Y - ÔÁË; N - Φ (ÂÅÚÐÅÞΦÛŠצÄÐÏצÓÔÉ Î¦)" + +#: lib/aps.c:202 +msgid "Known Access Points" +msgstr "÷¦ÄÏͦ ÔÏÞËÉ ÄÏÓÔÕÐÕ" + +#: lib/aps.c:217 +msgid "NetworkType" +msgstr "ôÉÐ ÍÅÒÅÖ¦" + +#: lib/aps.c:293 +msgid "Infrastructure" +msgstr "¶ÎÆÒÁÓÔÒÕËÔÕÒÁ" + +#: lib/aps.c:352 lib/aps.c:360 lib/aps.c:368 +msgid "CN: Channel Name; P: Preambule Type (S: Short; L: Long);" +msgstr "CN: ëÁÎÁÌ; P: ôÉÐ ÐÒÅÁÍÂÕÌÉ (S: ëÏÒÏÔËÁ; L: äÏ×ÇÁ)" + +#: lib/aps.c:354 +msgid "RSSI: Radio Signal Strength Indicator [%];" +msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [%];" + +#: lib/aps.c:356 lib/aps.c:364 +msgid "LQ: Link Quality [%]" +msgstr "LQ: ñ˦ÓÔØ Ú'¤ÄÎÁÎÎÑ [%]" + +#: lib/aps.c:362 +msgid "RSSI: Radio Signal Strength Indicator [dBm];" +msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [dBm];" + +#: lib/aps.c:370 +msgid "RSSI: Radio Signal Strength Indicator [raw];" +msgstr "RSSI: ¶ÎÄÉËÁÔÏÒ ÐÏÔÕÖÎÏÓÔ¦ ÓÉÇÎÁÌÕ [ÎÅÏÂÒÏÂÌÅÎÅ];" + +#: lib/aps.c:372 +msgid "LQ: Link Quality [raw]" +msgstr "LQ: ñ˦ÓÔØ Ú'¤ÄÎÁÎÎÑ [ÎÅÏÂÒÏÂÌÅÎÅ]" + +#: lib/aps.c:378 +msgid "" +"# con. to this AP; R refresh with reset; S refresh w/o reset; T toggle; Q " +"quit" +msgstr "" +"# ÐÒɤÄÎÁÔÉÓÑ ÄÏ áò; R ÐÅÒÅÚÁ×ÁÎÔÁÖÉÔÉ; S ÐÏÎÏ×ÉÔÉ; T ÐÅÒÅÍËÎÕÔÉ; Q ×ÉÊÔÉ" + +#: lib/aps.c:380 +msgid "" +"# con. to this AP; R initiate AP scan; S refresh view; T toggle view; Q quit" +msgstr "" +"# ÐÒɤÄÎÁÔÉÓÑ ÄÏ áò; R ÚÁÐÕÓÔÉÔÉ ÐÏÛÕË; S ÐÏÎÏ×ÉÔÉ; T ÐÅÒÅÍËÎÕÔÉ; Q ×ÉÊÔÉ" + +#: lib/aps.c:509 lib/ap_search.c:152 +#, c-format +msgid "Failure in sendto(): %s. Press any key." +msgstr "îÅ×iÒÎÉÊ sendto: %s. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/aps.c:518 +msgid "You have just initiated the AP scan. Be advised that it may" +msgstr "÷É ÚÁÐÕÓÔÉÌÉ ÓËÁÎÕ×ÁÎÎÑ ÄÌÑ ÐÏÛÕËÕ ÔÏÞÏË ÄÏÓÔÕÐÕ. ãÅ ÍÏÖÅ" + +#: lib/aps.c:521 +msgid "take a few seconds for your Access Point to find out some" +msgstr "ÚÁÊÎÑÔÉ ÄÅ˦ÌØËÁ ÓÅËÕÎÄ ÄÏËÉ ×ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÚÎÁÊÄÅ" + +#: lib/aps.c:524 +msgid "values, so expect finishing the scan in about 5 seconds." +msgstr "" +"ÎÅÏÂȦÄΦ ÄÁÎΦ, ÔÏÖ ÒÁÚÒÁÈÏ×ÕÊÔÅ ÎÁ ÚÁ×ÅÒÛÅÎΦ ÓËÁÎÕ×ÁÎÎÑ ÚÁ 5 ÓÅËÕÎÄ." + +#: lib/aps.c:527 +msgid "Also note that your Access Point stops forwarding the network" +msgstr "ôÁËÖ ÚÁÕ×ÁÖÔÅ, ÝÏ ÷ÁÛÁ ÔÏÞËÁ ÄÏÓÔÕÐÕ ÐÒÉÐÉÎѤ ÐÅÒÅÄÁ×ÁÔÉ" + +#: lib/aps.c:530 +msgid "traffic while the scan is in progress, but restores itself" +msgstr "ÍÅÒÅÖÅ×ÉÊ ÔÒÁÆ¦Ë ÐÒÉ ÓËÁÎÕ×ÁÎΦ, ÔÁ צÄÎÏ×ÌÀ¤ ÓÅÂÅ Õ ÎÏÒÍÁÌØÎÉÊ" + +#: lib/aps.c:533 +msgid "to normal operation in time ranging up to 1 minute." +msgstr "ÒÅÖÉÍ ÒÁÂÏÔÉ ÐÒÉÂÌÉÚÎÏ ÚÁ È×ÉÌÉÎÕ." + +#: lib/aps.c:536 +msgid "Hence, if you are connected to target Access Point via its" +msgstr "ôÁËÏÖ, ÑËÝÏ ÷É Ð¦Ä'¤ÄÎÁΦ ÄÏ Ã¦ÏÌØÏ×ϧ ÔÏÞËÉ ÄÏÓÔÕÐÕ ÞÅÒÅÚ §§" + +#: lib/aps.c:539 +msgid "wireless port, you need to wait a bit longer" +msgstr "ÒÁÄ¦Ï ÐÏÒÔ, ÔÏ ÷ÁÍ ÐÏÔÒ¦ÂÎÏ ÚÁÖÄÁÔÉ ÔÒÏÈÉ ÄÏ×ÛÅ " + +#: lib/aps.c:542 +msgid "after pressing 'S'." +msgstr "ЦÓÌÑ ÎÁÔÉÓËÁÎÎÑ 'S'." + +#: lib/ap_search.c:49 +msgid "# Type IP Description" +msgstr "# ôÉÐ IP ïÐÉÓ" + +#: lib/ap_search.c:88 +msgid "Please wait while scanning, or press 'Q' to quit." +msgstr "úÁÞÅËÁÊÔÅ ÐÏËÉ ÊÄÅ ÐÏÛÕË ÁÂÏ ÎÁÔÉÓΦÔØ 'Q' ÄÌÑ ×ÉÈÏÄÕ. " + +#: lib/ap_search.c:104 +msgid "Can't set broadcast option on socket. Press any key." +msgstr "" +"îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÂÒÏÁÄËÁÓÔÏ×ÉÊ ÓÏËÅÔ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/ap_search.c:113 +msgid "Can't set multicast membership on socket. Press any key." +msgstr "îÅ ÍÏÖÕ ×ÓÔÁÎÏ×ÉÔÉ ÍÕÌØÔÉËÁÓÔÏ×ÉÊ ÓÏËÅÔ. ðÒÏÄÏ×ÖÅÎÎÑ ÂÕÄØ ÑËÁ ËÌÁצÛÁ." + +#: lib/ap_search.c:119 +msgid "Scanning via network interface:" +msgstr "ûÕËÁ¤ÍÏ ÞÅÒÅÚ ÍÅÒÅÖÅ×ÉÊ ¦ÎÔÅÒÆÅÊÓ:" + +#: lib/ap_search.c:120 +#, c-format +msgid " Index: %i" +msgstr " ¶ÎÄÅËÓ: %i" + +#: lib/ap_search.c:122 +#, c-format +msgid " Name: %s" +msgstr " ¶Í'Ñ: %s" + +#: lib/ap_search.c:124 +#, c-format +msgid " IP: %s" +msgstr " IP: %s" + +#: lib/ap_search.c:133 +#, c-format +msgid "Scanning for AP type: %s" +msgstr "÷ÉÚÎÁÞÁÀ ÔÉÐ áò: %s" + +#: lib/ap_search.c:311 +msgid "Access Points Search" +msgstr "ðÏÛÕË ÔÏÞÏË ÄÏÓÔÕÐÕ" + +#: lib/ap_search.c:328 +msgid "realloc() error." +msgstr "ðÏÍÉÌËÁ realloc()." + +#: lib/ap_search.c:340 +msgid "Network interface discovery error." +msgstr "ðÏÍÉÌËÁ ×ÉÚÎÁÞÅÎÎÑ ÍÅÒÅÖÅ×ÉÈ ¦ÎÔÅÒÆÅÊÓ¦×." + +#: lib/ap_search.c:415 +msgid "No local network interfaces found. Press any key." +msgstr "îÅ ÚÎÁÊÄÅÎÏ ÍÅÒÅÖÅ×ÉÈ ¦ÎÔÅÒÆÅÊÓ¦×. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/ap_search.c:417 +msgid "No directly reachable Access Points found. Press any key." +msgstr "îÅ ÚÎÁÊÄÅÎÏ ÄÏÓÔÕÐÎÉÈ ÎÁÐÒÑÍÕ áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/ap_search.c:421 +msgid "Program-hardcoded maximum number of APs found." +msgstr "úÎÁÊÄÅÎÏ ÍÁËÓÉÍÁÌØÎÕ ÄÌÑ ÐÒÏÇÒÁÍÉ Ë¦ÌØ˦ÓÔØ áò." + +#: lib/ap_search.c:425 +msgid "# - connect to AP; Q - quit" +msgstr "# - ЦÄ'¤ÄÎÁÔÉÓÑ ÄÏ AP; Q - ×ÉÊÔÉ" + +#: lib/ap-utils.h:74 +msgid "MAC address: " +msgstr "MAC ÁÄÒÅÓÁ: " + +#: lib/ap-utils.h:75 +msgid "[S] SNMP traps: " +msgstr "[S] SNMP ÔÒÁÐÉ: " + +#: lib/ap-utils.h:77 +msgid "[C] Frequency channel: " +msgstr "[C] þÁÓÔÏÔÎÉÊ ËÁÎÁÌ: " + +#: lib/ap-utils.h:79 +msgid "Receive antenna:" +msgstr "ðÒÉÊÍÁÀÞÁ ÁÎÔÅÎÁ:" + +#: lib/ap-utils.h:80 +msgid "[U] Left" +msgstr "[U] ì¦×Á" + +#: lib/ap-utils.h:81 +msgid "[I] Right" +msgstr "[I] ðÒÁ×Á" + +#: lib/ap-utils.h:82 +msgid "Transmit antenna:" +msgstr "ðÅÒÅÄÁÀÞÁ ÁÎÔÅÎÁ:" + +#: lib/ap-utils.h:83 +msgid "[O] Left" +msgstr "[O] ì¦×Á" + +#: lib/ap-utils.h:84 +msgid "[P] Right" +msgstr "[P] ðÒÁ×Á" + +#: lib/ap-utils.h:85 +msgid "Diversity select:" +msgstr "÷ÉÂ¦Ò ÁÎÔÅÎÉ:" + +#: lib/ap-utils.h:86 +msgid "[T] Left" +msgstr "[T] ì¦×Á" + +#: lib/ap-utils.h:87 +msgid "[Y] Right" +msgstr "[Y] ðÒÁ×Á" + +#: lib/ap-utils.h:89 +msgid "Yes" +msgstr "ôÁË" + +#: lib/ap-utils.h:90 +msgid "No" +msgstr "î¦" + +#: lib/ap-utils.h:92 +msgid "On" +msgstr "ôÁË" + +#: lib/ap-utils.h:93 +msgid "Off" +msgstr "î¦" + +#: lib/ap-utils.h:95 +msgid "Basic" +msgstr "ïÓÎÏ×ÎÉÊ" + +#: lib/ap-utils.h:97 +msgid "Press any key to continue." +msgstr "âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/ap-utils.h:99 +msgid "Unable to write data to AP. Press any key to continue." +msgstr "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÄÁÎΦ × áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/ap-utils.h:100 +msgid "Unable to retrieve data from AP. Press any key to continue." +msgstr "îÅ ÍÏÖÕ ÏÔÒÉÍÁÔÉ ÄÁÎΦ Ú áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/ap-utils.h:101 +msgid "Retrieving data from AP. Please wait..." +msgstr "ïÔÒÉÍÕÀ ÄÁÎΦ - ÚÁÖĦÔØ ÂÕÄØ ÌÁÓËÁ..." + +#: lib/ap-utils.h:102 +msgid "Writing data to AP. Please wait..." +msgstr "úÁÐÉÓÕÀ ÄÁÎΦ - ÚÁÖĦÔØ ÂÕÄØ ÌÁÓËÁ..." + +#: lib/ap-utils.h:103 +msgid "Configuration written to the AP. Press any key to continue." +msgstr "ëÏÎƦÇÕÒÁæÀ ÚÁÐÉÓÁÎÏ × áò. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/ap-utils.h:105 +msgid "Create socket error. Press any key." +msgstr "ðÏÍÉÌËÁ ÓÔ×ÏÒÅÎÎÑ ÓÏËÅÔÕ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ" + +#: lib/ap-utils.h:106 +msgid "Bind socket error. Press any key." +msgstr "ðÏÍÉÌËÁ ÐÒÉ×`ÑÚËÉ ÓÏËÅÔÕ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ" + +#: lib/ap-utils.h:108 +msgid "Back to main menu" +msgstr "ðÏ×ÅÒÎÕÔÉÓÑ ÄÏ ÍÅÎÀ" + +#: lib/ap-utils.h:109 +msgid "Exit program" +msgstr "÷ÉÊÔÉ Ú ÐÒÏÇÒÁÍÉ" + +#: lib/ap-utils.h:110 +msgid "Run subshell. To return type 'exit'." +msgstr "úÁÐÕÓÔÉÔÉ ÛÅÌÌ. äÌÑ ÐÏ×ÅÒÎÅÎÎÑ ÎÁÂÅÒ¦ÔØ 'exit'." + +#: lib/ap-utils.h:111 +msgid "Short info about program" +msgstr "ðÒÏ ÐÒÏÇÒÁÍÍÕ" + +#: lib/ap-utils.h:112 +msgid "Find connected Access Points" +msgstr "úÎÁÊÔÉ Ð¦ÄËÌÀÞÅΦ áò" + +#: lib/ap-utils.h:113 +msgid "Set connection options: ip and community" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ Ú`¤ÄÎÁÎÎÑ" + +#: lib/ap-utils.h:114 +msgid "Set encryption; edit WEP keys" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÛÉÆÒÕ×ÁÎÎÑ, ÒÅÄÁÇÕ×ÁÔÉ WEP ËÌÀÞ¦" + +#: lib/ap-utils.h:115 +msgid "Set MAC authorization; edit MAC authorization table" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ íáó Á×ÔÏÒÉÚÁæÀ; ÒÅÄÁÇÕ×ÁÔÉ ÔÁÂÌÉÃÀ Á×ÔÏÒÉÚÁæ§" + +#: lib/ap-utils.h:116 +msgid "Set SNMP community/password for access to the AP" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ SNMP ËÏÍ'ÀΦԦ/ÐÁÒÏÌØ ÄÌÑ ÄÏÓÔÕÐÕ ÄÏ áò" + +#: lib/ap-utils.h:117 +msgid "Get info about AP hardware and firmware" +msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ÁÐÁÒÁÔÎÅ ÔÁ ÐÒÏÇÒÁÍÎÅ ÚÁÂÅÚÐÅÞÅÎÎÑ" + +#: lib/ap-utils.h:118 +msgid "Get wireless port statistics" +msgstr "ïÔÒÉÍÁÔÉ ÓÔÁÔÉÓÔÉËÕ ÒÁÄ¦Ï ÐÏÒÔÕ" + +#: lib/ap-utils.h:119 +msgid "Get list of currently associated stations (Access Point clients)" +msgstr "ïÔÒÉÍÁÔÉ ÐÅÒÅÌ¦Ë ÁÓÏæÊÏ×ÁÎÉÈ ÓÔÁÎÃ¦Ê (Ë̦¤ÎÔ¦× áò)" + +#: lib/ap-utils.h:120 +msgid "Get info and statistics from AP" +msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÔÁ ÓÔÁÔÉÓÔÉËÕ Ú áò" + +#: lib/ap-utils.h:121 +msgid "Set various configuration options" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒÉ ËÏÎƦÇÕÒÁæ§" + +#: lib/cmd.c:25 +msgid "" +"(Y - Yes; N - No (it's safer to answer No, unless you really need this.)" +msgstr "(Y - ÔÁË; N - Φ (ÂÅÚÐÅÞΦÛŠצÄÐÏצÓÔÉ Î¦, ÑËÝÏ ×ÁÍ ÃÅ ÎÅ ÐÏÔÒ¦ÂÎÏ.)" + +#: lib/cmd.c:44 +msgid "Restore factory default configuration" +msgstr "÷¦ÄÎÏ×ÌÅÎÎÑ ÆÁÂÒ¦ÞÎϧ ËÏÎƦÇÕÒÁæ§" + +#: lib/cmd.c:47 +msgid "After restoring factory defaults your current configuration." +msgstr "ð¦ÓÌÑ ×¦ÄÎÏ×ÌÅÎÎÑ ÆÁÂÒ¦ÞÎϧ ËÏÎƦÇÕÒÁæ§ ÐÏÔÏÞÎÕ ËÏÎƦÇÕÒÁæÀ" + +#: lib/cmd.c:48 +msgid "will be lost." +msgstr "ÂÕÄÅ ×ÔÒÁÞÅÎÏ." + +#: lib/cmd.c:79 +msgid "Factory default settings loaded. Press any key to continue." +msgstr "æÁÂÒ¦ÞΦ ÐÁÒÁÍÅÔÒÉ ×¦ÄÎÏ×ÌÅÎÏ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/cmd.c:88 +msgid "Reset Access Point" +msgstr "ðÅÒÅÚÁ×ÁÎÔÁÖÉÔÉ áò" + +#: lib/cmd.c:91 +msgid "By reset you'll lose all non-uploaded configuration." +msgstr "ðÒÉ ÐÅÒÅÚÁ×ÁÎÔÁÖÅÎΦ ×É ×ÔÒÁÔÉÔÅ ÕÓ¦ ÎÅÁËÔÉצÚÏ×ÁΦ ÚͦÎÉ." + +#: lib/cmd.c:113 +msgid "Access Point reset. Press any key to continue." +msgstr "ðÅÒÅÚÁ×ÁÎÔÁÖÅÎÎÑ ×ÉËÏÎÁÎÏ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/cmd.c:146 +msgid "Upload configuration" +msgstr "áËÔÉצÚÕ×ÁÔÉ ÚͦÎÉ" + +#: lib/cmd.c:149 +msgid "You need to upload the configuration only if you've changed" +msgstr "áËÔÉצÚÁÃ¦Ñ ÐÏÔÒ¦ÂÎÁ ÑËÝÏ ÚͦÎÅÎÏ Ñ˦ÓØ ÐÁÒÁÍÅÔÒÉ." + +#: lib/cmd.c:152 +msgid "some option values before. Using this option may cause loss" +msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ Ã¦¤§ ËÏÍÁÎÄÉ ÍÏÖÅ ÍÁÔÉ ÎÁÓ̦ÄËÏÍ ×ÔÒÁÔÕ" + +#: lib/cmd.c:153 +msgid "of your current configuration." +msgstr "÷ÁÛϧ ÐÏÔÏÞÎϧ ËÏÎƦÇÕÒÁæ§." + +#: lib/cmd.c:176 +msgid "Configuration uploaded. Press any key to continue." +msgstr "ëÏÎƦÇÕÒÁæÀ ÁËÔÉצÚÏ×ÁÎÏ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/common.c:30 +msgid "Autodetect AP type? " +msgstr "á×ÔÏÍÁÔÉÞÎÏ ×ÉÚÎÁÞÉÔÉ ÔÉÐ áò? " + +#: lib/common.c:31 +msgid "Access Point IP-address: " +msgstr "¶ò ÁÄÒÅÓÁ áò: " + +#: lib/common.c:32 +msgid "Password (community): " +msgstr "ðÁÒÏÌØ (ËÏÍ`ÀΦԦ): " + +#: lib/common.c:33 +msgid "AP type: " +msgstr "ôÉÐ áò: " + +#: lib/common.c:34 +msgid "Save connect-settings: " +msgstr "úÂÅÒÅÇÔÉ Ã¦ ÐÁÒÁÍÅÔÒÉ: " + +#: lib/common.c:69 +#, c-format +msgid "From %s" +msgstr "Ú %s" + +#: lib/common.c:71 +#, c-format +msgid "Version %s" +msgstr "÷ÅÒÓ¦Ñ %s" + +#: lib/common.c:74 +msgid "Written by Roman Festchook roma@polesye.net" +msgstr "á×ÔÏÒ òÏÍÁÎ æÅÝÕË roma@polesye.net" + +#: lib/common.c:76 +msgid "Copyright (c) Roman Festchook 2001-2004" +msgstr "Copyright (c) òÏÍÁÎ æÅÝÕË 2001-2004" + +#: lib/common.c:79 +msgid "This program is distributed under the terms" +msgstr "ãÑ ÐÒÏÇÒÁÍÁ ÒÏÚÐÏ×ÓÀÄÖÕ¤ÔØÓÑ ÎÁ ÕÍÏ×ÁÈ" + +#: lib/common.c:81 +msgid "of the GNU General Public License version 2." +msgstr "GNU úÁÇÁÌØÎϧ ðÕÂ̦ÞÎϧ ì¦ÃÅÎÚ¦§ ×ÅÒÓ¦§ 2" + +#: lib/common.c:83 +msgid "See the included COPYING file for details." +msgstr "ÄÌÑ ¦ÎÆÏÒÍÁæ§ ÄÉצÔØÓÑ ÆÁÊÌ COPYING" + +#: lib/common.c:135 +msgid "Connect options" +msgstr "ïÐæ§ Ú'¤ÄÎÁÎÎÑ" + +#: lib/common.c:143 +msgid "Enter IP address of your Access Point." +msgstr "÷×ÅĦÔØ ¶ò ÁÄÒÅÓÕ ÔÏÞËÉ ÄÏÓÔÕÐÕ." + +#: lib/common.c:148 +msgid "Entered characters will not be displayed for security reason." +msgstr "÷×ÅÄÅΦ ÓÉÍ×ÏÌÉ ÎŠצÄÏÂÒÁÖÕÀÔØÓÑ Ú Í¦ÒËÕ×ÁΦ ÂÅÚÐÅËÉ." + +#: lib/common.c:171 +msgid "Determining AP type. Please wait..." +msgstr "÷ÉÚÎÁÞÁÀ ÔÉÐ áò - ÚÁÖĦÔØ ÂÕÄØ ÌÁÓËÁ..." + +#: lib/common.c:196 +msgid "Unable to determine AP type (no response). Press any key." +msgstr "" +"îÅ ÍÏÖÕ ×ÉÚÎÁÞÉÔÉ ÔÉÐ áò (ΊצÄÐÏצÄÁ¤). âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ" + +#: lib/file.c:176 +msgid "NUM IP ADDRESS TYPE" +msgstr " # IP áäòåóá ôéð" + +#: lib/file.c:177 +msgid "Choose an AP to connect to" +msgstr "÷ÉÂÅÒ¦ÔØ áò ÄÌÑ Ú`¤ÄÎÁÎÎÑ" + +#: lib/file.c:182 +msgid "1-9,C: connect; N: new; D: delete; W: save; Q: quit; arrows: scroll" +msgstr "" +"1-9,C Ú`¤ÄÎÁÎÎÑ; N ÎÏ×ÉÊ; D ×ÉÄÁÌÉÔÉ; W ÚÂÅÒÅÇÔÉ; Q ×ÉÊÔÉ; ÓÔÒ¦ÌËÉ ÐÒÏËÒÕÔËÁ" + +#: lib/file.c:225 +msgid "Connect to AP num:" +msgstr "ú`ÜÄÎÁÔÉÓÑ Ú áò #:" + +#: lib/file.c:250 +msgid "Delete num:" +msgstr "÷ÉÄÁÌÉÔÉ #:" + +#: lib/input.c:31 +msgid "Invalid value. Press any key to continue." +msgstr "îÅצÒÎÅ ÚÎÁÞÅÎÎÑ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/input.c:32 +#, c-format +msgid "Value must be in range %i - %i. Press any key to continue." +msgstr "" +"úÎÁÞÅÎÎÑ ÍÁ¤ ÂÕÔÉ Õ ÄÉÁÐÁÚÏΦ %i - %i. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ" + +#: lib/oui.c:6052 +msgid "Unknown or Private" +msgstr "îÅצÄÏÍÉÊ ÁÂÏ ÐÒÉ×ÁÔÎÉÊ" + +#: lib/radio.c:27 +msgid "" +"[key] - power level; UIOP or LR - antenna; W - write config; Q - quit to menu" +msgstr "# - ÐÏÔÕÖΦÓÔØ; UIOPLR - ÁÎÔÅÎÁ; W - ÚÂÅÒÅÇÔÉ; Q - ×ÉÊÔÉ" + +#: lib/radio.c:29 +msgid "Antenna:" +msgstr "áÎÔÅÎÁ:" + +#: lib/radio.c:30 +msgid "[L] Left:" +msgstr "[L] ì¦×Á" + +#: lib/radio.c:31 +msgid "[R] Right:" +msgstr "[R] ðÒÁ×Á" + +#: lib/radio.c:114 +msgid "Radio Configuration" +msgstr "ëÏÎƦÇÕÒÁÃ¦Ñ ÒÁĦÏÐÅÒÅÄÁ×ÁÞÁ" + +#: lib/radio.c:115 +msgid "Output RF signal power level (CR31 register values)" +msgstr "ò¦×ÅÎØ ×ÉȦÄÎÏÇÏ ÒÁĦÏÓÉÇÎÁÌÕ (ÚÎÁÞÅÎÎÑ ÒÅǦÓÔÒÕ CR31)" + +#: lib/radio.c:117 +msgid "Key Channel Level" +msgstr "# ËÁÎÁÌ Ò¦×ÅÎØ" + +#: lib/radio.c:273 +msgid "" +"You can't disable both antennas; unable to save antenna-config. Press any " +"key." +msgstr "÷É ÎÅ ÍÏÖÅÔÅ ×ÉÍËÎÕÔÉ ÏÂÉÄצ ÁÎÔÅÎÉ. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/scr.c:134 +#, c-format +msgid "Current AP: %s Type: %s" +msgstr "ðÏÔÏÞÎÉÊ ÐÒÉÓÔÒ¦Ê: %s ôÉÐ: %s" + +#: lib/set_community.c:28 +msgid "Set community/password" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ËÏÍ`ÀΦԦ/ÐÁÒÏÌØ" + +#: lib/set_community.c:29 +msgid "Key Access level" +msgstr "# ò¦×ÅÎØ ÄÏÓÔÕÐÕ" + +#: lib/set_community.c:30 +msgid "Community/Password" +msgstr "ëÏÍ'ÀΦԦ/ðÁÒÏÌØ" + +#: lib/set_community.c:31 +msgid "[U] User" +msgstr "[U] ëÏÒÉÓÔÕ×ÁÞ" + +#: lib/set_community.c:32 +msgid "[A] Administrator" +msgstr "[A] áÄͦΦÓÔÒÁÔÏÒ" + +#: lib/set_community.c:33 +msgid "" +"[key] - set community/password; W - write config to AP; Q - quit to menu" +msgstr "# - ×ÓÔÁÎÏ×ÉÔÉ ËÏÍ`ÀΦԦ/ÐÁÒÏÌØ; W - ÚÁÐÉÓÁÔÉ ÕÓÔÁÎÏ×ËÉ; Q - ×ÉȦÄ" + +#: lib/set_community.c:80 +msgid "[M] Manufacturer" +msgstr "[M] ÷ÉÒÏÂÎÉË" + +#: lib/stat.c:29 +msgid "Unable to get data from AP. Press Q to continue." +msgstr "îÅ ÍÏÖÕ ÏÔÒÉÍÁÔÉ ÄÁÎΦ Ú áò. îÁÔÉÓΦÔØ Q ÄÌÑ ×ÉÈÏÄÕ" + +#: lib/stat.c:30 lib/stat.c:428 +msgid "Q - quit to menu." +msgstr "Q - ×ÉÊÔÉ × ÍÅÎÀ" + +#: lib/stat.c:31 +msgid "pipe error. Press any key." +msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ pipe. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/stat.c:32 +msgid "fcntl error. Press any key." +msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ fcntl. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/stat.c:33 +msgid "fork error. Press any key." +msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ fork. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ." + +#: lib/stat.c:72 +msgid "Ethernet Statistics" +msgstr "óÔÁÔÉÓÔÉËÁ ÅÚÅÒÎÅÔ ÐÏÒÔÕ" + +#: lib/stat.c:108 +msgid "EthRxStat packet error. Press Q to continue." +msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ EthRxStat. îÁÔÉÓΦÔØ Q ÄÌÑ ×ÉÈÏÄÕ." + +#: lib/stat.c:120 +msgid "EthTxStat packet error. Press Q to continue." +msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ EthTxStat. îÁÔÉÓΦÔØ Q ÄÌÑ ×ÉÈÏÄÕ." + +#: lib/stat.c:123 +msgid "Received:" +msgstr "ðÒÉÊÎÑÔÏ:" + +#: lib/stat.c:124 +msgid "Transmitted:" +msgstr "ðÅÒÅÄÁÎÏ:" + +#: lib/stat.c:251 lib/stat.c:427 +msgid "Wireless Statistics" +msgstr "óÔÁÔÉÓÔÉËÁ ÒÁĦÏÐÏÒÔÕ" + +#: lib/stat.c:282 +msgid "WirelessStat packet error. Press Q to continue." +msgstr "ðÏÍÉÌËÏ×ÉÊ ÐÁËÅÔ WirelessStat. îÁÔÉÓΦÔØ Q ÄÌÑ ×ÉÈÏÄÕ." + +#: lib/stat.c:419 +msgid "pipe error. Press any key" +msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ pipe. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ" + +#: lib/stat.c:424 +msgid "fcntl error. Press any key" +msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ fcntl. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ" + +#: lib/stat.c:433 +msgid "fork error. Press any key" +msgstr "ðÏÍÉÌËÁ ×ÉËÏÎÁÎÎÑ fork. âÕÄØ ÑËÁ ËÌÁצÛÁ ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ" + +#: lib/sysinfo.c:31 +msgid "System Description: " +msgstr "ïÐÉÓ ÓÉÓÔÅÍÉ:" + +#: lib/sysinfo.c:93 lib/sysinfo.c:277 +msgid "System Info" +msgstr "óÉÓÔÅÍÎÁ ¦ÎÆÏÒÍÁæÑ" + +#: lib/sysinfo.c:95 +msgid "Device hardware/software/name info:" +msgstr "¶ÎÆÏÒÍÁÃ¦Ñ ÐÒÏ ÐÒÉÓÔÒ¦Ê ÁÐÁÒÁÔÕÒÁ/ÐÒÏÇÒÁÍÁ/ÎÁÚ×Á:" + +#: lib/sysinfo.c:130 +msgid "Product name:" +msgstr "¶Í`Ñ ÐÒÏÄÕËÔÕ:" + +#: lib/sysinfo.c:135 +#, c-format +msgid "Product type: %u" +msgstr "ôÉÐ ÐÒÏÄÕËÔÕ: %u" + +#: lib/sysinfo.c:138 +#, c-format +msgid "Hardware revision: %u" +msgstr "áÐÁÒÁÔÎÁ ×ÅÒÓ¦Ñ: %u" + +#: lib/sysinfo.c:141 +msgid "OEM name:" +msgstr "OEM ¶Í`Ñ:" + +#: lib/sysinfo.c:149 +#, c-format +msgid "Regulation domain: %s [%d]" +msgstr "òÅÇÕÌÑÔÏÒΦ ÏÂÍÅÖÅÎÎÑ: %s [%d]" + +#: lib/sysinfo.c:150 lib/sysinfo.c:337 +msgid "FCC (USA)" +msgstr "FCC (óûá)" + +#: lib/sysinfo.c:151 lib/sysinfo.c:338 +msgid "DOC (Canada)" +msgstr "DOC (ëÁÎÁÄÁ)" + +#: lib/sysinfo.c:152 lib/sysinfo.c:339 +msgid "ETSI (Europe)" +msgstr "ETSI (´×ÒÏÐÁ)" + +#: lib/sysinfo.c:153 lib/sysinfo.c:340 +msgid "Spain" +msgstr "¶ÓÐÁΦÑ" + +#: lib/sysinfo.c:154 lib/sysinfo.c:341 +msgid "France" +msgstr "æÒÁÎæÑ" + +#: lib/sysinfo.c:155 lib/sysinfo.c:342 +msgid "MKK (Japan)" +msgstr "MKK (ñÐÏΦÑ)" + +#: lib/sysinfo.c:155 lib/sysinfo.c:236 lib/sysinfo.c:342 +msgid "unknown" +msgstr "ÎÅצÄÏÍÉÊ" + +#: lib/sysinfo.c:158 +#, c-format +msgid "Info structure version: %u" +msgstr "÷ÅÒÓ¦Ñ ÓÔÒÕËÔÕÒÉ: %u" + +#: lib/sysinfo.c:161 lib/sysinfo.c:299 +#, c-format +msgid "Manufacturer OUI: %02X %02X %02X (%s)" +msgstr "OUI ×ÉÒÏÂÎÉËÁ: %02X %02X %02X (%s)" + +#: lib/sysinfo.c:233 +msgid "FHSS 2.4 GHz" +msgstr "FHSS 2.4 ççÃ" + +#: lib/sysinfo.c:233 +msgid "DSSS 2.4 GHz" +msgstr "ûðó 2.4 ççÃ" + +#: lib/sysinfo.c:233 +msgid "IR Baseband" +msgstr "¶ÎÆÒÁÞÅÒ×ÏÎÉÊ" + +#: lib/sysinfo.c:234 +msgid "Commercial range 0..40 C" +msgstr "ëÏÍÅÒæÊÎÉÊ Ä¦ÁÐÁÚÏÎ 0..40 C" + +#: lib/sysinfo.c:235 +msgid "Industrial range -30..70 C" +msgstr "¶ÎÄÕÓÔÒ¦ÁÌØÎÉÊ Ä¦ÁÐÁÚÏÎ -30..70 C" + +#: lib/sysinfo.c:238 +msgid "manual" +msgstr "×ÒÕÞÎÕ" + +#: lib/sysinfo.c:238 +msgid "notsupported" +msgstr "ΊЦÄÔÒÉÍÕ¤ÔØÓÑ" + +#: lib/sysinfo.c:238 +msgid "dynamic" +msgstr "ĦÎÁͦÞÎÏ" + +#: lib/sysinfo.c:287 +msgid "Manufacturer:" +msgstr "÷ÉÒÏÂÎÉË:" + +#: lib/sysinfo.c:293 +msgid "Manufacturer ID:" +msgstr "ID ×ÉÒÏÂÎÉËÁ:" + +#: lib/sysinfo.c:305 +msgid "Product Name:" +msgstr "¶Í`Ñ ÐÒÏÄÕËÔÕ:" + +#: lib/sysinfo.c:312 +msgid "Product ID:" +msgstr "ID ÐÒÏÄÕËÔÕ:" + +#: lib/sysinfo.c:318 +msgid "Product Version:" +msgstr "÷ÅÒÓ¦Ñ ÐÒÏÄÕËÔÕ:" + +#: lib/sysinfo.c:326 +#, c-format +msgid "PHYType: %s" +msgstr "ôÉÐ PHY: %s" + +#: lib/sysinfo.c:329 +#, c-format +msgid "Temperature: %s" +msgstr "ôÅÍÐÅÒÁÔÕÒÁ: %s" + +#: lib/sysinfo.c:336 +#, c-format +msgid "Regulation Domain: %s" +msgstr "òÅÇÕÌÑÔÏÒΦ ÏÂÍÅÖÅÎÎÑ: %s" + +#: lib/sysinfo.c:345 +#, c-format +msgid "Transmit Power: %u mW" +msgstr "ðÏÔÕÖΦÓÔØ: %u Í÷Ô" + +#: lib/sysinfo.c:375 +#, c-format +msgid "WEP inplemented: %s" +msgstr "ð¦ÄÔÒÉÍËÁ WEP: %s" + +#: lib/sysinfo.c:378 +#, c-format +msgid "Diversity: %s" +msgstr "÷ÉÂ¦Ò ÁÎÔÅÎÉ: %s" + +#: lib/sysinfo.c:406 +#, c-format +msgid "Uptime: %u:%02u:%02u.%02u" +msgstr "îÁÐÒÁÃØÏ×ÁÎÏ: %u:%02u:%02u.%02u" + +#: lib/sysinfo.c:422 +#, c-format +msgid "IP Address: %s" +msgstr "IP ÁÄÒÅÓÁ: %s" + +#: lib/test.c:27 +msgid "[T] Test mode: " +msgstr "[T] ôÅÓÔÏ×ÉÊ ÒÅÖÉÍ: " + +#: lib/test.c:28 +msgid "[A] Antenna: " +msgstr "[A] áÎÔÅÎÁ: " + +#: lib/test.c:29 +msgid "[S] Signal level: " +msgstr "[S] ò¦×ÅÎØ ÓÉÇÎÁÌÕ: " + +#: lib/test.c:30 +msgid "[R] Rate: " +msgstr "[R] û×ÉÄ˦ÓÔØ: " + +#: lib/test.c:31 +msgid "[F] TxFiler: " +msgstr "[F] úÁÐÏ×ÎÀ×ÁÞ ÐÅÒÅÄÁÞ¦: " + +#: lib/test.c:32 +msgid "[O] Command: " +msgstr "[O] ëÏÍÁÎÄÁ: " + +#: lib/test.c:33 +msgid "T - Test mode On/Off; CASRFO - set options; Q - quit to menu" +msgstr "T - ÒÅÖÉÍ ÔÅÓÔÕ ÔÁË/Φ; CASRFO - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; Q - ×ÉÊÔÉ × ÍÅÎÀ" + +#: lib/test.c:71 +msgid "Left" +msgstr "ì¦×Á" + +#: lib/test.c:71 +msgid "Right" +msgstr "ðÒÁ×Á" + +#: lib/test.c:88 +msgid "Test mode" +msgstr "ôÅÓÔÏ×ÉÊ ÒÅÖÉÍ" + +#: lib/test.c:91 +msgid "Using the \"Test mode\" may cause loss of your current" +msgstr "÷ÉËÏÒÉÓÔÁÎÎÑ ÔÅÓÔÏ×ÏÇÏ ÒÅÖÉÍÕ ÍÏÖÅ ÐÒÉÚ×ÅÓÔÉ ÄÏ ×ÔÒÁÔÉ" + +#: lib/test.c:92 +msgid "configuration." +msgstr "ÐÏÔÏÞÎϧ ËÏÎƦÇÕÒÁæ§." + +#: lib/test.c:95 +msgid "(Y - Yes; N - No (it's safer to answer No.)" +msgstr "(Y - ôÁË; N - î¦ (ÂÅÚÐÅÞΦÛŠצÄÐÏצÓÔÉ î¦.)" + +#: lib/test.c:118 +msgid "Options:" +msgstr "ðÁÒÁÍÅÔÒÉ:" + +#: lib/test.c:144 +msgid "Statistics:" +msgstr "óÔÁÔÉÓÔÉËÁ:" + +#: lib/test.c:145 +msgid "Success Frames: 0 Failed Frames: 0" +msgstr "÷ÄÁÌÉÈ ×¦ËÏÎ: 0 îÅ×ÄÁÌÉÈ ×¦ËÏÎ: 0" + +#: lib/test.c:207 +#, c-format +msgid "Success Frames: %lu Failed Frames: %lu" +msgstr "÷ÄÁÌÉÈ ×¦ËÏÎ: %lu îÅ×ÄÁÌÉÈ ×¦ËÏÎ: %lu" + +#: lib/wep.c:29 +msgid "[E] Standard encryption mechanism: " +msgstr "[E] óÔÁÎÄÁÒÔÎÅ ÛÉÆÒÕ×ÁÎÎÑ: " + +#: lib/wep.c:30 +msgid "[A] Allow unencrypted: " +msgstr "[A] äÏÚ×ÏÌÉÔÉ ÎÅÛÉÆÒÏ×ÁΦ: " + +#: lib/wep.c:31 +msgid "[K] Default WEP key: " +msgstr "[K] WEP ËÌÀÞ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ: " + +#: lib/wep.c:32 +msgid "[P] Public key: " +msgstr "[P] ðÕÂ̦ÞÎÉÊ ËÌÀÞ: " + +#: lib/wep.c:85 +msgid "EK1234 - set; W - write conf; Q - quit to menu" +msgstr "" +"EK1234 - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; W - ÚÁÐÉÓÁÔÉ ËÏÎƦÇÕÒÁæÀ; Q - ×ÉÊÔÉ × ÍÅÎÀ." + +#: lib/wep.c:87 lib/wep.c:249 +msgid "Privacy Settings" +msgstr "ðÁÒÁÍÅÔÒÉ ÛÉÆÒÕ×ÁÎÎÑ" + +#: lib/wep.c:94 lib/wep.c:263 +msgid "Key WEP" +msgstr "# WEP" + +#: lib/wep.c:101 +msgid "Hint! Confused by WEP key values? See man ap-config for info..." +msgstr "ðÏÒÁÄÁ! äÉ×ÕÀÔØ ÚÎÁÞÅÎÎÑ WEP-ËÌÀÞ¦×? äÉ×ÉÓØ man ap-config..." + +#: lib/wep.c:247 +msgid "AEPK1234 - set options; W - write conf; Q - quit to menu" +msgstr "AEPK1234 - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" + +#: lib/wlan.c:28 +msgid "[E] ESSID: " +msgstr "[E] ESSID (¦Í'Ñ ÍÅÒÅÖ¦): " + +#: lib/wlan.c:29 +msgid "[N] AP name: " +msgstr "[N] ¶Í`Ñ AP: " + +#: lib/wlan.c:31 +msgid "[K] AP contact: " +msgstr "[K] ëÏÎÔÁËÔÎÁ ÐÅÒÓÏÎÁ: " + +#: lib/wlan.c:32 +msgid "[L] AP location: " +msgstr "[L] í¦ÓÃÅÒÏÚÔÁÛÕ×ÁÎÎÑ: " + +#: lib/wlan.c:34 +msgid "[R] RTS threshold: " +msgstr "[R] íÅÖÁ RTS: " + +#: lib/wlan.c:35 +msgid "[F] Fragmentation threshold: " +msgstr "[F] íÅÖÁ ÆÒÁÇÍÅÎÔÁæ§: " + +#: lib/wlan.c:36 +msgid "[P] Preambule type: " +msgstr "[P] ôÉÐ ÐÒÅÁÍÂÕÌÉ: " + +#: lib/wlan.c:37 +msgid "[A] Auth type: " +msgstr "[A] á×ÔÏÒÉÚÁæÑ: " + +#: lib/wlan.c:38 +msgid "Open system" +msgstr "÷¦ÄËÒÉÔÁ ÓÉÓÔÅÍÁ" + +#: lib/wlan.c:39 +msgid "Shared key" +msgstr "óЦÌØÎÉÊ ËÌÀÞ" + +#: lib/wlan.c:40 +msgid "Both types" +msgstr "ïÂÉÄ×Á" + +#: lib/wlan.c:41 +msgid "[U] Auto rate fallback: " +msgstr "[U] á×ÔÏÍÁÔÉÞÎÏ ÐÅÒÅ×ÓÔÁÎÏ×ÌÀ×ÁÔÉ Û×ÉÄ˦ÓÔØ: " + +#: lib/wlan.c:42 +msgid "[S] Insert ESSID in broadcast packets: " +msgstr "[S] ÷ÓÔÁ×ÌÑÔÉ ESSID ÄÏ ÂÒÏÁÄËÁÓÔÏ×ÉÈ ÐÁËÅÔ¦×: " + +#: lib/wlan.c:43 +msgid "Basic and Supported rates:" +msgstr "ïÓÎÏ×Φ ÔÁ ЦÄÔÒÉÍÕ×ÁΦ Û×ÉÄËÏÓÔ¦:" + +#: lib/wlan.c:44 +msgid "Key Rate Status" +msgstr "# û×ÉÄ˦ÓÔØ óÔÁÎ" + +#: lib/wlan.c:46 +msgid "[I] International roaming: " +msgstr "[I] í¦ÖÎÁÒÏÄÎÉÊ ÒÏÕͦÎÇ: " + +#: lib/wlan.c:47 +msgid "[B] Beacon period (msec): " +msgstr "[B] ðÅÒ¦ÏÄ ÂÅËÏÎ¦× (ÍÓÅË): " + +#: lib/wlan.c:48 +msgid "[D] DTIM sending interval (beacons): " +msgstr "[D] ¶ÎÔÅÒ×ÁÌ ×¦ÄÐÒÁ×ËÉ DTIM (ÂÅËÏÎÉ): " + +#: lib/wlan.c:49 +msgid "[key] - set option; W - write conf; Q - quit to menu" +msgstr "# - ×ÓÔÁÎÏ×ÉÔÉ ÐÁÒÁÍÅÔÒ; W - ÚÁÐÉÓÁÔÉ ËÏÎƦÇÕÒÁæÀ; Q - ×ÉÊÔÉ × ÍÅÎÀ" + +#: lib/wlan.c:140 +msgid "Short" +msgstr "ËÏÒÏÔËÁ" + +#: lib/wlan.c:140 +msgid "Long" +msgstr "ÄÏ×ÇÁ" + +#: lib/wlan.c:265 +msgid "Wireless Settings" +msgstr "ðÁÒÁÍÅÔÒÉ ÒÁĦÏÍÅÒÅÖ¦" + +#: lib/wlan.c:753 +msgid "Antenna Configuration:" +msgstr "ëÏÎƦÇÕÒÁÃ¦Ñ ÁÎÔÅÎ:" + +#: lib/wlan.c:770 +msgid "General Options" +msgstr "úÁÇÁÌØΦ ÐÁÒÁÍÅÔÒÉ" + +#: lib/wlan.c:772 +msgid "" +"UIOPTY - antenna; SCANLEDFR1234 - options; W - write conf; Q - quit to menu" +msgstr "UIOPTY - ÁÎÔÅÎÁ; SCANLEDFR1234 - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" + +#: src/ap-config.c:59 +msgid "General" +msgstr "çÏÌÏ×Φ" + +#: src/ap-config.c:59 +msgid "Set general options" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÚÁÇÁÌØΦ ÐÁÒÁÍÅÔÒÉ" + +#: src/ap-config.c:60 +msgid "Advanced" +msgstr "óÐÅæÁÌØΦ" + +#: src/ap-config.c:60 +msgid "Set advanced options" +msgstr "÷ÓÔÁÎÏ×ÉÔÉ ÓÐÅæÁÌØΦ ÐÁÒÁÍÅÔÒÉ" + +#: src/ap-config.c:94 +msgid "Reset AP." +msgstr "òÅÓÔÁÒÔ" + +#: src/ap-config.c:129 +msgid "Latest" +msgstr "ðÏĦ§" + +#: src/ap-config.c:129 +msgid "Get info about latest events" +msgstr "ïÔÒÉÍÁÔÉ ¦ÎÆÏÒÍÁæÀ ÐÒÏ ÏÓÔÁÎΦ ÐÏĦ§" + +#: src/ap-mrtg.c:42 +msgid "" +"\n" +"Usage:\n" +msgstr "" +"\n" +"÷ÉËÏÒÉÓÔÁÎÎÑ:\n" + +#: src/ap-mrtg.c:44 +msgid "" +"\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-" +"h] [-r]\n" +"\n" +msgstr "" +"\tap-mrtg -i ip -c ËÏÍ`ÀΦԦ -t ÔÉÐ [-b bssid] [-n name] [-a aptype] [-v] [-" +"h] [-r]\n" +"\n" + +#: src/ap-mrtg.c:46 +msgid "" +"Get stats from AP and return it in MRTG parsable format\n" +"\n" +msgstr "" +"ïÔÒÉÍÕ¤ ÄÁÎΦ Ú ÔÏÞËÉ ÄÏÓÔÕÐÕ ÔÁ ÐÏ×ÅÒÔÁ¤ §È Õ MRTG ÆÏÒÍÁÔ¦\n" +"\n" + +#: src/ap-mrtg.c:47 +msgid "-i ip - AP ip address\n" +msgstr "-i ip - ip ÁÄÒÅÓÁ ÔÏÞËÉ ÄÏÓÔÕÐÕ\n" + +#: src/ap-mrtg.c:48 +msgid "-c community - SNMP community string\n" +msgstr "-c ËÏÍ`ÀΦԦ - SNMP ËÏÍ'ÀΦԦ\n" + +#: src/ap-mrtg.c:50 +msgid "" +"-t type - statistics type ireless, thernet, associated tations " +"or ink quality in client mode\n" +msgstr "" +"-t ÔÉÐ - ÔÉÐ ÓÔÁÔÉÓÔÉËÉ w - ÒÁĦÏ, e - ÅÚÅÒÎÅÔ, s - ÁÓÏæÊÏ×ÁΦ " +"ÓÔÁÎæ§ ÁÂÏ l - Ñ˦ÓÔØ ËÁÎÁÌÕ Õ ÒÅÖÉͦ Ë̦ÅÎÔÁ\n" + +#: src/ap-mrtg.c:52 +msgid "" +"-b bssid - mac address of the AP to which get link quality, only if " +"type=l\n" +msgstr "" +"-b bssid - ÍÁË-ÁÄÒÅÓÁ ÂÁÚÏ×ϧ ÓÔÁÎæ§ ÄÏ ÑËϧ ×ÉÚÎÁÞÁÔÉ Ñ˦ÓÔØ " +"̦ÎËÕ×ÉËÏÒÉÓÔÏ×ÕÊÔÅ Ô¦ÌØ˦ ÌÉÛÅ, ÑËÝÏ ÔÉÐ=l\n" + +#: src/ap-mrtg.c:53 +msgid "-n name - AP name - for check only\n" +msgstr "-n ÎÁÚ×Á - ÎÁÚ×Á ÔÏÞËÉ ÄÏÓÔÕÐÕ (ÌÉÛÅ ÄÌÑ ÐÅÒÅצÒËÉ)\n" + +#: src/ap-mrtg.c:54 +msgid "" +"-a aptype - AP type - 410 (default) or 510 for ATMEL12350's, like the " +"ME-102\n" +msgstr "" +"-a ÔÉÐ - ÔÉÐ ÔÏÞËÉ ÄÏÓÔÕÐÕ - 410 (ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ) ÁÂÏ 510 ÄÌÑ " +"ATMEL12350, ÑË íå-102\n" + +#: src/ap-mrtg.c:56 +msgid "-v - report MRTG about problems connecting to AP\n" +msgstr "" +"-v - ÐÏצÄÏÍÌÑÔÉ MRTG ÐÒÏ ÐÏÍÉÌËÉ Ú`¤ÄÎÁÎÎÑ Ú ÔÏÞËÏÀ ÄÏÓÔÕÐÕ\n" + +#: src/ap-mrtg.c:57 +msgid "-r - reset AP when getting LinkQuality stats\n" +msgstr "" +"-r - ÒÅÓÔÁÒÔÕ×ÁÔÉ ÔÏÞËÕ ÄÏÓÔÕÐÕ ÐÒÉ ÏÔÒÉÍÁÎΦ ÄÁÎÎÉÈ ÐÒÏ Ñ˦ÓÔØ " +"̦ÎËÕ\n" + +#: src/ap-mrtg.c:58 +msgid "" +"-h - print this help screen\n" +"\n" +msgstr "" +"-h - ÎÁÄÒÕËÕ×ÁÔÉ ÃÅÊ ÅËÒÁÎ ÄÏÐÏÍÏÇÉ\n" +"\n" + +#: src/ap-mrtg.c:59 +#, c-format +msgid "" +"ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n" +"\n" +msgstr "" +"ap-mrtg %s Copyright (c) 2002-2003 òÏÍÁÎ æÅÝÕË\n" +"\n" + +#: src/ap-mrtg.c:143 +msgid "Invalid IP-address\n" +msgstr "îÅצÒÎÁ ¶ò ÁÄÒÅÓÁ\n" + +#: src/ap-mrtg.c:188 +#, c-format +msgid "Invalid AP-Type '%s' - valid types are 510 or 410\n" +msgstr "îÅצÒÎÉÊ ÔÉÐ '%s' - ÄÏÚ×ÏÌÅΦ ÔÉÐÉ 510 ÔÁ 410\n" + +#: src/ap-mrtg.c:207 +msgid "Create socket error" +msgstr "ðÏÍÉÌËÁ ÓÔ×ÏÒÅÎÎÑ ÓÏËÅÔÕ" + +#: src/ap-mrtg.c:211 +msgid "Bind socket error" +msgstr "ðÏÍÉÌËÁ ÐÒÉ×`ÑÚËÉ ÓÏËÅÔÕ" + +#: src/ap-trapd.c:148 +#, c-format +msgid "ap-trapd %s started%s%s." +msgstr "ap-trapd %s ÓÔÁÒÔÏ×ÁÎÏ%s%s." + +#: src/ap-trapd.c:149 +msgid " on " +msgstr " ÎÁ " + +#: src/ap-trapd.c:155 +msgid "Unable to fork. Exiting." +msgstr "îÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ fork. ÷ÉÈÏÄÖÕ." + +#: src/ap-trapd.c:159 +msgid "Can't create socket. Exiting." +msgstr "îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÓÏËÅÔ. ÷ÉÈÏÄÖÕ." + +#: src/ap-trapd.c:165 +msgid "Can't bind socket. Exiting." +msgstr "îÅ ÍÏÖÕ ÐÒÉ×`ÑÚÁÔÉ ÓÏËÅÔ. ÷ÉÈÏÄÖÕ." + +#: src/ap-trapd.c:172 +#, c-format +msgid "Can't bind to device %s. Exiting." +msgstr "îÅ ÍÏÖÕ ÐÒÉ×`ÑÚÁÔÉÓÑ ÄÏ ÐÒÉÓÔÒÏÀ %s. ÷ÉÈÏÄÖÕ." + +#: src/ap-trapd.c:183 +#, c-format +msgid "Unable to process username %s. Error: %m." +msgstr "îÅ ÍÏÖÕ ÏÂÒÏÂÉÔÉ ÌÏǦΠ%s. ðÏÍÉÌËÁ: %m." + +#: src/ap-trapd.c:188 +#, c-format +msgid "Unable to change to uid %d." +msgstr "îÅ ÍÏÖÕ ÐÅÒÅÚÁÐÕÓÔÉÔÉÓØ Ð¦Ä uid %d. " + +#: src/ap-trapd.c:235 +#, c-format +msgid "" +"Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s." +msgstr "" +"ïÔÒÉÍÁÎÏ ÎÅצÄÏÍÉÊ SNMP ×ÅÒ %d ÔÒÁÐ. ú %s:%d. áÇÅÎÔ: %s. ëÏÍ`ÀΦԦ: %s." + +#: src/ap-trapd.c:307 +#, c-format +msgid "Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d" +msgstr "áÇÅÎÔ:v%d %s (%s@%s:%d) %s%s%s. îÁÐÒÁÃØÏ×ÁÎÏ %d:%02d:%02d.%02d" + +#: src/bridge.c:36 +msgid "[C] Configuration-enabled port(s): " +msgstr "[C] ðÏÒÔ ËÏÎƦÇÕÒÕ×ÁÎÎÑ: " + +#: src/bridge.c:39 +msgid "[B] Isolate wireless clients (broadcast traffic): " +msgstr "[B] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎÔ¦× (ÂÒÏÁÄËÁÓÔÏצ ÐÁËÕÎËÉ): " + +#: src/bridge.c:40 +msgid "[U] Isolate wireless clients (unicast traffic): " +msgstr "[U] ¶ÚÏÌÀ×ÁÔÉ ÒÁĦÏË̦¤ÎÔ¦× (ÕΦËÁÓÔÏצ ÐÁËÕÎËÉ): " + +#: src/bridge.c:137 +msgid "Both" +msgstr "ïÂÉÄ×Á" + +#: src/nwn_advanced.c:61 +#, c-format +msgid "[D] DB Station Timeout: %d" +msgstr "[D] ðÏÎÏ×ÌÅÎÎÑ óÔÁÎæÊ: %d" + +#: src/nwn_advanced.c:63 +#, c-format +msgid "[A] ACK Window: %d" +msgstr "[A] ÷¦ËÎÏ ACK : %d" + +#: src/nwn_advanced.c:66 +msgid "Advanced Options" +msgstr "óÐÅæÁÌØΦ ÐÁÒÁÍÅÔÒÉ" + +#: src/nwn_advanced.c:67 +msgid "DA - options; W - write conf; Q - quit to menu" +msgstr "DA - ×ÓÔÁÎÏ×ÉÔÉ; W - ÚÁÐÉÓÁÔÉ; Q - ×ÉÊÔÉ" + +#: src/nwn_latest.c:31 +#, c-format +msgid "Reason: %u Station: %02X%02X%02X%02X%02X%02X" +msgstr "ðÒÉצÄ: %u óÔÁÎæÑ: %02X%02X%02X%02X%02X%02X" + +#: src/nwn_latest.c:89 +msgid "Latest Events" +msgstr "ïÓÔÁÎΦ ÐÏĦ§" + +#: src/nwn_latest.c:90 +msgid "Disassociate:" +msgstr "äÅÁÓÏæÁæÑ:" + +#: src/nwn_latest.c:97 +msgid "Deauthenticate:" +msgstr "äÅÁÕÔÅÎÔÉƦËÁæÑ:" + +#: src/nwn_latest.c:104 +msgid "Authenticate Fail:" +msgstr "îÅ×ÄÁÌÁ ÁÕÔÅÎÔÉƦËÁæÑ:" + +#: src/nwn_latest.c:110 +msgid "Last error:" +msgstr "ïÓÔÁÎÎÑ ÐÏÍÉÌËÁ:" + +#: src/nwn_latest.c:111 +msgid "Error:" +msgstr "ðÏÍÉÌËÁ:" + +#: src/stations.c:113 +msgid "Id MAC address" +msgstr "# MAC ÁÄÒÅÓÁ" + +#: src/stations.c:223 src/stations.c:307 +msgid "Associated stations" +msgstr "áÓÏæÊÏ×ÁΦ ÓÔÁÎæ§" + +#: src/stations.c:225 +msgid "Id MAC address Quality Age RSSI" +msgstr "# MAC ÁÄÒÅÓÁ ñ˦ÓÔØ âÅÚÄ¦Ñ óÉÌÁ ÓÉÇÎÁÌÕ" + +#~ msgid "[B] Send back broadcast traffic: " +#~ msgstr "[B] ÷¦ÄÐÒÁ×ËÁ ÂÒÏÁÄËÁÓÔÏ×ÉÈ ÐÁËÕÎ˦×: " + +#~ msgid "[U] Send back unicast traffic: " +#~ msgstr "[U] ÷¦ÄÐÒÁ×ËÁ ÕΦËÁÓÔÏ×ÉÈ ÐÁËÕÎ˦×: " + +#~ msgid "Wireless Access Point Configurator" +#~ msgstr "ëÏÎƦÇÕÒÁÔÏÒ ÔÏÞËÉ ÄÏÓÔÕÐÕ ÒÁĦÏÍÅÒÅÖ¦" + +#~ msgid "; LQ: Link Q. [raw]" +#~ msgstr "; LQ: ñ˦ÓÔØ Ì¦ÎËÕ [ÎÅÏÂÒÏÂÌÅÎÅ]" diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..e5d5f48 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,33 @@ +# +# Makefile.am from Wireless Access Point Utilites for Unix +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H +INCLUDES = -I../lib -I../intl -I.. +LIBS = @INTLLIBS@ @LIBS@ + +bin_PROGRAMS = ap-config ap-mrtg +sbin_PROGRAMS = ap-trapd + +ap_config_SOURCES = ap-config.c auth_mac.c bridge.c nwn_advanced.c nwn_latest.c stations.c +ap_config_LDADD = ../lib/libap.a -lmenu + +ap_mrtg_SOURCES = ap-mrtg.c +ap_mrtg_LDADD = ../lib/libap.a + +ap_trapd_SOURCES = ap-trapd.c diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..2d43897 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,496 @@ +# Makefile.in generated by automake 1.7.8 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am from Wireless Access Point Utilites for Unix +# +# Copyright (c) 2002 Roman Festchook +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License Version 2 from +# June 1991 as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ + +DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @INTLLIBS@ @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = -I../lib -I../intl -I.. + +bin_PROGRAMS = ap-config ap-mrtg +sbin_PROGRAMS = ap-trapd + +ap_config_SOURCES = ap-config.c auth_mac.c bridge.c nwn_advanced.c nwn_latest.c stations.c +ap_config_LDADD = ../lib/libap.a -lmenu + +ap_mrtg_SOURCES = ap-mrtg.c +ap_mrtg_LDADD = ../lib/libap.a + +ap_trapd_SOURCES = ap-trapd.c +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = ap-config$(EXEEXT) ap-mrtg$(EXEEXT) +sbin_PROGRAMS = ap-trapd$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS) + +am_ap_config_OBJECTS = ap-config.$(OBJEXT) auth_mac.$(OBJEXT) \ + bridge.$(OBJEXT) nwn_advanced.$(OBJEXT) nwn_latest.$(OBJEXT) \ + stations.$(OBJEXT) +ap_config_OBJECTS = $(am_ap_config_OBJECTS) +ap_config_DEPENDENCIES = ../lib/libap.a +ap_config_LDFLAGS = +am_ap_mrtg_OBJECTS = ap-mrtg.$(OBJEXT) +ap_mrtg_OBJECTS = $(am_ap_mrtg_OBJECTS) +ap_mrtg_DEPENDENCIES = ../lib/libap.a +ap_mrtg_LDFLAGS = +am_ap_trapd_OBJECTS = ap-trapd.$(OBJEXT) +ap_trapd_OBJECTS = $(am_ap_trapd_OBJECTS) +ap_trapd_LDADD = $(LDADD) +ap_trapd_DEPENDENCIES = +ap_trapd_LDFLAGS = + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ap-config.Po ./$(DEPDIR)/ap-mrtg.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ap-trapd.Po ./$(DEPDIR)/auth_mac.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/bridge.Po ./$(DEPDIR)/nwn_advanced.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/nwn_latest.Po ./$(DEPDIR)/stations.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(ap_config_SOURCES) $(ap_mrtg_SOURCES) \ + $(ap_trapd_SOURCES) +DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +SOURCES = $(ap_config_SOURCES) $(ap_mrtg_SOURCES) $(ap_trapd_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(sbindir) + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ + rm -f $(DESTDIR)$(sbindir)/$$f; \ + done + +clean-sbinPROGRAMS: + -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) +ap-config$(EXEEXT): $(ap_config_OBJECTS) $(ap_config_DEPENDENCIES) + @rm -f ap-config$(EXEEXT) + $(LINK) $(ap_config_LDFLAGS) $(ap_config_OBJECTS) $(ap_config_LDADD) $(LIBS) +ap-mrtg$(EXEEXT): $(ap_mrtg_OBJECTS) $(ap_mrtg_DEPENDENCIES) + @rm -f ap-mrtg$(EXEEXT) + $(LINK) $(ap_mrtg_LDFLAGS) $(ap_mrtg_OBJECTS) $(ap_mrtg_LDADD) $(LIBS) +ap-trapd$(EXEEXT): $(ap_trapd_OBJECTS) $(ap_trapd_DEPENDENCIES) + @rm -f ap-trapd$(EXEEXT) + $(LINK) $(ap_trapd_LDFLAGS) $(ap_trapd_OBJECTS) $(ap_trapd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-config.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-mrtg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ap-trapd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/auth_mac.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bridge.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nwn_advanced.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nwn_latest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stations.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-sbinPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS install-sbinPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ + uninstall-sbinPROGRAMS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-sbinPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-sbinPROGRAMS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-info-am uninstall-sbinPROGRAMS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/ap-config.c b/src/ap-config.c new file mode 100644 index 0000000..7865e51 --- /dev/null +++ b/src/ap-config.c @@ -0,0 +1,264 @@ +/* + * ap-config.c from Wireless Access Point Utilites for Unix + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" + +char *ap_types[3] = { + "ATMEL410", + "NWN", + "ATMEL12350" +}; + +WINDOW *win_for_menu, *sub_for_menu, *win_for_help, *main_win, *main_sub; +short ap_type; +char *community; +int sockfd, atmel410_filter=0; +struct in_addr ap_ip; +char *prog_title = "Wireless Access Point Configurator"; + +void config_menu() +{ + struct umitems umenu_atmel[] = { + {_("Bridging"), _("Set bridging and IP-related options"), bridging, + 0}, + {_("Wireless"), _("Set wireless options"), atmel_wireless, 0}, + {_("Privacy"), MENU_ENCRYPT, wep, 0}, + {_("MAC auth"), MENU_MAC, atmel_auth_mac, 0}, + {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0}, + {_("Radio"), _("Set radio signal power and antenna options"), + power, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + + struct umitems umenu_nwn[] = { + {_("General"), _("Set general options"), nwn_wireless, 0}, + {_("Advanced"), _("Set advanced options"), advanced, 0}, + {_("Privacy"), MENU_ENCRYPT, nwn_wep, 0}, + {_("MAC auth"), MENU_MAC, nwn_auth_mac, 0}, + {_("Community"), MENU_COMMUNITY, AuthorizedSettings, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + + switch (ap_type) { + case ATMEL410: + case ATMEL12350: + uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); + break; + case NWN: + uni_menu(umenu_nwn, sizeof(umenu_nwn) / sizeof(umenu_nwn[0])); + break; + } +} + + +void command_menu() +{ + struct umitems command_umenu_atmel[] = { + {_("Upload"), _("Make current configuration active"), upload, 0}, + {_("Defaults"), _("Restore factory default settings"), defaults, + 0}, + {_("Reset"), + _("Reset AP. All not uploaded configuration will be lost"), + reset, 0}, + {_("TestMode"), _("Put Access Point in test mode"), test, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + struct umitems command_umenu_nwn[] = { + {_("Reset"), _("Reset AP."), reset, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + + switch (ap_type) { + case ATMEL410: + case ATMEL12350: + uni_menu(command_umenu_atmel, + sizeof(command_umenu_atmel) / sizeof(command_umenu_atmel[0])); + break; + case NWN: + uni_menu(command_umenu_nwn, + sizeof(command_umenu_nwn) / sizeof(command_umenu_nwn[0])); + break; + } +} + + +void stat_menu() +{ + struct umitems umenu_atmel[] = { + {_("SysInfo"), MENU_SYSINFO, atmel_sysinfo, 0}, + {_("Ethernet"), _("Get ethernet port statistics"), EthStat, 0}, + {_("Wireless"), MENU_WIRELESS, WirelessStat, 0}, + {_("Stations"), MENU_STAS, stations, + 0}, + {_("KnownAPs"), _("Get info about known Access Points"), APs, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + struct umitems umenu_nwn[] = { + {_("SysInfo"), MENU_SYSINFO, nwn_sysinfo, 0}, + {_("Wireless"), MENU_WIRELESS, nwn_wireless_stat, 0}, + {_("Stations"), MENU_STAS, nwn_stations, 0}, + {_("Latest"), _("Get info about latest events"), latest, 0}, + {"..", MAIN_MENU, NULL, 0}, + {0, 0, NULL, 0} + }; + + switch (ap_type) { + case ATMEL410: + case ATMEL12350: + uni_menu(umenu_atmel, sizeof(umenu_atmel) / sizeof(umenu_atmel[0])); + break; + case NWN: + uni_menu(umenu_nwn, sizeof(umenu_nwn) / sizeof(umenu_nwn[0])); + break; + } +} + +void _auth() +{ + if(get_opts() == 0) + connect_options((unsigned long) NULL, (int) NULL); +} + +void main_menu() +{ + struct umitems config_umenu[] = { + {_("Info"), MENU_INFO, stat_menu, 1}, + {_("Config"), MENU_CONFIG, config_menu, 1}, + {_("Commands"), _("Execute commands on Access Point"), + command_menu, 1}, + {_("Connect"), MENU_CONNECT, _auth, 0}, + {_("Search"), MENU_SEARCH, ap_search, 0}, + {_("About"), MENU_ABOUT, about, 0}, + {_("Shell"), MENU_SHELL, exit_shell, 0}, + {_("Exit"), MENU_EXIT, exit_program, 0}, + {0, 0, NULL, 0} + }; + uni_menu(config_umenu, sizeof(config_umenu) / sizeof(config_umenu[0])); +} + + + +int main( /*int argc, char **argv */ ) +{ + int i; + WINDOW *win_for_title; + char message[100]; + + +#ifdef HAVE_GETTEXT + /* locale support init */ + setlocale(LC_ALL, ""); + bindtextdomain("ap-utils", LOCALEDIR); + textdomain("ap-utils"); +#endif + + initscr(); + if (has_colors()) { + start_color(); + init_pair(1, COLOR_BLACK, COLOR_CYAN); + init_pair(2, COLOR_BLACK, COLOR_WHITE); + init_pair(3, COLOR_BLACK, COLOR_GREEN); + init_pair(4, COLOR_WHITE, COLOR_RED); + } + + noraw(); + cbreak(); + noecho(); + scrollok(stdscr, TRUE); + idlok(stdscr, TRUE); + keypad(stdscr, TRUE); + refresh(); + +/* draw help win */ + win_for_help = newwin(1, COLS, LINES - 1, 0); + wattrset(win_for_help, COLOR_PAIR(1)); + print_help(""); + +/* draw title win */ + win_for_title = newwin(1, COLS, 0, 0); + wattrset(win_for_title, COLOR_PAIR(1)); + for (i = 0; i < COLS; i++) + waddch(win_for_title, ' '); + sprintf(message, _("Wireless Access Point Configurator ver. %s"), + VERSION); + mvwaddstr(win_for_title, 0, (COLS - strlen(message)) / 2, message); + wrefresh(win_for_title); + +/* draw menu win */ + win_for_menu = newwin(LINES - 2, MCOLS, 1, 0); + sub_for_menu = derwin(win_for_menu, LINES - 5, MCOLS - 2, 2, 1); + set_menu_win(NULL, win_for_menu); + set_menu_sub(NULL, sub_for_menu); + attrset(COLOR_PAIR(1)); + + /* íÁÌÀÀ ÒÁÍËÕ */ + waddch(win_for_menu, ACS_BSSB); + for (i = 0; i < MCOLS - 2; i++) + waddch(win_for_menu, ACS_BSBS); + waddch(win_for_menu, ACS_BSSS); + for (i = 0; i < LINES - 4; i++) { + waddch(win_for_menu, ACS_SBSB); + mvwaddch(win_for_menu, i + 1, MCOLS - 1, ACS_SBSB); + } + waddch(win_for_menu, ACS_SSBB); + for (i = 0; i < MCOLS - 2; i++) + waddch(win_for_menu, ACS_BSBS); + waddch(win_for_menu, ACS_SSBS); + wrefresh(win_for_menu); + +/* draw_main_win */ + main_win = newwin(LINES - 2, COLS - MCOLS, 1, MCOLS); + /* íÁÌÀÀ ÒÁÍËÕ */ + for (i = 0; i < COLS - MCOLS - 1; i++) + waddch(main_win, ACS_BSBS); + waddch(main_win, ACS_BBSS); + for (i = 0; i < LINES - 4; i++) + mvwaddch(main_win, i + 1, COLS - MCOLS - 1, ACS_SBSB); + for (i = 0; i < COLS - MCOLS - 1; i++) + waddch(main_win, ACS_BSBS); + waddch(main_win, ACS_SBBS); + main_sub = derwin(main_win, LINES - 4, COLS - MCOLS - 1, 1, 0); + wclear(main_sub); + wrefresh(main_win); + + about(); + if (get_opts() == 0) { + connect_options((unsigned long) NULL, (int) NULL); + + } + while (1) + main_menu(); + +/* Not reachable */ + return 0; +} + diff --git a/src/ap-mrtg.c b/src/ap-mrtg.c new file mode 100644 index 0000000..296a37a --- /dev/null +++ b/src/ap-mrtg.c @@ -0,0 +1,411 @@ +/* + * ap-mrtg.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include +#if defined (__GLIBC__) +#include +#endif +#include "ap-utils.h" + +#define ERR_STR_V "\n\n-\n\n" +#define ERR_STR_N "999999999\n999999999\n-\n\n" + +short ap_type = ATMEL410; +char *community = NULL; +int sockfd; +struct in_addr ap_ip; + +void usage() +{ + printf(_("\nUsage:\n")); + printf(_ + ("\tap-mrtg -i ip -c community -t type [-b bssid] [-n name] [-a aptype] [-v] [-h] [-r]\n\n")); + printf(_ + ("Get stats from AP and return it in MRTG parsable format\n\n")); + printf(_("-i ip - AP ip address\n")); + printf(_("-c community - SNMP community string\n")); + printf(_ + ("-t type - statistics type ireless, thernet, associated tations or ink quality in client mode\n")); + printf(_ + ("-b bssid - mac address of the AP to which get link quality, only if type=l\n")); + printf(_("-n name - AP name - for check only\n")); + printf(_("-a aptype - AP type - 410 (default) or 510 for ATMEL12350's, like the ME-102\n")); + printf(_ + ("-v - report MRTG about problems connecting to AP\n")); + printf(_("-r - reset AP when getting LinkQuality stats\n")); + printf(_("-h - print this help screen\n\n")); + printf(_("ap-mrtg %s Copyright (c) 2002-2003 Roman Festchook\n\n"), + VERSION); + +} + + +int main(int argc, char **argv) +{ + extern char *optarg; + extern int optind; + extern int opterr; + extern int optopt; + int opt = 0; + + struct ap { + char mac[6]; + unsigned char q1; + unsigned char q2; + unsigned char channel; + unsigned char x2; + unsigned char options; + unsigned char x3[5]; + unsigned char essid[32]; + } *app = NULL; + + char Wireless[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x03, 0x01, + 0x00 + }; + char EthRx[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x01, + 0x00 + }; + char EthTx[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x07, 0x02, + 0x00 + }; + char operAccessPointName[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x01, 0x0A, + 0x00 + }; + char StasNum[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01, + 0x00 + }; + char KnownAP[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x07, + 0x01, 0x00 + }; + char bridgeOperationalMode[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x01, 0x04, 0x01, 0x00 + }; + + struct EthernetRxStatistics *EthRxStat = NULL; + struct EthernetTxStatistics *EthTxStat = NULL; + struct WirelessStatistics *WirelessStat = NULL; + varbind varbinds[2]; + int i, reset_flag=0; + char message[12], bssid_flag, stat_type = 0, *ERR_STR = + ERR_STR_N, *bssid = NULL, *name = NULL; + struct sockaddr_in client; + +#ifdef HAVE_GETTEXT + setlocale(LC_ALL, ""); + bindtextdomain("ap-utils", LOCALEDIR); + textdomain("ap-utils"); +#endif + + memset(&client, 0, sizeof client); + client.sin_family = AF_INET; + client.sin_port = INADDR_ANY; + client.sin_addr.s_addr = INADDR_ANY; + + if (argc < 4) { + usage(); + exit(0); + } + + do { + opterr = 0; + switch (opt = getopt(argc, argv, "i:c:t:b:n:a:rv")) { + case 'i': + if (inet_aton(optarg, &ap_ip) == 0) { + printf(_("Invalid IP-address\n")); + return 1; + } + break; + case 't': + stat_type = optarg[0]; + break; + case 'v': + ERR_STR = ERR_STR_V; + break; + case 'c': + community = malloc(strlen(optarg) + 1); + strncpy(community, optarg, strlen(optarg) + 1); + break; + case 'b': + bssid = malloc(strlen(optarg) + 1); + strncpy(bssid, optarg, strlen(optarg) + 1); + break; + case 'n': + name = malloc(strlen(optarg) + 1); + strncpy(name, optarg, strlen(optarg) + 1); + break; + case 'r': + reset_flag=1; + break; + case 'a': + if ( strcmp( optarg, "510\0" ) == 0) { + Wireless[5] = 0xE0; + Wireless[6] = 0x3E; + EthRx[5] = 0xE0; + EthRx[6] = 0x3E; + EthTx[5] = 0xE0; + EthTx[6] = 0x3E; + operAccessPointName[5] = 0xE0; + operAccessPointName[6] = 0x3E; + StasNum[5] = 0xE0; + StasNum[6] = 0x3E; + KnownAP[5] = 0xE0; + KnownAP[6] = 0x3E; + bridgeOperationalMode[5] = 0xE0; + bridgeOperationalMode[6] = 0x3E; + } else if (strcmp(optarg, "410") == 0) { + /* nothing - hard-coded defaults are fine */ + } else { + /* Invalid AP-Type */ + printf(_("Invalid AP-Type '%s' - valid types are 510 or 410\n"), optarg); + return 1; + } + break; + case -1: + break; + default: + usage(); + goto quit; + } + } while (opt != -1); + + if (!community) { + usage(); + goto quit; + } + + + if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { + perror(_("Create socket error")); + return 1; + } + if (bind(sockfd, (struct sockaddr *) &client, SIZE) == -1) { + perror(_("Bind socket error")); + return 1; + } + + switch (stat_type) { + + case 'e': + + varbinds[0].oid = EthRx; + varbinds[0].len_oid = sizeof(EthRx); + varbinds[0].value = EthRx; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + varbinds[1].oid = EthTx; + varbinds[1].len_oid = sizeof(EthTx); + varbinds[1].value = EthTx; + varbinds[1].len_val = 0; + varbinds[1].type = NULL_VALUE; + + if (snmp(varbinds, 2, GET) <= 0) { + printf(ERR_STR); + return 1; + } + + if (varbinds[0].len_val == 64) { + if (EthRxStat) + free(EthRxStat); + EthRxStat = + (struct EthernetRxStatistics *) malloc(varbinds[0]. + len_val); + memcpy(EthRxStat, varbinds[0].value, varbinds[0].len_val); + } else { + printf(ERR_STR); + return 1; + } + + if (varbinds[1].len_val == 56) { + if (EthTxStat) + free(EthTxStat); + EthTxStat = + (struct EthernetTxStatistics *) malloc(varbinds[1]. + len_val); + memcpy(EthTxStat, varbinds[1].value, varbinds[1].len_val); + } else { + printf(ERR_STR); + return 1; + } + printf("%u\n%u\n", swap4(EthRxStat->TotalBytesRx), + swap4(EthTxStat->TotalBytesTx)); + if (EthRxStat) + free(EthRxStat); + if (EthTxStat) + free(EthTxStat); + break; + case 'w': + varbinds[0].oid = Wireless; + varbinds[0].len_oid = sizeof(Wireless); + varbinds[0].value = Wireless; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + + if (snmp(varbinds, 1, GET) <= 0) { + printf(ERR_STR); + return 1; + } + + if (varbinds[0].len_val == 88) { + if (WirelessStat) + free(WirelessStat); + WirelessStat = + (struct WirelessStatistics *) malloc(varbinds[0].len_val); + memcpy(WirelessStat, varbinds[0].value, varbinds[0].len_val); + } else { + printf(ERR_STR); + return 1; + } + printf("%u\n%u\n", + swap4(WirelessStat->UnicastReceivedPackets) + + swap4(WirelessStat->BroadcastReceivedPackets) + + swap4(WirelessStat->MulticastReceivedPackets), + swap4(WirelessStat->UnicastTransmittedPackets) + + swap4(WirelessStat->BroadcastTransmittedPackets) + + swap4(WirelessStat->MulticastTransmittedPackets)); + break; + + case 's': + varbinds[0].oid = StasNum; + varbinds[0].len_oid = sizeof(StasNum); + varbinds[0].value = StasNum; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + + if (snmp(varbinds, 1, GET) <= 0) { + printf(ERR_STR); + return 1; + } + + printf("%u\n0\n", *varbinds[0].value); + break; + + case 'l': + + varbinds[0].oid = bridgeOperationalMode; + varbinds[0].len_oid = sizeof(bridgeOperationalMode); + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + + if (snmp(varbinds, 1, GET) <= 0) { + printf(ERR_STR); + return 1; + } + + if (*(varbinds[0].value) != 3) { + printf(ERR_STR); + return 1; + } + + if (reset_flag) { + if (SysReset()) { + printf(ERR_STR); + return 1; + } + sleep(10); + } + + varbinds[0].oid = KnownAP; + varbinds[0].len_oid = sizeof(KnownAP); + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + + if (snmp(varbinds, 1, GET) <= 0) { + printf(ERR_STR); + return 1; + } + bssid_flag = 1; + for (i = 0; i < varbinds[0].len_val; i += 48) { + if (app) + free(app); + app = (struct ap *) malloc(48); + memcpy(app, varbinds[0].value + i, 48); + if (!app->channel) + continue; + if (bssid) { + sprintf(message, "%02X%02X%02X%02X%02X%02X", + app->mac[0] & 0xFF, app->mac[1] & 0xFF, + app->mac[2] & 0xFF, app->mac[3] & 0xFF, + app->mac[4] & 0xFF, app->mac[5] & 0xFF); + if (memcmp(message, bssid, 12)) + continue; + }; + printf("%d\n%d\n", app->q2, + 96 - app->q1); + bssid_flag = 0; + break; + } + if (bssid_flag) + printf(ERR_STR); + break; + default: + usage(); + goto quit; + } + + printf("-\n"); + + + if ( name != NULL ) { + varbinds[0].oid = operAccessPointName; + varbinds[0].len_oid = sizeof(operAccessPointName); + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET) <= 0) { + printf("\n"); + return 1; + } + + for (i = 0; i < 32 && *(varbinds[0].value + i); i++) + putchar(*(varbinds[0].value + i)); + putchar('\n'); + if (strncmp(name,varbinds[0].value,strlen(name)) ){ + return 2; + } + } else { + printf("-\n"); + } + + close(sockfd); + + + quit: + if (community) + free(community); + if (app) + free(app); + if (bssid) + free(bssid); + if (name) + free(name); + return 0; +} + diff --git a/src/ap-trapd.c b/src/ap-trapd.c new file mode 100644 index 0000000..cd864a1 --- /dev/null +++ b/src/ap-trapd.c @@ -0,0 +1,318 @@ +/* + * ap-trapd.c from Access Point SNMP Utils for Linux + * SNMP traps processing daemon code + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" + +#define TRAPD_USER "nobody" + +int main(int argc, char **argv) +{ + extern char *optarg; + extern int optind; + extern int opterr; + extern int optopt; + int opt = 0; + + char *user=NULL, *device=NULL; + + + pid_t pid; + struct passwd *pwd; + struct sockaddr_in server; + struct sockaddr_in client; + int sockfd, len; + unsigned int client_len = SIZE, hand, sec, min; + unsigned char buf[512], *start, snmp_version, + *community = NULL, generic_trap, specific_trap; + unsigned int i, atmel_ap_type = 0; + size_t time_stamp; + char mac[6], *enterprise_oid = NULL, c, mac_info[31], mac_flag = 0; + struct in_addr agent_addr; + char enterprise[] = { 0x2b, 0x06, 1, 4, 1, 0x83, 0x1a, 1, 1 }; + char *generic_traps[8] = { "ColdStart", + "WarmStart", + "LinkDown", + "LinkUp", + "AuthenticationFailure", + "EgpNeighborLoss", + "EnterpriseSpecific", + "unknown" + }; + char *specific_traps[22] = { + "Reassociation", + "RoamOut", + "Association", + "Disassociation", + "AssociationExpire", + "Reset", + "SettingPingIPAddress", + "StartUp", + "FailedToEraseFlash", + "APClientScanning", + "APClientAuthenticating", + "APClientAssociating", + "APClientReAssociating", + "APClientAuthenticationFailed", + "APClientAssociationFailed", + "APClientConnected", + "APClientDisconnected", + "APClientScanFailed", + "APClientJoinFailed", + "APClientJoining", + "unknown", + "APClientScanFinished" /* I think:) /roma */ + }; + + char *specific_traps_sb[22] = { + "Reassociation", + "RoamOut", + "Association", + "Disassociation", + "AssociationExpire", + "Reset", + "SettingPingIPAddress", + "StartUp", + "FailedToEraseFlash", + "APClientAssociating", + "APClientScanning", + "MultiAttachedStation", + "unknown", + "unknown", + "unknown", + "unknown", + "unknown", + "unknown", + "unknown", + "unknown", + "unknown", + "unknown" +}; + + memset(&server, 0, sizeof server); + server.sin_family = AF_INET; + server.sin_port = htons(162); + server.sin_addr.s_addr = INADDR_ANY; + +#ifdef HAVE_GETTEXT + /* locale support init */ + setlocale(LC_ALL, ""); + bindtextdomain("ap-utils", LOCALEDIR); + textdomain("ap-utils"); +#endif + + if (argc > 1) + do { + opterr = 0; + switch (opt = getopt(argc, argv, "u:i:s")) { + case 'i': + device = malloc(strlen(optarg) + 1); + strncpy(device, optarg, strlen(optarg) + 1); + break; + case 'u': + user = malloc(strlen(optarg) + 1); + strncpy(user, optarg, strlen(optarg) + 1); + break; + case 's': + atmel_ap_type = 1; + break; + } + } while (opt != -1); + + + openlog("ap-trapd", LOG_PID, LOG_LOCAL0); + syslog(LOG_INFO, _("ap-trapd %s started%s%s."), VERSION, + (device) ? _(" on ") : "", (device) ? device : ""); + + pid = fork(); + if (pid > 0) { /* parent */ + return 0; + } else if (pid < 0) { /* failed */ + syslog(LOG_ERR, _("Unable to fork. Exiting.")); + return 1; + } + if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { + syslog(LOG_ERR, _("Can't create socket. Exiting.")); + return 1; + } + + + if (bind(sockfd, (struct sockaddr *) &server, SIZE) == -1) { + syslog(LOG_ERR, _("Can't bind socket. Exiting.")); + return 1; + } +#ifdef OS_LINUX + if (device) { + if (setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, device, + strlen(device) + 1) == -1) { + syslog(LOG_ERR, _("Can't bind to device %s. Exiting."), + device); + return 1; + } + } +#endif + + if (user == NULL) + user = TRAPD_USER; + /* after opening socket change userid */ + if ((pwd = getpwnam(user)) == NULL) { + syslog(LOG_ERR, _("Unable to process username %s. Error: %m."), + user); + return 1; + } + if (setgid(pwd->pw_gid) == -1 || setuid(pwd->pw_uid) == -1) { + syslog(LOG_ERR, _("Unable to change to uid %d."), pwd->pw_uid); + return 1; + } + + while (1) { + if ((len = + recvfrom(sockfd, buf, 512, 0, (struct sockaddr *) &client, + &client_len)) == -1) + continue; + if (buf[0] != ASN_HEADER) { + continue; + } + start = buf; + if (buf[1] & 0x80) { + start += (buf[1] & 0x7F) + 2; + } else { + start += 2; + } + snmp_version = start[2]; + + if (community) + free(community); + community = malloc(start[4] + 1); + memcpy(community, start + 5, start[4]); + community[start[4]] = '\0'; + start += *(start + 4) + 5; + + if (start[0] != TRAP) { + continue; + } + + if (start[1] & 0x80) { + start += (start[1] & 0x7F) + 2; + } else { + start += 2; + } + + if (enterprise_oid) + free(enterprise_oid); + enterprise_oid = malloc(start[1] + 1); + memcpy(enterprise_oid, start + 2, start[1]); + enterprise_oid[start[1]] = '\0'; + start += start[1] + 2; + memcpy(&agent_addr.s_addr, start + 2, 4); + if (memcmp(enterprise_oid, enterprise, sizeof(enterprise))) { + syslog(LOG_INFO, + _ + ("Received unknown SNMP ver %d trap. From %s:%d. Agent: %s. Community: %s."), + snmp_version + 1, inet_ntoa(client.sin_addr), + ntohs(client.sin_port), inet_ntoa(agent_addr), + community); + continue; + } + + start += 6; + generic_trap = start[2]; + if (generic_trap > 6) + generic_trap = 7; + specific_trap = start[5]; + if (specific_trap > 22) + specific_trap = 21; + + time_stamp = 0; + c = 0; + i = 1; + while (c < start[7]) { + time_stamp += (unsigned char) *(start + 7 + start[7] - c) * i; + i *= 256; + c++; + } + hand = time_stamp % 100; + time_stamp = time_stamp / 100; + sec = time_stamp % 60; + time_stamp = time_stamp / 60; + min = time_stamp % 60; + time_stamp = time_stamp / 60; + + start += start[7] + 8; + + + mac_flag = 0; + if ((start - buf < len) && *(start) == ASN_HEADER) { + + if (start[1] & 0x80) { + start += (start[1] & 0x7F) + 2; + len -= ((start[1] & 0x7F) + 2); + } else { + start += 2; + len -= 2; + } + + if (*(start) == ASN_HEADER) { + if (start[1] & 0x80) { + start += (start[1] & 0x7F) + 2; + len -= ((start[1] & 0x7F) + 2); + } else { + start += 2; + len -= 2; + } + start += start[1] + 4; + memcpy(mac, start, 6); + if (generic_trap == 6 && specific_trap >= 1 + && (specific_trap <= 5 || specific_trap >= 9)) { + sprintf(mac_info, "%02X%02X%02X%02X%02X%02X", + mac[0] & 0xFF, mac[1] & 0xFF, mac[2] & 0xFF, + mac[3] & 0xFF, mac[4] & 0xFF, mac[5] & 0xFF); + mac_flag = 1; + } + if (generic_trap == 6 && specific_trap == 7) { + sprintf(mac_info, + "%d.%d.%d.%d", + mac[0] & 0xFF, mac[1] & 0xFF, mac[2] & 0xFF, + mac[3] & 0xFF); + mac_flag = 1; + } + } + } + syslog(LOG_INFO, + _ + ("Agent:v%d %s (%s@%s:%d) %s%s%s. SysUptime %d:%02d:%02d.%02d"), + snmp_version + 1, inet_ntoa(agent_addr), + community, inet_ntoa(client.sin_addr), ntohs(client.sin_port), + (generic_trap == + 6) ? (atmel_ap_type == 1) ? specific_traps[specific_trap-1] : specific_traps_sb[specific_trap-1] : + generic_traps[generic_trap], (mac_flag) ? " " : "", + (mac_flag) ? mac_info : "", time_stamp, min, sec, hand); + } + + /* not reachable */ + return 0; +} diff --git a/src/auth_mac.c b/src/auth_mac.c new file mode 100644 index 0000000..7f7dd71 --- /dev/null +++ b/src/auth_mac.c @@ -0,0 +1,594 @@ +/* + * auth.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define MAX_LINES LINES-6 +#define PACKET_ERROR _("AuthorizedMacTableString packet error") + +#define MAC_AUTH _("[A] MAC authorization: ") +#define MAC_ADD _("Enter MAC: ") +#define MAC_DEL _("Delete Num: ") +#define MAC_TITLE _("Authorized MAC addresses") +#define MAC_HEADER _("NUM MAC address") +#define MAC_HELP _("A - auth; N - new; D - del; arrows - scroll; W - write conf; Q - quit") + +extern WINDOW *main_sub; +extern int LINES; +extern short ap_type; + +void atmel_auth_mac() +{ + struct AuthorizedMacTableString { + unsigned int short Action; + unsigned int short NumOfAllTableAddresses; + unsigned int short NumOfCurrentAddress; + unsigned char MacAddress[6]; + } *AuthMac = NULL, get; + + struct MacListStat *pmac, *first = NULL, *curr = NULL; + uint32_t auth_mac_hw; + + char EnableAuthMAC[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x01, 0x00 + }; + char AutorizedMac[] = { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, + 0x02, 0x06, 0x02, 0x00 + }; + + char message[1024], m_authmac = 0; + int i, total_mac, auth_mac = 0, mac_num = 0, begin, end; + varbind varbinds[1]; + + if (ap_type == ATMEL12350) { + EnableAuthMAC[5] = 0xE0; + EnableAuthMAC[6] = 0x3E; + AutorizedMac[5] = 0xE0; + AutorizedMac[6] = 0x3E; + } + + varbinds[0].oid = EnableAuthMAC; + varbinds[0].len_oid = sizeof(EnableAuthMAC); + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + print_title(MAC_TITLE); + + auth_mac = *(varbinds[0].value); + sprintf(message, "%s%s", MAC_AUTH, (auth_mac == 1) ? ON : OFF); + mvwaddstr(main_sub, 0, 0, message); + mvwaddstr(main_sub, 2, 5, MAC_HEADER); + wrefresh(main_sub); + + total_mac = 0; + mac_num = 0; + + while (mac_num <= total_mac) { + get.Action = 0x02; rshort(get.Action); + get.NumOfAllTableAddresses = total_mac; rshort(get.NumOfAllTableAddresses); + get.NumOfCurrentAddress = mac_num; rshort(get.NumOfCurrentAddress); + + varbinds[0].oid = AutorizedMac; + varbinds[0].len_oid = sizeof(AutorizedMac); + varbinds[0].value = (char *) &get; + varbinds[0].len_val = 12; + varbinds[0].type = STRING_VALUE; + + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (varbinds[0].len_val == 12) { + if (AuthMac) + free(AuthMac); + AuthMac = + (struct AuthorizedMacTableString *) malloc(varbinds[0]. + len_val); + memcpy(AuthMac, varbinds[0].value, varbinds[0].len_val); +/* AuthMac = + (struct AuthorizedMacTableString *) varbinds[0].value;*/ + } else { + print_helperr(PACKET_ERROR); + goto exit; + } + + rshort(AuthMac->NumOfAllTableAddresses); + total_mac = + (AuthMac->NumOfAllTableAddresses == + 65535) ? 0 : AuthMac->NumOfAllTableAddresses; + + if (mac_num) { + if (first == NULL) { + first = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + memcpy(curr->addr, AuthMac->MacAddress, 6); + curr->next = NULL; + } + mac_num++; + } + + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + + noecho(); + + print_help(MAC_HELP); + while (1) { + switch (getch()) { + case 'q': + case 'Q': + goto quit; + case 'a': + case 'A': + auth_mac = on_off(0, strlen(MAC_AUTH)); + clear_main_new(0, 1); + print_menusel(0, 0, MAC_AUTH, (auth_mac == 1) ? ON : OFF); + m_authmac = 1; + continue; + case 'd': + case 'D': + mvwaddstr(main_sub, 1, 0, MAC_DEL); + get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING, + 1, mac_num - 1, NULL); + i = atoi(message); + if (i == 1) { + pmac = first; + first = first->next; + free(pmac); + } else { + curr = first; + while (--i > 1) + curr = curr->next; + pmac = curr->next; + curr->next = pmac->next; + free(pmac); + } + mac_num--; + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + clear_main_new(1, 2); + continue; + case 'n': + case 'N': + mvwaddstr(main_sub, 1, 0, MAC_ADD); + curr = first; + while (curr && curr->next) + curr = curr->next; + if (first == NULL) { + first = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + curr->next = NULL; + mac_num++; +/* get_value(message, 1, strlen(MAC_ADD), 13, ANY_STRING, 0, 0, + NULL); + + for (i = 0; i < 6; i++) { + mess[0] = message[2 * i]; + mess[1] = message[2 * i + 1]; + mess[2] = '\0'; + curr->addr[i] = strtol(mess, NULL, 16); + } + clear_main_new(1, 2); +*/ + get_mac(curr->addr, 1, strlen(MAC_ADD)); + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + clear_main_new(1, 2); + continue; + case 'w': + case 'W': + if (m_authmac) { + auth_mac_hw = swap4(auth_mac); + varbinds[0].oid = EnableAuthMAC; + varbinds[0].len_oid = sizeof(EnableAuthMAC); + varbinds[0].type = INT_VALUE; + varbinds[0].value = (char *) &auth_mac_hw; + varbinds[0].len_val = 1; + print_help(WAIT_SET); + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + } + curr = first; + i = 1; + while (curr != NULL) { + get.Action = 0x01; rshort(get.Action); + get.NumOfAllTableAddresses = mac_num - 1; rshort(get.NumOfAllTableAddresses); + get.NumOfCurrentAddress = i; rshort(get.NumOfCurrentAddress); + memcpy(get.MacAddress, curr->addr, 6); + varbinds[0].oid = AutorizedMac; + varbinds[0].len_oid = sizeof(AutorizedMac); + varbinds[0].value = (char *) &get; + varbinds[0].len_val = 12; + varbinds[0].type = STRING_VALUE; + print_help(WAIT_SET); + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + if (varbinds[0].len_val != 12) { + print_helperr(PACKET_ERROR); + goto exit; + } + curr = curr->next; + i++; + } + print_help(DONE_SET); + goto exit; + case KEY_DOWN: + case KEY_RIGHT: + if (end < mac_num) { + begin++; + end++; + scroll_rows(first, begin, end, 3, 0); + } + continue; + case KEY_UP: + case KEY_LEFT: + if (begin > 1) { + begin--; + end--; + scroll_rows(first, begin, end, 3, 0); + } + continue; + } + continue; + } + + print_help(ANY_KEY); + exit: + getch(); + quit: + while ((curr = first)) { + first = curr->next; + free(curr); + } + if (AuthMac) + free(AuthMac); + print_title(""); + clear_main(0); +} + +void nwn_auth_mac() +{ + struct MacListStat *pmac, *first = NULL, *curr = NULL; + char Mac[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02, + 0x02, 0x01, 0x02, 0x00 + }; + char MacAllow[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02, + 0x02, 0x01, 0x03, 0x00 + }; + char MacRowStatus[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02, + 0x02, 0x01, 0x04, 0x00 + }; + char message[1024], auth_enable[] = + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + char destroy = 6, create = 4, allow = 1; + int i, auth_mac = 0, mac_num = 0, begin, end; + varbind varbinds[3]; + print_title(MAC_TITLE); + + mvwaddstr(main_sub, 2, 5, MAC_HEADER); + wrefresh(main_sub); + print_help(WAIT_RET); + + mac_num = 1; + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].value = Mac; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET_NEXT) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 1) == 0) { + + Mac[sizeof(Mac) - 1] = varbinds[0].oid[sizeof(Mac) - 1]; + MacAllow[sizeof(MacAllow) - 1] = varbinds[0].oid[sizeof(Mac) - 1]; + MacRowStatus[sizeof(MacRowStatus) - 1] = + varbinds[0].oid[sizeof(Mac) - 1]; + + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].value = Mac; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + varbinds[1].oid = MacAllow; + varbinds[1].len_oid = sizeof(MacAllow); + varbinds[1].value = Mac; + varbinds[1].len_val = 0; + varbinds[1].type = NULL_VALUE; + varbinds[2].oid = MacRowStatus; + varbinds[2].len_oid = sizeof(MacRowStatus); + varbinds[2].value = Mac; + varbinds[2].len_val = 0; + varbinds[2].type = NULL_VALUE; + if (snmp(varbinds, 3, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + if (memcmp(auth_enable, varbinds[0].value, 6)) { + if (first == NULL) { + first = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + memcpy(curr->addr, varbinds[0].value, 6); + curr->next = NULL; + mac_num++; + } else + auth_mac = 1; + + + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].value = Mac; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET_NEXT) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + } + + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + + sprintf(message, "%s%s", MAC_AUTH, (auth_mac) ? OFF : ON); + mvwaddstr(main_sub, 0, 0, message); + + scroll_rows(first, begin, end, 3, 0); + + noecho(); + + print_help(MAC_HELP); + while (1) { + switch (getch()) { + case 'Q': + case 'q': + goto quit; + case 'a': + auth_mac = on_off(0, strlen(MAC_AUTH)) - 1; + clear_main_new(0, 1); + print_menusel(0, 0, MAC_AUTH, (auth_mac) ? OFF : ON); + continue; + case 'd': + mvwaddstr(main_sub, 1, 0, MAC_DEL); + get_value(message, 1, strlen(MAC_DEL), 5, INT_STRING, + 1, mac_num - 1, NULL); + i = atoi(message); + if (i == 1) { + pmac = first; + first = first->next; + free(pmac); + } else { + curr = first; + while (--i > 1) + curr = curr->next; + pmac = curr->next; + curr->next = pmac->next; + free(pmac); + } + mac_num--; + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + clear_main_new(1, 2); + continue; + case 'n': + case 'N': + mvwaddstr(main_sub, 1, 0, MAC_ADD); + curr = first; + while (curr && curr->next) + curr = curr->next; + if (first == NULL) { + first = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + curr->next = NULL; + mac_num++; + get_mac(curr->addr, 1, strlen(MAC_ADD)); +/* + for (i = 0; i < 6; i++) { + get_value(message, 1, 20 + i * 3, 3, ANY_STRING, 0, 0, NULL); + curr->addr[i] = strtol(message, NULL, 16); + } + clear_main_new(1, 2); +*/ + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 3, 0); + continue; + case 'w': + case 'W': + print_help(WAIT_SET); + + Mac[sizeof(Mac) - 1] = 0; + + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].value = Mac; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET_NEXT) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 1) == 0) { + + MacRowStatus[sizeof(MacRowStatus) - 1] = + varbinds[0].oid[sizeof(Mac) - 1]; + varbinds[0].oid = MacRowStatus; + varbinds[0].len_oid = sizeof(MacRowStatus); + varbinds[0].value = &destroy; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].value = Mac; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET_NEXT) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + } + + + curr = first; + i = 1; + + if (auth_mac) { + Mac[sizeof(Mac) - 1] = i; + MacAllow[sizeof(MacAllow) - 1] = i; + MacRowStatus[sizeof(MacRowStatus) - 1] = i; + + varbinds[0].oid = MacRowStatus; + varbinds[0].len_oid = sizeof(MacRowStatus); + varbinds[0].value = &create; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + varbinds[1].oid = Mac; + varbinds[1].len_oid = sizeof(Mac); + varbinds[1].value = auth_enable; + varbinds[1].len_val = 6; + varbinds[1].type = STRING_VALUE; + varbinds[2].oid = MacAllow; + varbinds[2].len_oid = sizeof(MacAllow); + varbinds[2].value = &allow; + varbinds[2].len_val = 1; + varbinds[2].type = INT_VALUE; + print_help(WAIT_SET); + if (snmp(varbinds, 3, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + i++; + } + + + + + while (curr != NULL) { + Mac[sizeof(Mac) - 1] = i; + MacAllow[sizeof(MacAllow) - 1] = i; + MacRowStatus[sizeof(MacRowStatus) - 1] = i; + + varbinds[0].oid = MacRowStatus; + varbinds[0].len_oid = sizeof(MacRowStatus); + varbinds[0].value = &create; + varbinds[0].len_val = 1; + varbinds[0].type = INT_VALUE; + varbinds[1].oid = Mac; + varbinds[1].len_oid = sizeof(Mac); + varbinds[1].value = curr->addr; + varbinds[1].len_val = 6; + varbinds[1].type = STRING_VALUE; + varbinds[2].oid = MacAllow; + varbinds[2].len_oid = sizeof(MacAllow); + varbinds[2].value = &allow; + varbinds[2].len_val = 1; + varbinds[2].type = INT_VALUE; + print_help(WAIT_SET); + if (snmp(varbinds, 3, SET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + curr = curr->next; + i++; + } + print_help(DONE_SET); + goto exit; + case KEY_DOWN: + case KEY_RIGHT: + if (end < mac_num) { + begin++; + end++; + scroll_rows(first, begin, end, 3, 0); + } + + continue; + case KEY_UP: + case KEY_LEFT: + if (begin > 1) { + begin--; + end--; + scroll_rows(first, begin, end, 3, 0); + } + continue; + } + continue; + } + + print_help(ANY_KEY); + exit: + getch(); + quit: + while ((curr = first)) { + first = curr->next; + free(curr); + } + print_title(""); + clear_main(0); +} diff --git a/src/bridge.c b/src/bridge.c new file mode 100644 index 0000000..edaf94e --- /dev/null +++ b/src/bridge.c @@ -0,0 +1,583 @@ +/* + * bridge.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define IPADDR _("[I] IP: ") +#define NETMASK _("[N] Netmask: ") +#define GATEWAY _("[G] Gateway: ") +#define IP_FILTER _("[F] Filter non-IP traffic: ") +#define PR_PORT _("[P] Primary port: ") +#define SB_ATTMAC _("Attached station MAC: ") +#define DHCP _("[D] DHCP client: ") +#define OPER _("[O] Operational mode: ") +#define REMOTE_MAC _("[M] Preferred BSSID (remote MAC addr.): ") +#define CF_PORT _("[C] Configuration-enabled port(s): ") +#define TRAP_PORT _("[T] Trap-sending port(s): ") +#define FW_BCAST _("[R] Forward broadcast traffic: ") +#define SB_BCAST _("[B] Isolate wireless clients (broadcast traffic): ") +#define SB_UCAST _("[U] Isolate wireless clients (unicast traffic): ") +#define HELP _("INGFPDOMSCTRBU - set; W - write conf; Q - quit to menu") + +extern short ap_type; + +void bridging() +{ + + char sysTrapSwitch[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x01, 0x03, + 0x00 + }; + + char operIPAddress[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x01, + 0x00 + }; + char operIPMask[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x02, + 0x00 + }; + char operEthernetAddress[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x03, + 0x00 + }; + char operGateway[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x04, + 0x00 + }; + char operDHCP[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x05, + 0x00 + }; + char PrimaryPort[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x02, 0x06, + 0x00 + }; + /* This one is ATMEL12350 MIB specific. */ + char ConfigPort[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x07, + 0x00 + }; + /* This one is ATMEL12350 TELLUS MIB specific. */ + char TrapPort[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x02, 0x08, + 0x00 + }; + + char IPFilter[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x03, 0x01, + 0x00 + }; + + /* These 3 are ATMEL12350 MIB specific. */ + char ForwardBroadcast[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x03, 0x02, + 0x00 + }; + char SendBackBcast[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x03, 0x03, + 0x00 + }; + char SendBackUnicast[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0xE0, 0x3E, 0x01, 0x01, 0x03, 0x04, + 0x00 + }; + + char bridgeOperationalMode[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, + 0x00 + }; + char bridgeRemoteBridgeBSSID[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x02, + 0x00 + }; + + extern WINDOW *main_sub; + varbind varbinds[15]; + struct in_addr ip, mask, gw; + unsigned char message[1024], filter, primary_port, dhcp, RemoteBSSID[6], + bridge_mode, traps, config_port, fw_bcast, sb_bcast, + sb_ucast; + char m_filter = 0, m_bridge_mode = 0, m_primary_port = 0, m_traps = 0, + m_dhcp = 0, m_ip = 0, m_mask = 0, m_gw = 0, m_remote_bssid = 0, + m_config_port = 0, m_trap_port = 0, m_fw_bcast = 0, m_sb_bcast = 0, + m_sb_ucast = 0; + char *bridge_modes[6] = { + _("Wireless Bridge Point to MultiPoint"), + _("Access Point"), + _("Access Point client"), + _("Wireless Bridge Point to Point"), + _("Repeater"), + ("unknown") + }, *pr_ports[2] = { + _("Ethernet"), + _("Wireless") + }, *cf_trap_ports[3] = { + _("Both"), + _("Ethernet"), + _("Wireless") + }, + oui_sbridges[3] = { 0x00, 0x30, 0x1A }, + oui_tellus[3] = { 0x00, 0x04, 0xDB }, + IS_ATMEL410_SBRIDGES = 0, + IS_ATMEL12350_TELLUS = 0; + int i; + unsigned int trap_port = 0; + + if (ap_type == ATMEL12350) { + operEthernetAddress[5] = 0xE0; + operEthernetAddress[6] = 0x3E; + IPFilter[5] = 0xE0; + IPFilter[6] = 0x3E; + PrimaryPort[5] = 0xE0; + PrimaryPort[6] = 0x3E; + operDHCP[5] = 0xE0; + operDHCP[6] = 0x3E; + operIPAddress[5] = 0xE0; + operIPAddress[6] = 0x3E; + operIPMask[5] = 0xE0; + operIPMask[6] = 0x3E; + operGateway[5] = 0xE0; + operGateway[6] = 0x3E; + bridgeOperationalMode[5] = 0xE0; + bridgeOperationalMode[6] = 0x3E; + bridgeRemoteBridgeBSSID[5] = 0xE0; + bridgeRemoteBridgeBSSID[6] = 0x3E; + sysTrapSwitch[5] = 0xE0; + sysTrapSwitch[6] = 0x3E; + } + + + /* Determine the advanced MIB subtype of the device from its MAC address. */ + varbinds[0].type = NULL_VALUE; + varbinds[0].oid = operEthernetAddress; + varbinds[0].len_oid = sizeof(operEthernetAddress); + varbinds[0].len_val = 0; + + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (ap_type == ATMEL410 && (memcmp(oui_sbridges, varbinds[0].value, 3) ==0)) + IS_ATMEL410_SBRIDGES = 1; + + if (ap_type == ATMEL12350 && (memcmp(oui_tellus, varbinds[0].value, 3) ==0)) + IS_ATMEL12350_TELLUS = 1; + + + for (i = 1; i < 15; i++) { + varbinds[i].type = NULL_VALUE; + varbinds[i].len_val = 0; + varbinds[i].len_oid = sizeof(sysTrapSwitch); + } + + i = 1; + + varbinds[i++].oid = IPFilter; + varbinds[i++].oid = PrimaryPort; + varbinds[i++].oid = operDHCP; + varbinds[i++].oid = operIPAddress; + varbinds[i++].oid = operIPMask; + varbinds[i++].oid = operGateway; + varbinds[i++].oid = bridgeOperationalMode; + varbinds[i++].oid = sysTrapSwitch; + varbinds[i++].oid = bridgeRemoteBridgeBSSID; + if (ap_type == ATMEL12350) { + varbinds[i++].oid = ConfigPort; + varbinds[i++].oid = ForwardBroadcast; + varbinds[i++].oid = SendBackBcast; + varbinds[i++].oid = SendBackUnicast; + if (IS_ATMEL12350_TELLUS) + varbinds[i++].oid = TrapPort; + } + + if (snmp(varbinds, i, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + print_title(_("Bridging")); + + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC, + varbinds[0].value[0] & 0xFF, + varbinds[0].value[1] & 0xFF, + varbinds[0].value[2] & 0xFF, + varbinds[0].value[3] & 0xFF, + varbinds[0].value[4] & 0xFF, + varbinds[0].value[5] & 0xFF); + mvwaddstr(main_sub, 0, 0, message); + + memcpy(&ip.s_addr, varbinds[4].value, 4); + sprintf(message, "%s%s", IPADDR, inet_ntoa(ip)); + mvwaddstr(main_sub, 1, 0, message); + + memcpy(&mask.s_addr, varbinds[5].value, 4); + sprintf(message, "%s%s", NETMASK, inet_ntoa(mask)); + mvwaddstr(main_sub, 1, 24, message); + + memcpy(&gw.s_addr, varbinds[6].value, 4); + sprintf(message, "%s%s", GATEWAY, inet_ntoa(gw)); + mvwaddstr(main_sub, 2, 0, message); + + filter = *(varbinds[1].value); + sprintf(message, "%s%s", IP_FILTER, (filter == 1) ? ON : OFF); + mvwaddstr(main_sub, 3, 0, message); + + if (IS_ATMEL410_SBRIDGES) { + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", SB_ATTMAC, + *(varbinds[2].value +0) & 0xFF, *(varbinds[1].value +1) & 0xFF, + *(varbinds[2].value +2) & 0xFF, *(varbinds[1].value +3) & 0xFF, + *(varbinds[2].value +4) & 0xFF, *(varbinds[1].value +5) & 0xFF); + } else { + primary_port = *(varbinds[2].value); + if (primary_port < 1 || primary_port > 2) { + primary_port = 1; + } + sprintf(message, "%s%s", PR_PORT, pr_ports[primary_port - 1]); + } + mvwaddstr(main_sub, 4, 0, message); + + dhcp = *(varbinds[3].value); + sprintf(message, "%s%s", DHCP, (dhcp == 1) ? ON : OFF); + mvwaddstr(main_sub, 5, 0, message); + + memcpy(RemoteBSSID, varbinds[9].value, 6); + if ((bridge_mode = *(varbinds[7].value)) != 2) { + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", REMOTE_MAC, + *(RemoteBSSID + 0) & 0xFF, *(RemoteBSSID + 1) & 0xFF, + *(RemoteBSSID + 2) & 0xFF, *(RemoteBSSID + 3) & 0xFF, + *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); + mvwaddstr(main_sub, 7, 0, message); + } + if (bridge_mode > 5) + bridge_mode = 6; + sprintf(message, "%s%s", OPER, bridge_modes[bridge_mode - 1]); + mvwaddstr(main_sub, 6, 0, message); + + traps = *(varbinds[8].value); + sprintf(message, "%s%s", TRAPS, (traps == 1) ? ON : OFF); + mvwaddstr(main_sub, 8, 0, message); + + if (ap_type == ATMEL12350) { + config_port = *(varbinds[10].value); + sprintf(message, "%s%s", CF_PORT, cf_trap_ports[config_port]); + mvwaddstr(main_sub, 9, 0, message); + + if (IS_ATMEL12350_TELLUS) { + for (i = 0; i < varbinds[14].len_val; + trap_port += varbinds[14].value[i] * + (1 << ((varbinds[14].len_val - i - 1) * 8)), i++); + sprintf(message, "%s%u", TRAP_PORT, trap_port); + mvwaddstr(main_sub, 10, 0, message); + } + + fw_bcast = *(varbinds[11].value); + sprintf(message, "%s%s", FW_BCAST, (fw_bcast == 1) ? ON : OFF); + mvwaddstr(main_sub, 11, 0, message); + + sb_bcast = *(varbinds[12].value); + sprintf(message, "%s%s", SB_BCAST, (sb_bcast == 1) ? ON : OFF); + mvwaddstr(main_sub, 12, 0, message); + + sb_ucast = *(varbinds[13].value); + sprintf(message, "%s%s", SB_UCAST, (sb_ucast == 1) ? ON : OFF); + mvwaddstr(main_sub, 13, 0, message); + } + wrefresh(main_sub); + noecho(); + + print_help(HELP); + while (1) { + switch (getch()) { + case 'I': + case 'i': + get_ip(&ip, 1, strlen(IPADDR), HELP); + m_ip = 1; + continue; + case 'N': + case 'n': + get_mask(&mask, 1, strlen(IPADDR) + 16 + strlen(NETMASK), HELP); + m_mask = 1; + continue; + case 'G': + case 'g': + get_ip(&gw, 2, strlen(GATEWAY), HELP); + m_gw = 1; + continue; + case 'F': + case 'f': + filter = on_off(3, strlen(IP_FILTER)); + clear_main_new(3, 4); + print_menusel(3, 0, IP_FILTER, (filter == 1) ? ON : OFF); + m_filter = 1; + continue; + case 'P': + case 'p': + if (!IS_ATMEL410_SBRIDGES) { + primary_port = menu_choose(4, strlen(PR_PORT), pr_ports, 2) + 1; + clear_main_new(4, 5); + print_menusel(4, 0, PR_PORT, pr_ports[primary_port - 1]); + m_primary_port = 1; + } + continue; + case 'D': + case 'd': + dhcp = on_off(5, strlen(DHCP)); + clear_main_new(5, 6); + print_menusel(5, 0, DHCP, (dhcp == 1) ? ON : OFF); + m_dhcp = 1; + continue; + case 'O': + case 'o': + bridge_mode = menu_choose(6, strlen(OPER), bridge_modes, 5) + 1; + clear_main_new(6, 8); + print_menusel(6, 0, OPER, bridge_modes[bridge_mode - 1]); + if (bridge_mode != 2) { + sprintf(message, "%02X%02X%02X%02X%02X%02X", + *(RemoteBSSID + 0) & 0xFF, + *(RemoteBSSID + 1) & 0xFF, + *(RemoteBSSID + 2) & 0xFF, + *(RemoteBSSID + 3) & 0xFF, + *(RemoteBSSID + 4) & 0xFF, + *(RemoteBSSID + 5) & 0xFF); + print_menusel(7, 0, REMOTE_MAC, message); + } + m_bridge_mode = 1; + continue; + case 'M': + case 'm': + if (bridge_mode == 2) + continue; + + get_mac(RemoteBSSID, 7, strlen(REMOTE_MAC)); +/* mvwaddstr(main_sub, 7, 21, " : : : : : "); + for (i = 0; i < 6; i++) { + get_value(message, 7, 21 + i * 3, 3, ANY_STRING, 0, 0, NULL); + RemoteBSSID[i] = strtol(message, NULL, 16); + } + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", REMOTE_MAC, + *(RemoteBSSID + 0) & 0xFF, *(RemoteBSSID + 1) & 0xFF, + *(RemoteBSSID + 2) & 0xFF, *(RemoteBSSID + 3) & 0xFF, + *(RemoteBSSID + 4) & 0xFF, *(RemoteBSSID + 5) & 0xFF); +*/ + m_remote_bssid = 1; + continue; + case 'S': + case 's': + traps = on_off(8, strlen(TRAPS)); + clear_main_new(8, 9); + print_menusel(8, 0, TRAPS, (traps == 1) ? ON : OFF); + m_traps = 1; + continue; + case 'C': + case 'c': + if (ap_type == ATMEL12350) { + config_port = menu_choose(9, strlen(CF_PORT), cf_trap_ports, 3); + clear_main_new(9, 10); + print_menusel(9, 0, CF_PORT, cf_trap_ports[config_port]); + m_config_port = 1; + } + continue; + case 'T': + case 't': + if (IS_ATMEL12350_TELLUS) { + get_value(message, 10, strlen(TRAP_PORT), 6, INT_STRING, + 0, 65535, HELP); + trap_port = atoi(message); + m_trap_port = 1; + } + continue; + case 'R': + case 'r': + if (ap_type == ATMEL12350) { + fw_bcast = on_off(11, strlen(FW_BCAST)); + clear_main_new(11, 12); + print_menusel(11, 0, FW_BCAST, (fw_bcast == 1) ? ON : OFF); + m_fw_bcast = 1; + } + continue; + case 'B': + case 'b': + if (ap_type == ATMEL12350) { + sb_bcast = on_off(12, strlen(SB_BCAST)); + clear_main_new(12, 13); + print_menusel(12, 0, SB_BCAST, (sb_bcast == 1) ? ON : OFF); + m_sb_bcast = 1; + } + continue; + case 'U': + case 'u': + if (ap_type == ATMEL12350) { + sb_ucast = on_off(13, strlen(SB_UCAST)); + clear_main_new(13, 14); + print_menusel(13, 0, SB_UCAST, (sb_ucast == 1) ? ON : OFF); + m_sb_ucast = 1; + } + continue; + case 'w': + case 'W': + i = 0; + if (m_filter) { + varbinds[i].oid = IPFilter; + varbinds[i].len_oid = sizeof(IPFilter); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &filter; + varbinds[i].len_val = 1; + i++; + } + if (m_primary_port) { + varbinds[i].oid = PrimaryPort; + varbinds[i].len_oid = sizeof(PrimaryPort); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &primary_port; + varbinds[i].len_val = 1; + i++; + } + if (m_dhcp) { + varbinds[i].oid = operDHCP; + varbinds[i].len_oid = sizeof(operDHCP); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &dhcp; + varbinds[i].len_val = 1; + i++; + } + if (m_ip) { + varbinds[i].oid = operIPAddress; + varbinds[i].len_oid = sizeof(operIPAddress); + ip.s_addr = htonl(ip.s_addr); + ip.s_addr = swap4(ip.s_addr); + varbinds[i].value = (char *) &ip.s_addr; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_mask) { + varbinds[i].oid = operIPMask; + varbinds[i].len_oid = sizeof(operIPMask); + mask.s_addr = htonl(mask.s_addr); + mask.s_addr = swap4(mask.s_addr); + varbinds[i].value = (char *) &mask.s_addr; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_gw) { + varbinds[i].oid = operGateway; + gw.s_addr = htonl(gw.s_addr); + gw.s_addr = swap4(gw.s_addr); + varbinds[i].len_oid = sizeof(operGateway); + varbinds[i].value = (char *) &gw.s_addr; + varbinds[i].len_val = 4; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_traps) { + varbinds[i].oid = sysTrapSwitch; + varbinds[i].len_oid = sizeof(sysTrapSwitch); + varbinds[i].value = &traps; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_bridge_mode) { + varbinds[i].oid = bridgeOperationalMode; + varbinds[i].len_oid = sizeof(bridgeOperationalMode); + varbinds[i].value = (char *) &bridge_mode; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_remote_bssid) { + varbinds[i].oid = bridgeRemoteBridgeBSSID; + varbinds[i].len_oid = sizeof(bridgeRemoteBridgeBSSID); + varbinds[i].value = RemoteBSSID; + varbinds[i].len_val = 6; + varbinds[i].type = STRING_VALUE; + i++; + } + if (m_config_port) { + varbinds[i].oid = ConfigPort; + varbinds[i].len_oid = sizeof(ConfigPort); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &config_port; + varbinds[i].len_val = 1; + i++; + } + if (m_fw_bcast) { + varbinds[i].oid = ForwardBroadcast; + varbinds[i].len_oid = sizeof(ForwardBroadcast); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &fw_bcast; + varbinds[i].len_val = 1; + i++; + } + if (m_sb_bcast) { + varbinds[i].oid = SendBackBcast; + varbinds[i].len_oid = sizeof(SendBackBcast); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &sb_bcast; + varbinds[i].len_val = 1; + i++; + } + if (m_sb_ucast) { + varbinds[i].oid = SendBackUnicast; + varbinds[i].len_oid = sizeof(SendBackUnicast); + varbinds[i].type = INT_VALUE; + varbinds[i].value = (char *) &sb_ucast; + varbinds[i].len_val = 1; + i++; + } + if (m_trap_port) { + int len_val; + + len_val = (trap_port > 0x7fff) ? 3 : (trap_port > 0x7f) ? 2 : 1; + varbinds[i].oid = TrapPort; + varbinds[i].len_oid = sizeof(TrapPort); + varbinds[i].type = STRING_VALUE; + varbinds[i].value = (char *) &trap_port; + varbinds[i].len_val = len_val; + i++; + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) + print_helperr(ERR_SET); + else + print_help(DONE_SET); + goto exit; + case 'Q': + case 'q': + goto quit; + } + continue; + } + exit: + getch(); + quit: + print_title(""); + clear_main(0); +} + diff --git a/src/nwn_advanced.c b/src/nwn_advanced.c new file mode 100644 index 0000000..986baca --- /dev/null +++ b/src/nwn_advanced.c @@ -0,0 +1,136 @@ +/* + * wlan.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" +#include + +#define RATES_RECORD "[%d] %02.1fM\t%s" + +void advanced() +{ + char smtStationDBTimeout[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, 0x0F, 0x00 }; + char smtACKWindow[] = { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x02, 0x01, 22, 0x00 }; + + char m_dbtimeout=0, m_ackwindow=0, message[80], ackwindow; + unsigned int dbtimeout; + int i; + extern WINDOW *main_sub; + varbind varbinds[2]; + + for (i = 0; i < 2; i++) { + varbinds[i].len_val = 0; + varbinds[i].type = NULL_VALUE; + } + varbinds[0].oid = smtStationDBTimeout; + varbinds[0].len_oid = sizeof(smtStationDBTimeout); + varbinds[1].oid = smtACKWindow; + varbinds[1].len_oid = sizeof(smtACKWindow); + print_help(WAIT_RET); + if (snmp(varbinds, 2, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (varbinds[0].len_val == 2) + dbtimeout = varbinds[0].value[0]*256 + varbinds[0].value[1]; + else + dbtimeout = *(varbinds[0].value); + + ackwindow = *(varbinds[1].value); + + sprintf(message, _("[D] DB Station Timeout: %d"), dbtimeout); + mvwaddstr(main_sub, 1, 0, message); + sprintf(message, _("[A] ACK Window: %d"), ackwindow); + mvwaddstr(main_sub, 2, 0, message); + + print_title(_("Advanced Options")); + print_help(_("DA - options; W - write conf; Q - quit to menu")); + wrefresh(main_sub); + + noecho(); + while (1) { + switch (getch()) { + case 'Q': + case 'q': + goto quit; + case 'D': + case 'd': + get_value(message, 1, 24, 6, INT_STRING, 0, 0, NULL); + dbtimeout = atoi(message); + m_dbtimeout = 1; + continue; + case 'A': + case 'a': + get_value(message, 2, 16, 4, INT_STRING, 0, 0, NULL); + ackwindow = atoi(message); + m_ackwindow = 1; + continue; + case 'w': + case 'W': + i = 0; + if (m_dbtimeout) { + if (dbtimeout / 256 >= 1) { + message[0] = (dbtimeout - dbtimeout % 256)/ 256; + message[1] = dbtimeout % 256; + m_dbtimeout = 2; + } + else { + m_dbtimeout = 1; + message[0] = dbtimeout; + } + + varbinds[i].oid = smtStationDBTimeout; + varbinds[i].len_oid = sizeof(smtStationDBTimeout); + varbinds[i].value = message; + varbinds[i].len_val = m_dbtimeout; + varbinds[i].type = INT_VALUE; + i++; + } + if (m_ackwindow) { + varbinds[i].oid = smtACKWindow; + varbinds[i].len_oid = sizeof(smtACKWindow); + varbinds[i].value = &ackwindow; + varbinds[i].len_val = 1; + varbinds[i].type = INT_VALUE; + i++; + } + + print_help(WAIT_SET); + if (snmp(varbinds, i, SET) <= 0) { + print_helperr(ERR_SET); + goto exit; + } + print_help(DONE_SET); + goto exit; + default: + continue; + } + } + + exit: + getch(); + quit: + print_title(""); + clear_main(0); +} + diff --git a/src/nwn_latest.c b/src/nwn_latest.c new file mode 100644 index 0000000..56b02f2 --- /dev/null +++ b/src/nwn_latest.c @@ -0,0 +1,129 @@ +/* + * latest.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +extern WINDOW *main_sub; + +#define OID_NUM 8 +#define DESCR _("Reason: %u Station: %02X%02X%02X%02X%02X%02X") + +void latest() +{ + char oid_dot11DisassociateReason[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x0f, 0x01 }; + char oid_dot11DisassociateStation[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x10, 0x01 }; + char oid_dot11DeauthenticateReason[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x11, 0x01 }; + char oid_dot11DeauthenticateStation[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x12, 0x01 }; + char oid_dot11AuthenticateFailStatus[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x13, 0x01 }; + char oid_dot11AuthenticateFailStation[] = + { 0x2a, 0x86, 0x48, 0xce, 0x34, 0x01, 0x01, 0x01, 0x14, 0x01 }; + char oid_secLastError[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02, + 0x03, 0x00 + }; + char oid_secLastErrorAddress[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x02, + 0x04, 0x00 + }; + char message[1024]; + + int i; + varbind varbinds[OID_NUM]; + noecho(); + print_help(WAIT_RET); + + for (i = 0; i < OID_NUM; i++) { + varbinds[i].value = oid_dot11DisassociateReason; + varbinds[i].len_val = 0; + varbinds[i].type = NULL_VALUE; + } + varbinds[0].oid = oid_dot11DisassociateReason; + varbinds[0].len_oid = sizeof(oid_dot11DisassociateReason); + varbinds[1].oid = oid_dot11DisassociateStation; + varbinds[1].len_oid = sizeof(oid_dot11DisassociateStation); + varbinds[2].oid = oid_dot11DeauthenticateReason; + varbinds[2].len_oid = sizeof(oid_dot11DeauthenticateReason); + varbinds[3].oid = oid_dot11DeauthenticateStation; + varbinds[3].len_oid = sizeof(oid_dot11DeauthenticateStation); + varbinds[4].oid = oid_dot11AuthenticateFailStatus; + varbinds[4].len_oid = sizeof(oid_dot11AuthenticateFailStatus); + varbinds[5].oid = oid_dot11AuthenticateFailStation; + varbinds[5].len_oid = sizeof(oid_dot11AuthenticateFailStation); + varbinds[6].oid = oid_secLastError; + varbinds[6].len_oid = sizeof(oid_secLastError); + varbinds[7].oid = oid_secLastErrorAddress; + varbinds[7].len_oid = sizeof(oid_secLastErrorAddress); + + if (snmp(varbinds, OID_NUM, GET) <= 0) { + print_help(ERR_RET); + goto exit; + } + + print_title(_("Latest Events")); + mvwaddstr(main_sub, 1, 0, _("Disassociate:")); + sprintf(message, DESCR, + *varbinds[0].value, + varbinds[1].value[0] & 0xFF, varbinds[1].value[1] & 0xFF, + varbinds[1].value[2] & 0xFF, varbinds[1].value[3] & 0xFF, + varbinds[1].value[4] & 0xFF, varbinds[1].value[5] & 0xFF); + mvwaddstr(main_sub, 2, 0, message); + mvwaddstr(main_sub, 4, 0, _("Deauthenticate:")); + sprintf(message, DESCR, + *varbinds[2].value, + varbinds[3].value[0] & 0xFF, varbinds[3].value[1] & 0xFF, + varbinds[3].value[2] & 0xFF, varbinds[3].value[3] & 0xFF, + varbinds[3].value[4] & 0xFF, varbinds[3].value[5] & 0xFF); + mvwaddstr(main_sub, 5, 0, message); + mvwaddstr(main_sub, 7, 0, _("Authenticate Fail:")); + sprintf(message, DESCR, *varbinds[4].value, + varbinds[5].value[0] & 0xFF, varbinds[5].value[1] & 0xFF, + varbinds[5].value[2] & 0xFF, varbinds[5].value[3] & 0xFF, + varbinds[5].value[4] & 0xFF, varbinds[5].value[5] & 0xFF); + mvwaddstr(main_sub, 8, 0, message); + mvwaddstr(main_sub, 10, 0, _("Last error:")); + mvwaddstr(main_sub, 11, 0, _("Error:")); + i = 0; + while (varbinds[6].len_val > i && *(varbinds[6].value + i)) + mvwaddch(main_sub, 11, i + 15, *(varbinds[6].value + i++)); + + sprintf(message, "%s%02X%02X%02X%02X%02X%02X", MAC, + varbinds[7].value[0] & 0xFF, varbinds[7].value[1] & 0xFF, + varbinds[7].value[2] & 0xFF, varbinds[7].value[3] & 0xFF, + varbinds[7].value[4] & 0xFF, varbinds[7].value[5] & 0xFF); + mvwaddstr(main_sub, 12, 0, message); + + wrefresh(main_sub); + + print_help(ANY_KEY); + exit: + getch(); + print_title(""); + clear_main(0); +} diff --git a/src/stations.c b/src/stations.c new file mode 100644 index 0000000..2c435d0 --- /dev/null +++ b/src/stations.c @@ -0,0 +1,355 @@ +/* + * stations.c from Access Point SNMP Utils for Linux + * + * Copyright (c) 2002 Roman Festchook + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License Version 2 from + * June 1991 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +#include +#include +#include +#include +#include +#include +#include "ap-utils.h" +#include "ap-curses.h" + +#define STAS _("Associated Stations") + +#define MAX_LINES LINES-4 + +extern int LINES; +extern WINDOW *main_sub; +extern short ap_type; + +void stations() +{ + struct AssociatedSTAsInfo { + unsigned short Num; + unsigned char MacAddress[6]; + } *mac = NULL, get; + char StasNum[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x01, + 0x00 + }; + + char StasMac[] = + { 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x02, 0x05, 0x02, + 0x00 + }; + + char bridgeOperationalMode[] = { + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0x1A, 0x01, 0x01, 0x04, 0x01, 0x00 + }; + + + struct MacListStat *first = NULL, *curr = NULL; + char message[1024]; + int mac_num, begin, end, total_mac; + varbind varbinds[1]; + + + if (ap_type == ATMEL12350) { + StasNum[5] = 0xE0; + StasNum[6] = 0x3E; + StasMac[5] = 0xE0; + StasMac[6] = 0x3E; + bridgeOperationalMode[5] = 0xE0; + bridgeOperationalMode[6] = 0x3E; + } + + print_title(STAS); + + varbinds[0].oid = bridgeOperationalMode; + varbinds[0].len_oid = sizeof(bridgeOperationalMode); + varbinds[0].value = bridgeOperationalMode; + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + + if (*(varbinds[0].value) == 3) { + mvwaddstr(main_sub, 3, 1, _("AP now in AP Client Mode and don't has any associated stations")); + print_help(ANY_KEY); + wrefresh(main_sub); + getch(); + goto exit; + } + + + + varbinds[0].oid = StasNum; + varbinds[0].len_oid = sizeof(StasNum); + varbinds[0].value = StasNum; + varbinds[0].type = NULL_VALUE; + varbinds[0].len_val = 0; + print_help(WAIT_RET); + if (snmp(varbinds, 1, GET) <= 0) { + print_helperr(ERR_RET); + getch(); + goto exit; + } + + total_mac = *(varbinds[0].value); + mac_num = 1; + + sprintf(message, "%s: %d", STAS, total_mac); + print_title(message); + mvwaddstr(main_sub, 0, 3, _("Id MAC address")); + noecho(); + + while (mac_num <= total_mac) { + + varbinds[0].oid = StasMac; + varbinds[0].len_oid = sizeof(StasMac); + varbinds[0].type = INT_VALUE; + get.Num = swap2(mac_num); + varbinds[0].value = (char *) &get; + varbinds[0].len_val = sizeof(get); + + if (snmp(varbinds, 1, SET) <= 0) { + print_helperr(ERR_RET); + getch(); + goto exit; + } + + if (varbinds[0].len_val == 24) { + if (mac) + free(mac); + mac = + (struct AssociatedSTAsInfo *) malloc(varbinds[0].len_val); + memcpy(mac, varbinds[0].value, varbinds[0].len_val); +/* mac = (struct AssociatedSTAsInfo *) varbinds[0].value;*/ + } else { + print_helperr(_("AssociatedSTAsInfo packet error")); + goto exit; + } + + + if (first == NULL) { + first = + (struct MacListStat *) malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = + (struct MacListStat *) malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + + memcpy(curr->addr, mac->MacAddress, 6); + curr->next = NULL; + mac_num++; + } + begin = 1; + end = (MAX_LINES < mac_num) ? MAX_LINES : mac_num; + scroll_rows(first, begin, end, 1, 0); + print_help(_("Arrows - scroll; S - save to file; Q - quit to menu.")); + while (1) { + switch (getch()) { + case 'S': + case 's': + save_Stations(first); + continue; + case KEY_RIGHT: + case KEY_DOWN: + if (end < mac_num) { + begin++; + end++; + scroll_rows(first, begin, end, 1, 0); + } + continue; + case KEY_UP: + case KEY_LEFT: + if (begin > 1) { + begin--; + end--; + scroll_rows(first, begin, end, 1, 0); + } + continue; + case 'Q': + case 'q': + goto exit; + } + } + + exit: + while ((curr = first)) { + first = curr->next; + free(curr); + } + print_title(""); + clear_main(0); +} + +void nwn_stations() +{ + unsigned char Mac[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, + 0x02, 0x01, 0x02, 0x80, 0x00 }; + + unsigned char Quality[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, + 0x02, 0x01, 0x03, 0x80, 0x00 }; + unsigned char Age[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, + 0x02, 0x01, 0x04, 0x80, 0x00 }; + unsigned char RSSI[] = + { 0x2b, 0x06, 0x01, 0x04, 0x01, 0x87, 0x29, 0x03, 0x01, 0x03, 0x01, + 0x02, 0x01, 0x05, 0x80, 0x00 }; + + struct MacListStat *first = NULL, *curr = NULL; + char null[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, message[1024]; + int mac_num, begin, end; + varbind varbinds[4]; + unsigned char next_num; + + + mac_num = 0; + print_title(_("Associated stations")); + mvwaddstr(main_sub, 0, 3, + _("Id MAC address Quality Age RSSI")); + noecho(); + print_help(WAIT_RET); + + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET_NEXT) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + next_num = varbinds[0].oid[varbinds[0].len_oid - 1]; + + while (memcmp(varbinds[0].oid, Mac, sizeof(Mac) - 2) == 0) { + + Mac[sizeof(Mac) - 1] = next_num; + Quality[sizeof(Mac) - 1] = next_num; + Age[sizeof(Mac) - 1] = next_num; + RSSI[sizeof(Mac) - 1] = next_num; + + if(sizeof(Mac) == varbinds[0].len_oid) { + Mac[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; + Quality[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; + Age[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; + RSSI[sizeof(Mac) - 2] = varbinds[0].oid[varbinds[0].len_oid - 2]; + } + + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + varbinds[1].oid = Quality; + varbinds[1].len_oid = sizeof(Quality); + varbinds[1].len_val = 0; + varbinds[1].type = NULL_VALUE; + varbinds[2].oid = Age; + varbinds[2].len_oid = sizeof(Age); + varbinds[2].len_val = 0; + varbinds[2].type = NULL_VALUE; + varbinds[3].oid = RSSI; + varbinds[3].len_oid = sizeof(RSSI); + varbinds[3].len_val = 0; + varbinds[3].type = NULL_VALUE; + if (snmp(varbinds, 4, GET) <= 0) { + print_helperr(ERR_RET); + getch(); + goto exit; + } + + + if (memcmp(null, varbinds[0].value, 6)) { + if (first == NULL) { + first = + (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = first; + } else { + curr->next = + (struct MacListStat *) + malloc(sizeof(struct MacListStat)); + curr = curr->next; + } + memcpy(curr->addr, varbinds[0].value, 6); + curr->quality = *varbinds[1].value; + curr->idle = *varbinds[2].value; + curr->rssi = *varbinds[3].value; + curr->next = NULL; + mac_num++; + } + + varbinds[0].oid = Mac; + varbinds[0].len_oid = sizeof(Mac); + varbinds[0].len_val = 0; + varbinds[0].type = NULL_VALUE; + if (snmp(varbinds, 1, GET_NEXT) <= 0) { + print_helperr(ERR_RET); + goto exit; + } + next_num = varbinds[0].oid[varbinds[0].len_oid - 1]; + + } + sprintf(message, "%s: %d", _("Associated stations"), mac_num); + print_title(message); + if(mac_num) { + begin = 1; + end = (MAX_LINES < mac_num+1) ? MAX_LINES : mac_num+1; + scroll_rows(first, begin, end, 1, 1); + print_help(_("Arrows - scroll; S - save to file; Q - quit to menu.")); + while (1) { + switch (getch()) { + case 'S': + case 's': + save_Stations(first); + continue; + case KEY_DOWN: + case KEY_RIGHT: + if (end < mac_num+1) { + begin++; + end++; + scroll_rows(first, begin, end, 1, 1); + } + continue; + case KEY_UP: + case KEY_LEFT: + if (begin > 1) { + begin--; + end--; + scroll_rows(first, begin, end, 1, 1); + } + continue; + case 'Q': + case 'q': + goto exit; + } + } + } + + print_help(ANY_KEY); + getch(); + + exit: + while ((curr = first)) { + first = curr->next; + free(curr); + } + + print_title(""); + clear_main(0); +} + -- 2.39.2