diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fcb6a2f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build diff --git a/.version b/.version deleted file mode 100644 index 21bb5e1..0000000 --- a/.version +++ /dev/null @@ -1 +0,0 @@ -2.2.5 diff --git a/3rd-party/PDCurses/.gitignore b/3rd-party/PDCurses/.gitignore new file mode 100644 index 0000000..531f43e --- /dev/null +++ b/3rd-party/PDCurses/.gitignore @@ -0,0 +1,47 @@ +*.[oa] +*.exe +firework +manext +libXCurses.so +ozdemo +newtest +ptest +rain +sdltest +testcurs +tuidemo +worm +xmas +*.sho +Makefile +config.h +config.log +config.status +PDCurses.md +xcurses-config +*.dll +wingui.gif +wingui.htm +*.bat +clock.c +clock1.c +fullscrn.c +hello +hello.c +wingui/wcr* +wingui/wct* +wingui/wc_* +wingui/wcw* +wingui/z* +wingui/scr2html.c +wingui/newtest* +wingui/*.sav +wingui/*.def +wincon/*.def +*.obj +*.bak +*.map +*.lib +m +.vscode +build \ No newline at end of file diff --git a/3rd-party/PDCurses/.travis.yml b/3rd-party/PDCurses/.travis.yml new file mode 100644 index 0000000..442ea6b --- /dev/null +++ b/3rd-party/PDCurses/.travis.yml @@ -0,0 +1,49 @@ +language: c + +os: + - linux + - osx + +compiler: + - gcc + - clang + +env: + - BUILD_TYPE=Debug CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=OFF -DPDCDEBUG=ON" + - BUILD_TYPE=Debug CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDCDEBUG=ON" + - BUILD_TYPE=Debug CMAKE_ARGS="-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDCDEBUG=ON" + + - BUILD_TYPE=Release CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=OFF" + - BUILD_TYPE=Release CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=ON" + - BUILD_TYPE=Release CMAKE_ARGS="-DPDC_WIDE=ON -DPDC_UTF8=OFF" + + - BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=OFF" + - BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DPDC_WIDE=OFF -DPDC_UTF8=ON" + - BUILD_TYPE=MinSizeRel CMAKE_ARGS="-DPDC_WIDE=ON -DPDC_UTF8=OFF" + +addons: + apt: + packages: + - libncurses5-dev + - libncursesw5-dev + - libxaw7-dev + +install: + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then mkdir ${DEPS_DIR} && cd ${DEPS_DIR} && pwd; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then travis_retry wget --no-check-certificate https://cmake.org/files/v3.11/cmake-3.11.0-Linux-x86_64.tar.gz; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then echo "96d67e21f0983ebf0fffc5b106ec338c *cmake-3.11.0-Linux-x86_64.tar.gz" > cmake_md5.txt; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then md5sum -c cmake_md5.txt; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tar -xvf cmake-3.11.0-Linux-x86_64.tar.gz > /dev/null; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then mv cmake-3.11.0-Linux-x86_64 cmake-install; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:$PATH; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install ncurses; fi + +before_script: + - cd ${TRAVIS_BUILD_DIR} + - mkdir build && cd build + - cmake -DCMAKE_VERBOSE_MAKEFILE=FALSE -DCMAKE_BUILD_TYPE=${BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/build/dist ${CMAKE_ARGS} + .. +script: + - cmake --build . --config ${BUILD_TYPE} --target install diff --git a/3rd-party/PDCurses/CMakeLists.txt b/3rd-party/PDCurses/CMakeLists.txt new file mode 100644 index 0000000..861748e --- /dev/null +++ b/3rd-party/PDCurses/CMakeLists.txt @@ -0,0 +1,68 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to MinSizeRel.") +endif() + +set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake") + +include (get_version) + +if(MSVC) + set(CMAKE_DEBUG_POSTFIX d) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") # enable parallel builds +endif() + +message(STATUS "Generator .............. ${CMAKE_GENERATOR}") +message(STATUS "Build Type ............. ${CMAKE_BUILD_TYPE}") + +include(build_options) +include(build_dependencies) + +project(pdcurses VERSION "${CURSES_VERSION}" LANGUAGES C) +message(STATUS "PDC Version ............ ${PROJECT_VERSION}") + +include(gen_config_header) + +file(GLOB pdcurses_src_files pdcurses/*.c) + +if(CYGWIN) + message(STATUS "Windows Kit UM lib path = ${WINDOWS_KIT_LIBRARY_DIR}") + link_directories(${WINDOWS_KIT_LIBRARY_DIR}) +endif() + +if(PDC_DOS_BUILD) # currently requires a unique toolchain file + + add_subdirectory(dos) + +elseif(PDC_OS2_BUILD) # currently requires a unique toolchain file + + add_subdirectory(os2) + +else() + + add_subdirectory(ncurses) + + if(PDC_SDL2_BUILD) + + add_subdirectory(sdl2) + + endif() + + if(UNIX) + add_subdirectory(vt) + endif() + + if(WIN32) + + add_subdirectory(wincon) + add_subdirectory(wingui) + + endif() + +endif() + +add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake") + +set(CPACK_COMPONENTS_ALL applications) diff --git a/3rd-party/PDCurses/HISTORY.md b/3rd-party/PDCurses/HISTORY.md new file mode 100644 index 0000000..8ed4f5a --- /dev/null +++ b/3rd-party/PDCurses/HISTORY.md @@ -0,0 +1,2036 @@ +PDCurses 4.0.4 - 2019 Jan 20 +========================= +Major new feature: +------------------- + +- New VT backend. Works within an xterm or xterm-based terminal and some + other terminals. Mostly works in the Linux console, and on Win10 + directly and on Win9x/DOS if ANSI.SYS (or NANSI or NNANSI .SYS or .COM) + are installed. + +Minor new features: +------------------- + +- SDL2 variant: dimmed, bold, blinking, and RGB text are handled, as is + window resizing. + +- DOS variant: cross-compilation from GNU/Linux works with both DJGPP and + Watcom C/C++; and, 16-bit and 32-bit Watcom makefiles have been combined + into one + +- Many modifications (and some bug fixes) taken from William McBrine's + branch. An effort has been made to narrow the gap between the forks + where possible. But both forks are moving targets with different + design choices and priorities. + +- Demos improved to show version info + +Bug fixes +------------------- +- compilation warnings/errors with some compilers in some variants #53, #57, #58, #65, ... + +- newtest sample was broken in all widw variants #60 + +- the paste button printed debug output #62 + +- some corner cases (midnight crossing, atomicity of tick count reads) in + DOS version of napms() were not handled well + +PDCurses 4.0.2 - 2017 Sep 12 +========================= +Major new features: +------------------- + +- New WinGUI (Windows GUI) and SDL2 backends. + SDL1 is still supported, but may eventually go away. + +- Bold, italic, underlined, overlined, dimmed, 'strikeout', blinking text, + 256 colors and color pairs, and full RGB colors. + These are all supported in WinGUI and mostly supported in X11, SDL1 and SDL2. + +- In WinGUI, one can choose a font, and both programmatic and user resizing + are supported. + (Recompiling is necessary to change the font in X11.) + +- (WinGUI only) Support of SMP Unicode (points beyond 64K) and combining + characters. + This may be extended to X11 and SDL2 eventually. + +- Demos corrected to be buildable and testable with `ncurses`. + +Minor new features +------------------- +(note that not all of these are available on all backends) + +- Support for up to nine mouse buttons and wheel and tilt-wheel mice, and + double and triple mouse clicks + +- (X11, WinGUI, Win32) Extended range of keys that are recognized. This + now includes most of the "oddball" keys such as 'browser back' and + 'favorites' found on some keyboards. + +- Blinking cursors in WinGUI and X11 of various shapes (this could be + extended to SDLx eventually). + +- In X11 and WinGUI, one can call resize_term( ) before initscr( ) to set + the initial window size. + +- Soft Label Keys (SLKs) are considerably more flexible, with the ability + to set arbitrary numbers of keys and groupings. + See slk.c for details. This applies to all backends. + +- Many changes to `testcurs` to test all these new features, and `newtest` + added to test still more features. + +- Option to get detailed version information of the used PDCurses library + at run time with new exported `PDC_version` as `PDC_version_info` structure. + +- ACS_x and WACS_x #defines extended to include a lot of "alternative + characters" that overlap in Unicode and CP-437: double-line box chars, + card suits, vulgar fractions, etc. + This applies to all backends. See `acs_defs.h` for the full list. + +- Cleaned up some makefiles for Win32 and WinGUI. + On both platforms, `vcwin32.mak` can now be used with the Intel(R) compiler, + and `mingwin32.mak` can be used to cross-compile from Linux, or in + `command.com` under Windows, or with Cygwin/MSYS. + Also added a makefile for Digital Mars for the DOS version. + +- The "def" files that were needed before to create PDCurses on Windows + are removed as they are no longer necessary. + +PDCurses 3.4 - 2008/09/08 +========================= + +Nothing much new this time, but I've been sitting on some bug fixes for +almost a year, so it's overdue. Apart from bugs, the main changes are in +the documentation. + +New features: +------------------- + +- setsyx() is now a function rather than a macro. + +Bug fixes and such: +------------------- + +- In x11, the xc_atrtab table size was under-calculated by half, + resulting in crashes at (oddly) certain line counts. (It should've + crashed a lot more.) Reported by Mark Hessling. + +- Test for moved cursor was omitting the window origin offset. Reported + by Carey Evans. + +- Is DOS and OS/2, the value for max items in key_table was still wrong. + Reported by C.E. + +- Changed isendwin() so it won't crash after delscreen(). + +- Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs(). + +- Disable QuickEdit Mode when enabling mouse input for the Win32 + console; reported by "Zalapkrakna". + +- Fix for building under Innotek C (I hope). Report by Elbert Pol, fix + courtesy of Paul Smedley. + +- Unified exports list with no duplicates -- pdcurses.def is now built + from components at compile time. + +- Don't install curspriv.h, and don't include it with binary + distributions. + +- Building DLLs with LCC is no longer supported, due to the primitive + nature of its make.exe. + +- Export the terminfo stub functions from the DLLs, too. + +- Added support for Apple's ".dylib" in configure. Suggested by Marc + Vaillant (who says it's needed with OS 10.5.) + +- In sdl1/Makefile.mng, ensure that CC is set. + +- In the gcc makefiles, "$?" didn't really have the desired effect -- + _all_ the dependencies showed up on the command line, including + curses.h, and pdcurses.a twice. And apparently, this can mess up some + old version (?) of MinGW. So, revert to spelling out "tuidemo.o + tui.o". Reported by "Howard L." + +- Extensive documentation revision and reorganizing. More to do here. + For example, I moved the build instructions from INSTALL (which never + really described installation) to the platform-specific READMEs. + +- New indentation standard: four spaces, no tabs. + +------------------------------------------------------------------------ + +PDCurses 3.3 - 2007/07/11 +========================= + +This release adds an SDL backend, refines the demos, and is faster in +some cases. + +New features: +------------------- + +- SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details. + +- Double-buffering -- minimize screen writes by checking, in doupdate() + and wnoutrefresh(), whether the changes to curscr are really changes. + In most cases, this makes no difference (writes were already limited + to areas marked as changed), but it can greatly reduce the overhead + from touchwin(). It also helps if you have small, separated updates on + the same line. + +- The PDC_RGB colors can now be used, or not, with any platform (as long + as the same options are used when compiling both the library and + apps). This may help if you have apps that are hardwired to assume + certain definitions. + +- Restored the use_default_colors() stuff from the ncurses versions of + the rain and worm demos, to make them "transparent" (this is useful + now, with the SDL port); added transparency to newdemo. + +- Added setlocale() to tuidemo, to make it easier to browse files with + non-ASCII characters. + +- Sped up firework demo by replacing unneeded clear() and init_pair() + calls. + +- Allow exit from ptest demo by typing 'q'. + +- New functions for implementors: PDC_pair_content() and PDC_init_pair() + (the old pdc_atrtab stuff was arguably the last remnant of code in the + pdcurses directory that was based on platform details). + +Bug fixes and such: +------------------- + +- Implicit wrefresh() needs to be called from wgetch() when the window's + cursor position is changed, even if there are no other changes. + +- Set SP->audible on a per-platform basis, as was documented in + IMPLEMNT, but not actually being done. + +- Minor tweaks for efficiency and readability, notably with wscrl(). + +- tuidemo didn't work correctly on monochrome screens when A_COLOR was + defined -- the color pair numbers appeared as the corresponding + character; also, the input box was (I now realize) broken with ncurses + since our 2.7, and broke more subtly with PDCurses' new implicit + refresh handling; also, the path to the default file for the Browse + function was a bit off. + +- Assume in the demos that curs_set() is always available -- there's no + good test for this, and the existing tests were bogus. + +- Made the command-line parameter for ptest work. (If given an argument, + it delays that number of milliseconds between changes, instead of + waiting for a key, and automatically loops five times.) + +- Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside + the platform directory. + +- Building the X11 port with Cygwin required manually editing the + Makefile after configuring; no longer. Reported by Warren W. Gay. + +- Minor tightening of configure and makefiles. + +- Bogus references to "ACS_BLCORNER" in the border man page. Reported by + "Walrii". + +- slk_wlabel() was not documented. + +- Spelling cleanup. + +- Changed RCSIDs to not end with a semicolon -- avoids warnings when + compiling with the -pedantic option. + +- Merged latin-1.txt into x11.txt. + +- Updated config.guess and config.sub to more recent versions. + +------------------------------------------------------------------------ + +PDCurses 3.2 - 2007/06/06 +========================= + +This release mainly covers changes to the build process, along with a +few structural changes. + +New features: +------------------- + +- The panel library has been folded into the main library. What this + means is that you no longer need to specify "-lpanel" or equivalent + when linking programs that use panel functionality with PDCurses; + however, panel.lib/.a is still provided (as a copy of pdcurses.lib/.a) + so that you can, optionally, build your projects with no changes. It + also means that panel functionality is available with the DLL or + shared library. Note that panel.h remains separate from curses.h. + +- Setting the PDCURSES_SRCDIR environment variable is no longer required + before building, unless you want to build in a location other than the + platform directory. (See INSTALL.) + +- MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y" + option. Partly due to Timofei Shatrov. + +- Support for the Digital Mars compiler. + +- Watcom makefiles now use the "loaddll" feature. + +Bug fixes and such: +------------------- + +- Eliminated the platform defines (DOS, WIN32, OS2, XCURSES) from + curses.h, except for X11-specific SCREEN elements and functions. + Dynamically-linked X11 apps built against an old version will have + their red and blue swapped until rebuilt. (You can define PDC_RGB to + build the library with the old color scheme, but it would also have to + be defined when building any new app.) Any app that depends on + PDCurses to determine the platform it's building on will have to make + other arrangements. + +- Documentation cleanup -- added more details; removed some content that + didn't apply to PDCurses; moved the doc-building tool to the doc + directory; changed *.man to *.txt. + +- The EMX makefile now accepts "DLL=Y", builds pdcurses.dll instead of + curses.dll, builds either the static library or the DLL (not both at + once), and links all the demos with the DLL when building it. + +- In Win32, read the registry only when needed: when init_color() or + color_content() is called, instead of at startup. + +- A few additional consts in declarations. + +- The Win32 compilers that build DLLs now use common .def files. + +- panel.h functions sorted by name, as with other .h files; curses.h is + no longer included by repeated inclusions of panel.h or term.h. + +- Simplified Borland makefiles. + +- Makefile.aix.in depended on a file, xcurses.exp, that was never there. + This problem was fixed as part of the change to common .def files; + however, I still haven't been able to test building on AIX. + +------------------------------------------------------------------------ + +PDCurses 3.1 - 2007/05/03 +========================= + +Primarily clipboard-related fixes, and special UTF-8 support. + +New features: +------------------- + +- "Force UTF-8" mode, a compile-time option to force the use of UTF-8 + for multibyte strings, instead of the system locale. (Mainly for + Windows, where UTF-8 doesn't work well in the console.) See INSTALL. + +- Multibyte string support in PDC_*clipboard() functions, and in Win32's + PDC_set_title(). + +- Added the global string "ttytype", per other curses implementations, + for compatibility with old BSD curses. + +- Real functions for the "quasi-standard aliases" -- crmode(), + nocrmode(), draino(), resetterm(), fixterm() and saveterm(). + (Corresponding macros removed.) + +Bug fixes and such: +------------------- + +- In Win32, under NT-family OSes, the scrollback buffer would be + restored by endwin(), but would not be turned off again when resuming + curses after an endwin(). The result was an odd, partly-scrolled-up + display. Now, the buffer is toggled by PDC_reset_prog_mode() and + PDC_reset_shell_mode(), so it's properly turned off when returning + from an endwin(). + +- In 3.0, selection in X11 didn't work. (Well, the selecting worked, but + the pasting elsewhere didn't.) This was due to the attempted fix + "don't return selection start as a press event," so that's been + reverted for now. + +- PDC_setclipboard() was locking up in X11. Reported by Mark Hessling. + +- Missing underscore in the declaration of XC_say() prevented + compilation with PDCDEBUG defined. Reported by M.H. + +- Off-by-one error in copywin() -- the maximum coordinates for the + destination window should be inclusive. Reported by Tiago Dionizio. + +- Start in echo mode, per X/Open. Reported by T.D. + +- Strip leading and trailing spaces from slk labels, per a literal + reading of X/Open. Suggested by Alexey Miheev (about ncurses, but it + also applies here). + +- The #endif for __PDCURSES__ needs to come _after_ the closing of the + extern "C". This has been broken since June 2005. Fortunately (?), it + only shows up if the file is included multiple times, and then only in + C++. Reported on the DOSBox forums. + +- Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the + clipboard functions in Win32, to match the console. + +- Changed the format of the string returned from longname(). + +- In the clipboard test in the testcurs demo, use a single mvprintw() to + display the return from PDC_getclipboard(), instead of a loop of + addch(), which was incompatible with multibyte strings. + +- Moved has_key() into the keyname module, and documented it. + +- Moved RIPPEDOFFLINE to curspriv.h. + +- Typos in IMPLEMNT. + +------------------------------------------------------------------------ + +PDCurses 3.0 - 2007/04/01 +========================= + +The focuses for this release are X/Open conformance, i18n, better color +support, cleaner code, and more consistency across platforms. + +This is only a brief summary of the changes. For more details, consult +the CVS log. + +New features: +------------------- + +- An almost complete implementation of X/Open curses, including the + wide-character and attr_t functions (but excluding terminfo). The + wide-character functions work only in Win32 and X11, for now, and + require building the library with the appropriate options (see + INSTALL). Note that this is a simplistic implementation, with exactly + one wchar_t per cchar_t; the only characters it handles properly are + those that are one column wide. + +- Support for X Input Methods in the X11 port (see INSTALL). When built + this way, the internal compose key support is disabled in favor of + XIM's, which is a lot more complete, although you lose the box cursor. + +- Multibyte character support in the non-wide string handling functions, + per X/Open. This only works when the library is built with wide- + character support enabled. + +- Mouse support for DOS and OS/2. The DOS version includes untested + support for scroll wheels, via the "CuteMouse" driver. + +- An ncurses-compatible mouse interface, which can work in parallel with + the traditional PDCurses mouse interface. See the man page (or + mouse.c) for details. + +- DOS and OS/2 can now return modifiers as keys, as in Win32 and X11. + +- COLORS, which had been fixed at 8, is now either 8 or 16, depending on + the terminal -- usually 16. When it's 8, blinking mode is enabled + (controlled as before by the A_BLINK attribute); when it's 16, bright + background colors are used instead. On platforms where it can be + changed, the mode is toggled by the new function PDC_set_blink(). + PDCurses tries to set PDC_set_blink(FALSE) at startup. (In Win32, it's + always set to FALSE; in DOS, with other than an EGA or VGA card, it + can't be.) Also, COLORS is now set to 0 until start_color() is called. + +- Corresponding to the change in COLORS, COLOR_PAIRS is now 256. + +- Working init_color() and color_content(). The OS/2 version of + init_color() works only in a full-screen session; the Win32 version + works only in windowed mode, and only in NT-family OSes; the DOS + version works only with VGA adapters (real or simulated). The Win32 + version is based mostly on James Brown's setconsoleinfo.c + (www.catch22.net). + +- use_default_colors(), assume_default_colors(), and curses_version(), + after ncurses. + +- Added global int TABSIZE, after ncurses and Solaris curses; removed + window-specific _tabsize. + +- Logical extension to the wide-character slk_ funcs: slk_wlabel(), for + retrieving the label as a wide-character string. + +- A non-macro implementation of ncurses' wresize(). + +- Working putwin(), getwin(), scr_dump() and scr_restore(). + +- A working acs_map[]. Characters from the ACS are now stored in window + structures as a regular character plus the A_ALTCHARSET attribute, and + rendered to the ACS only when displayed. (This allows, for example, + the correct display on one platform of windows saved from another.) + +- In X11, allow selection and paste of UTF8_STRING. + +- The testcurs demo now includes a color chart and init_color() test, a + wide character input test, a display of wide ACS characters with + sample Unicode text, a specific test of flash(), more info in the + resize test, and attempts to change the width as well as the height. + +- Command-line option for MSVC to build DLLs (see INSTALL). Also, the + naming distinction for DLLs ("curses" vs. "pdcurses") is abandoned, + and either the static lib or DLL is built, not both at once (except + for X11). + +- For backwards compatibility, a special module just for deprecated + functions -- currently PDC_check_bios_key(), PDC_get_bios_key(), + PDC_get_ctrl_break() and PDC_set_ctrl_break(). These shouldn't be used + in applications, but currently are... in fact, all the "private" + functions (in curspriv.h) are subject to change and should be avoided. + +- A new document, IMPLEMNT, describing PDCurses' internal functions for + those wishing to port it to new platforms. + +- Mark Hessling has released the X11 port to the public domain. + (However, x11/ScrollBox* retain their separate copyright and MIT-like + license.) + +Bug fixes and such: +------------------- + +- Most of the macros have been removed (along with the NOMACROS ifdef). + The only remaining ones are those which have to be macros to work, and + those that are required by X/Open to be macros. There were numerous + problems with the macros, and no apparent reason to keep them, except + tradition -- although it was PCcurses 1.x that first omitted them. + +- Clean separation of platform-specific code from the rest. Outside of + the platform directories, there remain only a few ifdefs in curses.h + and curspriv.h. + +- General reorganization and simplification. + +- Documentation revisions. + +- When expanding control characters in addch() or insch(), retain the + attributes from the chtype. + +- Preserve the A_ALTCHARSET attribute in addch() and insch(). + +- Per X/Open, beep() should always return OK. + +- On platforms with a controlling terminal (i.e., not X11), curs_set(1) + now sets the cursor to the shape it had at the time of initscr(), + rather than always making it small. (Exception for DOS: If the video + mode has been changed by PDC_resize_screen(), curs_set(1) reverts to + line 6/7.) The shape is taken from SP->orig_cursor (the meaning of + which is platform-specific). + +- Stop updating the cursor position when the cursor is invisible (this + gives a huge performance boost in Win 9x); update the cursor position + from curs_set() if changing from invisible to visible. + +- Some tweaking of the behavior of def_prog_mode(), def_shell_mode(), + savetty(), reset_prog_mode(), reset_shell_mode() and resetty()... + still not quite right. + +- flash() was not implemented for Win32 or X. A portable implementation + is now used for all platforms. Note that it's much slower than the + old (DOS and OS/2) version, but this is only apparent on an extremely + slow machine, such as an XT. + +- In getstr(), backspacing on high-bit characters caused a double + backspace. + +- hline() and vline() used an incorrect (off by one) interpretation of + _maxx and _maxy. If values of n greater than the max were specified, + these functions could access unallocated memory. + +- innstr() is supposed to return the number of characters read, not just + OK or ERR. Reported by Mike Aubury. + +- A proper implementation of insch() -- the PDC_chadd()-based version + wasn't handling the control characters correctly. + +- Return ASCII and control key names from keyname() (problem revealed by + ncurses' movewindow test); also, per X/Open, return "UNKNOWN KEY" when + appropriate, rather than "NO KEY NAME". + +- Turn off the cursor from leaveok(TRUE), even in X11; leaveok(FALSE) + now calls curs_set(1), regardless of the previous state of the cursor. + +- In the slk area, BUTTON_CLICKED events now translate to function keys, + along with the previously recognized BUTTON_PRESSED events. Of course, + it should really be checking the events specified by map_button(), + which still doesn't work. + +- napms(0) now returns immediately. + +- A unified napms() implementation for DOS -- no longer throttles the + CPU when built with any compiler. + +- Allow backspace editing of the nocbreak() buffer. + +- pair_content(0, ...) is valid. + +- There was no check to ensure that the pnoutrefresh() window fit within + the screen. It now returns an ERR if it doesn't. + +- In X11, resize_term() must be called with parameters (0, 0), and only + when SP->resized is set, else it returns ERR. + +- Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's + web site. + +- slk_clear() now removes the buttons completely, as in ncurses. + +- Use the current foreground color for the line attributes (underline, + left, right), unless PDC_set_line_color() is explicitly called. After + setting the line color, you can reset it to this mode via + "PDC_set_line_color(-1)". + +- Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER(). + +- Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch() + are now (again) the core functions. + +- Dropped or made static many obsolete, unused, and/or broken functions, + including PDC_chg_attrs(), PDC_cursor_on() and _off(), + PDC_fix_cursor(), PDC_get_attribute(), PDC_get_cur_col() and _row(), + PDC_set_80x25(), PDC_set_cursor_mode(), PDC_set_rows(), + PDC_wunderline(), PDC_wleftline(), PDC_wrightline(), + XCursesModifierPress() and XCurses_refresh_scrollbar(). + +- Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR + _ENDLINE, _FULLWIN and _SCROLLWIN. + +- Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*, + _lasts*. + +- Obsolete/unused elements of the SCREEN struct: orgcbr, visible_cursor, + sizeable, shell, blank, cursor, orig_emulation, font, orig_font, + tahead, adapter, scrnmode, kbdinfo, direct_video, video_page, + video_seg, video_ofs, bogus_adapter. (Some of these persist outside + the SCREEN struct, in the platform directories.) Added mouse_wait and + key_code. + +- Removed all the EMALLOC stuff. Straight malloc calls were used + elsewhere; it was undocumented outside of comments in curspriv.h; and + there are better ways to use a substitute malloc(). + +- Single mouse clicks are now reportable on all platforms (not just + double-clicks). And in general, mouse event reporting is more + consistent across platforms. + +- The mouse cursor no longer appears in full-screen mode in Win32 unless + a nonzero mouse event mask is used. + +- ALT-keypad input now works in Win32. + +- In Win32, SetConsoleMode(ENABLE_WINDOW_INPUT) is not useful, and + appears to be the source of a four-year-old bug report (hanging in + THE) by Phil Smith. + +- Removed the PDC_THREAD_BUILD stuff, which has never worked. For the + record: PDCurses is not thread-safe. Neither is ncurses; and the + X/Open curses spec explicitly makes it a non-requirement. + +- With the internal compose key system in the X11 port, modifier keys + were breaking out of the compose state, making it impossible to type + accented capitals, etc. Also, Multi_key is now the default compose + key, instead of leaving it undefined by default; and a few more combos + are supported. + +- In X11, the first reported mouse event after startup always read as a + double-click at position 0, 0. (This bug was introduced in 2.8.) + +- In X11, don't return selection start as a press event. (Shift-click on + button 1 is still returned.) + +- In X11, properly handle pasting of high-bit chars. (It was doing an + unwanted sign extension.) + +- In X11, BUTTON_MOVED was never returned, although PDC_MOUSE_MOVED was + set. + +- The fix in 2.8 for the scroll wheel in X11 wasn't very good -- it did + report the events as scroll wheel events, but it doubled them. Here's + a proper fix. + +- Changed mouse handling in X11: Simpler translation table, with + XCursesPasteSelection() called from XCursesButton() instead of the + translation table; require shift with button 1 or 2 for select or + paste when mouse events are being reported (as with ncurses), allowing + passthrough of simple button 2 events. This fixes the previously + unreliable button 2 behavior. + +- Modifier keys are now returned on key up in X11, as in Win32. And in + general, modifier key reporting is more consistent across platforms. + +- Modifiers are not returned as keys when a mouse click has occurred + since the key press. + +- In BIOS mode (in DOS), count successive identical output bytes, and + make only one BIOS call for all of them. This dramatically improves + performance. + +- The cursor position was not always updated correctly in BIOS mode. + +- In testcurs, the way the ACS test was written, it would really only + work with a) PDCurses (with any compiler), or b) gcc (with any + curses). Here's a more portable implementation. + +- Better reporting of mouse events in testcurs. + +- Blank out buffer and num before the scanw() test in testcurs, in case + the user just hits enter or etc.; clear the screen after resizing. + +- Allow tuidemo to use the last line. + +- Separate left/right modifier keys are now reported properly in Win32. + (Everything was being reported as _R.) + +- Attempts to redirect input in Win32 now cause program exit and an + error message, instead of hanging. + +- Dropped support for the Microway NDP compiler. + +- Some modules renamed, rearranged. + +- Fixes for errors and warnings when building with Visual C++ 2005. + +- In MSVC, the panel library didn't work with the DLL. + +- Complete export lists for DLLs. + +- Simplified makefiles; moved common elements to .mif files; better + optimization; strip demos when possible. + +- Changed makefile targets of "pdcurses.a/lib" and "panel.a/lib" to + $(LIBCURSES) and $(LIBPANEL). Suggestion of Doug Kaufman. + +- Changed "install" target in the makefile to a double-colon rule, to + get around a conflict with INSTALL on non-case-sensitive filesystems, + such as Mac OS X's HFS+. Reported by Douglas Godfrey et al. + +- Make PDCurses.man dependent on manext. Suggestion of Tiziano Mueller. + +- Set up configure.ac so autoheader works; removed some obsolescent + macros. Partly the suggestion of T.M. + +- The X11 port now builds in the x11 directory (including the demos), as + with other ports. + +- The X11 port should now build on more 64-bit systems. Partly due to + M.H. + +- The default window title and icons for the X11 port are now "PDCurses" + instead of "XCurses". + +- Internal functions and variables made static where possible. + +- Adopted a somewhat more consistent naming style: Internal functions + with external linkage, and only those, have the prefix "PDC_"; + external variables that aren't part of the API use "pdc_"; static + functions use "_"; and "XC_" and "xc_" prefixes are used for functions + and variables, respectively, that are shared between both processes in + the X11 port. Also eliminated camel casing, where possible. + +- Changed the encoding for non-ASCII characters in comments and + documentation from Latin-1 to UTF-8. + +------------------------------------------------------------------------ + +PDCurses 2.8 - 2006/04/01 +========================= + +As with the previous version, you should assume that apps linked against +older dynamic versions of the library won't work with this one until +recompiled. + +New features: + +- Simpler, faster. + +- Declarations for all supported, standard functions, per the X/Open + Curses 4.2 spec, with the notable exception of getch() and ungetch(). + You can disable the use of the macro versions by defining NOMACROS + before including curses.h (see xmas.c for an example). NOMACROS yields + smaller but theoretically slower executables. + +- New functions: vwprintw(), vwscanw(), vw_printw() and vw_scanw(). This + completes the list of X/Open 4.2 functions, except for those concerned + with attr_t and wide characters. Some (especially the terminfo/termcap + functions) aren't yet fully fleshed out, though. + +- Non-macro implementations for COLOR_PAIR(), PAIR_NUMBER(), getbkgd(), + mvgetnstr(), mvwgetnstr(), mvhline(), mvvline(), mvwhline(), and + mvwvline(). (The macros are still available, too.) + +- newterm() works now, in a limited way -- the parameters are ignored, + and only the first invocation will work (i.e., only one SCREEN can be + used). + +- start_color() works now -- which is to say, if you _don't_ call it, + you'll only get monochrome output. Also, without calling it, the + terminal's default colors will be used, where supported (currently + only in Win32). This is equivalent to the PDC_ORIGINAL_COLORS behavior + introduced in 2.7, except that _only_ the default colors will be used. + (PDC_ORIGINAL_COLORS is still available, if you want to combine the + use of specific colors and the default colors.) + +- New logic for termname() and longname(): termname() always returns + "pdcurses"; longname() returns "PDCurses for [platform] [adapter] + [COLOR/MONO]-YxX" (adapter is only defined for DOS and OS/2). This is + the first time these functions return _anything_ in Win32. + +- New installation method for XCurses: the header files are placed in a + subdirectory "xcurses" within the include directory, rather than being + renamed. (But the renamed xcurses.h and xpanel.h are also installed, + for backwards compatibility.) curspriv.h and term.h are now available, + and existing curses-based code need no longer be edited to use + XCurses' curses.h. And with no more need for explicit XCursesExit() + calls (see below), your code need not be changed at all to move from + another curses implementation to XCurses. It can be as simple as "gcc + -I/usr/local/include/xcurses -lXCurses -oprogname progname.c". + +- Combined readme.* into this HISTORY file, and incorporated the old 1.x + (PCcurses) history. + +- New functionality for the testcurs demo: ACS character display; menu + support for PgUp, PgDn, Home and End; centered menu; and it can now + be resized in X. + +- Added modified versions of the rain and worm demos from ncurses. + +Bug fixes and such: + +- Big cleanup of dead and redundant code, including unneeded defines, + ifdefs, and structure elements. + +- flushinp() was not implemented for Win32. + +- resetty() was not restoring LINES and COLS. + +- nonl() made '\n' print a line feed without carriage return. This was + incorrect. + +- Removed bogus implementation of intrflush(). + +- The line-breakout optimization system, disabled by default in 2.7, is + removed in 2.8. It simply didn't work, and never has. (The typeahead() + function remains, for compatibility, but does nothing.) + +- The declarations for the printw() and scanw() function families were + erroneously ifdef'd. + +- Safer printw() calls on platforms that support vsnprintf(). + +- Use the native vsscanf() in DJGPP, MinGW and Cygwin. + +- ACS_BLOCK now works in X. + +- Explicit calls to XCursesExit() are no longer needed. + +- XCURSES is now defined automatically if not DOS, OS2 or WIN32. + +- The default icon for XCurses wasn't working (had to remove the focus + hint code to fix this). Also, the default title is now "XCurses" + instead of "main". + +- Incorrect dimensions (undercounting by two in each direction) were + shown while resizing in X. + +- Scroll wheel events were not always correctly reported in X. + +- 32 bits are enough for the "long" chtype, but 64 bits were used on a + 64-bit system, wasting memory. Now conditioned on _LP64. This could be + faster, too. + +- The short, 16-bit chtype now works with XCurses. + +- Corrected return value for is_linetouched(), is_wintouched(), + can_change_color() and isendwin() (bool instead of int). + +- timeout(), wtimeout(), idcok() and immedok() return void. + +- pair_content() takes a short. + +- Replaced incorrect usages of attr_t with chtype. attr_t is still + typedef'd, for backwards compatibility. (It's supposed to be used for + the WA_*-style functions, which PDCurses doesn't yet support.) + +- Added const where required by the spec, and in other appropriate + places. + +- Removed PDC_usleep(). napms() is now the core delay routine. + +- Fixed poll() support in napms(). + +- Various changes to the internal PDC_* functions -- don't depend on + these, and don't use them unless you absolutely have to. + +- Some routines accessed window structures in their variable + declarations, _before_ checking for a NULL window pointer. + +- Dropped support for the undocumented PDC_FULL_DISPLAY, wtitle(), and + PDC_print(). + +- Cleaned up remaining warnings. + +- Reduced unnecessary #include directives -- speeds up compilation. + +- Fix for demos build in Borland/DOS -- the makefile in 2.7 didn't + specify the memory model. Reported by Erwin Waterlander. + +- Simplified the makefiles; e.g., some now build each demo in a single + step, and Watcom no longer uses demos.lnk. Also, the demo exes are now + stripped when possible; maximum compression used for archives built + by the makefiles; xcurses-config removed as part of "make distclean"; + and I tweaked optimization for some platforms. + +- Reverted to /usr/local/ as default installation directory for XCurses. + +- Upgraded to autoconf 2.59... instantly doubling the size of the + configure script. Ah well. Otherwise, simplified the build system. + +- Dropped support for pre-ANSI compilers. (It hasn't worked since at + least version 2.4, anyway.) + +- Revised and, I hope, clarified the boilerplate and other comments. + +- Simplified logging and RCS ids; added RCS ids where missing. + +- Consistent formatting for all code, approximately equivalent to + "indent -kr -i8 -bl -bli0", with adjustments for 80 columns. + +------------------------------------------------------------------------ + +PDCurses 2.7 - 2005/12/30 +========================= + +INTRODUCTION: + +Hello all. As of a few weeks ago, I'm the new maintainer for PDCurses. +Here's a brief summary of changes in this release. (More details are +available in the CVS log and trackers on SourceForge.) + +NEW FEATURES: + +- Functions: delscreen(), getattrs(), has_key(), slk_color(), + wcolor_set(), wtimeout(). + +- Macros: color_set(), mvhline(), mvvline(), mvwgetnstr(), mvwhline(), + mvwvline(), timeout(), wresize(). + +- Stub implementations of terminfo functions (including a term.h). + +- More stubs for compatibility: filter(), getwin(), putwin(), + noqiflush(), qiflush(), scr_dump(), scr_init(), scr_restore(), + scr_set(), use_env(), vidattr(), vidputs(). + +- The terminal's default colors are used as curses' default colors when + the environment variable "PDC_ORIGINAL_COLORS" is set to any value + (Win32 only at the moment). + +- Simplified build system. + +- Replaced PDC_STATIC_BUILD with its opposite, PDC_DLL_BUILD (see .mak + files for more info). + +- Minimal implementation of color_content() -- no longer a stub. + +- Added the remaining ACS defines (ACS_S3, ACS_BBSS, etc.) for + DOS/OS2/Win; "enhanced" versions of existing ACS characters used. + +- Support for scroll wheels. + +- Support for Pacific C. + +BUGS FIXED: + +- Builds correctly (including demos) on all tested platforms (see + below); nearly all compiler warnings have been cleaned up; the ptest + demo is built on all platforms; "clean" targets are improved. + +- The ability to build ncurses_tests has been restored (see demos dir). + +- Line-breakout optimization now defaults to off (equivalent to + "typeahead(-1)"), so output is not interrupted by keystrokes (it's + supposed to resume on the next refresh(), which wasn't working). + +- Implicit wrefresh() in wgetch() was not being invoked in nodelay mode. + +- subpad() was erroneously offsetting from the origin coordinates of the + parent pad (which are always -1,-1). + +- In wborder(), whline(), and wvline(), the current (wattrset) attribute + was being used, but not the current background (wbkgd). + +- Allow Russian 'r' character ASCII 0xe0 to be returned. + +- termattrs() now also returns A_UNDERLINE, A_REVERSE. + +- In Win32, with large scrollback buffers set, there was an unwanted + "scrollup" effect on startup. + +- Revamped keyboard handling for Win32. + +- New screen resize method for Win32. + +- napms(), delay_output(), etc. now work with Cygwin. + +- curs_set(0) wasn't working in Win32 in full-screen (ALT-ENTER) mode -- + the cursor stayed on. + +- The A_REVERSE attribute was broken in XCurses. + +- On 64-bit systems, XCurses was ignoring every other keystroke. + +- Added focus hints for XCurses. + +- Demos (except for tuidemo) once again have their proper titles in + XCurses (using Xinitscr() instead of the obsolete XCursesProgramName). + +- The 16-bit chtype is a working option again (by removing #define + CHTYPE_LONG from curses.h), except in XCurses. It's not recommended; + but if your needs are limited, it still works. + +- Reset screen size in resetty() under DOS, as in Win32 and OS/2. + +- Changes for cursor size under DOS. + +- Automatic setting of BIOS mode for CGA under DOS now works. + +- The cursor is now always updated in PDC_gotoxy(); this fixes the + problem of missing characters in BIOS mode. + +- Macros nocbreak(), cbreak(), nocrmode(), crmode(), nodelay(), + nl() and nonl() now return OK. + +- ERR and OK are now defined as -1 and 0, respectively, for + compatibility with other curses implementations -- note that this + change is not binary compatible; you'll have to rebuild programs that + use shared/dynamic libraries. + +- Added "const" to prototypes where appropriate. + +- Miscellaneous code cleanup. + +ACKNOWLEDGEMENTS: + + - Walter Briscoe + - Jean-Pierre Demailly + - Ruslan Fedyarov + - Warren Gay + - Florian Grosse-Coosmann + - Vladimir Kokovic + - Matt Maloy + - K.H. Man + - Michael Ryazanov + - Ron Thibodeau + - Alexandr Zamaraev + +and of course, MARK HESSLING, for his over 13 years of service as the +maintainer of PDCurses. Plus, thanks to all who've reported bugs or +requested features. Apologies to anyone I've forgotten. + +I've tested this version on Turbo C++ 3.0 and Borland C++ 3.1 for DOS; +DJGPP 2.X; Open Watcom 1.3 for DOS (16 and 32-bit), Windows and OS/2; +EMX 0.9d and the "newgcc" version of EMX; Borland C++ 5.5 for Windows; +recent versions of MinGW, Cygwin, LCC-Win32 and Microsoft Visual C++; +and gcc under several flavors of Linux, Mac OS X, *BSD and Solaris. + +-- William McBrine + +------------------------------------------------------------------------ + +PDCurses 2.6 - 2003/01/08 +========================= + +INTRODUCTION: + + This release of PDCurses includes the following changes: + +BUGS FIXED: + +- Allow accented characters on Win32 platform when run on non-English + keyboards. + +- Allow "special" characters like Ctrl-S, Ctrl-Q under OS/2 to be returned. + +- Some bugs with halfdelay() fixed by William McBrine. + +- pechochar() should now work correctly. + +- redrawwin() macro in curses.h was incorrect - fixed by Alberto Ornaghi + +- Don't include "special" characters like KEY_SHIFT_L to be returned in + getnstr() family. Bug 542913 + +- Entering TAB in wgetnstr() no longer exceeds requested buffer size. + Bug 489233 + +- Fixed bug 550066, scrollok() and pads. + Also beep() called when buffer exceeded. Bug 562041. + +- Reverse video of X11 selection reinstated. Pablo Garcia Abio?? + +- Right Alt modifier now works like left Alt modifier under Win32 + +- Add support for all libXaw replacement libraries with Scrollbar bug. + Note that for this to work, you still have to change the libXaw + replacement libraries to fix the bug :-( + +- Don't trap signals in XCurses if calling application has ignored them. + Change by Frank Heckenbach. + +- Bug reports from Warren W. Gay: + - Fix termattrs() to return A_REVERSE and A_BLINK on all platforms. + - Fix definition of getsyx() and setsyx() to be consistent with + ncurses. Bug 624424. + - Fix definition of echo() and noecho(). Bug 625001. + - Fix definition of keypad() and leaveok(). Bug 632653. + - Missing panel_hidden() prototype. Bug 649320. + +- Fixed bug with calling def_prog_mode(), resize_term(), + reset_prog_mode(); the resize details were being lost. + +NEW FEATURES: + +- Clipboard support now available on DOS platform, but handled + internally to the currently running process. + +- New X11 resource: textCursor, allows the text cursor to be specified + as a vertical bar, or the standard horizontal bar. Thanks to Frank + Heckenbach for the suggestion. + +NEW COMPILER SUPPORT: + +- lcc-win32 now works correctly + +------------------------------------------------------------------------ + +PDCurses 2.5 - 2001/11/26 +========================= + +INTRODUCTION: + + This release of PDCurses includes the following changes: + +- Set BASE address for Win32 DLL + +- Add KEY_SUP and KEY_SDOWN. + +- Add PDC_set_line_color() + +- Add blink support as bold background + +- Add bold colors + +- Add getbkgd() macro + +- Add new PDC functions for adding underline, overline, leftline and + rightline + +- Add support for shifted keypad keys. + +- Allow more keypad keys to work under Win32 + +- Change Win32 and OS/2 DLL name to curses.dll + +- Change example resources to allow overriding from the command line + +- Changes for building cleanly on OS/2 + +- Changes to handle building XCurses under AIX + +- Check if prefresh() and pnoutrefresh() parameters are valid. + +- Ensure build/install works from any directory + +- Handle platforms where X11 headers do not typedef XPointer. + +- Mention that Flexos is likely out-of-date. + +- Pass delaytenths to XCurses_rawgetch() + +- Remove boldFont + +- Updates for cursor blinking and italic. + +BUGS FIXED: + +- Fix bug with getting Win32 clipboard contents. Added new + PDC_freeclipboard() function. + +- Fix bug with halfdelay() + +- Fix bug with mouse interrupting programs that are not trapping mouse + events under Win32. + +- Fix return value from curs_set() + +- Reverse the left and right pointing bars in ALT_CHARSET + +NEW COMPILER SUPPORT: + +- Add QNX-RTP port + +------------------------------------------------------------------------ + +PDCurses 2.4 - 2000/01/17 +========================= + +INTRODUCTION: + + This release of PDCurses includes the following changes: + +- full support of X11 selection handling + +- removed the need for the cursos2.h file + +- enabled the "shifted" key on the numeric keypad + +- added native clipboard support for X11, Win32 and OS/2 + +- added extra functions for obtaining internal PDCurses status + +- added clipboard and key modifier tests in testcurs.c + +- fixes for panel library + +- key modifiers pressed by themselves are now returned as keys: + KEY_SHIFT_L KEY_SHIFT_R KEY_CONTROL_L KEY_CONTROL_R KEY_ALT_L KEY_ALT_R + This works on Win32 and X11 ports only + +- Added X11 shared library support + +- Added extra slk formats supported by ncurses + +- Fixed bug with resizing the terminal when slk were on. + +- Changed behavior of slk_attrset(), slk_attron() slk_attroff() + functions to work more like ncurses. + +BUGS FIXED: + +- some minor bug and portability fixes were included in this release + +NEW FUNCTIONS: + +- PDC_getclipboard() and PDC_setclipboard() for accessing the native + clipboard (X11, Win32 and OS/2) + +- PDC_set_title() for setting the title of the window (X11 and Win32 + only) + +- PDC_get_input_fd() for getting the file handle of the PDCurses input + +- PDC_get_key_modifiers() for getting the keyboard modifier settings at + the time of the last (w)getch() + +- Xinitscr() (only for X11 port) which allows standard X11 switches to + be passed to the application + +NEW COMPILER SUPPORT: + +- MingW32 GNU compiler under Win95/NT + +- Cygnus Win32 GNU compiler under Win95/NT + +- Borland C++ for OS/2 1.0+ + +- lcc-win32 compiler under Win95/NT + +ACKNOWLEDGEMENTS: (for this release) + +- Georg Fuchs for various changes. +- Juan David Palomar for pointing out getnstr() was not implemented. +- William McBrine for fix to allow black/black as valid color pair. +- Peter Preus for pointing out the missing bccos2.mak file. +- Laura Michaels for a couple of bug fixes and changes required to + support Mingw32 compiler. +- Frank Heckenbach for PDC_get_input_fd() and some portability fixes and + the fixes for panel library. +- Matthias Burian for the lcc-win32 compiler support. + +------------------------------------------------------------------------ + +PDCurses 2.3 - 1998/07/09 +========================= + +INTRODUCTION: + +This release of PDCurses includes the following changes: + +- added more System V R4 functions + +- added Win32 port + +- the X11 port is now fully functional + +- the MS Visual C++ Win32 port now includes a DLL + +- both the X11 and Win32 ports support the mouse + +- the slk..() functions are now functional + +- support for scrollbars under X11 are experimental at this stage + +- long chtype extended to non-Unix ports + +The name of the statically built library is pdcurses.lib (or +pdcurses.a). The name of the DLL import library (where applicable) is +curses.lib. + +BUGS FIXED: + +- some minor bugs were corrected in this release + +NEW FUNCTIONS: + +- slk..() functions + +NEW COMPILER SUPPORT: + +- MS Visual C++ under Win95/NT + +- Watcom C++ under OS/2, Win32 and DOS + +- two EMX ports have been provided: + - OS/2 only using OS/2 APIs + - OS/2 and DOS using EMX video support routines + +EXTRA OPTIONS: + +PDCurses recognizes two environment variables which determines the +initialization and finalization behavior. These environment variables +do not apply to the X11 port. + +PDC_PRESERVE_SCREEN - +If this environment variable is set, PDCurses will not clear the screen +to the default white on black on startup. This allows you to overlay +a window over the top of the existing screen background. + +PDC_RESTORE_SCREEN - +If this environment variable is set, PDCurses will take a copy of the +contents of the screen at the time that PDCurses is started; initscr(), +and when endwin() is called, the screen will be restored. + + +ACKNOWLEDGEMENTS: (for this release) + +- Chris Szurgot for original Win32 port. +- Gurusamy Sarathy for some updates to the Win32 port. +- Kim Huron for the slk..() functions. +- Florian Grosse Coosmann for some bug fixes. +- Esa Peuha for reducing compiler warnings. +- Augustin Martin Domingo for patches to X11 port to enable accented + characters. + +------------------------------------------------------------------------ + +PDCurses 2.2 - 1995/02/12 +========================= + +INTRODUCTION: + + This release of PDCurses has includes a number of major changes: + +- The portable library functions are now grouped together into single + files with the same arrangement as System V R4 curses. + +- A panels library has been included. This panels library was written by + Warren Tucker. + +- Quite a few more functions have been supplied by Wade Schauer and + incorporated into release 2.2. Wade also supplied the support for the + Microway NDP C/C++ 32 bit DOS compiler. + +- The curses datatype has been changed from an unsigned int to a long. + This allows more attributes to be stored as well as increasing the + number of color-pairs from 32 to 64. + +- Xwindows port (experimental at the moment). + +BUGS FIXED: + +- mvwin() checked the wrong coordinates + +- removed DESQview shadow memory buffer checking bug in curses.h in + \#define for wstandout() + +- lots of others I can't remember + +NEW FUNCTIONS: + +- Too many to mention. See intro.man for a complete list of the + functions PDCurses now supports. + +COMPILER SUPPORT: + +- DJGPP 1.12 is now supported. The run-time error that caused programs + to crash has been removed. + +- emx 0.9a is supported. A program compiled for OS/2 should also work + under DOS if you use the VID=EMX switch when compiling. See the + makefile for details. + +- The Microway NDP C/C++ DOS compiler is now supported. Thanks to Wade + Schauer for this port. + +- The Watcom C++ 10.0 DOS compiler is now supported. Thanks to Pieter + Kunst for this port. + +- The library now has many functions grouped together to reduce the size + of the library and to improve the speed of compilation. + +- The "names" of a couple of the compilers in the makefile has changed; + CSET2 is now ICC and GO32 is now GCC. + +EXTRA OPTIONS: + + One difference between the behavior of PDCurses and Unix curses is the + attributes that are displayed when a character is cleared. Under Unix + curses, no attributes are displayed, so the result is always black. + Under PDCurses, these functions clear with the current attributes in + effect at the time. With the introduction of the bkgd functions, by + default, PDCurses clears using the value set by (w)bkgd(). To have + PDCurses behave the same way as it did before release 2.2, compile with + -DPDCURSES_WCLR + +ACKNOWLEDGEMENTS: (for this release) + + Pieter Kunst, David Nugent, Warren Tucker, Darin Haugen, Stefan Strack, + Wade Schauer and others who either alerted me to bugs or supplied + fixes. + +------------------------------------------------------------------------ + +PDCurses 2.1 - 1993/06/20 +========================= + +INTRODUCTION: + + The current code contains bug fixes for the DOS and OS/2 releases and + also includes an alpha release for Unix. The Unix release uses another + public domain package (mytinfo) to handle the low-level screen writes. + mytinfo was posted to comp.sources.unix (or misc) in December 1992 or + January 1993. Unless you are a glutton for punishment I would recommend + you avoid the Unix port at this stage. + + The other major addition to PDCurses is the support for DJGPP (the DOS + port of GNU C++). Thanks to David Nugent . + + Other additions are copywin() function, function debugging support and + getting the small and medium memory models to work. The testcurs.c demo + program has also been changed significantly and a new demo program, + tuidemo, has been added. + + Some people have suggested including information on where to get dmake + from. oak.oakland.edu in /pub/msdos/c + +OTHER NOTES: + + Under DOS, by default, screen writes to a CGA monitor are done via the + video BIOS rather than by direct video memory writes. This is due to + the CGA "snow" problem. If you have a CGA monitor and do not suffer + from snow, you can compile private\_queryad.c with CGA_DIRECT defined. + This will then use cause PDCurses to write directly to the CGA video + memory. + + Function debugging: Firstly to get function debugging, you have to + compile the library with OPT=N in the makefile. This also turns on + compiler debugging. You can control when you want PDCurses to write to + the debug file (called trace in the current directory) by using the + functions traceon() and traceoff() in your program. + + Microsoft C 6.00 Users note: + ---------------------------- + + With the addition of several new functions, using dmake to compile + PDCurses now causes the compiler to run "out of heap space in pass 2". + Using the 6.00AX version (DOS-Extended) to compile PDCurses fixes this + problem; hence the -EM switch. + + Functional changes + ------------------ + + Added OS/2 DLL support. + + A few curses functions have been fixed to exhibit their correct + behavior and make them more functionally portable with System V + curses. The functions that have changed are overlay(), overwrite() and + typeahead. + + overlay() and overwrite() + + Both of theses functions in PDCurses 2.0 allowed for one window to be + effectively placed on top of another, and the characters in the first + window were overlaid or overwritten starting at 0,0 in both windows. + This behavior of these functions was not correct. These functions only + operate on windows that physically overlap with respect to the + displayed screen. To achieve the same functionality as before, use the + new function copywin(). See the manual page for further details. + + typeahead() + + This function in PDCurses 2.0 effectively checked to see if there were + any characters remaining in the keyboard buffer. This is not the + behavior exhibited by System V curses. This function is intended + purely to set a flag so that curses can check while updating the + physical screen if any keyboard input is pending. To achieve the same + effect with typeahead() under PDCurses 2.1 the following code should be + used. + + In place of... + + while(!typeahead(stdin)) + { + /* do something until any key is pressed... */ + } + + use... + + /* getch() to return ERR if no key pending */ + nodelay(stdscr,TRUE); + while(getch() == (ERR)) + { + /* do something until any key is pressed... */ + } + + +ACKNOWLEDGEMENTS: (in no particular order) + + Jason Shumate, Pieter Kunst, David Nugent, Andreas Otte, Pasi + Hamalainen, James McLennan, Duane Paulson, Ib Hojme + + Apologies to anyone I may have left out. + +------------------------------------------------------------------------ + +PDCurses 2.0 - 1992/11/23 +========================= + +INTRODUCTION: + + Well, here it finally is; PDCurses v2.0. + + PDCurses v2.0 is an almost total rewrite of PCcurses 1.4 done by John + 'Frotz' Fa'atuai, the previous maintainer. It adds support for OS/2 as + well as DOS. + + This version has been tested with Microsoft C v6.0, QuickC v2.0 and + Borland C++ 2.0 under DOS and Microsoft C v6.0 and TopSpeed c v3.02 + under OS/2 2.0. Also the library has been compiled successfully with + emx 0.8e, C Set/2 and Watcom 9. Most testing was done with the large + memory model, where applicable. The large memory model is probably the + best model to use. + + The amount of testing has not been as extensive as I would have liked, + but demands on releasing a product have outweighed the product's + quality. Nothing new with that !! Hopefully with wider circulation, + more bugs will be fixed more quickly. + + I have included just 1 makefile which is suitable for dmake 3.8 for + both DOS and OS/2. The makefile does not rely on customization of the + dmake.ini file. + + If you discover bugs, and especially if you have fixes, please let me + know ASAP. + + The source to the library is distributed as a zip file made with zip + 1.9. You will need Info-ZIP unzip 5.0 to unzip. Follow the directions + below to compile the library. + +DIRECTIONS: + + 1. Create a new directory in which to unzip pdcurs20.zip. This will + create a curses directory and a number of subdirectories containing + source code for the library and utilities and the documentation. + + 2. Make changes to the makefile where necessary: + Change the MODEL or model macro to the appropriate value (if it + applies to your compiler). Use model for Borland compilers. + + Change any paths in the defined macros to be suitable for your + compiler. + + 3. Invoke DMAKE [-e environment_options] [target] + + where environment_options are: + + OS (host operating system) + COMP (compiler) + OPT (optimized version or debug version) - optional. default Y + TOS (target operating system) - optional. default OS + + see the makefile for valid combinations + + targets: all, demos, lcursesd.lib, manual... + + NB. dmake is case sensitive with targets, so those environments that + use an upper case model value (eg MSC) MUST specify the library + target as for eg. Lcursesd.lib + + The makefile is by default set up for Borland C++. The use of -e + environment_options override these defaults. If you prefer, you can + just change the defaults in the makefile and invoke it without the + -e switch. + +OTHER NOTES: + + The documentation for the library is built into each source file, a + couple of specific doc files and the header files. A program is + supplied (manext) to build the manual. This program gets compiled when + you build the documentation. + + To generate the library response file correctly, I had to write a quick + and dirty program (buildlrf) to achieve this. Originally the makefiles + just had statements like: "echo -+$(OBJ)\$* & >> $(LRF)" which appended + a suitable line to the response file. Unfortunately under some + combinations of makefiles and command processors (eg. nmake and 4DOS) + the & would get treated as stderr and the echo command would fail. + + The original source for PDCurses that I received from the previous + maintainer contained support for the FLEXOS operating system. Not + having access to it, I could not test the changes I made so its support + has fallen by the wayside. If you really need to have PDCurses running + under FLEXOS, contact me and I will see what can be arranged. + + Under DOS, by default, screen writes to a CGA monitor are done via the + video BIOS rather than by direct video memory writes. This is due to + the CGA "snow" problem. If you have a CGA monitor and do not suffer + from snow, you can compile private\_queryad.c with CGA_DIRECT defined. + This will then use cause PDCurses to write directly to the CGA video + memory. + + Added System V color support. + +COMPILER-SPECIFIC NOTES: + + Microsoft C + ----------- + + It is possible with MSC 6.0 to build the OS/2 libraries and demo + programs from within DOS. This is the only case where it is possible to + specify the value of TOS on the command line to be OS2 and the value of + OS be DOS. + + C Set/2 + ------- + + I have only tested the library using the migration libraries. I doubt + that the demo programs will work without them. + + emx + --- + + Testing has been done with 0.8e of emx together with the 16_to_32 + libraries. The emx\lib directory should include the vio32.lib and + kbd32.lib libraries from the 16_to_32 package. + +BUGS and UNFINISHED BUSINESS: + +- PDC_set_ctrl_break() function does not work under OS/2. + +- win_print() and PDC_print() do not work under OS/2. + +- The file todo.man in the doc directory also lists those functions of + System V 3.2 curses not yet implemented. Any volunteers? + +ACKNOWLEDGEMENTS: + +- John 'Frotz' Fa'atuai, the previous maintainer for providing an + excellent base for further development. +- John Burnell , for the OS/2 port. +- John Steele, Jason (finally NOT a John) Shumate.... + for various fixes and suggestions. +- Eberhardt Mattes (author of emx) for allowing code based on his + C library to be included with PDCurses. +- Several others for their support, moral and actual. + +-- Mark Hessling + +------------------------------------------------------------------------ + +PDCurses 2.0Beta - 1991/12/21 +============================= + +Changed back from short to int. (int is the correct size for the default +platform. Short might be too short on some platforms. This is more +portable. I, also, made this mistake.) + +Many functions are now macros. If you want the real thing, #undef the +macro. (X/Open requirement.) + +Merged many sources into current release. + +Added many X/Open routines (not quite all yet). + +Added internal documentation to all routines. + +Added a HISTORY file to the environment. + +Added a CONTRIB file to the environment. + +------------------------------------------------------------------------ + +PDCurses 1.5Beta - 1990/07/14 +============================= + +Added many levels of compiler support. Added mixed prototypes for all +"internal" routines. Removed all assembly language. Added EGA/VGA +support. Converted all #ifdef to #if in all modules except CURSES.H and +CURSPRIV.H. Always include ASSERT.H. Added support for an external +malloc(), calloc() and free(). Added support for FAST_VIDEO +(direct-memory writes). Added various memory model support (for +FAST_VIDEO). Added much of the December 1988 X/Open Curses +specification. + +-- John 'Frotz' Fa'atuai + +------------------------------------------------------------------------ + +PCcurses 1.4 - 1990/01/14 +========================= + + In PCcurses v.1.4, both portability improvements and bugfixes have +been made. The files have been changed to allow lint-free compilation +with Microsoft C v.5.1, and with Turbo C v.2.0. The source should still +compile without problems on older compilers, although this has not been +verified. + + The makefiles have been changed to suit both the public release and +the author, who maintains a special kind of libraries for himself. In +the case of Microsoft C, changes were done in the makefile to lower the +warning level to 2 (was 3). This was to avoid ANSI warnings which are +abundant because PCcurses does not attempt to follow strict ANSI C +standard. + + BUG FIXES FROM V.1.3 TO V.1.4: + + !!!IMPORTANT CHANGE!!! + + The definitions for OK and ERR in curses.h were exchanged. This was +done to be more consistent with UNIX versions. Also, it permits +functions like newwin() and subwin() to return 0 (=NULL) when they fail +due to memory shortage. This incompatibility with UNIX curses was +pointed out by Fred C. Smith. If you have tested success/failure by +comparisons to anything other than ERR and OK, your applications will +need to be be changed on that point. Sorry... but presumably most of you +used the symbolic constants? + + (END OF IMPORTANT CHANGE) + + Fred also pointed out a bug in the file update.c. The bug caused the +first character printed after 'unauthorized' screen changes (like during +a shell escape, for example) to be placed at the wrong screen position. +This happened even if the normal precautions (clear / touch / refresh) +were taken. The problem has now been fixed. + + PCcurses is currently also being used on a 68000 system with +hard-coded ESCape sequences for ANSI terminals. However, ints used by +the 68000 C compiler are 32 bits. Therefore ints have been turned into +shorts wherever possible in the code (otherwise all window structures +occupy twice as much space as required on the 68000). This does not +affect PC versions since normally both ints and shorts are 16 bits for +PC C compilers. + + At some places in the source code there are references made to the +68000 version. There are also a makefile, a curses68.c file, and a +curses68.cmd file. These are for making, low-level I/O, and linking +commands when building the 68000 version. These files are probably +useful to no-one but the author, since it is very specific for its +special hardware environment. Still in an effort to keep all +curses-related sources in one place they are included. Note however that +PCcurses will not officially support a non-PC environment. + + The file cursesio.c, which was included in the package at revision +level 1.2, and which was to be an alternative to the cursesio.asm file, +has been verified to behave incorrectly in the function _curseskeytst(). +The problem was that the value of 'cflag' does not contain the proper +data for the test that is attempted. Furthermore, neither Turbo C or +Microsoft C allows any way to return the data that is needed, and +consequently you should not use cursesio.c. The best solution is to +simply use the ASM version. In v.1.2 and v.1.3, the user could edit the +makefile to select which version he wanted to use. The makefiles in +v.1.4 have removed this possibility forcing the use of the ASM file, and +cursesio.c has been dropped from the distribution. + + A bug in the wgetstr() function caused PCcurses to echo characters +when reading a keyboard string, even if the echo had been turned off. +Thanks to Per Foreby at Lund University, Sweden, for this. Per also +reported bugs concerning the handling of characters with bit 8 set. +Their ASCII code were considered as lower than 32, so they were erased +etc. like control characters, i.e. erasing two character positions. The +control character test was changed to cope with this. + + The overlay() and overwrite() functions were changed so that the +overlaying window is positioned at its 'own' coordinates inside the +underlying window (it used to be at the underlying window's [0,0] +position). There is some controversy about this - the documentation for +different curses versions say different things. I think the choice made +is the most reasonable. + + The border() and wborder() functions were changed to actually draw a +border, since this seems to be the correct behavior of these functions. +They used to just set the border characters to be used by box(). These +functions are not present in standard BSD UNIX curses. + + The subwin() function previously did not allow the subwindow to be as +big as the original window in which it was created. This has now been +fixed. There was also the problem that the default size (set by +specifying numlines or numcols (or both) as 0 made the resulting actual +size 1 line/column too small. + + There were a few spelling errors in function names, both in the +function declarations and in curses.h. This was reported by Carlos +Amaral at INESC in Portugal. Thanks! There was also an unnecessary (but +harmless) parameter in a function call at one place. + +------------------------------------------------------------------------ + +PCcurses 1.3 - 1988/10/05 +========================= + + The file 'border.c' is now included. It allows you to explicitly +specify what characters should be used as box borders when the box() +functions are called. If the new border characters are non-0, they +override the border characters specified in the box() call. In my +understanding, this functionality is required for AT&T UNIX sV.3 +compatibility. Thanks for this goes to Tony L. Hansen +(hansen@pegasus.UUCP) for posting an article about it on Usenet +(newsgroup comp.unix.questions; his posting was not related at all to +PCcurses). + + The only other difference between v.1.2 and v.1.3 is that the latter +has been changed to avoid warning diagnostics if the source files are +compiled with warning switches on (for Microsoft this means '-W3', for +Turbo C it means '-w -w-pro'). Of these, the Turbo C warning check is +clearly to be used rather than Microsoft, even if neither of them comes +even close to a real UNIX 'lint'. Some of the warnings in fact indicated +real bugs, mostly functions that did not return correct return values or +types. + + The makefiles for both MSC and TRC have been modified to produce +warning messages as part of normal compilation. + +------------------------------------------------------------------------ + +PCcurses 1.2 - 1988/10/02 +========================= + + The changes from v.1.1 to v.1.2 are minor. The biggest change is that +there was a bug related to limiting the cursor movement if the +application tried to move it outside the screen (something that should +not be done anyway). Such erroneous application behavior is now handled +appropriately. + + All modules have been changed to have a revision string in them, which +makes it easier to determine what version is linked into a program (or +what library version you have). + + There is now a 'cursesio.c' file. That file does the same as +'cursesio.asm' (i.e. it provides the interface to the lower-level system +I/O routines). It is written in C and thus it is (possibly) more +portable than the assembler version (but still not so portable since it +uses 8086 INT XX calls directly). When one creates new curses libraries, +one chooses whether to use the assembler or the C version of cursesio. +The choice is made by commenting out the appropriate dependencies for +cursesio.obj, near the end of the makefiles. + + There is now a 'setmode.c' file. That file contains functions that +save and restore terminal modes. They do it into other variables than do +savetty() and resetty(), so one should probably use either +savetty()/resetty() or the new functions only - and not mix the both +ways unless one really knows what one does. + + Diff lists vs v.1.0 are no longer included in the distribution. The +make utility still is. PCcurses v.1.2 still compiles with Microsoft C +v.4.0, and with Borland Turbo C v.1.0. There is as far as I know no +reason to believe that it does not compile under Microsoft C v.3.0 and +5.x, or Turbo C v.1.5, but this has not been tested. + + There are two makefiles included, one for Microsoft C, one for Turbo +C. They are both copies of my personal makefiles, and as such they +reflect the directory structure on my own computer. This will have to be +changed before you run make. Check $(INCDIR) and $(LIBDIR) in +particular, and make the choice of ASM or C cursesio version as +mentioned above (the distribution version uses the C version of +cursesio). + + The manual file (curses.man) has been changed at appropriate places. + + I would like to thank the following persons for their help: + + Brandon S. Allbery (alberry@ncoast.UUCP) + for running comp.binaries.ibm.pc (at that time) + and comp.source.misc. + + Steve Balogh (Steve@cit5.cit.oz.AU) + for writing a set of manual pages and posting + them to the net. + + Torbjorn Lindh + for finding bugs and suggesting raw + character output routines. + + Nathan Glasser (nathan@eddie.mit.edu) + for finding and reporting bugs. + + Ingvar Olafsson (...enea!hafro!ingvar) + for finding and reporting bugs. + + Eric Rosco (...enea!ipmoea!ericr) + for finding and reporting bugs. + + Steve Creps (creps@silver.bacs.indiana.edu) + for doing a lot of work - among others + posting bug fixes to the net, and writing + the new cursesio.c module. + + N. Dean Pentcheff (dean@violet.berkeley.edu) + for finding bugs and rewriting cursesio.asm + for Turbo 'C' 1.5. + + Finally, Jeff Dean (parcvax,hplabs}!cdp!jeff) + (jeff@ads.arpa) + has had a shareware version of curses deliverable since + about half a year before I released PCcurses 1.0 on Use- + Net. He is very concerned about confusion between the two + packages, and therefore any references on the network + should make clear whether they reference Dean's PCcurses + or Larsson's PCcurses. + +------------------------------------------------------------------------ + +PCcurses 1.1 - 1988/03/06 +========================= + + The changes from v.1.0 to v.1.1 are minor. There are a few bug fixes, +and new (non-portable) functions for verbatim IBM character font display +have been added (in charadd.c and charins.c). The manual file +(curses.man) has been changed at appropriate places. + + In the file v10tov11.dif there are listings of the differences between +version 1.0 and 1.1. The diff listings are in UNIX diff(1) format. + + Version 1.1 compiles with Turbo C v.1.0, as well as Microsoft C v.3.0 +and v.4.0. On the release disk there is a make.exe utility which is very +similar to UNIX make (If the package was mailed to you, the make utility +will be in uuencoded format - in make.uu - and must be uudecoded first). +It is much more powerful than Microsoft's different MAKEs; the latter +ones will NOT generate libraries properly if used with the PCcurses +makefiles. + + There are three makefiles: + + makefile generic MSC 3.0 makefile + makefile.ms MSC 4.0 makefile + makefile.tc Turbo C 1.0 makefile + + To make a library with for example Turbo C, make directories to hold +.H and .LIB files (these directories are the 'standard places'), edit +makefile.tc for this, and type + + make -f makefile.tc all + +and libraries for all memory models will be created in the .LIB +directory, while the include files will end up in the .H directory. Also +read what is said about installation below! + +------------------------------------------------------------------------ + +PCcurses 1.0 - 1987/08/24 +========================= + + This is the release notes for the PCcurses v.1.0 cursor/window control +package. PCcurses offers the functionality of UNIX curses, plus some +extras. Normally it should be possible to port curses-based programs +from UNIX curses to PCcurses on the IBM PC without changes. PCcurses is +a port/ rewrite of Pavel Curtis' public domain 'ncurses' package. All +the code has been re-written - it is not just an edit of ncurses (or +UNIX curses). I mention this to clarify any copyright violation claims. +The data structures and ideas are very similar to ncurses. As for UNIX +curses, I have not even seen any sources for it. + + For an introduction to the use of 'curses' and its derivatives, you +should read 'Screen Updating and Cursor Movement Optimization: A Library +Package' by Kenneth C. R. C. Arnold, which describes the original +Berkeley UNIX version of curses. It is available as part of the UNIX +manuals. The other source of information is 'The Ncurses Reference +Manual' by Pavel Curtis. The latter is part of Curtis' ncurses package. + + The only other documentation provided is a 'man' page which describes +all the included functions in a very terse way. In the sources, each +function is preceded by a rather thorough description of what the +function does. I didn't have time to write a nice manual/tutorial - +sorry. + + PCcurses is released as a number of source files, a man page, and a +make file. A uuencoded copy of a 'make' utility, and a manpage for the +'make' is also provided to make it easier to put together PCcurses +libraries. Even if you are not interested in PCcurses, it may be +worthwhile to grab the make. + + The makefile assumes the presence of the Microsoft C compiler (3.0 or +4.0), Microsoft MASM and LIB, plus some MS-DOS utilities. The reason for +supplying MAKE.EXE is that the Microsoft 'MAKE:s' are much inferior to a +real UNIX make. The supplied make is a port of a public domain make, +published on Usenet. It is almost completely compatible with UNIX make. +When generating the curses libraries, the makefile will direct make to +do some directory creating and file copying, and then re-invoke itself +with new targets. The workings of the makefile are not absolutely +crystal clear at first sight... just start it and see what it does. + + For portability, the curses libraries depend on one assembler file for +access to the BIOS routines. There is no support for the EGA, but both +CGA, MGA, and the HGA can be used. The libraries are originally for +Microsoft C, but all C modules should be portable right away. In the +assembler file, segment names probably need to be changed, and possibly +the parameter passing scheme. I think Turbo C will work right away - as +far as I understand, all its conventions are compatible with Microsoft +C. + + There are some parts left out between ncurses and PCcurses. One is the +support for multiple terminals - not very interesting on a PC anyway. +Because we KNOW what terminal we have, there is no need for a termcap or +terminfo library. PCcurses also has some things that neither curses nor +ncurses have. Compared to the original UNIX curses, PCcurses has lots of +extras. + + The BIOS routines are used directly, which gives fast screen updates. +PCcurses does not do direct writes to screen RAM - in my opinion it is +a bit ugly to rely that much on hardware compatibility. Anyone could fix +that, of course... + + One of the more serious problems with PCcurses is the way in which +normal, cbreak, and raw input modes are done. All those details are in +the 'charget' module - I do raw I/O via the BIOS, and perform any +buffering myself. If an application program uses PCcurses, it should do +ALL its I/O via PCcurses calls, otherwise the mix of normal and +PCcurses I/O may mess up the display. I think my code is reasonable... +comments are welcome, provided you express them nicely... + + To install, copy all files to a work directory, edit 'makefile' to +define the standard include and library file directory names of your +choice (these directories must exist already, and their path names must +be relative to the root directory, not to the current one). You must +also run uudecode on make.uu, to generate MAKE.EXE. You can do that on +your PC, if you have uudecode there, otherwise you can do it under UNIX +and do a binary transfer to the PC. When you have MAKE.EXE in your work +directory (or in your /bin directory), type make. + + Make will now create 4 sub-directories (one for each memory model), +copy some assembler include files into them, copy two include files to +your include directory, CHDIR to each sub-directory and re-invoke itself +with other make targets to compile and assemble all the source files +into the appropriate directories. Then the library manager is run to +create the library files in your desired library directory. Presto! + + If you only want to generate a library for one memory model, type +'make small', 'make large', etc. The name of the memory model must be in +lower case, like in the makefile. + + I think the package is fairly well debugged - but then again, that's +what I always think. It was completed in May-87, and no problems found +yet. Now it's your turn... Comments, suggestions and bug reports and +fixes (no flames please) to + +-- Bjorn Larsson diff --git a/3rd-party/PDCurses/IMPLEMNT.md b/3rd-party/PDCurses/IMPLEMNT.md new file mode 100644 index 0000000..612148f --- /dev/null +++ b/3rd-party/PDCurses/IMPLEMNT.md @@ -0,0 +1,334 @@ +PDCurses Implementor's Guide +============================ + +- Version 1.3 - 20??/??/?? - notes about official ports, new indentation + style; markdown +- Version 1.2 - 2007/07/11 - added PDC_init_pair(), PDC_pair_content(), + version history; removed pdc_atrtab +- Version 1.1 - 2007/06/06 - minor cosmetic change +- Version 1.0 - 2007/04/01 - initial revision + +This document is for those wishing to port PDCurses to a new platform, +or just wanting to better understand how it works. Nothing here should +be needed for application programming; for that, refer to PDCurses.md, +as built in doc/, or distributed as a file separate from this source +package. This document assumes that you've read the user-level +documentation and are very familiar with application-level curses +programming. + +If you want to submit your port for possible inclusion into the main +PDCurses distribution, please follow these guidelines: + + - Don't modify anything in the pdcurses directory or in other port + directories. Don't modify curses.h or curspriv.h unless absolutely + necessary. (And prefer modifying curspriv.h over curses.h.) + + - Use the same indentation style, naming and scope conventions as the + existing code. + + - Release all your code to the public domain -- no copyright. Code + under GPL, BSD, etc. will not be accepted. + + +Data Structures +=============== + +A port of PDCurses must provide acs_map[], a 128-element array of +chtypes, with values laid out based on the Alternate Character Set of +the VT100 (see curses.h). PDC_transform_line() must use this table; when +it encounters a chtype with the A_ALTCHARSET flag set, and an A_CHARTEXT +value in the range 0-127, it must render it using the A_CHARTEXT portion +of the corresponding value from this table, instead of the original +value. Also, values may be read from this table by apps, and passed +through functions such as waddch(), which does no special processing on +control characters (0-31 and 127) when the A_ALTCHARSET flag is set. +Thus, any control characters used in acs_map[] should also have the +A_ALTCHARSET flag set. Implementations should provide suitable values +for all the ACS_ macros defined in curses.h; other values in the table +should be filled with their own indices (e.g., acs_map['E'] == 'E'). The +table can be either hardwired, or filled by PDC_scr_open(). Existing +ports define it in pdcdisp.c, but this is not required. + + +Functions +========= + +A port of PDCurses must implement the following functions, with extern +scope. These functions are traditionally divided into several modules, +as indicated below; this division is not required (only the functions +are), but may make it easier to follow for someone familiar with the +existing ports. + +Any other functions you create as part of your implementation should +have static scope, if possible. If they can't be static, they should be +named with the "PDC_" prefix. This minimizes the risk of collision with +an application's choices. + +Current PDCurses style also uses a single leading underscore with the +name of any static function; and modified BSD/Allman-style indentation, +approximately equivalent to "indent -kr -nut -bl -bli0", with +adjustments to keep every line under 80 columns. + + +pdcdisp.c: +---------- + +### void PDC_gotoyx(int y, int x); + +Move the physical cursor (as opposed to the logical cursor affected by +wmove()) to the given location. This is called mainly from doupdate(). +In general, this function need not compare the old location with the new +one, and should just move the cursor unconditionally. + +### void PDC_transform_line(int lineno, int x, int len, const chtype *srcp); + +The core output routine. It takes len chtype entities from srcp (a +pointer into curscr) and renders them to the physical screen at line +lineno, column x. It must also translate characters 0-127 via acs_map[], +if they're flagged with A_ALTCHARSET in the attribute portion of the +chtype. + + +pdcgetsc.c: +----------- + +### int PDC_get_columns(void); + +Returns the size of the screen in columns. It's used in resize_term() to +set the new value of COLS. (Some existing implementations also call it +internally from PDC_scr_open(), but this is not required.) + +### int PDC_get_cursor_mode(void); + +Returns the size/shape of the cursor. The format of the result is +unspecified, except that it must be returned as an int. This function is +called from initscr(), and the result is stored in SP->orig_cursor, +which is used by PDC_curs_set() to determine the size/shape of the +cursor in normal visibility mode (curs_set(1)). + +### int PDC_get_rows(void); + +Returns the size of the screen in rows. It's used in resize_term() to +set the new value of LINES. (Some existing implementations also call it +internally from PDC_scr_open(), but this is not required.) + + +pdckbd.c: +--------- + +### bool PDC_check_key(void); + +Keyboard/mouse event check, called from wgetch(). Returns TRUE if +there's an event ready to process. This function must be non-blocking. + +### void PDC_flushinp(void); + +This is the core of flushinp(). It discards any pending key or mouse +events, removing them from any internal queue and from the OS queue, if +applicable. + +### int PDC_get_key(void); + +Get the next available key, or mouse event (indicated by a return of +KEY_MOUSE), and remove it from the OS' input queue, if applicable. This +function is called from wgetch(). This function may be blocking, and +traditionally is; but it need not be. If a valid key or mouse event +cannot be returned, for any reason, this function returns -1. Valid keys +are those that fall within the appropriate character set, or are in the +list of special keys found in curses.h (KEY_MIN through KEY_MAX). When +returning a special key code, this routine must also set SP->key_code to +TRUE; otherwise it must set it to FALSE. If SP->return_key_modifiers is +TRUE, this function may return modifier keys (shift, control, alt), +pressed alone, as special key codes; if SP->return_key_modifiers is +FALSE, it must not. If modifier keys are returned, it should only happen +if no other keys were pressed in the meantime; i.e., the return should +happen on key up. But if this is not possible, it may return the +modifier keys on key down (if and only if SP->return_key_modifiers is +TRUE). + +### bool PDC_has_mouse(void); + +Called from has_mouse(). Reports whether mouse support is available. Can +be a static TRUE or FALSE, or dependent on conditions. Note: Activating +mouse support should depend only on PDC_mouse_set(); don't expect the +user to call has_mouse() first. + +### int PDC_modifiers_set(void); + +Called from PDC_return_key_modifiers(). If your platform needs to do +anything in response to a change in SP->return_key_modifiers, do it +here. Returns OK or ERR, which is passed on by the caller. + +### int PDC_mouse_set(void); + +Called by mouse_set(), mouse_on(), and mouse_off() -- all the functions +that modify SP->_trap_mbe. If your platform needs to do anything in +response to a change in SP->_trap_mbe (for example, turning the mouse +cursor on or off), do it here. Returns OK or ERR, which is passed on by +the caller. + +### void PDC_set_keyboard_binary(bool on); + +Set keyboard input to "binary" mode. If you need to do something to keep +the OS from processing ^C, etc. on your platform, do it here. TRUE turns +the mode on; FALSE reverts it. This function is called from raw() and +noraw(). + + +pdcscrn.c: +---------- + +### bool PDC_can_change_color(void); + +Returns TRUE if init_color() and color_content() give meaningful +results, FALSE otherwise. Called from can_change_color(). + +### int PDC_color_content(short color, short *red, short *green, short *blue); + +The core of color_content(). This does all the work of that function, +except checking for values out of range and null pointers. + +### int PDC_init_color(short color, short red, short green, short blue); + +The core of init_color(). This does all the work of that function, +except checking for values out of range. + +### void PDC_init_pair(short pair, short fg, short bg); + +The core of init_pair(). This does all the work of that function, except +checking for values out of range. The values passed to this function +should be returned by a call to PDC_pair_content() with the same pair +number. PDC_transform_line() should use the specified colors when +rendering a chtype with the given pair number. + +### int PDC_pair_content(short pair, short *fg, short *bg); + +The core of pair_content(). This does all the work of that function, +except checking for values out of range and null pointers. + +### void PDC_reset_prog_mode(void); + +The non-portable functionality of reset_prog_mode() is handled here -- +whatever's not done in _restore_mode(). In current ports: In OS/2, this +sets the keyboard to binary mode; in Win32, it enables or disables the +mouse pointer to match the saved mode; in others it does nothing. + +### void PDC_reset_shell_mode(void); + +The same thing, for reset_shell_mode(). In OS/2 and Win32, it restores +the default console mode; in others it does nothing. + +### int PDC_resize_screen(int nlines, int ncols); + +This does the main work of resize_term(). It may respond to non-zero +parameters, by setting the screen to the specified size; to zero +parameters, by setting the screen to a size chosen by the user at +runtime, in an unspecified way (e.g., by dragging the edges of the +window); or both. It may also do nothing, if there's no appropriate +action for the platform. + +### void PDC_restore_screen_mode(int i); + +Called from _restore_mode() in kernel.c, this function does the actual +mode changing, if applicable. Currently used only in DOS and OS/2. + +### void PDC_save_screen_mode(int i); + +Called from _save_mode() in kernel.c, this function saves the actual +screen mode, if applicable. Currently used only in DOS and OS/2. + +### void PDC_scr_close(void); + +The platform-specific part of endwin(). It may restore the image of the +original screen saved by PDC_scr_open(), if the PDC_RESTORE_SCREEN +environment variable is set; either way, if using an existing terminal, +this function should restore it to the mode it had at startup, and move +the cursor to the lower left corner. (The X11 port does nothing.) + +### void PDC_scr_free(void); + +Frees the memory for SP allocated by PDC_scr_open(). Called by +delscreen(). + +### int PDC_scr_open(int argc, char **argv); + +The platform-specific part of initscr(). It's actually called from +Xinitscr(); the arguments, if present, correspond to those used with +main(), and may be used to set the title of the terminal window, or for +other, platform-specific purposes. (The arguments are currently used +only in X11.) PDC_scr_open() must allocate memory for SP, and must +initialize acs_map[] (unless it's preset) and several members of SP, +including lines, cols, mouse_wait, orig_attr (and if orig_attr is TRUE, +orig_fore and orig_back), mono, _restore and _preserve. (Although SP is +used the same way in all ports, it's allocated here in order to allow +the X11 port to map it to a block of shared memory.) If using an +existing terminal, and the environment variable PDC_RESTORE_SCREEN is +set, this function may also store the existing screen image for later +restoration by PDC_scr_close(). + + +pdcsetsc.c: +----------- + +### int PDC_curs_set(int visibility); + +Called from curs_set(). Changes the appearance of the cursor -- 0 turns +it off, 1 is normal (the terminal's default, if applicable, as +determined by SP->orig_cursor), and 2 is high visibility. The exact +appearance of these modes is not specified. + + +pdcutil.c: +---------- + +### void PDC_beep(void); + +Emits a short audible beep. If this is not possible on your platform, +you must set SP->audible to FALSE during initialization (i.e., from +PDC_scr_open() -- not here); otherwise, set it to TRUE. This function is +called from beep(). + +### void PDC_napms(int ms); + +This is the core delay routine, called by napms(). It pauses for about +(the X/Open spec says "at least") ms milliseconds, then returns. High +degrees of accuracy and precision are not expected (though desirable, if +you can achieve them). More important is that this function gives back +the process' time slice to the OS, so that PDCurses idles at low CPU +usage. + +### const char *PDC_sysname(void); + +Returns a short string describing the platform, such as "DOS" or "X11". +This is used by longname(). It must be no more than 100 characters; it +should be much, much shorter (existing platforms use no more than 5). + + +More functions +============== + +The following functions are implemented in the platform directories, but +are accessed directly by apps. Refer to the user documentation for their +descriptions: + + +pdcclip.c: +---------- + +### int PDC_clearclipboard(void); +### int PDC_freeclipboard(char *contents); +### int PDC_getclipboard(char **contents, long *length); +### int PDC_setclipboard(const char *contents, long length); + + +pdckbd.c: +--------- + +### unsigned long PDC_get_input_fd(void); + + +pdcsetsc.c: +----------- + +### int PDC_set_blink(bool blinkon); +### void PDC_set_title(const char *title); diff --git a/3rd-party/PDCurses/README.md b/3rd-party/PDCurses/README.md new file mode 100644 index 0000000..c62c431 --- /dev/null +++ b/3rd-party/PDCurses/README.md @@ -0,0 +1,77 @@ +Welcome to PDCurses! +==================== + +Public Domain Curses, aka PDCurses, is an implementation of X/Open +curses for multiple platforms. Relative to the 'official' PDCurses +project, this has a variety of improvements, adding a Windows GUI +and a VT-like console "flavor" of Curses and expanding the +capabilities of the other flavors (SDL1, SDL2, X11, Win32 console, +OS/2, and DOS). Some details and screen shots at + +https://www.projectpluto.com/win32a.htm + +Much of this was done during a long period in which 'official' +PDCurses was inactive. It is hoped that the changes in this fork +can be merged into the 'official' PDCurses, and a pull request has +been made. But the split is looking increasingly permanent. + +Legal Stuff +----------- + +The core package is in the public domain, but small portions of PDCurses +are subject to copyright under various licenses. Each directory +contains a README file, with a section titled "Distribution Status" +which describes the status of the files in that directory. + +If you use PDCurses in an application, an acknowledgement would be +appreciated, but is not mandatory. If you make corrections or +enhancements to PDCurses, please forward them to the current maintainer +for the benefit of other users. + +This software is provided AS IS with NO WARRANTY whatsoever. + + +Ports +----- + +PDCurses has been ported to DOS, OS/2, Win32, X11 and SDL1 and SDL2, +and this version adds a Windows graphical and VT-like console +flavor. A directory containing the port-specific source files exists +for each of these platforms. + +Build instructions are in the README file for each platform: + +- [DOS](dos/README.md) for use on DOS +- [OS/2](os2/README.md) for use on OS/2 +- [SDL 1.x](sdl1/README.md) for use as separate SDL version 1 window +- [SDL 2.x](sdl2/README.md) for use as separate SDL version 2 window +- [wincon](wincon/README.md) (formerly win32) for use on Windows Console +- [WinGUI](wingui/README.md) for use on Windows Graphics Mode +- [X11](x11/README.md) (also called XCurses) for use as separate X11 window +- [VT](vt/README.md) for use on terminal + +Distribution Status +------------------- + +All files in this directory except configure, config.guess and +config.sub are released to the Public Domain. config.guess and +config.sub are under the GPL; configure is under a free license +described within it. + +Build Status +------------------- + +PDCurses is automatically build in multiple environments: + +[![Build status Travis-CI](https://api.travis-ci.com/Bill-Gray/PDCurses.svg?branch=master)](https://travis-ci.com/Bill-Gray/PDCurses) +, also providing artifacts: [![Build status Appveyor](https://ci.appveyor.com/api/projects/status/github/Bill-Gray/PDCurses?branch=master&svg=true)](https://ci.appveyor.com/project/Bill-Gray/PDCurses) + + +Maintainer +---------- + +William McBrine ("official" PDCurses) + +Bill Gray +p‮ôç.ötulpťcéjôřp@otúl‬m +(this fork) diff --git a/3rd-party/PDCurses/acs_defs.h b/3rd-party/PDCurses/acs_defs.h new file mode 100644 index 0000000..c8c02a7 --- /dev/null +++ b/3rd-party/PDCurses/acs_defs.h @@ -0,0 +1,265 @@ +/* Many of the following #defines are completely unused for the +nonce. For each character, its code point in code page 437, +Unicode, and page 8859-1 are given. The first is used for +non-wide builds in Win32 console, DOS, SDL, and OS/2. +Unicode is used for all wide builds, and for the non-wide +build of WinGUI. Code page 8859-1 is used for non-wide X11. + + All of these characters exist in CP437 and Unicode. Some +don't exist in 8859-1, in which case the last column is 'TBD'. +Only 32 are used in ncurses. So caution is advised. */ + +#ifdef USE_ISO8859_CHARSET + #define CHOOSE( A, B, C) (C) + #define TBD '!' +#else + #define CHOOSE( A, B, C) (USE_UNICODE_ACS_CHARS ? B : A) +#endif + +/* Codes found from https://en.wikipedia.org/wiki/Code_page_437 */ + +#define SMILE CHOOSE( 0x01, 0x263a, 'O') +#define REV_SMILE CHOOSE( 0x02, 0x263b, 'O') +#define HEART CHOOSE( 0x03, 0x2665, 'H') +#define DIAMOND CHOOSE( 0x04, 0x2666, 0x01) +#define CLUB CHOOSE( 0x05, 0x2663, 'C') +#define SPADE CHOOSE( 0x06, 0x2660, 'S') +#define MEDIUM_BULLET CHOOSE( 0x07, 0x2022, 0xb7) +#define REV_BULLET CHOOSE( 0x08, 0x2508, 0xb7) +#define WHITE_BULLET CHOOSE( 0x09, 0x25cb, 7) +#define REV_WHITE_BULLET CHOOSE( 0x0a, 0x25D9, 7) +#define MALE_SYM CHOOSE( 0x0b, 0x2642, 'm') +#define FEMALE_SYM CHOOSE( 0x0c, 0x2640, 'f') +#define QTR_NOTE CHOOSE( 0x0d, 0x266a, 0xbc) +#define EIGHTH_NOTE CHOOSE( 0x0e, 0x266b, 0xbd) +#define SPLAT CHOOSE( 0x0f, 0xa4 , 0xa4) +#define RIGHT_TRIANGLE CHOOSE( 0x10, 0x25b6, '>') +#define LEFT_TRIANGLE CHOOSE( 0x11, 0x25c0, '<') +#define UP_DOWN_ARROW CHOOSE( 0x12, 0x2195, 0x19) +#define DBL_BANG CHOOSE( 0x13, 0x203c, '!') +#define PILCROW CHOOSE( 0x14, 0xb6 , 0xb6) +#define SECTION_SIGN CHOOSE( 0x15, 0xa7 , 0xa7) +#define LOW_QTR_BLOCK CHOOSE( 0x16, 0x25b2, '_') +#define UP_DOWN_ARROW_UNDERSCORED CHOOSE( 0x17, 0x21ab, 0x19) +#define UP_ARROW CHOOSE( 0x18, 0x2191, '^') +#define DOWN_ARROW CHOOSE( 0x19, 0x2193, 'v') +#define RIGHT_ARROW CHOOSE( 0x1a, 0x2192, '>') +#define LEFT_ARROW CHOOSE( 0x1b, 0x2190, '<') +#define RIGHT_ANGLE CHOOSE( 0x1c, 0x221f, 0xe) +#define LEFT_RIGHT_ARROW CHOOSE( 0x1d, 0x2194, '-') +#define UP_TRIANGLE CHOOSE( 0x1e, 0x25b2, '^') +#define DOWN_TRIANGLE CHOOSE( 0x1f, 0x25bc, 'v') + +#define UPPERCASE_C_CEDILLA CHOOSE( 0x80, 0xc7 , 0xc7) +#define LOWERCASE_U_UMLAUT CHOOSE( 0x81, 0xfc , 0xfc) +#define LOWERCASE_E_ACUTE CHOOSE( 0x82, 0xe9 , 0xe9) +#define LOWERCASE_A_CIRCUMFLEX CHOOSE( 0x83, 0xe2 , 0xe2) +#define LOWERCASE_A_UMLAUT CHOOSE( 0x84, 0xe4 , 0xe4) +#define LOWERCASE_A_GRAVE CHOOSE( 0x85, 0xe0 , 0xea) +#define LOWERCASE_A_RING CHOOSE( 0x86, 0xe5 , 0xe5) +#define LOWERCASE_C_CEDILLA CHOOSE( 0x87, 0xe7 , 0xe7) +#define LOWERCASE_E_CIRCUMFLEX CHOOSE( 0x88, 0xea , 0xea) +#define LOWERCASE_E_UMLAUT CHOOSE( 0x89, 0xeb , 0xeb) +#define LOWERCASE_E_GRAVE CHOOSE( 0x8a, 0xe8 , 0xe8) +#define LOWERCASE_I_UMLAUT CHOOSE( 0x8b, 0xef , 0xef) +#define LOWERCASE_I_CIRCUMFLEX CHOOSE( 0x8c, 0xee , 0xee) +#define LOWERCASE_I_GRAVE CHOOSE( 0x8d, 0xec , 0xce) +#define UPPERCASE_A_UMLAUT CHOOSE( 0x8e, 0xc4 , 0xc4) +#define UPPERCASE_A_RING CHOOSE( 0x8f, 0xc5 , 0xc5) + +#define UPPERCASE_E_ACUTE CHOOSE( 0x90, 0xc9 , 0xc9) +#define LOWERCASE_AE_LIGATURE CHOOSE( 0x91, 0xe6 , 0xe6) +#define UPPERCASE_AE_LIGATURE CHOOSE( 0x92, 0xc6 , 0xc6) +#define LOWERCASE_O_CIRCUMFLEX CHOOSE( 0x93, 0xf4 , 0xf4) +#define LOWERCASE_O_UMLAUT CHOOSE( 0x94, 0xf6 , 0xf6) +#define LOWERCASE_O_GRAVE CHOOSE( 0x95, 0xf2 , 0xf2) +#define LOWERCASE_U_CIRCUMFLEX CHOOSE( 0x96, 0xfb , 0xfb) +#define LOWERCASE_U_GRAVE CHOOSE( 0x97, 0xf9 , 0xf9) +#define LOWERCASE_Y_UMLAUT CHOOSE( 0x98, 0xff , 0xff) +#define UPPERCASE_O_UMLAUT CHOOSE( 0x99, 0xd6 , 0xd6) +#define UPPERCASE_U_UMLAUT CHOOSE( 0x9a, 0xdc , 0xdc) +#define CENT_SIGN CHOOSE( 0x9b, 0xa2 , 0xa2) +#define STERLING_SIGN CHOOSE( 0x9c, 0xa3 , 30) +#define YEN_SIGN CHOOSE( 0x9d, 0xa5 , 0xa5) +#define PESETA_SIGN CHOOSE( 0x9e, 0x20a7, TBD) +#define F_WITH_HOOK CHOOSE( 0x9f, 0x0192, TBD) + +#define LOWERCASE_A_ACUTE CHOOSE( 0xa0, 0xe1 , 0xe1) +#define LOWERCASE_I_ACUTE CHOOSE( 0xa1, 0xed , 0xed) +#define LOWERCASE_O_ACUTE CHOOSE( 0xa2, 0xf3 , 0xf3) +#define LOWERCASE_U_ACUTE CHOOSE( 0xa3, 0xfa , 0xfa) +#define LOWERCASE_N_TILDE CHOOSE( 0xa4, 0xf1 , 0xf1) +#define UPPERCASE_N_TILDE CHOOSE( 0xa5, 0xd1 , 0xd1) +#define A_ORDINAL CHOOSE( 0xa6, 0xaa , 0xaa) +#define O_ORDINAL CHOOSE( 0xa7, 0xba , 0xba) +#define INVERTED_QUESTION_MARK CHOOSE( 0xa8, 0xbf , 0xbf) +#define REVERSED_NOT_SIGN CHOOSE( 0xa9, 0x2310, TBD) +#define NOT_SIGN CHOOSE( 0xaa, 0xac , 0xac) +#define VULGAR_HALF CHOOSE( 0xab, 0xbd , 0xbd) +#define VULGAR_QUARTER CHOOSE( 0xac, 0xbc , 0xbc) +#define INVERTED_EXCLAMATION_MARK CHOOSE( 0xad, 0xa1 , 0xa1) +#define LEFT_ANGLE_QUOTE_MARK CHOOSE( 0xae, 0xab , 0xab) +#define RIGHT_ANGLE_QUOTE_MARK CHOOSE( 0xaf, 0xbb , 0xbb) + +#define LIGHT_SHADE CHOOSE( 0xb0, 0x2591, '#' ) +#define MEDIUM_SHADE CHOOSE( 0xb1, 0x2592, 2) +#define DARK_SHADE CHOOSE( 0xb2, 0x2593, TBD) +#define BOX_VLINE CHOOSE( 0xb3, 0x2502, 25) +#define BOX_RTEE CHOOSE( 0xb4, 0x2524, 22) +#define BOX_SD_RTEE CHOOSE( 0xb5, 0x2561, 22) +#define BOX_DS_RTEE CHOOSE( 0xb6, 0x2562, 22) +#define BOX_DS_URCORNER CHOOSE( 0xb7, 0x2556, 12) +#define BOX_SD_URCORNER CHOOSE( 0xb8, 0x2555, 12) +#define BOX_D_RTEE CHOOSE( 0xb9, 0x2563, 22) +#define BOX_D_VLINE CHOOSE( 0xba, 0x2551, 25) +#define BOX_D_URCORNER CHOOSE( 0xbb, 0x2557, 12) +#define BOX_D_LRCORNER CHOOSE( 0xbc, 0x255D, 11) +#define BOX_DS_LRCORNER CHOOSE( 0xbd, 0x255c, 11) +#define BOX_SD_LRCORNER CHOOSE( 0xbe, 0x255b, 11) +#define BOX_URCORNER CHOOSE( 0xbf, 0x2510, 12) + +#define BOX_LLCORNER CHOOSE( 0xc0, 0x2514, 14) +#define BOX_BTEE CHOOSE( 0xc1, 0x2534, 23) +#define BOX_TTEE CHOOSE( 0xc2, 0x252c, 24) +#define BOX_LTEE CHOOSE( 0xc3, 0x251c, 21) +#define BOX_HLINE CHOOSE( 0xc4, 0x2500, 18) +#define BOX_PLUS CHOOSE( 0xc5, 0x253c, 15) +#define BOX_SD_LTEE CHOOSE( 0xc6, 0x255e, 21) +#define BOX_DS_LTEE CHOOSE( 0xc7, 0x255f, 21) +#define BOX_D_LLCORNER CHOOSE( 0xc8, 0x255A, 14) +#define BOX_D_ULCORNER CHOOSE( 0xc9, 0x2554, 13) +#define BOX_D_BTEE CHOOSE( 0xca, 0x2569, 23) +#define BOX_D_TTEE CHOOSE( 0xcb, 0x2566, 24) +#define BOX_D_LTEE CHOOSE( 0xcc, 0x2560, 21) +#define BOX_D_HLINE CHOOSE( 0xcd, 0x2550, 18) +#define BOX_D_PLUS CHOOSE( 0xce, 0x256C, 15) +#define BOX_SD_BTEE CHOOSE( 0xcf, 0x2567, 23) + +#define BOX_DS_BTEE CHOOSE( 0xd0, 0x2568, 23) +#define BOX_SD_TTEE CHOOSE( 0xd1, 0x2564, 24) +#define BOX_DS_TTEE CHOOSE( 0xd2, 0x2565, 24) +#define BOX_DS_LLCORNER CHOOSE( 0xd3, 0x2559, 14) +#define BOX_SD_LLCORNER CHOOSE( 0xd4, 0x2558, 14) +#define BOX_SD_ULCORNER CHOOSE( 0xd5, 0x2552, 13) +#define BOX_DS_ULCORNER CHOOSE( 0xd6, 0x2553, 13) +#define BOX_DS_PLUS CHOOSE( 0xd7, 0x256b, 15) +#define BOX_SD_PLUS CHOOSE( 0xd8, 0x256a, 15) +#define BOX_LRCORNER CHOOSE( 0xd9, 0x2518, 11) +#define BOX_ULCORNER CHOOSE( 0xda, 0x250c, 13) +#define FULL_BLOCK CHOOSE( 0xdb, 0x2588, 0) +#define LOWER_HALF_BLOCK CHOOSE( 0xdc, 0x2584, TBD) +#define LEFT_HALF_BLOCK CHOOSE( 0xdd, 0x258c, TBD) +#define RIGHT_HALF_BLOCK CHOOSE( 0xde, 0x2590, TBD) +#define UPPER_HALF_BLOCK CHOOSE( 0xdf, 0x2580, TBD) + +#define ALPHA CHOOSE( 0xe0, 0x03b1, TBD) +#define BETA CHOOSE( 0xe1, 0x00df, TBD) +#define GAMMA CHOOSE( 0xe2, 0x0393, TBD) +#define PI CHOOSE( 0xe3, 0x03c0, 28) +#define UPPERCASE_SIGMA CHOOSE( 0xe4, 0x03a3, TBD) +#define LOWERCASE_SIGMA CHOOSE( 0xe5, 0x03c3, TBD) +#define MU CHOOSE( 0xe6, 0x00b5, 0xb5) +#define TAU CHOOSE( 0xe7, 0x03c4, TBD) +#define UPPERCASE_PHI CHOOSE( 0xe8, 0x03a6, TBD) +#define THETA CHOOSE( 0xe9, 0x0398, TBD) +#define OMEGA CHOOSE( 0xea, 0x03a9, TBD) +#define DELTA CHOOSE( 0xeb, 0x03b4, TBD) +#define INFINITY_SIGN CHOOSE( 0xec, 0x221e, TBD) +#define LOWERCASE_PHI CHOOSE( 0xed, 0x03c6, TBD) +#define EPSILON CHOOSE( 0xee, 0x03b5, TBD) +#define INTERSECTION CHOOSE( 0xef, 0x2229, TBD) + +#define TRIPLE_BAR CHOOSE( 0xf0, 0x2261, TBD) +#define PLUS_OR_MINUS CHOOSE( 0xf1, 0x00b1, 8) +#define GREATER_THAN_OR_EQUAL_TO CHOOSE( 0xf2, 0x2265, 27) +#define LESSER_THAN_OR_EQUAL_TO CHOOSE( 0xf3, 0x2264, 26) +#define UPPER_HALF_INTEGRAL_SIGN CHOOSE( 0xf4, 0x2320, TBD) +#define LOWER_HALF_INTEGRAL_SIGN CHOOSE( 0xf5, 0x2321, TBD) +#define DIVISION_SIGN CHOOSE( 0xf6, 0x00f7, 0xf7) +#define APPROXIMATELY_EQUALS_SIGN CHOOSE( 0xf7, 0x2248, TBD) +#define DEGREE_SIGN CHOOSE( 0xf8, 0x00b0, 0xb0) +#define LARGE_BULLET CHOOSE( 0xf9, 0x2219, 7) +#define SMALL_BULLET CHOOSE( 0xfa, 0x00b7, 0xb7) +#define SQUARE_ROOT CHOOSE( 0xfb, 0x221a, TBD) +#define SUPERSCRIPT_N CHOOSE( 0xfc, 0x207f, TBD) +#define SUPERSCRIPT_2 CHOOSE( 0xfd, 0x00b2, 0xb2) +#define CENTERED_SQUARE CHOOSE( 0xfe, 0x25a0, TBD) +#define NON_BREAKING_SPACE CHOOSE( 0xff, 0x00a0, TBD) + + + + /* It says at http://unicode.org/charts/PDF/U2300.pdf */ + /* that '...the scan line numbers here refer to old, */ + /* low-resolution technology for terminals, with only */ + /* nine scan lines per fixed-size character glyph. */ + /* Even-numbered scan lines are unified with box */ + /* drawing graphics." */ + /* The utility of these is questionable; they'd */ + /* work Just Fine in wingdi (_if_ the appropriate */ + /* glyphs are available), but not elsewhere. */ +#define HORIZ_SCAN_LINE_1 CHOOSE( 0x2d, 0x23ba, 16) +#define HORIZ_SCAN_LINE_3 CHOOSE( 0x2d, 0x23bb, 17) +#define HORIZ_SCAN_LINE_7 CHOOSE( 0x2d, 0x23bc, 19) +#define HORIZ_SCAN_LINE_9 CHOOSE( '_', 0x23bd, 20) + + /* Code page 437 lacks a 'for real' not-equals, so for that, */ + /* we use the double-horizontal single-vertical box drawing : */ +#define NOT_EQUALS_SIGN CHOOSE( 0xd8, 0x2260, 29) + +# define A(x) ((chtype)x | A_ALTCHARSET) + +chtype acs_map[128] = +{ + A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), + A(9), A(10), + CLUB, HEART, SPADE, SMILE, REV_SMILE, /* 11 12 13 14 15 */ + MEDIUM_BULLET, WHITE_BULLET, PILCROW, SECTION_SIGN, /* 16 17 18 19 */ + A_ORDINAL, O_ORDINAL, LOWERCASE_PHI, /* 20 21 22 */ + INVERTED_EXCLAMATION_MARK, INVERTED_QUESTION_MARK, /* 23 24 */ + REVERSED_NOT_SIGN, NOT_SIGN, /* 25 26 */ + UPPER_HALF_INTEGRAL_SIGN, LOWER_HALF_INTEGRAL_SIGN, /* 27 28 */ + SUPERSCRIPT_N, CENTERED_SQUARE, F_WITH_HOOK, /* 29 30 31 */ + + RIGHT_ARROW, LEFT_ARROW, UP_ARROW, DOWN_ARROW, /* 32 !"# */ + + PI, NOT_EQUALS_SIGN, VULGAR_HALF, VULGAR_QUARTER, /* $%&' */ + '(', + LEFT_ANGLE_QUOTE_MARK, RIGHT_ANGLE_QUOTE_MARK, /* )* */ + DARK_SHADE, SUPERSCRIPT_2, INFINITY_SIGN, /* +,- */ + ALPHA, BETA, GAMMA, UPPERCASE_SIGMA, LOWERCASE_SIGMA, /* ./012 */ + '3', + MU, TAU, UPPERCASE_PHI, THETA, OMEGA, DELTA, EPSILON, /* 456789: */ + + BOX_SD_LRCORNER, BOX_SD_URCORNER, BOX_SD_ULCORNER, /* ;<= */ + BOX_SD_LLCORNER, BOX_SD_PLUS, /* >? */ + BOX_SD_LTEE, BOX_SD_RTEE, BOX_SD_BTEE, BOX_SD_TTEE, /* @ABC */ + + BOX_D_LRCORNER, BOX_D_URCORNER, BOX_D_ULCORNER, /* DEF */ + BOX_D_LLCORNER, BOX_D_PLUS, /* GH */ + BOX_D_LTEE, BOX_D_RTEE, BOX_D_BTEE, BOX_D_TTEE, /* IJKL */ + + BOX_DS_LRCORNER, BOX_DS_URCORNER, BOX_DS_ULCORNER, /* MNO */ + BOX_DS_LLCORNER, BOX_DS_PLUS, /* PQ */ + BOX_DS_LTEE, BOX_DS_RTEE, BOX_DS_BTEE, BOX_DS_TTEE, /* RSTU */ + + BOX_LRCORNER, BOX_URCORNER, BOX_ULCORNER, /* VWX */ + BOX_LLCORNER, BOX_PLUS, /* YZ */ + BOX_LTEE, BOX_RTEE, BOX_BTEE, BOX_TTEE, /* [\]^ */ + + BOX_HLINE, BOX_VLINE, BOX_D_HLINE, BOX_D_VLINE, /* _`ab */ + + DIVISION_SIGN, APPROXIMATELY_EQUALS_SIGN, /* cd */ + INTERSECTION, TRIPLE_BAR, /* ef */ + SMALL_BULLET, LARGE_BULLET, SQUARE_ROOT, /* ghi */ + DIAMOND, MEDIUM_SHADE, /* jk */ + HORIZ_SCAN_LINE_1, HORIZ_SCAN_LINE_3, /* lm */ + HORIZ_SCAN_LINE_7, HORIZ_SCAN_LINE_9, /* no */ + UPPER_HALF_BLOCK, LOWER_HALF_BLOCK, /* pq */ + LEFT_HALF_BLOCK, RIGHT_HALF_BLOCK, FULL_BLOCK, /* rst */ + LESSER_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, /* uv */ + DEGREE_SIGN, PLUS_OR_MINUS, LIGHT_SHADE, SPLAT, /* wxyz */ + CENT_SIGN, YEN_SIGN, PESETA_SIGN, STERLING_SIGN, /* {|}~ */ + A(127) +}; + +# undef A diff --git a/3rd-party/PDCurses/appveyor.yml b/3rd-party/PDCurses/appveyor.yml new file mode 100644 index 0000000..ddc41f2 --- /dev/null +++ b/3rd-party/PDCurses/appveyor.yml @@ -0,0 +1,218 @@ +version: 4.0.2.{build} + +shallow_clone: true +clone_depth: 1 + +configuration: +#- MinSizeRel // https://bugzilla.libsdl.org/show_bug.cgi?id=4233 +- Release +- Debug + +environment: + DIST_DIR: '%APPVEYOR_BUILD_FOLDER%\dist' + WATCOM: C:\Tools\watcom + + matrix: + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + TOOLCHAIN: Watcom20 + TARGET: os2 + ARCHIVE: WATCOM20_%CONFIGURATION%_OS2V2_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'Watcom WMake' + CMAKE_TOOLCHAIN_ARGS: '-DCMAKE_TOOLCHAIN_FILE=..\cmake\watcom_open_os2v2_toolchain.cmake' + CMAKE_ARGS: '-DPDC_OS2_BUILD=ON -DPDC_BUILD_SHARED=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + TOOLCHAIN: Watcom19 + TARGET: dos + ARCHIVE: WATCOM19_%CONFIGURATION%_DOS16_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'Watcom WMake' + CMAKE_TOOLCHAIN_ARGS: '-DCMAKE_TOOLCHAIN_FILE=..\cmake\watcom_open_dos16_toolchain.cmake' + CMAKE_ARGS: '-DPDC_DOS_BUILD=ON -DPDC_BUILD_SHARED=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + TOOLCHAIN: Watcom19 + TARGET: dos + ARCHIVE: WATCOM19_%CONFIGURATION%_DOS32_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'Watcom WMake' + CMAKE_TOOLCHAIN_ARGS: '-DCMAKE_TOOLCHAIN_FILE=..\cmake\watcom_open_dos32_toolchain.cmake' + CMAKE_ARGS: '-DPDC_DOS_BUILD=ON -DPDC_BUILD_SHARED=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + TOOLCHAIN: Watcom20 + TARGET: dos + ARCHIVE: WATCOM20_%CONFIGURATION%_DOS16_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'Watcom WMake' + CMAKE_TOOLCHAIN_ARGS: '-DCMAKE_TOOLCHAIN_FILE=..\cmake\watcom_open_dos16_toolchain.cmake' + CMAKE_ARGS: '-DPDC_DOS_BUILD=ON -DPDC_BUILD_SHARED=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + TOOLCHAIN: Watcom20 + TARGET: dos + ARCHIVE: WATCOM20_%CONFIGURATION%_DOS32_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'Watcom WMake' + CMAKE_TOOLCHAIN_ARGS: '-DCMAKE_TOOLCHAIN_FILE=..\cmake\watcom_open_dos32_toolchain.cmake' + CMAKE_ARGS: '-DPDC_DOS_BUILD=ON -DPDC_BUILD_SHARED=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' + ARCHITECTURE: amd64_x86 + ARCHIVE: VS2015_%CONFIGURATION%_WIDE_x86_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' + ARCHITECTURE: amd64_x86 + ARCHIVE: VS2015_%CONFIGURATION%_UTF8_x86_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' + ARCHITECTURE: amd64 + ARCHIVE: VS2015_%CONFIGURATION%_WIDE_x64_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' + ARCHITECTURE: amd64 + ARCHIVE: VS2015_%CONFIGURATION%_UTF8_x64_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' + ARCHITECTURE: amd64_arm + ARCHIVE: VS2015_%CONFIGURATION%_WIDE_ARM_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2015' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat' + ARCHITECTURE: amd64_arm + ARCHIVE: VS2015_%CONFIGURATION%_UTF8_ARM_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_arm.bat' + ARCHITECTURE: amd64_arm + ARCHIVE: VS2017_%CONFIGURATION%_WIDE_ARM_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_arm.bat' + ARCHITECTURE: amd64_arm + ARCHIVE: VS2017_%CONFIGURATION%_UTF8_ARM_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat' + ARCHITECTURE: amd64_arm64 + ARCHIVE: VS2017_%CONFIGURATION%_WIDE_ARM64_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat' + ARCHITECTURE: amd64_arm64 + ARCHIVE: VS2017_%CONFIGURATION%_UTF8_ARM64_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDC_SDL2_BUILD=OFF -DPDC_SDL2_DEPS_BUILD=OFF' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat' + ARCHITECTURE: amd64_x86 + ARCHIVE: VS2017_%CONFIGURATION%_WIDE_x86_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat' + ARCHITECTURE: amd64_x86 + ARCHIVE: VS2017_%CONFIGURATION%_UTF8_x86_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat' + ARCHITECTURE: amd64 + ARCHIVE: VS2017_%CONFIGURATION%_WIDE_x64_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=ON -DPDC_UTF8=OFF -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + + - APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017' + VCVARSALL: '%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat' + ARCHITECTURE: amd64 + ARCHIVE: VS2017_%CONFIGURATION%_UTF8_x64_%APPVEYOR_BUILD_NUMBER% + GENERATOR: 'NMake Makefiles' + CMAKE_ARGS: '-DPDC_WIDE=OFF -DPDC_UTF8=ON -DPDC_SDL2_BUILD=ON -DPDC_SDL2_DEPS_BUILD=ON' + +init: + - echo BUILD_NUMBER=%APPVEYOR_BUILD_NUMBER% + +install: + + # Open Watcom + - if "%TOOLCHAIN%"=="Watcom19" ( echo Installing Open Watcom 1.9 ) + - if "%TOOLCHAIN%"=="Watcom19" ( cd %APPVEYOR_BUILD_FOLDER% ) + - if "%TOOLCHAIN%"=="Watcom19" ( set "OPEN_WATCOM_URL=https://sourceforge.net/projects/openwatcom/files/open-watcom-1.9/open-watcom-c-win32-1.9.exe" ) + - if "%TOOLCHAIN%"=="Watcom19" ( appveyor DownloadFile "%OPEN_WATCOM_URL%" -FileName open-watcom-c-win32-1.9.exe ) + # todo - check the md5 here... + - if "%TOOLCHAIN%"=="Watcom19" ( 7z x -y open-watcom-c-win32-1.9.exe -o"%WATCOM%" > nul ) + - if "%TOOLCHAIN%"=="Watcom19" ( set "PATH=%WATCOM%\BINNT;%WATCOM%\BINW;%PATH%" ) + + - if "%TOOLCHAIN%"=="Watcom20" ( echo Installing Open Watcom 2.0 ) + - if "%TOOLCHAIN%"=="Watcom20" ( cd %APPVEYOR_BUILD_FOLDER% ) + - if "%TOOLCHAIN%"=="Watcom20" ( set "OPEN_WATCOM_URL=https://github.com/open-watcom/travis-ci-ow-builds/archive/master.zip" ) + - if "%TOOLCHAIN%"=="Watcom20" ( appveyor DownloadFile "%OPEN_WATCOM_URL%" -FileName master.zip ) + - if "%TOOLCHAIN%"=="Watcom20" ( 7z x -y master.zip -o"%WATCOM%" > nul ) + # todo - check the md5 here... + - if "%TOOLCHAIN%"=="Watcom20" ( set "WATCOM=%WATCOM%\travis-ci-ow-builds-master" ) + - if "%TOOLCHAIN%"=="Watcom20" ( set "PATH=%WATCOM%\BINNT64;%WATCOM%\BINNT;%PATH%" ) + + # DOS BAT file + - if "%TARGET%"=="dos" ( set "EDPATH=%WATCOM%\EDDAT" ) + - if "%TARGET%"=="dos" ( set "INCLUDE=%WATCOM%\H;%WATCOM%\H\NT" ) + + # OS/2 CMD file + - if "%TARGET%"=="os2" ( set "BEGINLIBPATH=%WATCOM%\BINP\DLL" ) + - if "%TARGET%"=="os2" ( set "EDPATH=%WATCOM%\EDDAT" ) + - if "%TARGET%"=="os2" ( set "INCLUDE=%WATCOM%\H;%WATCOM%\H\OS2" ) + + - cmake --version + +build: + parallel: true + +build_script: + + - if exist "%VCVARSALL%" ( call "%VCVARSALL%" %ARCHITECTURE% ) + + - if "%CONFIGURATION%"=="Debug" ( set PDCDEBUG=ON ) else ( set PDCDEBUG=OFF ) + - if "%CONFIGURATION%"=="Debug" ( set PDCDEBUG=ON ) else ( set PDCDEBUG=OFF ) + + - cd %APPVEYOR_BUILD_FOLDER% + - mkdir build + - cd build + + - cmake %CMAKE_TOOLCHAIN_ARGS% -G"%GENERATOR%" -DCMAKE_VERBOSE_MAKEFILE=TRUE + -DCMAKE_BUILD_TYPE=%CONFIGURATION% + "-DCMAKE_INSTALL_PREFIX=%DIST_DIR%\%APPVEYOR_BUILD_WORKER_IMAGE%" + -DBUILD_NUMBER=%APPVEYOR_BUILD_NUMBER% -DPDCDEBUG=%PDCDEBUG% %CMAKE_ARGS% + .. + + cmake --build . --config %CONFIGURATION% --target install + +after_build: + - cd %DIST_DIR% + - 7z a -tzip %ARCHIVE%.zip "%APPVEYOR_BUILD_WORKER_IMAGE%" + - certutil -hashfile %ARCHIVE%.zip MD5 > %ARCHIVE%.md5 + +artifacts: + - path: dist\$(ARCHIVE).zip + - path: dist\$(ARCHIVE).md5 diff --git a/3rd-party/PDCurses/cmake/README.md b/3rd-party/PDCurses/cmake/README.md new file mode 100644 index 0000000..7629a80 --- /dev/null +++ b/3rd-party/PDCurses/cmake/README.md @@ -0,0 +1,71 @@ + +CMake Options +------------- + + option(PDC_BUILD_SHARED "Build dynamic libs for pdcurses" ON) + option(PDC_UTF8 "Force to UTF8" OFF) + option(PDC_WIDE "Wide - pulls in sdl-ttf" OFF) + option(PDCDEBUG "Debug tracing" OFF) + option(PDC_CHTYPE_32 "CHTYPE_32" OFF) + option(PDC_CHTYPE_16 "CHTYPE_16" OFF) + option(PDC_DOS_BUILD "Build DOS Project" OFF) + option(PDC_SDL2_BUILD "Build SDL2 Project" ON) + option(PDC_SDL2_DEPS_BUILD "Build SDL2 and dependencies" ON) + + + +To override the default option value, use the "-DBUILD_SDL2=ON" scheme. If you set it once, CMake caches the value. + +When using pre-built SDL2 bits, simply set these two variables when invoking cmake the first time. + + -DSDL2_INCLUDE_DIR=/my/path/to/sdl2/include/SDL2 + -DSDL2_LIBRARY_DIR=/my/path/to/sdl2/lib/folder + + +Appveyor +-------- + +Upon cmake branch check-ins, Appveyor will build the following variants: +wide/utf8 - Release/Debug, Visual Studio 2015 - amd64_x86/amd64/amd64_arm +wide/utf8 - Release/Debug, Visual Studio 2017 - amd64_x86/amd64/amd64_arm/amd64_arm64 + +^There is currently a SDL2 bug preventing MinSizeRel builds: +https://bugzilla.libsdl.org/show_bug.cgi?id=4233 + + +Native Windows Building +----------------------- + +Win32 (pdcurses.sln) + + mkdir build32 & pushd build32 + cmake -G"Visual Studio 15" -DPDC_WIDE=ON -DCMAKE_INSTALL_PREFIX=c:\tmp\pdcurses\Win32 -DCMAKE_BUILD_TYPE=Debug -DPDCDEBUG=ON .. + popd + cmake --build build32 --config Debug --target install + +Win64 (pdcurses.sln) + + mkdir build64 & pushd build64 + cmake -G"Visual Studio 15 Win64" -DPDC_WIDE=ON -DCMAKE_INSTALL_PREFIX=c:\tmp\pdcurses\Win64 -DCMAKE_BUILD_TYPE=Debug -DPDCDEBUG=ON .. + popd + cmake --build build64 --config Debug --target install + + +Cygwin +------ + + mkdir build && pushd build + cmake .. -G"Unix Makefiles" -DPDC_SDL2_BUILD=OFF -DCMAKE_INSTALL_PREFIX=/cygdrive/c/tmp/pdcurses/Cyg64 -DCMAKE_BUILD_TYPE=Debug -DPDCDEBUG=ON -DWINDOWS_KIT_LIBRARY_DIR=/cygdrive/c/Program\ Files\ \(x86\)/Windows\ Kits/10/Lib/10.0.14393.0/um/x64 .. + popd + cmake --build build --config Debug --target install + +Note: The demo apps will all build, only version.exe works. All other apps print "Redirection is not supported." + + +Linux Building +-------------- + +SDL2 (Currently the only project supported with CMake) + + cmake .. -DPDC_WIDE=ON -DCMAKE_INSTALL_PREFIX=/home/joel/pdcurses/out -DCMAKE_BUILD_TYPE=Debug -GNinja + autoninja install diff --git a/3rd-party/PDCurses/cmake/build_dependencies.cmake b/3rd-party/PDCurses/cmake/build_dependencies.cmake new file mode 100644 index 0000000..c07b610 --- /dev/null +++ b/3rd-party/PDCurses/cmake/build_dependencies.cmake @@ -0,0 +1,178 @@ + +IF (PDC_SDL2_DEPS_BUILD) + + INCLUDE(ExternalProject) + + IF(NOT WIN32) + set(FLAGS_FOR_DYNAMIC_LINK -fPIC) + ENDIF() + + SET(SDL2_RELEASE 2.0.8) + ExternalProject_Add(sdl2_ext + URL https://www.libsdl.org/release/SDL2-${SDL2_RELEASE}.zip + URL_HASH "SHA256=e6a7c71154c3001e318ba7ed4b98582de72ff970aca05abc9f45f7cbdc9088cb" + UPDATE_COMMAND "" + DOWNLOAD_DIR ${CMAKE_BINARY_DIR} + SOURCE_DIR ${CMAKE_BINARY_DIR}/SDL2-${SDL2_RELEASE} + BUILD_IN_SOURCE 0 + CMAKE_ARGS + ${SDL_CMAKE_BUILD_OPTS} + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_C_FLAGS=${FLAGS_FOR_DYNAMIC_LINK} ${EXTERNAL_C_FLAGS} + ) + + MESSAGE(STATUS "SDL2 Installing to: ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}") + SET(SDL2_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/include/SDL2) + SET(SDL2_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/lib) + IF("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + IF(WIN32) + set(SDL2_LIBRARIES "SDL2maind.lib;SDL2d.lib") + set(SDL2_LIBRARY "SDL2d.lib") + ELSEIF(APPLE) + set(SDL2_LIBRARIES "SDL2maind;SDL2d") + set(SDL2_LIBRARY "SDL2d") + ELSE() + set(SDL2_LIBRARIES "SDL2maind;SDL2-2.0d") + set(SDL2_LIBRARY "SDL2-2.0d") + ENDIF() + ELSE() + IF(WIN32) + set(SDL2_LIBRARIES "SDL2main.lib;SDL2.lib") + set(SDL2_LIBRARY "SDL2.lib") + ELSEIF(APPLE) + set(SDL2_LIBRARIES "SDL2main;SDL2") + set(SDL2_LIBRARY "SDL2") + ELSE() + set(SDL2_LIBRARIES "SDL2main;SDL2-2.0") + set(SDL2_LIBRARY "SDL2-2.0") + ENDIF() + ENDIF() + + IF (PDC_WIDE) + + ExternalProject_Add(zlib_ext + GIT_REPOSITORY "https://github.com/madler/zlib.git" + GIT_TAG "v1.2.11" + UPDATE_COMMAND "" + DOWNLOAD_DIR ${CMAKE_BINARY_DIR} + SOURCE_DIR ${CMAKE_BINARY_DIR}/zlib + BUILD_IN_SOURCE 1 + CMAKE_ARGS + ${ZLIB_CMAKE_BUILD_OPTS} + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE} + -DCMAKE_C_FLAGS=${EXTERNAL_C_FLAGS} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DBUILD_SHARED_LIBS=${BUILD_SHARED} + -DAMD64=${ZLIB_AMD64} + -DASM686=${ZLIB_ASM686} + ) + + MESSAGE(STATUS "zlib Installing to: ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}") + SET(ZLIB_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/include) + SET(ZLIB_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/lib) + IF("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + IF(WIN32) + set(ZLIB_LIBRARY zlibd.lib) + ELSE() + set(ZLIB_LIBRARY z) + ENDIF() + ELSE() + IF(WIN32) + set(ZLIB_LIBRARY zlib.lib) + ELSE() + set(ZLIB_LIBRARY z) + ENDIF() + ENDIF() + + ExternalProject_Add(freetype2_ext + GIT_REPOSITORY "https://git.savannah.gnu.org/git/freetype/freetype2.git" + GIT_TAG "VER-2-8-1" + UPDATE_COMMAND "" + DOWNLOAD_DIR ${CMAKE_BINARY_DIR} + SOURCE_DIR ${CMAKE_BINARY_DIR}/freetype2 + BUILD_IN_SOURCE 0 + CMAKE_ARGS + ${FT2_CMAKE_BUILD_OPTS} + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE} + -DCMAKE_C_FLAGS=${FLAGS_FOR_DYNAMIC_LINK} ${EXTERNAL_C_FLAGS} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DWITH_HarfBuzz=OFF + -DWITH_BZip2=OFF + -DWITH_PNG=OFF + -DWITH_ZLIB=ON + -DZLIB_FOUND=ON + -DZLIB_LIBRARY=${ZLIB_LIBRARY} + -DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR} + -DZLIB_LIBRARY_DIR=${ZLIB_LIBRARY_DIR} + ) + + ADD_DEPENDENCIES(freetype2_ext zlib_ext) + MESSAGE(STATUS "freetype2 Installing to: ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}") + SET(FT2_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/include/freetype2) + SET(FT2_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/lib) + IF("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + IF(WIN32) + set(FT2_LIBRARY freetyped.lib) + ELSE() + set(FT2_LIBRARY freetyped) + ENDIF() + ELSE() + IF(WIN32) + set(FT2_LIBRARY freetype.lib) + ELSE() + set(FT2_LIBRARY freetype) + ENDIF() + ENDIF() + + SET(SDL2_TTF_RELEASE 2.0.14) + + ExternalProject_Add(sdl2_ttf_ext + URL https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-${SDL2_TTF_RELEASE}.zip + URL_HASH "SHA256=ad7a7d2562c19ad2b71fa4ab2e76f9f52b3ee98096c0a7d7efbafc2617073c27" + PATCH_COMMAND cmake -E copy + ${CMAKE_SOURCE_DIR}/cmake/sdl2_ttf/CMakeLists.txt + ${CMAKE_BINARY_DIR}/sdl2_ttf/CMakeLists.txt + UPDATE_COMMAND "" + DOWNLOAD_DIR ${CMAKE_BINARY_DIR} + SOURCE_DIR ${CMAKE_BINARY_DIR}/sdl2_ttf + BUILD_IN_SOURCE 0 + CMAKE_ARGS + ${SDL2_TTF_CMAKE_BUILD_OPTS} + -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE} + -DCMAKE_C_FLAGS=${EXTERNAL_C_FLAGS} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DSDL2_TTF_RELEASE=${SDL2_TTF_RELEASE} + -DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIR} + -DZLIB_LIBRARY_DIR=${ZLIB_LIB_DIR} + -DZLIB_LIBRARY=${ZLIB_LIBRARY} + -DFT2_INCLUDE_DIR=${FT2_INCLUDE_DIR} + -DFT2_LIBRARY_DIR=${FT2_LIBRARY_DIR} + -DFT2_LIBRARY=${FT2_LIBRARY} + -DSDL2_INCLUDE_DIR=${SDL2_INCLUDE_DIR} + -DSDL2_LIBRARY_DIR=${SDL2_LIBRARY_DIR} + -DSDL2_LIBRARY=${SDL2_LIBRARY} + -DSDL2_LIBRARIES=${SDL2_LIBRARIES} + ) + + ADD_DEPENDENCIES(sdl2_ttf_ext sdl2_ext freetype2_ext) + MESSAGE(STATUS "SDL2_ttf Installing to: ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}") + SET(SDL2_TTF_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/include/SDL2_ttf) + SET(SDL2_TTF_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}/lib) + IF("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + IF(WIN32) + set(SDL2_TTF_LIBRARY "SDL2_ttfd.lib") + ELSE() + set(SDL2_TTF_LIBRARY "SDL2_ttf") + ENDIF() + ELSE() + IF(WIN32) + set(SDL2_TTF_LIBRARY "SDL2_ttf.lib") + ELSE() + set(SDL2_TTF_LIBRARY "SDL2_ttf") + ENDIF() + ENDIF() + + ENDIF (PDC_WIDE) + +ENDIF() diff --git a/3rd-party/PDCurses/cmake/build_options.cmake b/3rd-party/PDCurses/cmake/build_options.cmake new file mode 100644 index 0000000..866b95b --- /dev/null +++ b/3rd-party/PDCurses/cmake/build_options.cmake @@ -0,0 +1,25 @@ + +option(PDC_BUILD_SHARED "Build dynamic libs for pdcurses" ON) +option(PDC_UTF8 "Force to UTF8" OFF) +option(PDC_WIDE "Wide - pulls in sdl-ttf" OFF) +option(PDCDEBUG "Debug tracing" OFF) +option(PDC_CHTYPE_32 "CHTYPE_32" OFF) +option(PDC_CHTYPE_16 "CHTYPE_16" OFF) +option(PDC_OS2_BUILD "Build OS/2 Project" OFF) +option(PDC_DOS_BUILD "Build DOS Project" OFF) +option(PDC_SDL2_BUILD "Build SDL2 Project" ON) +option(PDC_SDL2_DEPS_BUILD "Build SDL2 and dependencies" ON) + +message(STATUS "PDC_BUILD_SHARED ....... ${PDC_BUILD_SHARED}") +message(STATUS "PDC_UTF8 ............... ${PDC_UTF8}") +message(STATUS "PDC_WIDE ............... ${PDC_WIDE}") +message(STATUS "PDCDEBUG ............... ${PDCDEBUG}") +message(STATUS "PDC_CHTYPE_32 .......... ${PDC_CHTYPE_32}") +message(STATUS "PDC_CHTYPE_16 .......... ${PDC_CHTYPE_16}") +message(STATUS "PDC_OS/2_BUILD ......... ${PDC_OS2_BUILD}") +message(STATUS "PDC_DOS_BUILD .......... ${PDC_DOS_BUILD}") +message(STATUS "PDC_SDL2_BUILD ......... ${PDC_SDL2_BUILD}") +message(STATUS "PDC_SDL2_DEPS_BUILD .... ${PDC_SDL2_DEPS_BUILD}") + +# normalize a windows path +file(TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX) diff --git a/3rd-party/PDCurses/cmake/dll_version.cmake b/3rd-party/PDCurses/cmake/dll_version.cmake new file mode 100644 index 0000000..84cc7fe --- /dev/null +++ b/3rd-party/PDCurses/cmake/dll_version.cmake @@ -0,0 +1,26 @@ +set(PRODUCT_FILE_DESCRIPTION "Public Domain Curses ") +set(PRODUCT_INTERNAL_NAME "PDCurses - ${PROJECT_NAME}") +set(PRODUCT_COMPANY_COPYRIGHT "Public Domain") +set(PRODUCT_NAME "Public Domain Curses Library") +set(PRODUCT_ORIGINAL_FILENAME "PDCURSES.DLL") +set(PRODUCT_ICON "pdcurses.ico") + +set(PRODUCT_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(PRODUCT_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(PRODUCT_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(PRODUCT_VERSION_BUILD ${PROJECT_VERSION_TWEAK}) + +set(FILE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(FILE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(FILE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(FILE_VERSION_BUILD ${PROJECT_VERSION_TWEAK}) + +if(MSVC) + set(TOOL_NAME MS) +endif() + +set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_FILE_DESCRIPTION} ${TOOL_NAME} ${TARGET_ARCH}") + +configure_file ( ${CMAKE_SOURCE_DIR}/cmake/version.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.rc @ONLY ) +configure_file ( ${CMAKE_SOURCE_DIR}/cmake/resource.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/resource.h @ONLY ) +configure_file ( ${CMAKE_SOURCE_DIR}/wincon/pdcurses.ico ${CMAKE_CURRENT_BINARY_DIR}/pdcurses.ico COPYONLY ) diff --git a/3rd-party/PDCurses/cmake/gen_config_header.cmake b/3rd-party/PDCurses/cmake/gen_config_header.cmake new file mode 100644 index 0000000..a37a1d8 --- /dev/null +++ b/3rd-party/PDCurses/cmake/gen_config_header.cmake @@ -0,0 +1,43 @@ +INCLUDE(CheckFunctionExists) + +CHECK_FUNCTION_EXISTS(vsnprintf PDC_HAVE_VSNPRINTF) +CHECK_FUNCTION_EXISTS(vsscanf PDC_HAVE_VSSCANF) + +IF(PDC_HAVE_VSNPRINTF) + ADD_DEFINITIONS(-DHAVE_VSNPRINTF) +ENDIF(PDC_HAVE_VSNPRINTF) +IF(PDC_HAVE_VSSCANF) + ADD_DEFINITIONS(-DHAVE_VSSCANF) +ENDIF(PDC_HAVE_VSSCANF) + +if (PDC_BUILD_SHARED) + if(MSVC) + add_definitions(-DPDC_DLL_BUILD) + endif() +endif (PDC_BUILD_SHARED) +IF (PDC_WIDE) + ADD_DEFINITIONS(-DPDC_WIDE) +ENDIF(PDC_WIDE) +IF (PDC_UTF8) + ADD_DEFINITIONS(-DPDC_FORCE_UTF8) +ENDIF (PDC_UTF8) +IF (PDC_CHTYPE_16) + ADD_DEFINITIONS(-DCHTYPE_16) +ENDIF (PDC_CHTYPE_16) +IF (PDC_CHTYPE_32) + ADD_DEFINITIONS(-DCHTYPE_32) +ENDIF (PDC_CHTYPE_32) +IF(PDCDEBUG) + ADD_DEFINITIONS(-DPDCDEBUG) +ENDIF(PDCDEBUG) + +IF ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + ADD_DEFINITIONS(-D_DEBUG) +ENDIF () + +################################# +# Target Arch # +################################# +include (target_arch) +get_target_arch(TARGET_ARCH) +message(STATUS "Target ................. ${TARGET_ARCH}") diff --git a/3rd-party/PDCurses/cmake/get_version.cmake b/3rd-party/PDCurses/cmake/get_version.cmake new file mode 100644 index 0000000..80b9edd --- /dev/null +++ b/3rd-party/PDCurses/cmake/get_version.cmake @@ -0,0 +1,17 @@ + +file(READ ${CMAKE_SOURCE_DIR}/curses.h _CURSES_H_CONTENTS) + +string(REGEX MATCH "#define PDC_VER_MAJOR ([a-zA-Z0-9_]+)" PDC_VER_MAJOR "${_CURSES_H_CONTENTS}") +string(REPLACE "#define PDC_VER_MAJOR " "" PDC_VER_MAJOR "${PDC_VER_MAJOR}") + +string(REGEX MATCH "#define PDC_VER_MINOR ([a-zA-Z0-9_]+)" PDC_VER_MINOR "${_CURSES_H_CONTENTS}") +string(REPLACE "#define PDC_VER_MINOR " "" PDC_VER_MINOR "${PDC_VER_MINOR}") + +string(REGEX MATCH "#define PDC_VER_CHANGE ([a-zA-Z0-9_]+)" PDC_VER_CHANGE "${_CURSES_H_CONTENTS}") +string(REPLACE "#define PDC_VER_CHANGE " "" PDC_VER_CHANGE "${PDC_VER_CHANGE}") + +if(BUILD_NUMBER) + set(CURSES_VERSION ${PDC_VER_MAJOR}.${PDC_VER_MINOR}.${PDC_VER_CHANGE}.${BUILD_NUMBER}) +else() + set(CURSES_VERSION ${PDC_VER_MAJOR}.${PDC_VER_MINOR}.${PDC_VER_CHANGE}.0) +endif() diff --git a/3rd-party/PDCurses/cmake/make_uninstall.cmake b/3rd-party/PDCurses/cmake/make_uninstall.cmake new file mode 100644 index 0000000..451614e --- /dev/null +++ b/3rd-party/PDCurses/cmake/make_uninstall.cmake @@ -0,0 +1,19 @@ + +if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: ${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt") +endif() + +file(READ "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt" files) +string(REGEX REPLACE "[\r\n]" ";" files "${files}") + +foreach(file ${files}) + message(STATUS "Uninstalling ${file}") + if(EXISTS "${file}") + file(REMOVE ${file}) + if (EXISTS "${file}") + message(FATAL_ERROR "Problem when removing ${file}, please check your permissions") + endif() + else() + message(STATUS "File ${file} does not exist.") + endif() +endforeach() diff --git a/3rd-party/PDCurses/cmake/project_common.cmake b/3rd-party/PDCurses/cmake/project_common.cmake new file mode 100644 index 0000000..1175c7d --- /dev/null +++ b/3rd-party/PDCurses/cmake/project_common.cmake @@ -0,0 +1,121 @@ +message(STATUS "**** ${PROJECT_NAME} ****") + +set(PDCURSES_SRCDIR ${CMAKE_SOURCE_DIR}) +set(PDCURSES_DIST ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}) + +set(osdir ${PDCURSES_SRCDIR}/${PROJECT_NAME}) +set(demodir ${PDCURSES_SRCDIR}/demos) + +set(pdc_src_files + ${osdir}/pdcclip.c + ${osdir}/pdcdisp.c + ${osdir}/pdcgetsc.c + ${osdir}/pdckbd.c + ${osdir}/pdcscrn.c + ${osdir}/pdcsetsc.c + ${osdir}/pdcutil.c +) + +include_directories (..) +include_directories (${osdir}) + + +if(WIN32 AND NOT WATCOM) + include(dll_version) + list(APPEND pdc_src_files ${CMAKE_CURRENT_BINARY_DIR}/version.rc) + + add_definitions(-D_WIN32 -D_CRT_SECURE_NO_WARNINGS) + + if(${TARGET_ARCH} STREQUAL "ARM" OR ${TARGET_ARCH} STREQUAL "ARM64") + add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1) + endif() + + set(EXTRA_LIBS gdi32.lib winspool.lib shell32.lib ole32.lib comdlg32.lib advapi32.lib) + set(SDL2_DEP_LIBRARIES version.lib winmm.lib imm32.lib) +elseif(APPLE) + set(EXTRA_LIBS "") + set(SDL2_DEP_LIBRARIES "dl") +else() + set(EXTRA_LIBS "") + set(SDL2_DEP_LIBRARIES "dl") +endif() + +if (APPLE) + find_library(COREVIDEO CoreVideo) + list(APPEND EXTRA_LIBS ${COREVIDEO}) + + find_library(COCOA_LIBRARY Cocoa) + list(APPEND EXTRA_LIBS ${COCOA_LIBRARY}) + + find_library(IOKIT IOKit) + list(APPEND EXTRA_LIBS ${IOKIT}) + + find_library(FORCEFEEDBACK ForceFeedback) + list(APPEND EXTRA_LIBS ${FORCEFEEDBACK}) + + find_library(CARBON_LIBRARY Carbon) + list(APPEND EXTRA_LIBS ${CARBON_LIBRARY}) + + find_library(COREAUDIO CoreAudio) + list(APPEND EXTRA_LIBS ${COREAUDIO}) + + find_library(AUDIOTOOLBOX AudioToolbox) + list(APPEND EXTRA_LIBS ${AUDIOTOOLBOX}) + + include(CheckLibraryExists) + check_library_exists(iconv iconv_open "" HAVE_LIBICONV) + if(HAVE_LIBICONV) + list(APPEND EXTRA_LIBS iconv) + endif() +endif() + +if(PDC_BUILD_SHARED) + set(PDCURSE_PROJ ${PROJECT_NAME}_pdcurses) + add_library(${PDCURSE_PROJ} SHARED ${pdc_src_files} ${pdcurses_src_files}) + + if(APPLE) + set_target_properties(${PDCURSE_PROJ} PROPERTIES MACOSX_RPATH 1) + endif() + + if(${PROJECT_NAME} STREQUAL "sdl2") + if(PDC_WIDE) + target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} + ${SDL2_LIBRARIES} ${SDL2_TTF_LIBRARY} ${FT2_LIBRARY} ${ZLIB_LIBRARY} + ${SDL2_DEP_LIBRARIES}) + else() + target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} + ${SDL2_LIBRARIES} ${SDL2_DEP_LIBRARIES}) + endif() + else() + target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS}) + endif() + + install(TARGETS ${PDCURSE_PROJ} + ARCHIVE DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME} + LIBRARY DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME} + RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications) + set_target_properties(${PDCURSE_PROJ} PROPERTIES OUTPUT_NAME "pdcurses") +else() + set(PDCURSE_PROJ ${PROJECT_NAME}_pdcursesstatic) + add_library (${PDCURSE_PROJ} STATIC ${pdc_src_files} ${pdcurses_src_files}) + install (TARGETS ${PDCURSE_PROJ} ARCHIVE DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME} COMPONENT applications) + set_target_properties(${PDCURSE_PROJ} PROPERTIES OUTPUT_NAME "pdcursesstatic") +endif() + +macro (demo_app dir targ) + set(bin_name "${PROJECT_NAME}_${targ}") + if(${targ} STREQUAL "tuidemo") + set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tuidemo.c ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tui.c) + else() + set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${targ}.c) + endif() + + add_executable(${bin_name} ${src_files}) + + target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS}) + + add_dependencies(${bin_name} ${PDCURSE_PROJ}) + set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ}) + + install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications) +endmacro () diff --git a/3rd-party/PDCurses/cmake/resource.in.cmake b/3rd-party/PDCurses/cmake/resource.in.cmake new file mode 100644 index 0000000..78e2f25 --- /dev/null +++ b/3rd-party/PDCurses/cmake/resource.in.cmake @@ -0,0 +1,52 @@ +//{{NO_DEPENDENCIES}} +// Used by version.rc +// +#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ +#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@ +#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@ +#define PRODUCT_VERSION_BUILD @PRODUCT_VERSION_BUILD@ + +#define FILE_VERSION_MAJOR @FILE_VERSION_MAJOR@ +#define FILE_VERSION_MINOR @FILE_VERSION_MINOR@ +#define FILE_VERSION_PATCH @FILE_VERSION_PATCH@ +#define FILE_VERSION_BUILD @FILE_VERSION_BUILD@ + +#ifndef __TO_STRING +#define __TO_STRING_IMPL(x) #x +#define __TO_STRING(x) __TO_STRING_IMPL(x) +#endif + +#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR) +#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH) +#define PRODUCT_VERSION_FULL_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(PRODUCT_VERSION_BUILD) +#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,PRODUCT_VERSION_BUILD +#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_FULL_STR "\0" + +#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR) +#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH) +#define FILE_VERSION_FULL_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "." __TO_STRING(FILE_VERSION_BUILD) +#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,FILE_VERSION_BUILD +#define FILE_VERSION_RESOURCE_STR FILE_VERSION_FULL_STR "\0" + + +#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0" +#define PRODUCT_INTERNAL_NAME "@PRODUCT_INTERNAL_NAME@\0" +#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0" +#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0" +#define PRODUCT_NAME "@PRODUCT_NAME@\0" +#define PRODUCT_ICON "@PRODUCT_ICON@" + +#define VS_VERSION_INFO 1 +#define IDC_STATIC -1 + + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/3rd-party/PDCurses/cmake/sdl2_ttf/CMakeLists.txt b/3rd-party/PDCurses/cmake/sdl2_ttf/CMakeLists.txt new file mode 100644 index 0000000..e2fca19 --- /dev/null +++ b/3rd-party/PDCurses/cmake/sdl2_ttf/CMakeLists.txt @@ -0,0 +1,83 @@ +CMAKE_MINIMUM_REQUIRED (VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to MinSizeRel.") +endif() + +PROJECT (sdl2_ttf VERSION ${SDL2_TTF_RELEASE} LANGUAGES C) + +if(MSVC) + SET(CMAKE_DEBUG_POSTFIX d) +endif() + +INCLUDE_DIRECTORIES( + ${ZLIB_INCLUDE_DIR} + ${FT2_INCLUDE_DIR} + ${SDL2_INCLUDE_DIR}) + +LINK_DIRECTORIES( + ${ZLIB_LIBRARY_DIR} + ${FT2_LIBRARY_DIR} + ${SDL2_LIBRARY_DIR}) + + +INSTALL (FILES SDL_ttf.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include/SDL2_ttf) + +set(SDL2_ttf_source_files SDL_ttf.c) + +IF(WIN32) + LIST(INSERT SDL2_ttf_source_files 0 Version.rc) +ENDIF() + +if (APPLE) + find_library(COREVIDEO CoreVideo) + list(APPEND EXTRA_LIBS ${COREVIDEO}) + + find_library(COCOA_LIBRARY Cocoa) + list(APPEND EXTRA_LIBS ${COCOA_LIBRARY}) + + find_library(IOKIT IOKit) + list(APPEND EXTRA_LIBS ${IOKIT}) + + find_library(FORCEFEEDBACK ForceFeedback) + list(APPEND EXTRA_LIBS ${FORCEFEEDBACK}) + + find_library(CARBON_LIBRARY Carbon) + list(APPEND EXTRA_LIBS ${CARBON_LIBRARY}) + + find_library(COREAUDIO CoreAudio) + list(APPEND EXTRA_LIBS ${COREAUDIO}) + + find_library(AUDIOTOOLBOX AudioToolbox) + list(APPEND EXTRA_LIBS ${AUDIOTOOLBOX}) + + include(CheckLibraryExists) + check_library_exists(iconv iconv_open "" HAVE_LIBICONV) + if(HAVE_LIBICONV) + list(APPEND EXTRA_LIBS iconv) + endif() +endif() + +ADD_LIBRARY(SDL2_ttf-static STATIC ${SDL2_ttf_source_files} SDL_ttf.h) +INSTALL (TARGETS SDL2_ttf-static + ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib + COMPONENT libraries) + +ADD_LIBRARY(SDL2_ttf SHARED ${SDL2_ttf_source_files} SDL_ttf.h) +TARGET_LINK_LIBRARIES (SDL2_ttf ${SDL2_LIBRARY} ${FT2_LIBRARY} ${ZLIB_LIBRARY} ${EXTRA_LIBS}) +INSTALL (TARGETS SDL2_ttf + ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib + RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib + COMPONENT libraries) + +ADD_EXECUTABLE (showfont ${CMAKE_SOURCE_DIR}/showfont.c) +TARGET_LINK_LIBRARIES (showfont SDL2_ttf ${SDL2_LIBRARIES} ${FT2_LIBRARY} ${ZLIB_LIBRARY} ${EXTRA_LIBS}) +INSTALL (TARGETS showfont RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin COMPONENT applications) + +ADD_EXECUTABLE (glfont ${CMAKE_SOURCE_DIR}/glfont.c) +TARGET_LINK_LIBRARIES (glfont SDL2_ttf ${SDL2_LIBRARIES} ${FT2_LIBRARY} ${ZLIB_LIBRARY} ${EXTRA_LIBS}) +INSTALL (TARGETS glfont RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin COMPONENT applications) + +set(CPACK_COMPONENTS_ALL libraries applications) diff --git a/3rd-party/PDCurses/cmake/target_arch.cmake b/3rd-party/PDCurses/cmake/target_arch.cmake new file mode 100644 index 0000000..bd5ee68 --- /dev/null +++ b/3rd-party/PDCurses/cmake/target_arch.cmake @@ -0,0 +1,36 @@ + +set(TARGET_ARCH_DETECT_CODE " + + #if defined(_M_ARM) || defined(__arm__) + #error cmake_arch ARM + #elif defined(_M_ARM64) || defined(__aarch64__) + #error cmake_arch ARM64 + #elif defined(_M_AMD64) || defined(__x86_64__) + #error cmake_arch x86_64 + #elif defined(_M_X64) + #error cmake_arch x64 + #elif defined(_M_IX86) || defined(__i386__) + #error cmake_arch x86 + #else + #error cmake_arch unknown + #endif +") + +function(get_target_arch out) + + file(WRITE + "${CMAKE_BINARY_DIR}/target_arch_detect.c" + "${TARGET_ARCH_DETECT_CODE}") + + try_run( + run_result_unused compile_result_unused + "${CMAKE_BINARY_DIR}" "${CMAKE_BINARY_DIR}/target_arch_detect.c" + COMPILE_OUTPUT_VARIABLE TARGET_ARCH) + + # parse compiler output + string(REGEX MATCH "cmake_arch ([a-zA-Z0-9_]+)" TARGET_ARCH "${TARGET_ARCH}") + string(REPLACE "cmake_arch " "" TARGET_ARCH "${TARGET_ARCH}") + + set(${out} "${TARGET_ARCH}" PARENT_SCOPE) + +endfunction() diff --git a/3rd-party/PDCurses/cmake/version.in.cmake b/3rd-party/PDCurses/cmake/version.in.cmake new file mode 100644 index 0000000..7134131 --- /dev/null +++ b/3rd-party/PDCurses/cmake/version.in.cmake @@ -0,0 +1,73 @@ +// Microsoft Visual C++ generated resource script. +// +#include +#include "resource.h" +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION FILE_VERSION_RESOURCE + PRODUCTVERSION PRODUCT_VERSION_RESOURCE + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x0L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040004b0" + BEGIN + VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION + VALUE "FileVersion", FILE_VERSION_RESOURCE_STR + VALUE "InternalName", PRODUCT_INTERNAL_NAME + VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT + VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME + VALUE "ProductName", PRODUCT_NAME + VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x400, 1200, 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +1 ICON PRODUCT_ICON + + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/3rd-party/PDCurses/cmake/watcom_open_dos16_toolchain.cmake b/3rd-party/PDCurses/cmake/watcom_open_dos16_toolchain.cmake new file mode 100644 index 0000000..50f5502 --- /dev/null +++ b/3rd-party/PDCurses/cmake/watcom_open_dos16_toolchain.cmake @@ -0,0 +1,96 @@ +# This module is shared by multiple languages; use include blocker. +if(__WINDOWS_OPENWATCOM) + return() +endif() +set(__WINDOWS_OPENWATCOM 1) + +set(CMAKE_LIBRARY_PATH_FLAG "libpath ") +set(CMAKE_LINK_LIBRARY_FLAG "library ") +set(CMAKE_LINK_LIBRARY_FILE_FLAG "library") + +if(CMAKE_VERBOSE_MAKEFILE) + set(CMAKE_WCL_QUIET) + set(CMAKE_WLINK_QUIET) + set(CMAKE_LIB_QUIET) +else() + set(CMAKE_WCL_QUIET "-zq") + set(CMAKE_WLINK_QUIET "op q") + set(CMAKE_LIB_QUIET "-q") +endif() + +string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ") + +set(CMAKE_C_COMPILE_OPTIONS_DLL "") +set(CMAKE_SHARED_LIBRARY_C_FLAGS "") + +message(STATUS "Configured for 16-bit DOS") +set(WATCOM_DOS16 TRUE) +set(WATCOM_DOS32 FALSE) +set(CMAKE_C_COMPILER "wcc") +set(SYSTEM_NAME dos) + +set(CMAKE_ASM_COMPILER "wasm") + +set(CMAKE_BUILD_TYPE_INIT Debug) + +string(APPEND CMAKE_C_FLAGS_INIT " -bt=${SYSTEM_NAME}") + +foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE) + set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1) +endforeach() + +set(CMAKE_C_CREATE_IMPORT_LIBRARY + "wlib -q -n -b +") + +set(CMAKE_C_LINK_EXECUTABLE + "wlink ${CMAKE_START_TEMP_FILE} ${CMAKE_WLINK_QUIET} system ${SYSTEM_NAME} name file {} ${CMAKE_END_TEMP_FILE}") + +# compile a C file into an object file +set(CMAKE_C_COMPILE_OBJECT + " ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ -fo=\"\" \"\"${CMAKE_END_TEMP_FILE}") + +# preprocess a C source file +set(CMAKE_C_CREATE_PREPROCESSED_SOURCE + " ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ -fo=\"\" -pl \"\"${CMAKE_END_TEMP_FILE}") + +string(REPLACE " option implib=" "" + CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_LIBRARY}") + +# create a C shared library +set(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_CXX_CREATE_SHARED_LIBRARY}) + +# create a C shared module +set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_MODULE}) + +# create a C static library +set(CMAKE_C_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -c -n -b ") + +if(NOT _CMAKE_WATCOM_VERSION) + set(_CMAKE_WATCOM_VERSION 1) + if(CMAKE_C_COMPILER_VERSION) + set(_compiler_version ${CMAKE_C_COMPILER_VERSION}) + set(_compiler_id ${CMAKE_C_COMPILER_ID}) + endif() + set(WATCOM16) + set(WATCOM17) + set(WATCOM18) + set(WATCOM19) + set(WATCOM20) + if("${_compiler_id}" STREQUAL "OpenWatcom") + if("${_compiler_version}" VERSION_LESS 1.7) + set(WATCOM16 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.7) + set(WATCOM17 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.8) + set(WATCOM18 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.9) + set(WATCOM19 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 2.0) + set(WATCOM20 1) + endif() + endif() +endif() diff --git a/3rd-party/PDCurses/cmake/watcom_open_dos32_toolchain.cmake b/3rd-party/PDCurses/cmake/watcom_open_dos32_toolchain.cmake new file mode 100644 index 0000000..644a8a7 --- /dev/null +++ b/3rd-party/PDCurses/cmake/watcom_open_dos32_toolchain.cmake @@ -0,0 +1,106 @@ +# This module is shared by multiple languages; use include blocker. +if(__WINDOWS_OPENWATCOM) + return() +endif() +set(__WINDOWS_OPENWATCOM 1) + +set(CMAKE_LIBRARY_PATH_FLAG "libpath ") +set(CMAKE_LINK_LIBRARY_FLAG "library ") +set(CMAKE_LINK_LIBRARY_FILE_FLAG "library") + +if(CMAKE_VERBOSE_MAKEFILE) + set(CMAKE_WCL_QUIET) + set(CMAKE_WLINK_QUIET) + set(CMAKE_LIB_QUIET) +else() + set(CMAKE_WCL_QUIET "-zq") + set(CMAKE_WLINK_QUIET "op q") + set(CMAKE_LIB_QUIET "-q") +endif() + +string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ") + +set(CMAKE_C_COMPILE_OPTIONS_DLL "") +set(CMAKE_SHARED_LIBRARY_C_FLAGS "") + +message(STATUS "Configured for 32-bit DOS") +set(WATCOM_DOS16 FALSE) +set(WATCOM_DOS32 TRUE) +set(CMAKE_C_COMPILER "wcc386") +set(SYSTEM_NAME dos4g) + +# detect folder, add lib386 directory +execute_process( + COMMAND where ${CMAKE_C_COMPILER} + OUTPUT_VARIABLE COMPILER_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE +) +get_filename_component(COMPILER_DIR ${COMPILER_PATH} PATH) +get_filename_component(WATCOM_TOOLCHAIN_DIR "${COMPILER_DIR}/.." ABSOLUTE) +string(APPEND LINK_LIBRARIES_PATH "${WATCOM_TOOLCHAIN_DIR}/lib386;${WATCOM_TOOLCHAIN_DIR}/lib386/dos") + +set(CMAKE_ASM_COMPILER "wasm") + +set(CMAKE_BUILD_TYPE_INIT Debug) + +string(APPEND CMAKE_C_FLAGS_INIT " -bt=${SYSTEM_NAME}") + +foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE) + set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1) +endforeach() + +set(CMAKE_C_CREATE_IMPORT_LIBRARY + "wlib -q -n -b +") + +set(CMAKE_C_LINK_EXECUTABLE + "wlink ${CMAKE_START_TEMP_FILE} ${CMAKE_WLINK_QUIET} system ${SYSTEM_NAME} name file {} ${CMAKE_END_TEMP_FILE}") + +# compile a C file into an object file +set(CMAKE_C_COMPILE_OBJECT + " ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ -fo=\"\" \"\"${CMAKE_END_TEMP_FILE}") + +# preprocess a C source file +set(CMAKE_C_CREATE_PREPROCESSED_SOURCE + " ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ -fo=\"\" -pl \"\"${CMAKE_END_TEMP_FILE}") + +string(REPLACE " option implib=" "" + CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_LIBRARY}") + +# create a C shared library +set(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_CXX_CREATE_SHARED_LIBRARY}) + +# create a C shared module +set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_MODULE}) + +# create a C static library +set(CMAKE_C_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -c -n -b ") + +if(NOT _CMAKE_WATCOM_VERSION) + set(_CMAKE_WATCOM_VERSION 1) + if(CMAKE_C_COMPILER_VERSION) + set(_compiler_version ${CMAKE_C_COMPILER_VERSION}) + set(_compiler_id ${CMAKE_C_COMPILER_ID}) + endif() + set(WATCOM16) + set(WATCOM17) + set(WATCOM18) + set(WATCOM19) + set(WATCOM20) + if("${_compiler_id}" STREQUAL "OpenWatcom") + if("${_compiler_version}" VERSION_LESS 1.7) + set(WATCOM16 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.7) + set(WATCOM17 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.8) + set(WATCOM18 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.9) + set(WATCOM19 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 2.0) + set(WATCOM20 1) + endif() + endif() +endif() diff --git a/3rd-party/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake b/3rd-party/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake new file mode 100644 index 0000000..523b0a0 --- /dev/null +++ b/3rd-party/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake @@ -0,0 +1,105 @@ +# This module is shared by multiple languages; use include blocker. +if(__WINDOWS_OPENWATCOM) + return() +endif() +set(__WINDOWS_OPENWATCOM 1) + +set(CMAKE_LIBRARY_PATH_FLAG "libpath ") +set(CMAKE_LINK_LIBRARY_FLAG "library ") +set(CMAKE_LINK_LIBRARY_FILE_FLAG "library") + +if(CMAKE_VERBOSE_MAKEFILE) + set(CMAKE_WCL_QUIET) + set(CMAKE_WLINK_QUIET) + set(CMAKE_LIB_QUIET) +else() + set(CMAKE_WCL_QUIET "-zq") + set(CMAKE_WLINK_QUIET "op q") + set(CMAKE_LIB_QUIET "-q") +endif() + +string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ") + +set(CMAKE_C_COMPILE_OPTIONS_DLL "") +set(CMAKE_SHARED_LIBRARY_C_FLAGS "") + +message(STATUS "Configured for OS/2 v2") +set(WATCOM_OS2V2 TRUE) +set(CMAKE_C_COMPILER "wcc386") +set(SYSTEM_NAME os2v2) + +# detect folder, add lib386 directory +execute_process( + COMMAND where ${CMAKE_C_COMPILER} + OUTPUT_VARIABLE COMPILER_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE +) +get_filename_component(COMPILER_DIR ${COMPILER_PATH} PATH) +get_filename_component(WATCOM_TOOLCHAIN_DIR "${COMPILER_DIR}/.." ABSOLUTE) +string(APPEND LINK_LIBRARIES_PATH "${WATCOM_TOOLCHAIN_DIR}/lib386;${WATCOM_TOOLCHAIN_DIR}/lib386/dos") + +set(CMAKE_ASM_COMPILER "wasm") + +set(CMAKE_BUILD_TYPE_INIT Debug) + +string(APPEND CMAKE_C_FLAGS_INIT " -bt=${SYSTEM_NAME}") + +foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE) + set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1) +endforeach() + +set(CMAKE_C_CREATE_IMPORT_LIBRARY + "wlib -q -n -b +") + +set(CMAKE_C_LINK_EXECUTABLE + "wlink ${CMAKE_START_TEMP_FILE} ${CMAKE_WLINK_QUIET} system ${SYSTEM_NAME} name file {} ${CMAKE_END_TEMP_FILE}") + +# compile a C file into an object file +set(CMAKE_C_COMPILE_OBJECT + " ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ -fo=\"\" \"\"${CMAKE_END_TEMP_FILE}") + +# preprocess a C source file +set(CMAKE_C_CREATE_PREPROCESSED_SOURCE + " ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ -fo=\"\" -pl \"\"${CMAKE_END_TEMP_FILE}") + +string(REPLACE " option implib=" "" + CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_LIBRARY}") + +# create a C shared library +set(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_CXX_CREATE_SHARED_LIBRARY}) + +# create a C shared module +set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_MODULE}) + +# create a C static library +set(CMAKE_C_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -c -n -b ") + +if(NOT _CMAKE_WATCOM_VERSION) + set(_CMAKE_WATCOM_VERSION 1) + if(CMAKE_C_COMPILER_VERSION) + set(_compiler_version ${CMAKE_C_COMPILER_VERSION}) + set(_compiler_id ${CMAKE_C_COMPILER_ID}) + endif() + set(WATCOM16) + set(WATCOM17) + set(WATCOM18) + set(WATCOM19) + set(WATCOM20) + if("${_compiler_id}" STREQUAL "OpenWatcom") + if("${_compiler_version}" VERSION_LESS 1.7) + set(WATCOM16 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.7) + set(WATCOM17 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.8) + set(WATCOM18 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 1.9) + set(WATCOM19 1) + endif() + if("${_compiler_version}" VERSION_EQUAL 2.0) + set(WATCOM20 1) + endif() + endif() +endif() diff --git a/3rd-party/PDCurses/curses.h b/3rd-party/PDCurses/curses.h new file mode 100644 index 0000000..e653427 --- /dev/null +++ b/3rd-party/PDCurses/curses.h @@ -0,0 +1,1847 @@ +/* Public Domain Curses */ + +/*----------------------------------------------------------------------* + * PDCurses * + *----------------------------------------------------------------------*/ + +#ifndef __PDCURSES__ +#define __PDCURSES__ 1 + +/*man-start************************************************************** + +PDCurses definitions list: (Only define those needed) + + XCURSES True if compiling for X11. + PDC_RGB True if you want to use RGB color definitions + (Red = 1, Green = 2, Blue = 4) instead of BGR. + PDC_WIDE True if building wide-character support. + PDC_DLL_BUILD True if building a Windows DLL. + PDC_NCMOUSE Use the ncurses mouse API instead + of PDCurses' traditional mouse API. + +PDCurses portable platform definitions list: + + PDC_BUILD Defines API build version. + PDCURSES Enables access to PDCurses-only routines. + XOPEN Always true. + SYSVcurses True if you are compiling for SYSV portability. + BSDcurses True if you are compiling for BSD portability. + +**man-end****************************************************************/ + +#define PDCURSES 1 /* PDCurses-only routines */ +#define XOPEN 1 /* X/Open Curses routines */ +#define SYSVcurses 1 /* System V Curses routines */ +#define BSDcurses 1 /* BSD Curses routines */ +#if defined( CHTYPE_32) + #define CHTYPE_LONG 1 /* chtypes will be 32 bits */ +#elif !defined( CHTYPE_16) + #define CHTYPE_LONG 2 /* chtypes will be (default) 64 bits */ +#endif + +/*----------------------------------------------------------------------*/ + +#ifdef NO_STDINT_H + #define uint64_t unsigned __int64 + #define uint32_t unsigned long + #define uint16_t unsigned short +#else + #include +#endif +#include +#include +#include /* Required by X/Open usage below */ + +#ifdef PDC_WIDE +# include +#endif + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ + !defined(__bool_true_false_are_defined) +# include +#endif + +#ifdef __cplusplus +extern "C" +{ +# define bool _bool +#endif + +/*---------------------------------------------------------------------- + * + * Constants and Types + * + */ + +#undef FALSE +#undef TRUE + +#ifdef __bool_true_false_are_defined + +# define FALSE false +# define TRUE true + +#else + +typedef unsigned char bool; + +# define FALSE 0 +# define TRUE 1 + +#endif + +#undef ERR +#define ERR (-1) + +#undef OK +#define OK 0 + +#ifdef CHTYPE_LONG + #if(CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes */ + typedef uint64_t chtype; + #else /* "Standard" CHTYPE_LONG case, 32-bit: */ + typedef uint32_t chtype; + # endif +#else +typedef uint16_t chtype; /* 8-bit attr + 8-bit char */ +#endif + +#ifdef PDC_WIDE +typedef chtype cchar_t; +#endif + +typedef chtype attr_t; + +/* Version constants, available as of version 4.0 : */ +/* Don't forget to update 'version.mif' if MAJOR/MINOR changes! */ + +#define PDC_VER_MAJOR 4 +#define PDC_VER_MINOR 1 +#define PDC_VER_CHANGE 0 +#define PDC_VER_YEAR 2019 +#define PDC_VER_MONTH 5 +#define PDC_VER_DAY 8 + +#define PDC_BUILD (PDC_VER_MAJOR*1000 + PDC_VER_MINOR *100 + PDC_VER_CHANGE) + +/* When using PDCurses as a DLL (Windows) or shared library (BSD or *nix), +it's possible to switch the DLL or shared library. One may therefore want +to inquire of the DLL/shared library the port, version numbers, and +chtype_size used, and make sure they're what one was expecting. The +'PDC_version' structure lets you do just that. */ + +enum PDC_port +{ + PDC_PORT_X11 = 0, + PDC_PORT_WIN32 = 1, + PDC_PORT_WINGUI = 2, + PDC_PORT_DOS = 3, + PDC_PORT_OS2 = 4, + PDC_PORT_SDL1 = 5, + PDC_PORT_SDL2 = 6, + PDC_PORT_VT = 7 +}; + +/* Detailed PDC version information */ +#define PDC_HAS_VERSION_INFO 1 +typedef struct +{ + const enum PDC_port port; + const int ver_major; + const int ver_minor; + const int ver_change; + const size_t chtype_size; + const bool is_wide; + const bool is_forced_utf8; +} PDC_version_info; + +/*---------------------------------------------------------------------- + * + * Mouse Interface -- SYSVR4, with extensions + * + */ + +/* Most flavors of PDCurses support three buttons. WinGUI supports */ +/* these plus two "extended" buttons. But we'll set this macro to */ +/* six, allowing future versions to support up to nine total buttons. */ +/* (The button states are broken up into two arrays to allow for the */ +/* possibility of backward compatibility to DLLs compiled with only */ +/* three mouse buttons.) */ + +#define PDC_MAX_MOUSE_BUTTONS 9 +#define PDC_N_EXTENDED_MOUSE_BUTTONS 6 + +typedef struct +{ + int x; /* absolute column, 0 based, measured in characters */ + int y; /* absolute row, 0 based, measured in characters */ + short button[3]; /* state of three "normal" buttons */ + int changes; /* flags indicating what has changed with the mouse */ + short xbutton[PDC_N_EXTENDED_MOUSE_BUTTONS]; /* state of ext buttons */ +} MOUSE_STATUS; + +#define BUTTON_RELEASED 0x0000 +#define BUTTON_PRESSED 0x0001 +#define BUTTON_CLICKED 0x0002 +#define BUTTON_DOUBLE_CLICKED 0x0003 +#define BUTTON_TRIPLE_CLICKED 0x0004 +#define BUTTON_MOVED 0x0005 /* PDCurses */ +#define WHEEL_SCROLLED 0x0006 /* PDCurses */ +#define BUTTON_ACTION_MASK 0x0007 /* PDCurses */ + +#define PDC_BUTTON_SHIFT 0x0008 /* PDCurses */ +#define PDC_BUTTON_CONTROL 0x0010 /* PDCurses */ +#define PDC_BUTTON_ALT 0x0020 /* PDCurses */ +#define BUTTON_MODIFIER_MASK 0x0038 /* PDCurses */ + +#define MOUSE_X_POS (Mouse_status.x) +#define MOUSE_Y_POS (Mouse_status.y) + +/* + * Bits associated with the .changes field: + * 3 2 1 0 + * 210987654321098765432109876543210 + * 1 <- button 1 has changed 0 + * 10 <- button 2 has changed 1 + * 100 <- button 3 has changed 2 + * 1000 <- mouse has moved 3 + * 10000 <- mouse position report 4 + * 100000 <- mouse wheel up 5 + * 1000000 <- mouse wheel down 6 + * 10000000 <- mouse wheel left 7 + * 100000000 <- mouse wheel right 8 + * 1000000000 <- button 4 has changed 9 + * (NOTE: buttons 6 to 10000000000 <- button 5 has changed 10 + * 9 aren't implemented 100000000000 <- button 6 has changed 11 + * in any flavor of 1000000000000 <- button 7 has changed 12 + * PDCurses yet!) 10000000000000 <- button 8 has changed 13 + * 100000000000000 <- button 9 has changed 14 + */ + +#define PDC_MOUSE_MOVED 0x0008 +#define PDC_MOUSE_POSITION 0x0010 +#define PDC_MOUSE_WHEEL_UP 0x0020 +#define PDC_MOUSE_WHEEL_DOWN 0x0040 +#define PDC_MOUSE_WHEEL_LEFT 0x0080 +#define PDC_MOUSE_WHEEL_RIGHT 0x0100 + +#define A_BUTTON_CHANGED (Mouse_status.changes & 7) +#define MOUSE_MOVED (Mouse_status.changes & PDC_MOUSE_MOVED) +#define MOUSE_POS_REPORT (Mouse_status.changes & PDC_MOUSE_POSITION) +#define BUTTON_CHANGED(x) (Mouse_status.changes & (1 << ((x) - ((x)<4 ? 1 : -5)))) +#define BUTTON_STATUS(x) (Mouse_status.button[(x) - 1]) +#define MOUSE_WHEEL_UP (Mouse_status.changes & PDC_MOUSE_WHEEL_UP) +#define MOUSE_WHEEL_DOWN (Mouse_status.changes & PDC_MOUSE_WHEEL_DOWN) +#define MOUSE_WHEEL_LEFT (Mouse_status.changes & PDC_MOUSE_WHEEL_LEFT) +#define MOUSE_WHEEL_RIGHT (Mouse_status.changes & PDC_MOUSE_WHEEL_RIGHT) + +/* mouse bit-masks */ + +#define BUTTON1_RELEASED 0x00000001L +#define BUTTON1_PRESSED 0x00000002L +#define BUTTON1_CLICKED 0x00000004L +#define BUTTON1_DOUBLE_CLICKED 0x00000008L +#define BUTTON1_TRIPLE_CLICKED 0x00000010L +#define BUTTON1_MOVED 0x00000010L /* PDCurses */ + +#define BUTTON2_RELEASED 0x00000020L +#define BUTTON2_PRESSED 0x00000040L +#define BUTTON2_CLICKED 0x00000080L +#define BUTTON2_DOUBLE_CLICKED 0x00000100L +#define BUTTON2_TRIPLE_CLICKED 0x00000200L +#define BUTTON2_MOVED 0x00000200L /* PDCurses */ + +#define BUTTON3_RELEASED 0x00000400L +#define BUTTON3_PRESSED 0x00000800L +#define BUTTON3_CLICKED 0x00001000L +#define BUTTON3_DOUBLE_CLICKED 0x00002000L +#define BUTTON3_TRIPLE_CLICKED 0x00004000L +#define BUTTON3_MOVED 0x00004000L /* PDCurses */ + +/* For the ncurses-compatible functions only, BUTTON4_PRESSED and + BUTTON5_PRESSED are returned for mouse scroll wheel up and down; + otherwise PDCurses doesn't support buttons 4 and 5... except + as described above for WinGUI, and perhaps to be extended to + other PDCurses flavors */ + +#define BUTTON4_RELEASED 0x00008000L +#define BUTTON4_PRESSED 0x00010000L +#define BUTTON4_CLICKED 0x00020000L +#define BUTTON4_DOUBLE_CLICKED 0x00040000L +#define BUTTON4_TRIPLE_CLICKED 0x00080000L + +#define BUTTON5_RELEASED 0x00100000L +#define BUTTON5_PRESSED 0x00200000L +#define BUTTON5_CLICKED 0x00400000L +#define BUTTON5_DOUBLE_CLICKED 0x00800000L +#define BUTTON5_TRIPLE_CLICKED 0x01000000L + +#define MOUSE_WHEEL_SCROLL 0x02000000L /* PDCurses */ +#define BUTTON_MODIFIER_SHIFT 0x04000000L /* PDCurses */ +#define BUTTON_MODIFIER_CONTROL 0x08000000L /* PDCurses */ +#define BUTTON_MODIFIER_ALT 0x10000000L /* PDCurses */ + +#define ALL_MOUSE_EVENTS 0x1fffffffL +#define REPORT_MOUSE_POSITION 0x20000000L + +/* ncurses mouse interface */ + +typedef unsigned long mmask_t; + +typedef struct +{ + short id; /* unused, always 0 */ + int x, y, z; /* x, y same as MOUSE_STATUS; z unused */ + mmask_t bstate; /* equivalent to changes + button[], but + in the same format as used for mousemask() */ +} MEVENT; + +#if defined(PDC_NCMOUSE) && !defined(NCURSES_MOUSE_VERSION) +# define NCURSES_MOUSE_VERSION 2 +#endif + +#ifdef NCURSES_MOUSE_VERSION +# define BUTTON_SHIFT BUTTON_MODIFIER_SHIFT +# define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL +# define BUTTON_CTRL BUTTON_MODIFIER_CONTROL +# define BUTTON_ALT BUTTON_MODIFIER_ALT +#else +# define BUTTON_SHIFT PDC_BUTTON_SHIFT +# define BUTTON_CONTROL PDC_BUTTON_CONTROL +# define BUTTON_ALT PDC_BUTTON_ALT +#endif + +/*---------------------------------------------------------------------- + * + * Window and Screen Structures + * + */ + +typedef struct _win /* definition of a window */ +{ + int _cury; /* current pseudo-cursor */ + int _curx; + int _maxy; /* max window coordinates */ + int _maxx; + int _begy; /* origin on screen */ + int _begx; + int _flags; /* window properties */ + chtype _attrs; /* standard attributes and colors */ + chtype _bkgd; /* background, normally blank */ + bool _clear; /* causes clear at next refresh */ + bool _leaveit; /* leaves cursor where it is */ + bool _scroll; /* allows window scrolling */ + bool _nodelay; /* input character wait flag */ + bool _immed; /* immediate update flag */ + bool _sync; /* synchronise window ancestors */ + bool _use_keypad; /* flags keypad key mode active */ + chtype **_y; /* pointer to line pointer array */ + int *_firstch; /* first changed character in line */ + int *_lastch; /* last changed character in line */ + int _tmarg; /* top of scrolling region */ + int _bmarg; /* bottom of scrolling region */ + int _delayms; /* milliseconds of delay for getch() */ + int _parx, _pary; /* coords relative to parent (0,0) */ + struct _win *_parent; /* subwin's pointer to parent win */ +} WINDOW; + +/* Avoid using the SCREEN struct directly -- use the corresponding + functions if possible. This struct may eventually be made private. */ + +typedef struct +{ + bool alive; /* if initscr() called, and not endwin() */ + bool autocr; /* if cr -> lf */ + bool cbreak; /* if terminal unbuffered */ + bool echo; /* if terminal echo */ + bool raw_inp; /* raw input mode (v. cooked input) */ + bool raw_out; /* raw output mode (7 v. 8 bits) */ + bool audible; /* FALSE if the bell is visual */ + bool mono; /* TRUE if current screen is mono */ + bool resized; /* TRUE if TERM has been resized */ + bool orig_attr; /* TRUE if we have the original colors */ + short orig_fore; /* original screen foreground color */ + short orig_back; /* original screen foreground color */ + int cursrow; /* position of physical cursor */ + int curscol; /* position of physical cursor */ + int visibility; /* visibility of cursor */ + int orig_cursor; /* original cursor size */ + int lines; /* new value for LINES */ + int cols; /* new value for COLS */ + unsigned long _trap_mbe; /* trap these mouse button events */ + unsigned long _map_mbe_to_key; /* map mouse buttons to slk */ + int mouse_wait; /* time to wait (in ms) for a + button release after a press, in + order to count it as a click */ + int slklines; /* lines in use by slk_init() */ + WINDOW *slk_winptr; /* window for slk */ + int linesrippedoff; /* lines ripped off via ripoffline() */ + int linesrippedoffontop; /* lines ripped off on + top via ripoffline() */ + int delaytenths; /* 1/10ths second to wait block + getch() for */ + bool _preserve; /* TRUE if screen background + to be preserved */ + int _restore; /* specifies if screen background + to be restored, and how */ + bool save_key_modifiers; /* TRUE if each key modifiers saved + with each key press */ + bool return_key_modifiers; /* TRUE if modifier keys are + returned as "real" keys */ + bool key_code; /* TRUE if last key is a special key; + used internally by get_wch() */ +#ifdef XCURSES + int XcurscrSize; /* size of Xcurscr shared memory block */ + bool sb_on; + int sb_viewport_y; + int sb_viewport_x; + int sb_total_y; + int sb_total_x; + int sb_cur_y; + int sb_cur_x; + int exit_key; +#endif + short line_color; /* color of line attributes - default -1 */ +} SCREEN; + +/*---------------------------------------------------------------------- + * + * External Variables + * + */ + +#ifdef PDC_DLL_BUILD +# ifdef CURSES_LIBRARY +# define PDCEX __declspec(dllexport) extern +# else +# define PDCEX __declspec(dllimport) +# endif +#else +# define PDCEX extern +#endif + +PDCEX int LINES; /* terminal height */ +PDCEX int COLS; /* terminal width */ +PDCEX WINDOW *stdscr; /* the default screen window */ +PDCEX WINDOW *curscr; /* the current screen image */ +PDCEX SCREEN *SP; /* curses variables */ +PDCEX MOUSE_STATUS Mouse_status; +PDCEX int COLORS; +PDCEX int COLOR_PAIRS; +PDCEX int TABSIZE; +PDCEX chtype acs_map[]; /* alternate character set map */ +PDCEX char ttytype[]; /* terminal name/description */ +PDCEX PDC_version_info PDC_version; + +/*man-start************************************************************** + +Text Attributes +=============== + +Originally, PDCurses used a short (16 bits) for its chtype. To include +color, a number of things had to be sacrificed from the strict Unix and +System V support. The main problem was fitting all character attributes +and color into an unsigned char (all 8 bits!). + +Today, PDCurses by default uses a long (32 bits) for its chtype, as in +System V. The short chtype is still available, by undefining CHTYPE_LONG +and rebuilding the library. + +The following is the structure of a win->_attrs chtype: + +short form: + + +-----------------------------------------------+ + |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| + +-----------------------------------------------+ + color number | attrs | character eg 'a' + +The available non-color attributes are bold, reverse and blink. Others +have no effect. The high order char is an index into an array of +physical colors (defined in color.c) -- 32 foreground/background color +pairs (5 bits) plus 3 bits for other attributes. + +long form: + + +--------------------------------------------------------------------+ + |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|..| 2| 1| 0| + +--------------------------------------------------------------------+ + color number | modifiers | character eg 'a' + +The available non-color attributes are bold, underline, invisible, +right-line, left-line, protect, reverse and blink. 256 color pairs (8 +bits), 8 bits for other attributes, and 16 bits for character data. + + Note that there is now a "super-long" 64-bit form, available by +defining CHTYPE_LONG to be 2: + +------------------------------------------------------------------------------- +|63|62|61|60|59|..|34|33|32|31|30|29|28|..|22|21|20|19|18|17|16|..| 3| 2| 1| 0| +------------------------------------------------------------------------------- + color number | modifiers | character eg 'a' + + + We take five more bits for the character (thus allowing Unicode values +past 64K; UTF-16 can go up to 0x10ffff, requiring 21 bits total), and +four more bits for attributes. Three are currently used as A_OVERLINE, A_DIM, +and A_STRIKEOUT; one more is reserved for future use. 31 bits are then used +for color. These are usually just treated as the usual palette +indices, and range from 0 to 255. However, if bit 63 is +set, the remaining 30 bits are interpreted as foreground RGB (first +fifteen bits, five bits for each of the three channels) and background RGB +(same scheme using the remaining 15 bits.) + +**man-end****************************************************************/ + +/*** Video attribute macros ***/ + +#define A_NORMAL (chtype)0 + +#ifdef CHTYPE_LONG + +# if(CHTYPE_LONG >= 2) /* 64-bit chtypes */ + # define PDC_CHARTEXT_BITS 21 + # define A_CHARTEXT (chtype)( ((chtype)0x1 << PDC_CHARTEXT_BITS) - 1) + # define A_ALTCHARSET ((chtype)0x001 << PDC_CHARTEXT_BITS) + # define A_RIGHTLINE ((chtype)0x002 << PDC_CHARTEXT_BITS) + # define A_LEFTLINE ((chtype)0x004 << PDC_CHARTEXT_BITS) + # define A_INVIS ((chtype)0x008 << PDC_CHARTEXT_BITS) + # define A_UNDERLINE ((chtype)0x010 << PDC_CHARTEXT_BITS) + # define A_REVERSE ((chtype)0x020 << PDC_CHARTEXT_BITS) + # define A_BLINK ((chtype)0x040 << PDC_CHARTEXT_BITS) + # define A_BOLD ((chtype)0x080 << PDC_CHARTEXT_BITS) + # define A_OVERLINE ((chtype)0x100 << PDC_CHARTEXT_BITS) + # define A_STRIKEOUT ((chtype)0x200 << PDC_CHARTEXT_BITS) + # define A_DIM ((chtype)0x400 << PDC_CHARTEXT_BITS) +#if 0 + /* May come up with a use for this bit */ + /* someday; reserved for the future: */ + # define A_FUTURE_2 ((chtype)0x800 << PDC_CHARTEXT_BITS) +#endif + # define PDC_COLOR_SHIFT (PDC_CHARTEXT_BITS + 12) + # define A_COLOR ((chtype)0x7fffffff << PDC_COLOR_SHIFT) + # define A_RGB_COLOR ((chtype)0x40000000 << PDC_COLOR_SHIFT) + # define A_ATTRIBUTES (((chtype)0xfff << PDC_CHARTEXT_BITS) | A_COLOR) + # define A_RGB( rfore, gfore, bfore, rback, gback, bback) \ + (( (((chtype)(bfore) << 25) \ + | ((chtype)(gfore) << 20) \ + | ((chtype)(rfore) << 15) \ + | ((chtype)(bback) << 10) \ + | ((chtype)(gback) << 5) \ + | ((chtype)(rback) )) << PDC_COLOR_SHIFT) | A_RGB_COLOR) +# else /* plain ol' 32-bit chtypes */ + # define A_ALTCHARSET (chtype)0x00010000 + # define A_RIGHTLINE (chtype)0x00020000 + # define A_LEFTLINE (chtype)0x00040000 + # define A_INVIS (chtype)0x00080000 + # define A_UNDERLINE (chtype)0x00100000 + # define A_REVERSE (chtype)0x00200000 + # define A_BLINK (chtype)0x00400000 + # define A_BOLD (chtype)0x00800000 + # define A_COLOR (chtype)0xff000000 + # define A_RGB_COLOR A_NORMAL +#ifdef PDC_WIDE + # define A_CHARTEXT (chtype)0x0000ffff + # define A_ATTRIBUTES (chtype)0xffff0000 + # define A_DIM A_NORMAL + # define A_OVERLINE A_NORMAL + # define A_STRIKEOUT A_NORMAL +#else /* with 8-bit chars, we have bits for these attribs : */ + # define A_CHARTEXT (chtype)0x000000ff + # define A_ATTRIBUTES (chtype)0xffffe000 + # define A_DIM (chtype)0x00008000 + # define A_OVERLINE (chtype)0x00004000 + # define A_STRIKEOUT (chtype)0x00002000 +#endif + # define PDC_COLOR_SHIFT 24 +#endif + + +# define A_ITALIC A_INVIS +# define A_PROTECT (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE) + +#else /* 16-bit chtypes */ +# define A_BOLD (chtype)0x0100 /* X/Open */ +# define A_REVERSE (chtype)0x0200 /* X/Open */ +# define A_BLINK (chtype)0x0400 /* X/Open */ + +# define A_ATTRIBUTES (chtype)0xff00 /* X/Open */ +# define A_CHARTEXT (chtype)0x00ff /* X/Open */ +# define A_COLOR (chtype)0xf800 /* System V */ + +# define A_ALTCHARSET A_NORMAL /* X/Open */ +# define A_PROTECT A_NORMAL /* X/Open */ +# define A_UNDERLINE A_NORMAL /* X/Open */ +# define A_OVERLINE A_NORMAL /* X/Open */ +# define A_STRIKEOUT A_NORMAL /* X/Open */ + +# define A_LEFTLINE A_NORMAL +# define A_RIGHTLINE A_NORMAL +# define A_ITALIC A_NORMAL +# define A_INVIS A_NORMAL +# define A_RGB_COLOR A_NORMAL +# define A_DIM A_NORMAL + +# define PDC_COLOR_SHIFT 11 +#endif + +#define A_STANDOUT (A_REVERSE | A_BOLD) /* X/Open */ + +#define CHR_MSK A_CHARTEXT /* Obsolete */ +#define ATR_MSK A_ATTRIBUTES /* Obsolete */ +#define ATR_NRM A_NORMAL /* Obsolete */ + +/* For use with attr_t -- X/Open says, "these shall be distinct", so + this is a non-conforming implementation. */ + +#define WA_NORMAL A_NORMAL + +#define WA_ALTCHARSET A_ALTCHARSET +#define WA_BLINK A_BLINK +#define WA_BOLD A_BOLD +#define WA_DIM A_DIM +#define WA_INVIS A_INVIS +#define WA_LEFT A_LEFTLINE +#define WA_PROTECT A_PROTECT +#define WA_REVERSE A_REVERSE +#define WA_RIGHT A_RIGHTLINE +#define WA_STANDOUT A_STANDOUT +#define WA_UNDERLINE A_UNDERLINE + +#define WA_HORIZONTAL A_NORMAL +#define WA_LOW A_NORMAL +#define WA_TOP A_NORMAL +#define WA_VERTICAL A_NORMAL + +#define WA_ATTRIBUTES A_ATTRIBUTES + +/*** Alternate character set macros ***/ + +/* 'w' = 32-bit chtype; acs_map[] index | A_ALTCHARSET + 'n' = 16-bit chtype; it gets the fallback set because no bit is + available for A_ALTCHARSET */ + +#ifdef CHTYPE_LONG +# define PDC_ACS(w, n) ((chtype)w | A_ALTCHARSET) +#else +# define PDC_ACS(w, n) ((chtype)n) +#endif + +/* VT100-compatible symbols -- box chars */ + +#define ACS_LRCORNER PDC_ACS('V', '+') +#define ACS_URCORNER PDC_ACS('W', '+') +#define ACS_ULCORNER PDC_ACS('X', '+') +#define ACS_LLCORNER PDC_ACS('Y', '+') +#define ACS_PLUS PDC_ACS('Z', '+') +#define ACS_LTEE PDC_ACS('[', '+') +#define ACS_RTEE PDC_ACS('\\', '+') +#define ACS_BTEE PDC_ACS(']', '+') +#define ACS_TTEE PDC_ACS('^', '+') +#define ACS_HLINE PDC_ACS('_', '-') +#define ACS_VLINE PDC_ACS('`', '|') + +/* PDCurses-only ACS chars. Don't use if ncurses compatibility matters. +Some won't work in non-wide X11 builds (see 'acs_defs.h' for details). */ + +#define ACS_CENT PDC_ACS('{', 'c') +#define ACS_YEN PDC_ACS('|', 'y') +#define ACS_PESETA PDC_ACS('}', 'p') +#define ACS_HALF PDC_ACS('&', '/') +#define ACS_QUARTER PDC_ACS('\'', '/') +#define ACS_LEFT_ANG_QU PDC_ACS(')', '<') +#define ACS_RIGHT_ANG_QU PDC_ACS('*', '>') +#define ACS_D_HLINE PDC_ACS('a', '-') +#define ACS_D_VLINE PDC_ACS('b', '|') +#define ACS_CLUB PDC_ACS( 11, 'C') +#define ACS_HEART PDC_ACS( 12, 'H') +#define ACS_SPADE PDC_ACS( 13, 'S') +#define ACS_SMILE PDC_ACS( 14, 'O') +#define ACS_REV_SMILE PDC_ACS( 15, 'O') +#define ACS_MED_BULLET PDC_ACS( 16, '.') +#define ACS_WHITE_BULLET PDC_ACS( 17, 'O') +#define ACS_PILCROW PDC_ACS( 18, 'O') +#define ACS_SECTION PDC_ACS( 19, 'O') + +#define ACS_SUP2 PDC_ACS(',', '2') +#define ACS_ALPHA PDC_ACS('.', 'a') +#define ACS_BETA PDC_ACS('/', 'b') +#define ACS_GAMMA PDC_ACS('0', 'y') +#define ACS_UP_SIGMA PDC_ACS('1', 'S') +#define ACS_LO_SIGMA PDC_ACS('2', 's') +#define ACS_MU PDC_ACS('4', 'u') +#define ACS_TAU PDC_ACS('5', 't') +#define ACS_UP_PHI PDC_ACS('6', 'F') +#define ACS_THETA PDC_ACS('7', 't') +#define ACS_OMEGA PDC_ACS('8', 'w') +#define ACS_DELTA PDC_ACS('9', 'd') +#define ACS_INFINITY PDC_ACS('-', 'i') +#define ACS_LO_PHI PDC_ACS( 22, 'f') +#define ACS_EPSILON PDC_ACS(':', 'e') +#define ACS_INTERSECT PDC_ACS('e', 'u') +#define ACS_TRIPLE_BAR PDC_ACS('f', '=') +#define ACS_DIVISION PDC_ACS('c', '/') +#define ACS_APPROX_EQ PDC_ACS('d', '~') +#define ACS_SM_BULLET PDC_ACS('g', '.') +#define ACS_SQUARE_ROOT PDC_ACS('i', '!') +#define ACS_UBLOCK PDC_ACS('p', '^') +#define ACS_BBLOCK PDC_ACS('q', '_') +#define ACS_LBLOCK PDC_ACS('r', '<') +#define ACS_RBLOCK PDC_ACS('s', '>') + +#define ACS_A_ORDINAL PDC_ACS(20, 'a') +#define ACS_O_ORDINAL PDC_ACS(21, 'o') +#define ACS_INV_QUERY PDC_ACS(24, '?') +#define ACS_REV_NOT PDC_ACS(25, '!') +#define ACS_NOT PDC_ACS(26, '!') +#define ACS_INV_BANG PDC_ACS(23, '!') +#define ACS_UP_INTEGRAL PDC_ACS(27, '|') +#define ACS_LO_INTEGRAL PDC_ACS(28, '|') +#define ACS_SUP_N PDC_ACS(29, 'n') +#define ACS_CENTER_SQU PDC_ACS(30, 'x') +#define ACS_F_WITH_HOOK PDC_ACS(31, 'f') + +#define ACS_SD_LRCORNER PDC_ACS(';', '+') +#define ACS_SD_URCORNER PDC_ACS('<', '+') +#define ACS_SD_ULCORNER PDC_ACS('=', '+') +#define ACS_SD_LLCORNER PDC_ACS('>', '+') +#define ACS_SD_PLUS PDC_ACS('?', '+') +#define ACS_SD_LTEE PDC_ACS('@', '+') +#define ACS_SD_RTEE PDC_ACS('A', '+') +#define ACS_SD_BTEE PDC_ACS('B', '+') +#define ACS_SD_TTEE PDC_ACS('C', '+') + +#define ACS_D_LRCORNER PDC_ACS('D', '+') +#define ACS_D_URCORNER PDC_ACS('E', '+') +#define ACS_D_ULCORNER PDC_ACS('F', '+') +#define ACS_D_LLCORNER PDC_ACS('G', '+') +#define ACS_D_PLUS PDC_ACS('H', '+') +#define ACS_D_LTEE PDC_ACS('I', '+') +#define ACS_D_RTEE PDC_ACS('J', '+') +#define ACS_D_BTEE PDC_ACS('K', '+') +#define ACS_D_TTEE PDC_ACS('L', '+') + +#define ACS_DS_LRCORNER PDC_ACS('M', '+') +#define ACS_DS_URCORNER PDC_ACS('N', '+') +#define ACS_DS_ULCORNER PDC_ACS('O', '+') +#define ACS_DS_LLCORNER PDC_ACS('P', '+') +#define ACS_DS_PLUS PDC_ACS('Q', '+') +#define ACS_DS_LTEE PDC_ACS('R', '+') +#define ACS_DS_RTEE PDC_ACS('S', '+') +#define ACS_DS_BTEE PDC_ACS('T', '+') +#define ACS_DS_TTEE PDC_ACS('U', '+') + +/* VT100-compatible symbols -- other */ + +#define ACS_S1 PDC_ACS('l', '-') +#define ACS_S9 PDC_ACS('o', '_') +#define ACS_DIAMOND PDC_ACS('j', '+') +#define ACS_CKBOARD PDC_ACS('k', ':') +#define ACS_DEGREE PDC_ACS('w', '\'') +#define ACS_PLMINUS PDC_ACS('x', '#') +#define ACS_BULLET PDC_ACS('h', 'o') + +/* Teletype 5410v1 symbols -- these are defined in SysV curses, but + are not well-supported by most terminals. Stick to VT100 characters + for optimum portability. */ + +#define ACS_LARROW PDC_ACS('!', '<') +#define ACS_RARROW PDC_ACS(' ', '>') +#define ACS_DARROW PDC_ACS('#', 'v') +#define ACS_UARROW PDC_ACS('"', '^') +#define ACS_BOARD PDC_ACS('+', '#') +#define ACS_LTBOARD PDC_ACS('y', '#') +#define ACS_LANTERN PDC_ACS('z', '*') +#define ACS_BLOCK PDC_ACS('t', '#') + +/* That goes double for these -- undocumented SysV symbols. Don't use + them. */ + +#define ACS_S3 PDC_ACS('m', '-') +#define ACS_S7 PDC_ACS('n', '-') +#define ACS_LEQUAL PDC_ACS('u', '<') +#define ACS_GEQUAL PDC_ACS('v', '>') +#define ACS_PI PDC_ACS('$', 'n') +#define ACS_NEQUAL PDC_ACS('%', '+') +#define ACS_STERLING PDC_ACS('~', 'L') + +/* Box char aliases */ + +#define ACS_BSSB ACS_ULCORNER +#define ACS_SSBB ACS_LLCORNER +#define ACS_BBSS ACS_URCORNER +#define ACS_SBBS ACS_LRCORNER +#define ACS_SBSS ACS_RTEE +#define ACS_SSSB ACS_LTEE +#define ACS_SSBS ACS_BTEE +#define ACS_BSSS ACS_TTEE +#define ACS_BSBS ACS_HLINE +#define ACS_SBSB ACS_VLINE +#define ACS_SSSS ACS_PLUS + +/* cchar_t aliases */ + +#ifdef PDC_WIDE +# define WACS_LRCORNER (&(acs_map['V'])) +# define WACS_URCORNER (&(acs_map['W'])) +# define WACS_ULCORNER (&(acs_map['X'])) +# define WACS_LLCORNER (&(acs_map['Y'])) +# define WACS_PLUS (&(acs_map['Z'])) +# define WACS_LTEE (&(acs_map['['])) +# define WACS_RTEE (&(acs_map['\\'])) +# define WACS_BTEE (&(acs_map[']'])) +# define WACS_TTEE (&(acs_map['^'])) +# define WACS_HLINE (&(acs_map['_'])) +# define WACS_VLINE (&(acs_map['`'])) + +# define WACS_CENT (&(acs_map['{'])) +# define WACS_YEN (&(acs_map['|'])) +# define WACS_PESETA (&(acs_map['}'])) +# define WACS_HALF (&(acs_map['&'])) +# define WACS_QUARTER (&(acs_map['\''])) +# define WACS_LEFT_ANG_QU (&(acs_map[')'])) +# define WACS_RIGHT_ANG_QU (&(acs_map['*'])) +# define WACS_D_HLINE (&(acs_map['a'])) +# define WACS_D_VLINE (&(acs_map['b'])) +# define WACS_CLUB (&(acs_map[ 11])) +# define WACS_HEART (&(acs_map[ 12])) +# define WACS_SPADE (&(acs_map[ 13])) +# define WACS_SMILE (&(acs_map[ 14])) +# define WACS_REV_SMILE (&(acs_map[ 15])) +# define WACS_MED_BULLET (&(acs_map[ 16])) +# define WACS_WHITE_BULLET (&(acs_map[ 17])) +# define WACS_PILCROW (&(acs_map[ 18])) +# define WACS_SECTION (&(acs_map[ 19])) + +# define WACS_SUP2 (&(acs_map[','])) +# define WACS_ALPHA (&(acs_map['.'])) +# define WACS_BETA (&(acs_map['/'])) +# define WACS_GAMMA (&(acs_map['0'])) +# define WACS_UP_SIGMA (&(acs_map['1'])) +# define WACS_LO_SIGMA (&(acs_map['2'])) +# define WACS_MU (&(acs_map['4'])) +# define WACS_TAU (&(acs_map['5'])) +# define WACS_UP_PHI (&(acs_map['6'])) +# define WACS_THETA (&(acs_map['7'])) +# define WACS_OMEGA (&(acs_map['8'])) +# define WACS_DELTA (&(acs_map['9'])) +# define WACS_INFINITY (&(acs_map['-'])) +# define WACS_LO_PHI (&(acs_map[ 22])) +# define WACS_EPSILON (&(acs_map[':'])) +# define WACS_INTERSECT (&(acs_map['e'])) +# define WACS_TRIPLE_BAR (&(acs_map['f'])) +# define WACS_DIVISION (&(acs_map['c'])) +# define WACS_APPROX_EQ (&(acs_map['d'])) +# define WACS_SM_BULLET (&(acs_map['g'])) +# define WACS_SQUARE_ROOT (&(acs_map['i'])) +# define WACS_UBLOCK (&(acs_map['p'])) +# define WACS_BBLOCK (&(acs_map['q'])) +# define WACS_LBLOCK (&(acs_map['r'])) +# define WACS_RBLOCK (&(acs_map['s'])) + +# define WACS_A_ORDINAL (&(acs_map[20])) +# define WACS_O_ORDINAL (&(acs_map[21])) +# define WACS_INV_QUERY (&(acs_map[24])) +# define WACS_REV_NOT (&(acs_map[25])) +# define WACS_NOT (&(acs_map[26])) +# define WACS_INV_BANG (&(acs_map[23])) +# define WACS_UP_INTEGRAL (&(acs_map[27])) +# define WACS_LO_INTEGRAL (&(acs_map[28])) +# define WACS_SUP_N (&(acs_map[29])) +# define WACS_CENTER_SQU (&(acs_map[30])) +# define WACS_F_WITH_HOOK (&(acs_map[31])) + +# define WACS_SD_LRCORNER (&(acs_map[';'])) +# define WACS_SD_URCORNER (&(acs_map['<'])) +# define WACS_SD_ULCORNER (&(acs_map['='])) +# define WACS_SD_LLCORNER (&(acs_map['>'])) +# define WACS_SD_PLUS (&(acs_map['?'])) +# define WACS_SD_LTEE (&(acs_map['@'])) +# define WACS_SD_RTEE (&(acs_map['A'])) +# define WACS_SD_BTEE (&(acs_map['B'])) +# define WACS_SD_TTEE (&(acs_map['C'])) + +# define WACS_D_LRCORNER (&(acs_map['D'])) +# define WACS_D_URCORNER (&(acs_map['E'])) +# define WACS_D_ULCORNER (&(acs_map['F'])) +# define WACS_D_LLCORNER (&(acs_map['G'])) +# define WACS_D_PLUS (&(acs_map['H'])) +# define WACS_D_LTEE (&(acs_map['I'])) +# define WACS_D_RTEE (&(acs_map['J'])) +# define WACS_D_BTEE (&(acs_map['K'])) +# define WACS_D_TTEE (&(acs_map['L'])) + +# define WACS_DS_LRCORNER (&(acs_map['M'])) +# define WACS_DS_URCORNER (&(acs_map['N'])) +# define WACS_DS_ULCORNER (&(acs_map['O'])) +# define WACS_DS_LLCORNER (&(acs_map['P'])) +# define WACS_DS_PLUS (&(acs_map['Q'])) +# define WACS_DS_LTEE (&(acs_map['R'])) +# define WACS_DS_RTEE (&(acs_map['S'])) +# define WACS_DS_BTEE (&(acs_map['T'])) +# define WACS_DS_TTEE (&(acs_map['U'])) + +# define WACS_S1 (&(acs_map['l'])) +# define WACS_S9 (&(acs_map['o'])) +# define WACS_DIAMOND (&(acs_map['j'])) +# define WACS_CKBOARD (&(acs_map['k'])) +# define WACS_DEGREE (&(acs_map['w'])) +# define WACS_PLMINUS (&(acs_map['x'])) +# define WACS_BULLET (&(acs_map['h'])) + + +# define WACS_LARROW (&(acs_map['!'])) +# define WACS_RARROW (&(acs_map[' '])) +# define WACS_DARROW (&(acs_map['#'])) +# define WACS_UARROW (&(acs_map['"'])) +# define WACS_BOARD (&(acs_map['+'])) +# define WACS_LTBOARD (&(acs_map['y'])) +# define WACS_LANTERN (&(acs_map['z'])) +# define WACS_BLOCK (&(acs_map['t'])) + +# define WACS_S3 (&(acs_map['m'])) +# define WACS_S7 (&(acs_map['n'])) +# define WACS_LEQUAL (&(acs_map['u'])) +# define WACS_GEQUAL (&(acs_map['v'])) +# define WACS_PI (&(acs_map['$'])) +# define WACS_NEQUAL (&(acs_map['%'])) +# define WACS_STERLING (&(acs_map['~'])) + +# define WACS_BSSB WACS_ULCORNER +# define WACS_SSBB WACS_LLCORNER +# define WACS_BBSS WACS_URCORNER +# define WACS_SBBS WACS_LRCORNER +# define WACS_SBSS WACS_RTEE +# define WACS_SSSB WACS_LTEE +# define WACS_SSBS WACS_BTEE +# define WACS_BSSS WACS_TTEE +# define WACS_BSBS WACS_HLINE +# define WACS_SBSB WACS_VLINE +# define WACS_SSSS WACS_PLUS +#endif + +/*** Color macros ***/ + +#define COLOR_BLACK 0 + +#ifdef PDC_RGB /* RGB */ +# define COLOR_RED 1 +# define COLOR_GREEN 2 +# define COLOR_BLUE 4 +#else /* BGR */ +# define COLOR_BLUE 1 +# define COLOR_GREEN 2 +# define COLOR_RED 4 +#endif + +#define COLOR_CYAN (COLOR_BLUE | COLOR_GREEN) +#define COLOR_MAGENTA (COLOR_RED | COLOR_BLUE) +#define COLOR_YELLOW (COLOR_RED | COLOR_GREEN) + +#define COLOR_WHITE 7 + +/*---------------------------------------------------------------------- + * + * Function and Keypad Key Definitions + * Many are just for compatibility + * + */ + +#ifdef PDC_WIDE + #define KEY_OFFSET 0xec00 +#else + #define KEY_OFFSET 0x100 +#endif + +#define KEY_CODE_YES (KEY_OFFSET + 0x00) /* If get_wch() gives a key code */ + +#define KEY_BREAK (KEY_OFFSET + 0x01) /* Not on PC KBD */ +#define KEY_DOWN (KEY_OFFSET + 0x02) /* Down arrow key */ +#define KEY_UP (KEY_OFFSET + 0x03) /* Up arrow key */ +#define KEY_LEFT (KEY_OFFSET + 0x04) /* Left arrow key */ +#define KEY_RIGHT (KEY_OFFSET + 0x05) /* Right arrow key */ +#define KEY_HOME (KEY_OFFSET + 0x06) /* home key */ +#define KEY_BACKSPACE (KEY_OFFSET + 0x07) /* not on pc */ +#define KEY_F0 (KEY_OFFSET + 0x08) /* function keys; 64 reserved */ + +#define KEY_DL (KEY_OFFSET + 0x48) /* delete line */ +#define KEY_IL (KEY_OFFSET + 0x49) /* insert line */ +#define KEY_DC (KEY_OFFSET + 0x4a) /* delete character */ +#define KEY_IC (KEY_OFFSET + 0x4b) /* insert char or enter ins mode */ +#define KEY_EIC (KEY_OFFSET + 0x4c) /* exit insert char mode */ +#define KEY_CLEAR (KEY_OFFSET + 0x4d) /* clear screen */ +#define KEY_EOS (KEY_OFFSET + 0x4e) /* clear to end of screen */ +#define KEY_EOL (KEY_OFFSET + 0x4f) /* clear to end of line */ +#define KEY_SF (KEY_OFFSET + 0x50) /* scroll 1 line forward */ +#define KEY_SR (KEY_OFFSET + 0x51) /* scroll 1 line back (reverse) */ +#define KEY_NPAGE (KEY_OFFSET + 0x52) /* next page */ +#define KEY_PPAGE (KEY_OFFSET + 0x53) /* previous page */ +#define KEY_STAB (KEY_OFFSET + 0x54) /* set tab */ +#define KEY_CTAB (KEY_OFFSET + 0x55) /* clear tab */ +#define KEY_CATAB (KEY_OFFSET + 0x56) /* clear all tabs */ +#define KEY_ENTER (KEY_OFFSET + 0x57) /* enter or send (unreliable) */ +#define KEY_SRESET (KEY_OFFSET + 0x58) /* soft/reset (partial/unreliable) */ +#define KEY_RESET (KEY_OFFSET + 0x59) /* reset/hard reset (unreliable) */ +#define KEY_PRINT (KEY_OFFSET + 0x5a) /* print/copy */ +#define KEY_LL (KEY_OFFSET + 0x5b) /* home down/bottom (lower left) */ +#define KEY_ABORT (KEY_OFFSET + 0x5c) /* abort/terminate key (any) */ +#define KEY_SHELP (KEY_OFFSET + 0x5d) /* short help */ +#define KEY_LHELP (KEY_OFFSET + 0x5e) /* long help */ +#define KEY_BTAB (KEY_OFFSET + 0x5f) /* Back tab key */ +#define KEY_BEG (KEY_OFFSET + 0x60) /* beg(inning) key */ +#define KEY_CANCEL (KEY_OFFSET + 0x61) /* cancel key */ +#define KEY_CLOSE (KEY_OFFSET + 0x62) /* close key */ +#define KEY_COMMAND (KEY_OFFSET + 0x63) /* cmd (command) key */ +#define KEY_COPY (KEY_OFFSET + 0x64) /* copy key */ +#define KEY_CREATE (KEY_OFFSET + 0x65) /* create key */ +#define KEY_END (KEY_OFFSET + 0x66) /* end key */ +#define KEY_EXIT (KEY_OFFSET + 0x67) /* exit key */ +#define KEY_FIND (KEY_OFFSET + 0x68) /* find key */ +#define KEY_HELP (KEY_OFFSET + 0x69) /* help key */ +#define KEY_MARK (KEY_OFFSET + 0x6a) /* mark key */ +#define KEY_MESSAGE (KEY_OFFSET + 0x6b) /* message key */ +#define KEY_MOVE (KEY_OFFSET + 0x6c) /* move key */ +#define KEY_NEXT (KEY_OFFSET + 0x6d) /* next object key */ +#define KEY_OPEN (KEY_OFFSET + 0x6e) /* open key */ +#define KEY_OPTIONS (KEY_OFFSET + 0x6f) /* options key */ +#define KEY_PREVIOUS (KEY_OFFSET + 0x70) /* previous object key */ +#define KEY_REDO (KEY_OFFSET + 0x71) /* redo key */ +#define KEY_REFERENCE (KEY_OFFSET + 0x72) /* ref(erence) key */ +#define KEY_REFRESH (KEY_OFFSET + 0x73) /* refresh key */ +#define KEY_REPLACE (KEY_OFFSET + 0x74) /* replace key */ +#define KEY_RESTART (KEY_OFFSET + 0x75) /* restart key */ +#define KEY_RESUME (KEY_OFFSET + 0x76) /* resume key */ +#define KEY_SAVE (KEY_OFFSET + 0x77) /* save key */ +#define KEY_SBEG (KEY_OFFSET + 0x78) /* shifted beginning key */ +#define KEY_SCANCEL (KEY_OFFSET + 0x79) /* shifted cancel key */ +#define KEY_SCOMMAND (KEY_OFFSET + 0x7a) /* shifted command key */ +#define KEY_SCOPY (KEY_OFFSET + 0x7b) /* shifted copy key */ +#define KEY_SCREATE (KEY_OFFSET + 0x7c) /* shifted create key */ +#define KEY_SDC (KEY_OFFSET + 0x7d) /* shifted delete char key */ +#define KEY_SDL (KEY_OFFSET + 0x7e) /* shifted delete line key */ +#define KEY_SELECT (KEY_OFFSET + 0x7f) /* select key */ +#define KEY_SEND (KEY_OFFSET + 0x80) /* shifted end key */ +#define KEY_SEOL (KEY_OFFSET + 0x81) /* shifted clear line key */ +#define KEY_SEXIT (KEY_OFFSET + 0x82) /* shifted exit key */ +#define KEY_SFIND (KEY_OFFSET + 0x83) /* shifted find key */ +#define KEY_SHOME (KEY_OFFSET + 0x84) /* shifted home key */ +#define KEY_SIC (KEY_OFFSET + 0x85) /* shifted input key */ + +#define KEY_SLEFT (KEY_OFFSET + 0x87) /* shifted left arrow key */ +#define KEY_SMESSAGE (KEY_OFFSET + 0x88) /* shifted message key */ +#define KEY_SMOVE (KEY_OFFSET + 0x89) /* shifted move key */ +#define KEY_SNEXT (KEY_OFFSET + 0x8a) /* shifted next key */ +#define KEY_SOPTIONS (KEY_OFFSET + 0x8b) /* shifted options key */ +#define KEY_SPREVIOUS (KEY_OFFSET + 0x8c) /* shifted prev key */ +#define KEY_SPRINT (KEY_OFFSET + 0x8d) /* shifted print key */ +#define KEY_SREDO (KEY_OFFSET + 0x8e) /* shifted redo key */ +#define KEY_SREPLACE (KEY_OFFSET + 0x8f) /* shifted replace key */ +#define KEY_SRIGHT (KEY_OFFSET + 0x90) /* shifted right arrow */ +#define KEY_SRSUME (KEY_OFFSET + 0x91) /* shifted resume key */ +#define KEY_SSAVE (KEY_OFFSET + 0x92) /* shifted save key */ +#define KEY_SSUSPEND (KEY_OFFSET + 0x93) /* shifted suspend key */ +#define KEY_SUNDO (KEY_OFFSET + 0x94) /* shifted undo key */ +#define KEY_SUSPEND (KEY_OFFSET + 0x95) /* suspend key */ +#define KEY_UNDO (KEY_OFFSET + 0x96) /* undo key */ + +/* PDCurses-specific key definitions -- PC only */ + +#define ALT_0 (KEY_OFFSET + 0x97) +#define ALT_1 (KEY_OFFSET + 0x98) +#define ALT_2 (KEY_OFFSET + 0x99) +#define ALT_3 (KEY_OFFSET + 0x9a) +#define ALT_4 (KEY_OFFSET + 0x9b) +#define ALT_5 (KEY_OFFSET + 0x9c) +#define ALT_6 (KEY_OFFSET + 0x9d) +#define ALT_7 (KEY_OFFSET + 0x9e) +#define ALT_8 (KEY_OFFSET + 0x9f) +#define ALT_9 (KEY_OFFSET + 0xa0) +#define ALT_A (KEY_OFFSET + 0xa1) +#define ALT_B (KEY_OFFSET + 0xa2) +#define ALT_C (KEY_OFFSET + 0xa3) +#define ALT_D (KEY_OFFSET + 0xa4) +#define ALT_E (KEY_OFFSET + 0xa5) +#define ALT_F (KEY_OFFSET + 0xa6) +#define ALT_G (KEY_OFFSET + 0xa7) +#define ALT_H (KEY_OFFSET + 0xa8) +#define ALT_I (KEY_OFFSET + 0xa9) +#define ALT_J (KEY_OFFSET + 0xaa) +#define ALT_K (KEY_OFFSET + 0xab) +#define ALT_L (KEY_OFFSET + 0xac) +#define ALT_M (KEY_OFFSET + 0xad) +#define ALT_N (KEY_OFFSET + 0xae) +#define ALT_O (KEY_OFFSET + 0xaf) +#define ALT_P (KEY_OFFSET + 0xb0) +#define ALT_Q (KEY_OFFSET + 0xb1) +#define ALT_R (KEY_OFFSET + 0xb2) +#define ALT_S (KEY_OFFSET + 0xb3) +#define ALT_T (KEY_OFFSET + 0xb4) +#define ALT_U (KEY_OFFSET + 0xb5) +#define ALT_V (KEY_OFFSET + 0xb6) +#define ALT_W (KEY_OFFSET + 0xb7) +#define ALT_X (KEY_OFFSET + 0xb8) +#define ALT_Y (KEY_OFFSET + 0xb9) +#define ALT_Z (KEY_OFFSET + 0xba) + +#define CTL_LEFT (KEY_OFFSET + 0xbb) /* Control-Left-Arrow */ +#define CTL_RIGHT (KEY_OFFSET + 0xbc) +#define CTL_PGUP (KEY_OFFSET + 0xbd) +#define CTL_PGDN (KEY_OFFSET + 0xbe) +#define CTL_HOME (KEY_OFFSET + 0xbf) +#define CTL_END (KEY_OFFSET + 0xc0) + +#define KEY_A1 (KEY_OFFSET + 0xc1) /* upper left on Virtual keypad */ +#define KEY_A2 (KEY_OFFSET + 0xc2) /* upper middle on Virt. keypad */ +#define KEY_A3 (KEY_OFFSET + 0xc3) /* upper right on Vir. keypad */ +#define KEY_B1 (KEY_OFFSET + 0xc4) /* middle left on Virt. keypad */ +#define KEY_B2 (KEY_OFFSET + 0xc5) /* center on Virt. keypad */ +#define KEY_B3 (KEY_OFFSET + 0xc6) /* middle right on Vir. keypad */ +#define KEY_C1 (KEY_OFFSET + 0xc7) /* lower left on Virt. keypad */ +#define KEY_C2 (KEY_OFFSET + 0xc8) /* lower middle on Virt. keypad */ +#define KEY_C3 (KEY_OFFSET + 0xc9) /* lower right on Vir. keypad */ + +#define PADSLASH (KEY_OFFSET + 0xca) /* slash on keypad */ +#define PADENTER (KEY_OFFSET + 0xcb) /* enter on keypad */ +#define CTL_PADENTER (KEY_OFFSET + 0xcc) /* ctl-enter on keypad */ +#define ALT_PADENTER (KEY_OFFSET + 0xcd) /* alt-enter on keypad */ +#define PADSTOP (KEY_OFFSET + 0xce) /* stop on keypad */ +#define PADSTAR (KEY_OFFSET + 0xcf) /* star on keypad */ +#define PADMINUS (KEY_OFFSET + 0xd0) /* minus on keypad */ +#define PADPLUS (KEY_OFFSET + 0xd1) /* plus on keypad */ +#define CTL_PADSTOP (KEY_OFFSET + 0xd2) /* ctl-stop on keypad */ +#define CTL_PADCENTER (KEY_OFFSET + 0xd3) /* ctl-enter on keypad */ +#define CTL_PADPLUS (KEY_OFFSET + 0xd4) /* ctl-plus on keypad */ +#define CTL_PADMINUS (KEY_OFFSET + 0xd5) /* ctl-minus on keypad */ +#define CTL_PADSLASH (KEY_OFFSET + 0xd6) /* ctl-slash on keypad */ +#define CTL_PADSTAR (KEY_OFFSET + 0xd7) /* ctl-star on keypad */ +#define ALT_PADPLUS (KEY_OFFSET + 0xd8) /* alt-plus on keypad */ +#define ALT_PADMINUS (KEY_OFFSET + 0xd9) /* alt-minus on keypad */ +#define ALT_PADSLASH (KEY_OFFSET + 0xda) /* alt-slash on keypad */ +#define ALT_PADSTAR (KEY_OFFSET + 0xdb) /* alt-star on keypad */ +#define ALT_PADSTOP (KEY_OFFSET + 0xdc) /* alt-stop on keypad */ +#define CTL_INS (KEY_OFFSET + 0xdd) /* ctl-insert */ +#define ALT_DEL (KEY_OFFSET + 0xde) /* alt-delete */ +#define ALT_INS (KEY_OFFSET + 0xdf) /* alt-insert */ +#define CTL_UP (KEY_OFFSET + 0xe0) /* ctl-up arrow */ +#define CTL_DOWN (KEY_OFFSET + 0xe1) /* ctl-down arrow */ +#define CTL_TAB (KEY_OFFSET + 0xe2) /* ctl-tab */ +#define ALT_TAB (KEY_OFFSET + 0xe3) +#define ALT_MINUS (KEY_OFFSET + 0xe4) +#define ALT_EQUAL (KEY_OFFSET + 0xe5) +#define ALT_HOME (KEY_OFFSET + 0xe6) +#define ALT_PGUP (KEY_OFFSET + 0xe7) +#define ALT_PGDN (KEY_OFFSET + 0xe8) +#define ALT_END (KEY_OFFSET + 0xe9) +#define ALT_UP (KEY_OFFSET + 0xea) /* alt-up arrow */ +#define ALT_DOWN (KEY_OFFSET + 0xeb) /* alt-down arrow */ +#define ALT_RIGHT (KEY_OFFSET + 0xec) /* alt-right arrow */ +#define ALT_LEFT (KEY_OFFSET + 0xed) /* alt-left arrow */ +#define ALT_ENTER (KEY_OFFSET + 0xee) /* alt-enter */ +#define ALT_ESC (KEY_OFFSET + 0xef) /* alt-escape */ +#define ALT_BQUOTE (KEY_OFFSET + 0xf0) /* alt-back quote */ +#define ALT_LBRACKET (KEY_OFFSET + 0xf1) /* alt-left bracket */ +#define ALT_RBRACKET (KEY_OFFSET + 0xf2) /* alt-right bracket */ +#define ALT_SEMICOLON (KEY_OFFSET + 0xf3) /* alt-semi-colon */ +#define ALT_FQUOTE (KEY_OFFSET + 0xf4) /* alt-forward quote */ +#define ALT_COMMA (KEY_OFFSET + 0xf5) /* alt-comma */ +#define ALT_STOP (KEY_OFFSET + 0xf6) /* alt-stop */ +#define ALT_FSLASH (KEY_OFFSET + 0xf7) /* alt-forward slash */ +#define ALT_BKSP (KEY_OFFSET + 0xf8) /* alt-backspace */ +#define CTL_BKSP (KEY_OFFSET + 0xf9) /* ctl-backspace */ +#define PAD0 (KEY_OFFSET + 0xfa) /* keypad 0 */ + +#define CTL_PAD0 (KEY_OFFSET + 0xfb) /* ctl-keypad 0 */ +#define CTL_PAD1 (KEY_OFFSET + 0xfc) +#define CTL_PAD2 (KEY_OFFSET + 0xfd) +#define CTL_PAD3 (KEY_OFFSET + 0xfe) +#define CTL_PAD4 (KEY_OFFSET + 0xff) +#define CTL_PAD5 (KEY_OFFSET + 0x100) +#define CTL_PAD6 (KEY_OFFSET + 0x101) +#define CTL_PAD7 (KEY_OFFSET + 0x102) +#define CTL_PAD8 (KEY_OFFSET + 0x103) +#define CTL_PAD9 (KEY_OFFSET + 0x104) + +#define ALT_PAD0 (KEY_OFFSET + 0x105) /* alt-keypad 0 */ +#define ALT_PAD1 (KEY_OFFSET + 0x106) +#define ALT_PAD2 (KEY_OFFSET + 0x107) +#define ALT_PAD3 (KEY_OFFSET + 0x108) +#define ALT_PAD4 (KEY_OFFSET + 0x109) +#define ALT_PAD5 (KEY_OFFSET + 0x10a) +#define ALT_PAD6 (KEY_OFFSET + 0x10b) +#define ALT_PAD7 (KEY_OFFSET + 0x10c) +#define ALT_PAD8 (KEY_OFFSET + 0x10d) +#define ALT_PAD9 (KEY_OFFSET + 0x10e) + +#define CTL_DEL (KEY_OFFSET + 0x10f) /* clt-delete */ +#define ALT_BSLASH (KEY_OFFSET + 0x110) /* alt-back slash */ +#define CTL_ENTER (KEY_OFFSET + 0x111) /* ctl-enter */ + +#define SHF_PADENTER (KEY_OFFSET + 0x112) /* shift-enter on keypad */ +#define SHF_PADSLASH (KEY_OFFSET + 0x113) /* shift-slash on keypad */ +#define SHF_PADSTAR (KEY_OFFSET + 0x114) /* shift-star on keypad */ +#define SHF_PADPLUS (KEY_OFFSET + 0x115) /* shift-plus on keypad */ +#define SHF_PADMINUS (KEY_OFFSET + 0x116) /* shift-minus on keypad */ +#define SHF_UP (KEY_OFFSET + 0x117) /* shift-up on keypad */ +#define SHF_DOWN (KEY_OFFSET + 0x118) /* shift-down on keypad */ +#define SHF_IC (KEY_OFFSET + 0x119) /* shift-insert on keypad */ +#define SHF_DC (KEY_OFFSET + 0x11a) /* shift-delete on keypad */ + +#define KEY_MOUSE (KEY_OFFSET + 0x11b) /* "mouse" key */ +#define KEY_SHIFT_L (KEY_OFFSET + 0x11c) /* Left-shift */ +#define KEY_SHIFT_R (KEY_OFFSET + 0x11d) /* Right-shift */ +#define KEY_CONTROL_L (KEY_OFFSET + 0x11e) /* Left-control */ +#define KEY_CONTROL_R (KEY_OFFSET + 0x11f) /* Right-control */ +#define KEY_ALT_L (KEY_OFFSET + 0x120) /* Left-alt */ +#define KEY_ALT_R (KEY_OFFSET + 0x121) /* Right-alt */ +#define KEY_RESIZE (KEY_OFFSET + 0x122) /* Window resize */ +#define KEY_SUP (KEY_OFFSET + 0x123) /* Shifted up arrow */ +#define KEY_SDOWN (KEY_OFFSET + 0x124) /* Shifted down arrow */ + + /* The following were added 2011 Sep 14, and are */ + /* not returned by most flavors of PDCurses: */ + +#define CTL_SEMICOLON (KEY_OFFSET + 0x125) +#define CTL_EQUAL (KEY_OFFSET + 0x126) +#define CTL_COMMA (KEY_OFFSET + 0x127) +#define CTL_MINUS (KEY_OFFSET + 0x128) +#define CTL_STOP (KEY_OFFSET + 0x129) +#define CTL_FSLASH (KEY_OFFSET + 0x12a) +#define CTL_BQUOTE (KEY_OFFSET + 0x12b) + +#define KEY_APPS (KEY_OFFSET + 0x12c) +#define KEY_SAPPS (KEY_OFFSET + 0x12d) +#define CTL_APPS (KEY_OFFSET + 0x12e) +#define ALT_APPS (KEY_OFFSET + 0x12f) + +#define KEY_PAUSE (KEY_OFFSET + 0x130) +#define KEY_SPAUSE (KEY_OFFSET + 0x131) +#define CTL_PAUSE (KEY_OFFSET + 0x132) + +#define KEY_PRINTSCREEN (KEY_OFFSET + 0x133) +#define ALT_PRINTSCREEN (KEY_OFFSET + 0x134) +#define KEY_SCROLLLOCK (KEY_OFFSET + 0x135) +#define ALT_SCROLLLOCK (KEY_OFFSET + 0x136) + +#define CTL_0 (KEY_OFFSET + 0x137) +#define CTL_1 (KEY_OFFSET + 0x138) +#define CTL_2 (KEY_OFFSET + 0x139) +#define CTL_3 (KEY_OFFSET + 0x13a) +#define CTL_4 (KEY_OFFSET + 0x13b) +#define CTL_5 (KEY_OFFSET + 0x13c) +#define CTL_6 (KEY_OFFSET + 0x13d) +#define CTL_7 (KEY_OFFSET + 0x13e) +#define CTL_8 (KEY_OFFSET + 0x13f) +#define CTL_9 (KEY_OFFSET + 0x140) + +#define KEY_BROWSER_BACK (KEY_OFFSET + 0x141) +#define KEY_SBROWSER_BACK (KEY_OFFSET + 0x142) +#define KEY_CBROWSER_BACK (KEY_OFFSET + 0x143) +#define KEY_ABROWSER_BACK (KEY_OFFSET + 0x144) +#define KEY_BROWSER_FWD (KEY_OFFSET + 0x145) +#define KEY_SBROWSER_FWD (KEY_OFFSET + 0x146) +#define KEY_CBROWSER_FWD (KEY_OFFSET + 0x147) +#define KEY_ABROWSER_FWD (KEY_OFFSET + 0x148) +#define KEY_BROWSER_REF (KEY_OFFSET + 0x149) +#define KEY_SBROWSER_REF (KEY_OFFSET + 0x14A) +#define KEY_CBROWSER_REF (KEY_OFFSET + 0x14B) +#define KEY_ABROWSER_REF (KEY_OFFSET + 0x14C) +#define KEY_BROWSER_STOP (KEY_OFFSET + 0x14D) +#define KEY_SBROWSER_STOP (KEY_OFFSET + 0x14E) +#define KEY_CBROWSER_STOP (KEY_OFFSET + 0x14F) +#define KEY_ABROWSER_STOP (KEY_OFFSET + 0x150) +#define KEY_SEARCH (KEY_OFFSET + 0x151) +#define KEY_SSEARCH (KEY_OFFSET + 0x152) +#define KEY_CSEARCH (KEY_OFFSET + 0x153) +#define KEY_ASEARCH (KEY_OFFSET + 0x154) +#define KEY_FAVORITES (KEY_OFFSET + 0x155) +#define KEY_SFAVORITES (KEY_OFFSET + 0x156) +#define KEY_CFAVORITES (KEY_OFFSET + 0x157) +#define KEY_AFAVORITES (KEY_OFFSET + 0x158) +#define KEY_BROWSER_HOME (KEY_OFFSET + 0x159) +#define KEY_SBROWSER_HOME (KEY_OFFSET + 0x15A) +#define KEY_CBROWSER_HOME (KEY_OFFSET + 0x15B) +#define KEY_ABROWSER_HOME (KEY_OFFSET + 0x15C) +#define KEY_VOLUME_MUTE (KEY_OFFSET + 0x15D) +#define KEY_SVOLUME_MUTE (KEY_OFFSET + 0x15E) +#define KEY_CVOLUME_MUTE (KEY_OFFSET + 0x15F) +#define KEY_AVOLUME_MUTE (KEY_OFFSET + 0x160) +#define KEY_VOLUME_DOWN (KEY_OFFSET + 0x161) +#define KEY_SVOLUME_DOWN (KEY_OFFSET + 0x162) +#define KEY_CVOLUME_DOWN (KEY_OFFSET + 0x163) +#define KEY_AVOLUME_DOWN (KEY_OFFSET + 0x164) +#define KEY_VOLUME_UP (KEY_OFFSET + 0x165) +#define KEY_SVOLUME_UP (KEY_OFFSET + 0x166) +#define KEY_CVOLUME_UP (KEY_OFFSET + 0x167) +#define KEY_AVOLUME_UP (KEY_OFFSET + 0x168) +#define KEY_NEXT_TRACK (KEY_OFFSET + 0x169) +#define KEY_SNEXT_TRACK (KEY_OFFSET + 0x16A) +#define KEY_CNEXT_TRACK (KEY_OFFSET + 0x16B) +#define KEY_ANEXT_TRACK (KEY_OFFSET + 0x16C) +#define KEY_PREV_TRACK (KEY_OFFSET + 0x16D) +#define KEY_SPREV_TRACK (KEY_OFFSET + 0x16E) +#define KEY_CPREV_TRACK (KEY_OFFSET + 0x16F) +#define KEY_APREV_TRACK (KEY_OFFSET + 0x170) +#define KEY_MEDIA_STOP (KEY_OFFSET + 0x171) +#define KEY_SMEDIA_STOP (KEY_OFFSET + 0x172) +#define KEY_CMEDIA_STOP (KEY_OFFSET + 0x173) +#define KEY_AMEDIA_STOP (KEY_OFFSET + 0x174) +#define KEY_PLAY_PAUSE (KEY_OFFSET + 0x175) +#define KEY_SPLAY_PAUSE (KEY_OFFSET + 0x176) +#define KEY_CPLAY_PAUSE (KEY_OFFSET + 0x177) +#define KEY_APLAY_PAUSE (KEY_OFFSET + 0x178) +#define KEY_LAUNCH_MAIL (KEY_OFFSET + 0x179) +#define KEY_SLAUNCH_MAIL (KEY_OFFSET + 0x17A) +#define KEY_CLAUNCH_MAIL (KEY_OFFSET + 0x17B) +#define KEY_ALAUNCH_MAIL (KEY_OFFSET + 0x17C) +#define KEY_MEDIA_SELECT (KEY_OFFSET + 0x17D) +#define KEY_SMEDIA_SELECT (KEY_OFFSET + 0x17E) +#define KEY_CMEDIA_SELECT (KEY_OFFSET + 0x17F) +#define KEY_AMEDIA_SELECT (KEY_OFFSET + 0x180) +#define KEY_LAUNCH_APP1 (KEY_OFFSET + 0x181) +#define KEY_SLAUNCH_APP1 (KEY_OFFSET + 0x182) +#define KEY_CLAUNCH_APP1 (KEY_OFFSET + 0x183) +#define KEY_ALAUNCH_APP1 (KEY_OFFSET + 0x184) +#define KEY_LAUNCH_APP2 (KEY_OFFSET + 0x185) +#define KEY_SLAUNCH_APP2 (KEY_OFFSET + 0x186) +#define KEY_CLAUNCH_APP2 (KEY_OFFSET + 0x187) +#define KEY_ALAUNCH_APP2 (KEY_OFFSET + 0x188) + +#define KEY_MIN KEY_BREAK /* Minimum curses key value */ +#define KEY_MAX KEY_ALAUNCH_APP2 /* Maximum curses key */ + +#define KEY_F(n) (KEY_F0 + (n)) + +/*---------------------------------------------------------------------- + * + * PDCurses Function Declarations + * + */ + +/* Standard */ + +PDCEX int addch(const chtype); +PDCEX int addchnstr(const chtype *, int); +PDCEX int addchstr(const chtype *); +PDCEX int addnstr(const char *, int); +PDCEX int addstr(const char *); +PDCEX int attroff(chtype); +PDCEX int attron(chtype); +PDCEX int attrset(chtype); +PDCEX int attr_get(attr_t *, short *, void *); +PDCEX int attr_off(attr_t, void *); +PDCEX int attr_on(attr_t, void *); +PDCEX int attr_set(attr_t, short, void *); +PDCEX int baudrate(void); +PDCEX int beep(void); +PDCEX int bkgd(chtype); +PDCEX void bkgdset(chtype); +PDCEX int border(chtype, chtype, chtype, chtype, + chtype, chtype, chtype, chtype); +PDCEX int box(WINDOW *, chtype, chtype); +PDCEX bool can_change_color(void); +PDCEX int cbreak(void); +PDCEX int chgat(int, attr_t, short, const void *); +PDCEX int clearok(WINDOW *, bool); +PDCEX int clear(void); +PDCEX int clrtobot(void); +PDCEX int clrtoeol(void); +PDCEX int color_content(short, short *, short *, short *); +PDCEX int color_set(short, void *); +PDCEX int copywin(const WINDOW *, WINDOW *, int, int, int, + int, int, int, int); +PDCEX int curs_set(int); +PDCEX int def_prog_mode(void); +PDCEX int def_shell_mode(void); +PDCEX int delay_output(int); +PDCEX int delch(void); +PDCEX int deleteln(void); +PDCEX void delscreen(SCREEN *); +PDCEX int delwin(WINDOW *); +PDCEX WINDOW *derwin(WINDOW *, int, int, int, int); +PDCEX int doupdate(void); +PDCEX WINDOW *dupwin(WINDOW *); +PDCEX int echochar(const chtype); +PDCEX int echo(void); +PDCEX int endwin(void); +PDCEX char erasechar(void); +PDCEX int erase(void); +PDCEX void filter(void); +PDCEX int flash(void); +PDCEX int flushinp(void); +PDCEX chtype getbkgd(WINDOW *); +PDCEX int getnstr(char *, int); +PDCEX int getstr(char *); +PDCEX WINDOW *getwin(FILE *); +PDCEX int halfdelay(int); +PDCEX bool has_colors(void); +PDCEX bool has_ic(void); +PDCEX bool has_il(void); +PDCEX int hline(chtype, int); +PDCEX void idcok(WINDOW *, bool); +PDCEX int idlok(WINDOW *, bool); +PDCEX void immedok(WINDOW *, bool); +PDCEX int inchnstr(chtype *, int); +PDCEX int inchstr(chtype *); +PDCEX chtype inch(void); +PDCEX int init_color(short, short, short, short); +PDCEX int init_pair(short, short, short); +PDCEX WINDOW *initscr(void); +PDCEX int innstr(char *, int); +PDCEX int insch(chtype); +PDCEX int insdelln(int); +PDCEX int insertln(void); +PDCEX int insnstr(const char *, int); +PDCEX int insstr(const char *); +PDCEX int instr(char *); +PDCEX int intrflush(WINDOW *, bool); +PDCEX bool isendwin(void); +PDCEX bool is_linetouched(WINDOW *, int); +PDCEX bool is_wintouched(WINDOW *); +PDCEX char *keyname(int); +PDCEX int keypad(WINDOW *, bool); +PDCEX char killchar(void); +PDCEX int leaveok(WINDOW *, bool); +PDCEX char *longname(void); +PDCEX int meta(WINDOW *, bool); +PDCEX int move(int, int); +PDCEX int mvaddch(int, int, const chtype); +PDCEX int mvaddchnstr(int, int, const chtype *, int); +PDCEX int mvaddchstr(int, int, const chtype *); +PDCEX int mvaddnstr(int, int, const char *, int); +PDCEX int mvaddstr(int, int, const char *); +PDCEX int mvchgat(int, int, int, attr_t, short, const void *); +PDCEX int mvcur(int, int, int, int); +PDCEX int mvdelch(int, int); +PDCEX int mvderwin(WINDOW *, int, int); +PDCEX int mvgetch(int, int); +PDCEX int mvgetnstr(int, int, char *, int); +PDCEX int mvgetstr(int, int, char *); +PDCEX int mvhline(int, int, chtype, int); +PDCEX chtype mvinch(int, int); +PDCEX int mvinchnstr(int, int, chtype *, int); +PDCEX int mvinchstr(int, int, chtype *); +PDCEX int mvinnstr(int, int, char *, int); +PDCEX int mvinsch(int, int, chtype); +PDCEX int mvinsnstr(int, int, const char *, int); +PDCEX int mvinsstr(int, int, const char *); +PDCEX int mvinstr(int, int, char *); +PDCEX int mvprintw(int, int, const char *, ...); +PDCEX int mvscanw(int, int, const char *, ...); +PDCEX int mvvline(int, int, chtype, int); +PDCEX int mvwaddchnstr(WINDOW *, int, int, const chtype *, int); +PDCEX int mvwaddchstr(WINDOW *, int, int, const chtype *); +PDCEX int mvwaddch(WINDOW *, int, int, const chtype); +PDCEX int mvwaddnstr(WINDOW *, int, int, const char *, int); +PDCEX int mvwaddstr(WINDOW *, int, int, const char *); +PDCEX int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *); +PDCEX int mvwdelch(WINDOW *, int, int); +PDCEX int mvwgetch(WINDOW *, int, int); +PDCEX int mvwgetnstr(WINDOW *, int, int, char *, int); +PDCEX int mvwgetstr(WINDOW *, int, int, char *); +PDCEX int mvwhline(WINDOW *, int, int, chtype, int); +PDCEX int mvwinchnstr(WINDOW *, int, int, chtype *, int); +PDCEX int mvwinchstr(WINDOW *, int, int, chtype *); +PDCEX chtype mvwinch(WINDOW *, int, int); +PDCEX int mvwinnstr(WINDOW *, int, int, char *, int); +PDCEX int mvwinsch(WINDOW *, int, int, chtype); +PDCEX int mvwinsnstr(WINDOW *, int, int, const char *, int); +PDCEX int mvwinsstr(WINDOW *, int, int, const char *); +PDCEX int mvwinstr(WINDOW *, int, int, char *); +PDCEX int mvwin(WINDOW *, int, int); +PDCEX int mvwprintw(WINDOW *, int, int, const char *, ...); +PDCEX int mvwscanw(WINDOW *, int, int, const char *, ...); +PDCEX int mvwvline(WINDOW *, int, int, chtype, int); +PDCEX int napms(int); +PDCEX WINDOW *newpad(int, int); +PDCEX SCREEN *newterm(const char *, FILE *, FILE *); +PDCEX WINDOW *newwin(int, int, int, int); +PDCEX int nl(void); +PDCEX int nocbreak(void); +PDCEX int nodelay(WINDOW *, bool); +PDCEX int noecho(void); +PDCEX int nonl(void); +PDCEX void noqiflush(void); +PDCEX int noraw(void); +PDCEX int notimeout(WINDOW *, bool); +PDCEX int overlay(const WINDOW *, WINDOW *); +PDCEX int overwrite(const WINDOW *, WINDOW *); +PDCEX int pair_content(short, short *, short *); +PDCEX int pechochar(WINDOW *, chtype); +PDCEX int pnoutrefresh(WINDOW *, int, int, int, int, int, int); +PDCEX int prefresh(WINDOW *, int, int, int, int, int, int); +PDCEX int printw(const char *, ...); +PDCEX int putwin(WINDOW *, FILE *); +PDCEX void qiflush(void); +PDCEX int raw(void); +PDCEX int redrawwin(WINDOW *); +PDCEX int refresh(void); +PDCEX int reset_prog_mode(void); +PDCEX int reset_shell_mode(void); +PDCEX int resetty(void); +PDCEX int ripoffline(int, int (*)(WINDOW *, int)); +PDCEX int savetty(void); +PDCEX int scanw(const char *, ...); +PDCEX int scr_dump(const char *); +PDCEX int scr_init(const char *); +PDCEX int scr_restore(const char *); +PDCEX int scr_set(const char *); +PDCEX int scrl(int); +PDCEX int scroll(WINDOW *); +PDCEX int scrollok(WINDOW *, bool); +PDCEX SCREEN *set_term(SCREEN *); +PDCEX int setscrreg(int, int); +PDCEX int slk_attroff(const chtype); +PDCEX int slk_attr_off(const attr_t, void *); +PDCEX int slk_attron(const chtype); +PDCEX int slk_attr_on(const attr_t, void *); +PDCEX int slk_attrset(const chtype); +PDCEX int slk_attr_set(const attr_t, short, void *); +PDCEX int slk_clear(void); +PDCEX int slk_color(short); +PDCEX int slk_init(int); +PDCEX char *slk_label(int); +PDCEX int slk_noutrefresh(void); +PDCEX int slk_refresh(void); +PDCEX int slk_restore(void); +PDCEX int slk_set(int, const char *, int); +PDCEX int slk_touch(void); +PDCEX int standend(void); +PDCEX int standout(void); +PDCEX int start_color(void); +PDCEX WINDOW *subpad(WINDOW *, int, int, int, int); +PDCEX WINDOW *subwin(WINDOW *, int, int, int, int); +PDCEX int syncok(WINDOW *, bool); +PDCEX chtype termattrs(void); +PDCEX attr_t term_attrs(void); +PDCEX char *termname(void); +PDCEX void timeout(int); +PDCEX int touchline(WINDOW *, int, int); +PDCEX int touchwin(WINDOW *); +PDCEX int typeahead(int); +PDCEX int untouchwin(WINDOW *); +PDCEX void use_env(bool); +PDCEX int vidattr(chtype); +PDCEX int vid_attr(attr_t, short, void *); +PDCEX int vidputs(chtype, int (*)(int)); +PDCEX int vid_puts(attr_t, short, void *, int (*)(int)); +PDCEX int vline(chtype, int); +PDCEX int vw_printw(WINDOW *, const char *, va_list); +PDCEX int vwprintw(WINDOW *, const char *, va_list); +PDCEX int vw_scanw(WINDOW *, const char *, va_list); +PDCEX int vwscanw(WINDOW *, const char *, va_list); +PDCEX int waddchnstr(WINDOW *, const chtype *, int); +PDCEX int waddchstr(WINDOW *, const chtype *); +PDCEX int waddch(WINDOW *, const chtype); +PDCEX int waddnstr(WINDOW *, const char *, int); +PDCEX int waddstr(WINDOW *, const char *); +PDCEX int wattroff(WINDOW *, chtype); +PDCEX int wattron(WINDOW *, chtype); +PDCEX int wattrset(WINDOW *, chtype); +PDCEX int wattr_get(WINDOW *, attr_t *, short *, void *); +PDCEX int wattr_off(WINDOW *, attr_t, void *); +PDCEX int wattr_on(WINDOW *, attr_t, void *); +PDCEX int wattr_set(WINDOW *, attr_t, short, void *); +PDCEX void wbkgdset(WINDOW *, chtype); +PDCEX int wbkgd(WINDOW *, chtype); +PDCEX int wborder(WINDOW *, chtype, chtype, chtype, chtype, + chtype, chtype, chtype, chtype); +PDCEX int wchgat(WINDOW *, int, attr_t, short, const void *); +PDCEX int wclear(WINDOW *); +PDCEX int wclrtobot(WINDOW *); +PDCEX int wclrtoeol(WINDOW *); +PDCEX int wcolor_set(WINDOW *, short, void *); +PDCEX void wcursyncup(WINDOW *); +PDCEX int wdelch(WINDOW *); +PDCEX int wdeleteln(WINDOW *); +PDCEX int wechochar(WINDOW *, const chtype); +PDCEX int werase(WINDOW *); +PDCEX int wgetch(WINDOW *); +PDCEX int wgetnstr(WINDOW *, char *, int); +PDCEX int wgetstr(WINDOW *, char *); +PDCEX int whline(WINDOW *, chtype, int); +PDCEX int winchnstr(WINDOW *, chtype *, int); +PDCEX int winchstr(WINDOW *, chtype *); +PDCEX chtype winch(WINDOW *); +PDCEX int winnstr(WINDOW *, char *, int); +PDCEX int winsch(WINDOW *, chtype); +PDCEX int winsdelln(WINDOW *, int); +PDCEX int winsertln(WINDOW *); +PDCEX int winsnstr(WINDOW *, const char *, int); +PDCEX int winsstr(WINDOW *, const char *); +PDCEX int winstr(WINDOW *, char *); +PDCEX int wmove(WINDOW *, int, int); +PDCEX int wnoutrefresh(WINDOW *); +PDCEX int wprintw(WINDOW *, const char *, ...); +PDCEX int wredrawln(WINDOW *, int, int); +PDCEX int wrefresh(WINDOW *); +PDCEX int wscanw(WINDOW *, const char *, ...); +PDCEX int wscrl(WINDOW *, int); +PDCEX int wsetscrreg(WINDOW *, int, int); +PDCEX int wstandend(WINDOW *); +PDCEX int wstandout(WINDOW *); +PDCEX void wsyncdown(WINDOW *); +PDCEX void wsyncup(WINDOW *); +PDCEX void wtimeout(WINDOW *, int); +PDCEX int wtouchln(WINDOW *, int, int, int); +PDCEX int wvline(WINDOW *, chtype, int); + +/* Wide-character functions */ + +#ifdef PDC_WIDE +PDCEX int addnwstr(const wchar_t *, int); +PDCEX int addwstr(const wchar_t *); +PDCEX int add_wch(const cchar_t *); +PDCEX int add_wchnstr(const cchar_t *, int); +PDCEX int add_wchstr(const cchar_t *); +PDCEX int border_set(const cchar_t *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *); +PDCEX int box_set(WINDOW *, const cchar_t *, const cchar_t *); +PDCEX int echo_wchar(const cchar_t *); +PDCEX int erasewchar(wchar_t *); +PDCEX int getbkgrnd(cchar_t *); +PDCEX int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *); +PDCEX int getn_wstr(wint_t *, int); +PDCEX int get_wch(wint_t *); +PDCEX int get_wstr(wint_t *); +PDCEX int hline_set(const cchar_t *, int); +PDCEX int innwstr(wchar_t *, int); +PDCEX int ins_nwstr(const wchar_t *, int); +PDCEX int ins_wch(const cchar_t *); +PDCEX int ins_wstr(const wchar_t *); +PDCEX int inwstr(wchar_t *); +PDCEX int in_wch(cchar_t *); +PDCEX int in_wchnstr(cchar_t *, int); +PDCEX int in_wchstr(cchar_t *); +PDCEX char *key_name(wchar_t); +PDCEX int killwchar(wchar_t *); +PDCEX int mvaddnwstr(int, int, const wchar_t *, int); +PDCEX int mvaddwstr(int, int, const wchar_t *); +PDCEX int mvadd_wch(int, int, const cchar_t *); +PDCEX int mvadd_wchnstr(int, int, const cchar_t *, int); +PDCEX int mvadd_wchstr(int, int, const cchar_t *); +PDCEX int mvgetn_wstr(int, int, wint_t *, int); +PDCEX int mvget_wch(int, int, wint_t *); +PDCEX int mvget_wstr(int, int, wint_t *); +PDCEX int mvhline_set(int, int, const cchar_t *, int); +PDCEX int mvinnwstr(int, int, wchar_t *, int); +PDCEX int mvins_nwstr(int, int, const wchar_t *, int); +PDCEX int mvins_wch(int, int, const cchar_t *); +PDCEX int mvins_wstr(int, int, const wchar_t *); +PDCEX int mvinwstr(int, int, wchar_t *); +PDCEX int mvin_wch(int, int, cchar_t *); +PDCEX int mvin_wchnstr(int, int, cchar_t *, int); +PDCEX int mvin_wchstr(int, int, cchar_t *); +PDCEX int mvvline_set(int, int, const cchar_t *, int); +PDCEX int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int); +PDCEX int mvwaddwstr(WINDOW *, int, int, const wchar_t *); +PDCEX int mvwadd_wch(WINDOW *, int, int, const cchar_t *); +PDCEX int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int); +PDCEX int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *); +PDCEX int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int); +PDCEX int mvwget_wch(WINDOW *, int, int, wint_t *); +PDCEX int mvwget_wstr(WINDOW *, int, int, wint_t *); +PDCEX int mvwhline_set(WINDOW *, int, int, const cchar_t *, int); +PDCEX int mvwinnwstr(WINDOW *, int, int, wchar_t *, int); +PDCEX int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int); +PDCEX int mvwins_wch(WINDOW *, int, int, const cchar_t *); +PDCEX int mvwins_wstr(WINDOW *, int, int, const wchar_t *); +PDCEX int mvwin_wch(WINDOW *, int, int, cchar_t *); +PDCEX int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int); +PDCEX int mvwin_wchstr(WINDOW *, int, int, cchar_t *); +PDCEX int mvwinwstr(WINDOW *, int, int, wchar_t *); +PDCEX int mvwvline_set(WINDOW *, int, int, const cchar_t *, int); +PDCEX int pecho_wchar(WINDOW *, const cchar_t*); +PDCEX int setcchar(cchar_t*, const wchar_t*, const attr_t, + short, const void*); +PDCEX int slk_wset(int, const wchar_t *, int); +PDCEX int unget_wch(const wchar_t); +PDCEX int vline_set(const cchar_t *, int); +PDCEX int waddnwstr(WINDOW *, const wchar_t *, int); +PDCEX int waddwstr(WINDOW *, const wchar_t *); +PDCEX int wadd_wch(WINDOW *, const cchar_t *); +PDCEX int wadd_wchnstr(WINDOW *, const cchar_t *, int); +PDCEX int wadd_wchstr(WINDOW *, const cchar_t *); +PDCEX int wbkgrnd(WINDOW *, const cchar_t *); +PDCEX void wbkgrndset(WINDOW *, const cchar_t *); +PDCEX int wborder_set(WINDOW *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *, const cchar_t *, + const cchar_t *, const cchar_t *, const cchar_t *); +PDCEX int wecho_wchar(WINDOW *, const cchar_t *); +PDCEX int wgetbkgrnd(WINDOW *, cchar_t *); +PDCEX int wgetn_wstr(WINDOW *, wint_t *, int); +PDCEX int wget_wch(WINDOW *, wint_t *); +PDCEX int wget_wstr(WINDOW *, wint_t *); +PDCEX int whline_set(WINDOW *, const cchar_t *, int); +PDCEX int winnwstr(WINDOW *, wchar_t *, int); +PDCEX int wins_nwstr(WINDOW *, const wchar_t *, int); +PDCEX int wins_wch(WINDOW *, const cchar_t *); +PDCEX int wins_wstr(WINDOW *, const wchar_t *); +PDCEX int winwstr(WINDOW *, wchar_t *); +PDCEX int win_wch(WINDOW *, cchar_t *); +PDCEX int win_wchnstr(WINDOW *, cchar_t *, int); +PDCEX int win_wchstr(WINDOW *, cchar_t *); +PDCEX wchar_t *wunctrl(cchar_t *); +PDCEX int wvline_set(WINDOW *, const cchar_t *, int); +#endif + +/* Quasi-standard */ + +PDCEX chtype getattrs(WINDOW *); +PDCEX int getbegx(WINDOW *); +PDCEX int getbegy(WINDOW *); +PDCEX int getmaxx(WINDOW *); +PDCEX int getmaxy(WINDOW *); +PDCEX int getparx(WINDOW *); +PDCEX int getpary(WINDOW *); +PDCEX int getcurx(WINDOW *); +PDCEX int getcury(WINDOW *); +PDCEX void traceoff(void); +PDCEX void traceon(void); +PDCEX char *unctrl(chtype); + +PDCEX int crmode(void); +PDCEX int nocrmode(void); +PDCEX int draino(int); +PDCEX int resetterm(void); +PDCEX int fixterm(void); +PDCEX int saveterm(void); +PDCEX void setsyx(int, int); + +PDCEX int mouse_set(unsigned long); +PDCEX int mouse_on(unsigned long); +PDCEX int mouse_off(unsigned long); +PDCEX int request_mouse_pos(void); +PDCEX int map_button(unsigned long); +PDCEX void wmouse_position(WINDOW *, int *, int *); +PDCEX unsigned long getmouse(void); +PDCEX unsigned long getbmap(void); + +/* ncurses */ + +PDCEX int assume_default_colors(int, int); +PDCEX const char *curses_version(void); +PDCEX bool has_key(int); +PDCEX int use_default_colors(void); +PDCEX int wresize(WINDOW *, int, int); + +PDCEX bool has_mouse(void); +PDCEX int mouseinterval(int); +PDCEX mmask_t mousemask(mmask_t, mmask_t *); +PDCEX bool mouse_trafo(int *, int *, bool); +PDCEX int nc_getmouse(MEVENT *); +PDCEX int ungetmouse(MEVENT *); +PDCEX bool wenclose(const WINDOW *, int, int); +PDCEX bool wmouse_trafo(const WINDOW *, int *, int *, bool); + +/* PDCurses */ + +PDCEX int addrawch(chtype); +PDCEX int insrawch(chtype); +PDCEX bool is_termresized(void); +PDCEX int mvaddrawch(int, int, chtype); +PDCEX int mvdeleteln(int, int); +PDCEX int mvinsertln(int, int); +PDCEX int mvinsrawch(int, int, chtype); +PDCEX int mvwaddrawch(WINDOW *, int, int, chtype); +PDCEX int mvwdeleteln(WINDOW *, int, int); +PDCEX int mvwinsertln(WINDOW *, int, int); +PDCEX int mvwinsrawch(WINDOW *, int, int, chtype); +PDCEX int raw_output(bool); +PDCEX int resize_term(int, int); +PDCEX WINDOW *resize_window(WINDOW *, int, int); +PDCEX int waddrawch(WINDOW *, chtype); +PDCEX int winsrawch(WINDOW *, chtype); +PDCEX char wordchar(void); + +#ifdef PDC_WIDE +PDCEX wchar_t *slk_wlabel(int); +#endif + +PDCEX void PDC_debug(const char *, ...); +PDCEX int PDC_ungetch(int); +PDCEX int PDC_set_blink(bool); +PDCEX int PDC_set_line_color(short); +PDCEX void PDC_set_title(const char *); + +PDCEX int PDC_clearclipboard(void); +PDCEX int PDC_freeclipboard(char *); +PDCEX int PDC_getclipboard(char **, long *); +PDCEX int PDC_setclipboard(const char *, long); + +PDCEX unsigned long PDC_get_input_fd(void); +PDCEX unsigned long PDC_get_key_modifiers(void); +PDCEX int PDC_return_key_modifiers(bool); +PDCEX int PDC_save_key_modifiers(bool); +PDCEX void PDC_set_resize_limits( const int new_min_lines, + const int new_max_lines, + const int new_min_cols, + const int new_max_cols); + +#define FUNCTION_KEY_SHUT_DOWN 0 +#define FUNCTION_KEY_PASTE 1 +#define FUNCTION_KEY_ENLARGE_FONT 2 +#define FUNCTION_KEY_SHRINK_FONT 3 +#define FUNCTION_KEY_CHOOSE_FONT 4 +#define FUNCTION_KEY_ABORT 5 +#define PDC_MAX_FUNCTION_KEYS 6 + +PDCEX int PDC_set_function_key( const unsigned function, + const int new_key); + +PDCEX WINDOW *Xinitscr(int, char **); +#ifdef XCURSES +PDCEX void XCursesExit(void); +PDCEX int sb_init(void); +PDCEX int sb_set_horz(int, int, int); +PDCEX int sb_set_vert(int, int, int); +PDCEX int sb_get_horz(int *, int *, int *); +PDCEX int sb_get_vert(int *, int *, int *); +PDCEX int sb_refresh(void); + #endif + +/*** Functions defined as macros ***/ + +/* getch() and ungetch() conflict with some DOS libraries */ + +#define getch() wgetch(stdscr) +#define ungetch(ch) PDC_ungetch(ch) + +#define COLOR_PAIR(n) (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR) +#define PAIR_NUMBER(n) ((((n) & A_COLOR) >> PDC_COLOR_SHIFT) & 0xff) + +/* These will _only_ work as macros */ + +#define getbegyx(w, y, x) (y = getbegy(w), x = getbegx(w)) +#define getmaxyx(w, y, x) (y = getmaxy(w), x = getmaxx(w)) +#define getparyx(w, y, x) (y = getpary(w), x = getparx(w)) +#define getyx(w, y, x) (y = getcury(w), x = getcurx(w)) + +#define getsyx(y, x) { if (curscr->_leaveit) (y)=(x)=-1; \ + else getyx(curscr,(y),(x)); } + +#ifdef NCURSES_MOUSE_VERSION +# define getmouse(x) nc_getmouse(x) +#endif + +/* return codes from PDC_getclipboard() and PDC_setclipboard() calls */ + +#define PDC_CLIP_SUCCESS 0 +#define PDC_CLIP_ACCESS_ERROR 1 +#define PDC_CLIP_EMPTY 2 +#define PDC_CLIP_MEMORY_ERROR 3 + +/* PDCurses key modifier masks */ + +#define PDC_KEY_MODIFIER_SHIFT 1 +#define PDC_KEY_MODIFIER_CONTROL 2 +#define PDC_KEY_MODIFIER_ALT 4 +#define PDC_KEY_MODIFIER_NUMLOCK 8 +#define PDC_KEY_MODIFIER_REPEAT 16 + +#ifdef __cplusplus +# undef bool +} +#endif + +#endif /* __PDCURSES__ */ diff --git a/3rd-party/PDCurses/curspriv.h b/3rd-party/PDCurses/curspriv.h new file mode 100644 index 0000000..741526c --- /dev/null +++ b/3rd-party/PDCurses/curspriv.h @@ -0,0 +1,135 @@ +/* Public Domain Curses */ + +/* Private definitions and declarations for use within PDCurses. + These should generally not be referenced by applications. */ + +#ifndef __CURSES_INTERNALS__ +#define __CURSES_INTERNALS__ 1 + +#define CURSES_LIBRARY +#include + +#if defined(__TURBOC__) || defined(__EMX__) || defined(__DJGPP__) || \ + defined(__CYGWIN__) || defined(__MINGW32__) || \ + defined(__WATCOMC__) || defined(__PACIFIC__) +# ifndef HAVE_VSSCANF +# define HAVE_VSSCANF /* have vsscanf() */ +# endif +#endif + +#if defined(__CYGWIN__) || defined(__MINGW32__) || \ + defined(__LCC__) || defined(__WATCOMC__) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF /* have vsnprintf() */ +# endif +#endif + +#if defined(_MSC_VER) && defined(_WIN32) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE 1 /* kill nonsense warnings */ +#endif + +/*----------------------------------------------------------------------*/ + +typedef struct /* structure for ripped off lines */ +{ + int line; + int (*init)(WINDOW *, int); +} RIPPEDOFFLINE; + +/* Window properties */ + +#define _SUBWIN 0x01 /* window is a subwindow */ +#define _PAD 0x10 /* X/Open Pad. */ +#define _SUBPAD 0x20 /* X/Open subpad. */ + +/* Miscellaneous */ + +#define _NO_CHANGE -1 /* flags line edge unchanged */ + +#define _ECHAR 0x08 /* Erase char (^H) */ +#define _DWCHAR 0x17 /* Delete Word char (^W) */ +#define _DLCHAR 0x15 /* Delete Line char (^U) */ + +extern WINDOW *pdc_lastscr; +extern FILE *pdc_dbfp; /* tracing file pointer (NULL = off) */ +extern bool pdc_color_started; +extern unsigned long pdc_key_modifiers; +extern MOUSE_STATUS pdc_mouse_status; + +/*----------------------------------------------------------------------*/ + +/* Platform implementation functions */ + +void PDC_beep(void); +bool PDC_can_change_color(void); +int PDC_color_content(short, short *, short *, short *); +bool PDC_check_key(void); +int PDC_curs_set(int); +void PDC_flushinp(void); +int PDC_get_columns(void); +int PDC_get_cursor_mode(void); +int PDC_get_key(void); +int PDC_get_rows(void); +void PDC_gotoyx(int, int); +bool PDC_has_mouse(void); +int PDC_init_color(short, short, short, short); +void PDC_init_pair(short, short, short); +int PDC_modifiers_set(void); +int PDC_mouse_set(void); +void PDC_napms(int); +int PDC_pair_content(short, short *, short *); +void PDC_reset_prog_mode(void); +void PDC_reset_shell_mode(void); +int PDC_resize_screen(int, int); +void PDC_restore_screen_mode(int); +void PDC_save_screen_mode(int); +void PDC_scr_close(void); +void PDC_scr_free(void); +int PDC_scr_open(int, char **); +void PDC_set_keyboard_binary(bool); +void PDC_transform_line(int, int, int, const chtype *); +const char *PDC_sysname(void); + +/* Internal cross-module functions */ + +void PDC_init_atrtab(void); +WINDOW *PDC_makelines(WINDOW *); +WINDOW *PDC_makenew(int, int, int, int); +int PDC_mouse_in_slk(int, int); +void PDC_slk_free(void); +void PDC_slk_initialize(void); +void PDC_sync(WINDOW *); + +#ifdef PDC_WIDE +int PDC_mbtowc(wchar_t *, const char *, size_t); +size_t PDC_mbstowcs(wchar_t *, const char *, size_t); +size_t PDC_wcstombs(char *, const wchar_t *, size_t); +#endif + +#ifdef PDCDEBUG +# define PDC_LOG(x) if (pdc_dbfp) PDC_debug x +#else +# define PDC_LOG(x) +#endif + +/* Internal macros for attributes */ + +#ifdef CHTYPE_LONG +# define PDC_COLOR_PAIRS 256 +#else +# define PDC_COLOR_PAIRS 32 +#endif + +#ifndef max +# define max(a,b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef min +# define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +#define DIVROUND(num, divisor) (((num) + ((divisor) >> 1)) / (divisor)) + +#define PDC_CLICK_PERIOD 150 /* time to wait for a click, if + not set by mouseinterval() */ + +#endif /* __CURSES_INTERNALS__*/ diff --git a/3rd-party/PDCurses/demos/README.md b/3rd-party/PDCurses/demos/README.md new file mode 100644 index 0000000..8f4b5c6 --- /dev/null +++ b/3rd-party/PDCurses/demos/README.md @@ -0,0 +1,25 @@ +PDCurses Demos +============== + +This directory contains demonstration programs to show and test the +capabilities of curses libraries. Some of them predate PDCurses, +PCcurses or even pcurses/ncurses. Although some PDCurses-specific code +has been added, all programs remain portable to other implementations +(at a minimum, to ncurses). + + +Building +-------- + +The demos are built by the platform-specific makefiles, in the platform +directories. Alternatively, you can build them manually, individually, +and link with any curses library; e.g., "cc -lcurses -orain rain.c". +There are no dependencies besides curses and the standard C library, and +no configuration is needed. + + +Distribution Status +------------------- + +Public Domain, except for rain.c and worm.c, which are under the ncurses +license (MIT-like). diff --git a/3rd-party/PDCurses/demos/firework.c b/3rd-party/PDCurses/demos/firework.c new file mode 100644 index 0000000..8880627 --- /dev/null +++ b/3rd-party/PDCurses/demos/firework.c @@ -0,0 +1,144 @@ +#include +#include +#include +#include +#include +#include +#include + +#define DELAYSIZE 100 + +void myrefresh(void); +void get_color(void); +void explode(int, int); + +short color_table[] = +{ + COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, + COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE +}; + +int main(int argc, char **argv) +{ + int i, start, end, row, diff, flag, direction, seed; + +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif + nodelay(stdscr, TRUE); + noecho(); + + if (has_colors()) + start_color(); + + for (i = 0; i < 8; i++) + init_pair( (short)i, color_table[i], COLOR_BLACK); + + seed = (int)time((time_t *)0); + srand(seed); + flag = 0; + + while (getch() == ERR) /* loop until a key is hit */ + { + do { + start = rand() % (COLS - 5) + 2; + end = rand() % (COLS - 5) + 2; + direction = (start > end) ? -1 : 1; + diff = abs(start - end); + + } while (diff < 2 || diff >= LINES - 2); + + attrset(A_NORMAL); + + for (row = 0; row < diff; row++) + { + mvaddstr(LINES - row, row * direction + start, + (direction < 0) ? "\\" : "/"); + + if (flag++) + { + myrefresh(); + erase(); + flag = 0; + } + } + + if (flag++) + { + myrefresh(); + flag = 0; + } + + explode(LINES - row, diff * direction + start); + erase(); + myrefresh(); + } + + endwin(); + + return 0; +} + +void explode(int row, int col) +{ + erase(); + mvaddstr(row, col, "-"); + myrefresh(); + + --col; + + get_color(); + mvaddstr(row - 1, col, " - "); + mvaddstr(row, col, "-+-"); + mvaddstr(row + 1, col, " - "); + myrefresh(); + + --col; + + get_color(); + mvaddstr(row - 2, col, " --- "); + mvaddstr(row - 1, col, "-+++-"); + mvaddstr(row, col, "-+#+-"); + mvaddstr(row + 1, col, "-+++-"); + mvaddstr(row + 2, col, " --- "); + myrefresh(); + + get_color(); + mvaddstr(row - 2, col, " +++ "); + mvaddstr(row - 1, col, "++#++"); + mvaddstr(row, col, "+# #+"); + mvaddstr(row + 1, col, "++#++"); + mvaddstr(row + 2, col, " +++ "); + myrefresh(); + + get_color(); + mvaddstr(row - 2, col, " # "); + mvaddstr(row - 1, col, "## ##"); + mvaddstr(row, col, "# #"); + mvaddstr(row + 1, col, "## ##"); + mvaddstr(row + 2, col, " # "); + myrefresh(); + + get_color(); + mvaddstr(row - 2, col, " # # "); + mvaddstr(row - 1, col, "# #"); + mvaddstr(row, col, " "); + mvaddstr(row + 1, col, "# #"); + mvaddstr(row + 2, col, " # # "); + myrefresh(); +} + +void myrefresh(void) +{ + napms(DELAYSIZE); + move(LINES - 1, COLS - 1); + refresh(); +} + +void get_color(void) +{ + chtype bold = (rand() % 2) ? A_BOLD : A_NORMAL; + attrset(COLOR_PAIR(rand() % 8) | bold); +} diff --git a/3rd-party/PDCurses/demos/newtest.c b/3rd-party/PDCurses/demos/newtest.c new file mode 100644 index 0000000..74fe9fd --- /dev/null +++ b/3rd-party/PDCurses/demos/newtest.c @@ -0,0 +1,602 @@ +/* + * newtest.c - Tests certain PDCurses functions, + * mostly those in Win32a, including some of the + * new attributes for 64-bit chtype. I wanted to be + * sure the PDC_set_blink and PDC_set_line_color + * functions worked, and that A_OVERLINE and A_STRIKEOUT + * displayed properly. Also tests "extended" SLK functions. + * + */ +#ifndef _XOPEN_SOURCE_EXTENDED +# define _XOPEN_SOURCE_EXTENDED 1 +#endif + +#ifdef PDC_WIDE + #define HAVE_WIDE + #include + #include +#endif +#ifdef HAVE_NCURSESW + #define HAVE_WIDE + #include + #include +#endif + +#ifndef HAVE_WIDE + #include +#endif + +#include +#include +#include + +int PDC_write_screen_to_file( const char *filename, WINDOW *win); + +#ifndef A_OVERLINE + #define A_OVERLINE 0 +#endif + +static const char *labels[] = { + "Quit", "Blink", "No labels", "431", "2134", "55", + "62-really-longer-than-it-should-be-just-for-testing", + "83", "7", "b", "25", + "Able", "Baker", "Charlie", "Dog", + "Easy", "Fox", "Golf", "How", "Item", + "Jig", "King", "Love", "Mike", "Nan", + "Oboe", "Peter", "Queen", "Roger", "Sugar", + "Tear", "Uncle", "Victor", "Whiskey", + "X-Ray", "Yoke", "Zebra", NULL }; + + +static void slk_setup( const int slk_format) +{ + int i; +#ifdef PDCURSES + static int old_format = 0xa; + + if( slk_format != old_format) + slk_init( slk_format); + old_format = slk_format; +#endif + for( i = 0; labels[i]; i++) + slk_set( i + 1, labels[i], 1); + slk_refresh( ); +} + + /* Uses the left/right/under/overline capabilities of Win32a */ + /* to ensure the text is "boxed". */ + +void text_in_a_box( const char *istr) +{ + const int len = (int)strlen( istr); + +#ifdef CHTYPE_LONG + attron( A_OVERLINE | A_UNDERLINE | A_LEFTLINE); + if( len == 1) + attron( A_RIGHTLINE); +#endif + addnstr( istr, 1); + if( len > 1) + { +#ifdef CHTYPE_LONG + attroff( A_LEFTLINE); +#endif + if( len > 2) + addnstr( istr + 1, len - 2); +#ifdef CHTYPE_LONG + attron( A_RIGHTLINE); +#endif + addnstr( istr + len - 1, 1); + } +#ifdef CHTYPE_LONG + attroff( A_OVERLINE | A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE); +#endif +} + +#define COL1 2 +#define COL2 (COL1 + 30) +#define COL3 72 + +#define N_CURSORS 9 + /* There are nine different cursor types; see below for the list. */ + /* You specify two types, and the cursor blinks between them. */ + /* Default is between "underline" and "invisible". Set both states */ + /* to the same value to get an unblinking cursor. */ + +#if defined( _WIN32) && !defined( __BORLANDC__) +#define PURE_WINDOWS_VERSION 1 +#endif + +/* Among other things, 'newtest' demonstrates how to make a Win32a +PDCurses app that is a for-real, "pure Windows" version (instead of +a console application). Doing this is quite easy, and has certain +advantages. If the app is invoked from a command prompt, the only +difference you'll see is that the app runs separately (that is, you +can continue to use the command prompt, switching between it, your +PDCurses/Win32a app, and other processes). Which is the main reason +I did it; it meant that I could invoke a PDCurses-based text editor, +for example, and still have use of the command line. + + (NOTE that, for reasons I don't actually understand, this happens +when the Visual C++ compiler is used. With MinGW or OpenWatcom, it's +still "really" a console app.) + + To do it, we ensure that the usual main() function has an alternative +dummy_main() form, taking the same arguments as main(). We add a +WinMain() function, whose sole purpose is to reformulate lpszCmdLine +into argc/argv form, and pass it on to dummy_main(). And, of course, +we can switch back to a "normal" console app by removing the above +#define PURE_WINDOWS_VERSION line. */ + +#ifdef PURE_WINDOWS_VERSION +#undef MOUSE_MOVED +#include + +int dummy_main( int argc, char **argv); + +int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, + LPSTR lpszCmdLine, int nCmdShow) +{ + char *argv[30]; + int i, argc = 1; + + argv[0] = "newtest"; + for( i = 0; lpszCmdLine[i]; i++) + if( lpszCmdLine[i] != ' ' && (!i || lpszCmdLine[i - 1] == ' ')) + argv[argc++] = lpszCmdLine + i; + + for( i = 0; lpszCmdLine[i]; i++) + if( lpszCmdLine[i] == ' ') + lpszCmdLine[i] = '\0'; + + return dummy_main( argc, (char **)argv); +} + +int dummy_main( int argc, char **argv) +#else /* "usual", console-app version: */ +int main( int argc, char **argv) +#endif +{ + int quit = 0, i, use_slk = 1; + bool show_mouse_moves = FALSE; +#ifdef PDCURSES + bool blink_state = FALSE; + int fmt = 0xa; + const char *title_text = "NewTest: tests various PDCurses features"; +#else + int fmt = 3; /* for ncurses, this is the 4-4-4 SLK format */ +#endif + int cursor_state_1 = 0, cursor_state_2 = 1; + int cursor_y = 19, cursor_x = 51; + int show_slk_index_line = 0; + int redraw = 1; + const char *extra_characters_to_show = ""; +#ifdef HAVE_WIDE + unsigned unicode_offset = 0x80; +#endif + + setlocale(LC_ALL, ""); + ttytype[0] = 25; ttytype[1] = 90; /* Allow 25 to 90 lines... */ + ttytype[2] = 80; ttytype[3] = (char)200; /* ...and 80 to 200 columns */ + /* (This program gets weird artifacts when smaller than 25x80.) */ + for( i = 1; i < argc; i++) + if( argv[i][0] == '-') + switch( argv[i][1]) + { + case 's': + use_slk = 0; + break; + case 'l': + setlocale( LC_ALL, argv[i] + 2); + break; + case 'e': + extra_characters_to_show = argv[i] + 2; + break; + case 'f': + sscanf( argv[i] + 2, "%x", (unsigned *)&fmt); + break; + case 'i': + show_slk_index_line = 1; + break; + case 'r': /* allow user-resizable windows */ + { + int min_lines, max_lines, min_cols, max_cols; + + if( sscanf( argv[i] + 2, "%d,%d,%d,%d", + &min_lines, &max_lines, + &min_cols, &max_cols) == 4) + { + ttytype[0] = min_lines; + ttytype[1] = max_lines; + ttytype[2] = min_cols; + ttytype[3] = max_cols; + } + } + break; + case 'd': /* set window size before initscr */ + { + int n_lines, n_cols; + + if( sscanf( argv[i] + 2, "%d,%d", &n_lines, + &n_cols) == 2) + resize_term( n_lines, n_cols); + } + break; +#ifdef PDCURSES + case 'z': + traceon( ); + PDC_debug( "Debugging is on\n"); + break; + case 't': + title_text = argv[i] + 2; + break; +#endif +#ifdef HAVE_WIDE + case 'u': + sscanf( argv[i] + 2, "%x", &unicode_offset); + break; +#endif + case 'm': + show_mouse_moves = TRUE; + break; + default: + printf( "Option '%s' unrecognized\n", argv[i]); + break; + } + if( use_slk) + slk_init( show_slk_index_line ? -fmt : fmt); +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif + if( use_slk) + slk_setup( show_slk_index_line ? -fmt : fmt); + + start_color(); + +# if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000) + use_default_colors(); +# endif + cbreak(); + noecho(); + clear(); + refresh(); +#ifdef __PDCURSES__ + PDC_set_title( title_text); +#endif + keypad( stdscr, TRUE); + init_pair( 1, COLOR_WHITE, COLOR_BLACK); + init_pair( 2, COLOR_BLACK, COLOR_YELLOW); + + mousemask( ALL_MOUSE_EVENTS | (show_mouse_moves ? REPORT_MOUSE_POSITION : 0), NULL); + attrset( COLOR_PAIR( 1)); + while( !quit) + { + char buff[80]; + const int xmax = getmaxx( stdscr); + const int ymax = getmaxy( stdscr); + const int color_block_start = 54; + int c, color_block_cols = (xmax - color_block_start) / 2; + const int color_block_lines = 19; + const char *cursor_state_text[N_CURSORS] = { + "Invisible (click to change) ", + "Underscore (click to change)", + "Block (click to change) ", + "Outline (click to change) ", + "Caret (click to change) ", + "Half-block (click to change)", + "Central (click to change) ", + "Cross (click to change) ", + "Heavy box (click to change) " }; + + if( color_block_cols < 0) + color_block_cols = 0; + if( redraw) + { +#if (CHTYPE_LONG >= 2) || defined( HAVE_WIDE) + int line = 21; +#endif + + mvaddstr( 1, COL1, "'Normal' white-on-black"); + mvaddstr( 2, COL1, longname( )); +#if(CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes */ + attron( A_DIM); + mvaddstr( 15, 41, "Dimmed text"); + attroff( A_DIM); +#endif +#ifdef A_STANDOUT + attron( A_STANDOUT); + mvaddstr( 16, 41, "Standout text"); + attroff( A_STANDOUT); +#endif +#ifdef HAVE_WIDE + mvaddwstr( 3, COL1, L"'Normal' text, but wide"); +#endif + attron( A_BLINK); + mvaddstr( 6, 40, "Blinking"); + attron( A_BOLD); + mvaddstr( 8, 40, "BlinkBold"); +#ifdef A_ITALIC + attron( A_ITALIC); + mvaddstr( 0, COL2, "BlinkBoldItalic"); +#endif + attrset( COLOR_PAIR( 3)); + attron( A_UNDERLINE); +#ifdef HAVE_WIDE + mvaddstr( 1, COL2, "Underlined"); + addwstr( L"WideUnder"); +#endif + attrset( COLOR_PAIR( 1)); +#ifdef A_ITALIC + attron( A_UNDERLINE | A_ITALIC); + mvaddstr( 2, COL2, "UnderlinedItalic"); +#endif + attrset( COLOR_PAIR( 2)); + attron( A_BLINK); + mvaddstr( 4, COL1, "Black-on-yellow blinking"); + + attrset( COLOR_PAIR( 1)); + move( 4, COL2); + text_in_a_box( "Text in a box"); + +#if defined( CHTYPE_LONG) && defined( A_STRIKEOUT) + attrset( COLOR_PAIR( 6)); + attron( A_STRIKEOUT); + mvaddstr( 10, 40, "Strikeout"); + attrset( COLOR_PAIR( 1)); +#endif + +#ifdef HAVE_WIDE + move( 11, 40); + text_in_a_box( "Next Ucode pg"); + if( unicode_offset) + { + move( 12, 40); + text_in_a_box( "Prev Ucode pg"); + } + mvprintw( 13, 40, "U+%04x ", unicode_offset); + +#endif + + mvaddstr( 5, 1, " 0 1 2 3 4 5 6 7 8 9 a b c d e f"); + for( i = 0; i < 8; i++) + { + char buff[4]; + + sprintf( buff, "%02x", +#ifdef HAVE_WIDE + (unsigned)( i * 16 + unicode_offset) & 0xff); +#else + (unsigned)( i * 16 + 128) & 0xff); +#endif + mvaddstr( 6 + i, 1, buff); + mvaddstr( 6 + i, 36, buff); + } + for( i = 0; i < 128; i++) + { /* Show extended characters: */ +#ifdef HAVE_WIDE + wchar_t buff[2]; + + buff[0] = (wchar_t)( i + unicode_offset); + buff[1] = '\0'; + mvaddwstr( 6 + i / 16, 4 + 2 * (i % 16), buff); +#else + move( 6 + i / 16, 4 + 2 * (i % 16)); + addch( i + 128); +#endif + addch( ' '); + } + +#if(CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes */ + for( i = 0; i < 3 && line < ymax; i++, line++) + { /* Demonstrate full RGB color control: */ + int j; + const char *output_text[3] = { + "Red on green to white on black | (you can get full RGB colors when desired,", + "Blue on yellow to black on red | with palette coloring still being available)", + "White on red to green on blue, underlined (if available)" }; + const int len = (int)strlen( output_text[i]); + + move( line, 1); + for( j = 0; j < len && j + 1 < xmax; j++) + { + attr_t output_color; + const int oval = j * 31 / len; + const int reverse = 31 - oval; + + if( !i) + output_color = A_RGB( 31, oval, oval, 0, reverse, 0); + else if( i == 1) + output_color = A_RGB( 0, 0, reverse, 31, reverse, 0); + else + { + output_color = A_RGB( reverse, 31, reverse, + reverse, 0, oval); + output_color |= A_UNDERLINE; + } + attrset( output_color); + addch( output_text[i][j]); + } + } +#endif /* #if(CHTYPE_LONG >= 2) */ + redraw = 0; + attrset( COLOR_PAIR( 1)); + if( *extra_characters_to_show && ymax > 23) + { + unsigned long ival; + int bytes_read; + const char *tptr = extra_characters_to_show; + + move( 23, 63); + while( sscanf( tptr, "%lx%n", &ival, &bytes_read) > 0) + { + addch( (chtype)ival); + tptr += bytes_read; + if( *tptr) + tptr++; + } + } +#ifdef HAVE_WIDE + for( i = 0; i < 6; i++) + { + static const wchar_t spanish[] = L"Espa\xf1ol"; + + static const wchar_t russian[] = {0x0420, 0x0443, 0x0441, 0x0441, + 0x043a, 0x0438, 0x0439, L' ', 0x044f, 0x0437, 0x044b, 0x043a, 0}; + + static const wchar_t greek[] = {0x0395, 0x03bb, 0x03bb, 0x03b7, + 0x03bd, 0x03b9, 0x03ba, 0x03ac, 0}; + + static const wchar_t georgian[] = {0x10e5, 0x10d0, 0x10e0, 0x10d7, + 0x10e3, 0x10da, 0x10d8, L' ', 0x10d4, 0x10dc, 0x10d0, 0}; + + static const wchar_t fullwidth[] = { 0xff26, 0xff55, 0xff4c, 0xff4c, + 0xff57, 0xff49, 0xff44, 0xff54, 0xff48, 0 }; /* "Fullwidth" */ + + static const wchar_t combining_marks[] = { L'C', L'o', 0x35c, L'm', + L'b', 0x30a, L'i', L'n', L'i', 0x304, L'n', 0x30b, 0x329, + L'g', 0x310, + L' ', L'C', 0x338, L'h', 0x306, L'a', 0x361, L'r', L's', + 0x30e, 0x348, 0 }; + + static const wchar_t *texts[6] = { spanish, russian, greek, + georgian, fullwidth, combining_marks}; + + mvaddwstr( 15 + i / 2, 2 + 20 * (i % 2), texts[i]); + } +#if(CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes */ + mvaddch( line - 1, 60, (chtype)0x1d11e); +#endif /* U+1D11E = musical symbol G clef */ + line += 2; +#endif + mvaddstr( 19, 1, curses_version( )); + +#ifdef MAYBE_TRY_THIS_SOMEWHERE_ELSE + mvaddstr( 1, COL3, "Click on cursor descriptions to"); + mvaddstr( 2, COL3, "cycle through possible cursors"); + mvaddstr( 3, COL3, "Click on colors at left to change"); + mvaddstr( 4, COL3, "colors used for under/over/outlining"); + mvaddstr( 5, COL3, "Click 'Blink' at bottom to toggle"); + mvaddstr( 6, COL3, "'real' blinking vs. 'highlit' blink"); +#endif + } + + mvaddnstr( 19, color_block_start, cursor_state_text[cursor_state_1], + xmax - color_block_start); + mvaddnstr( 20, color_block_start, cursor_state_text[cursor_state_2], + xmax - color_block_start); + curs_set( (cursor_state_1 << 8) | cursor_state_2); + for( i = 0; i < color_block_cols * color_block_lines; i++) + { + const int n_color_blocks = (COLOR_PAIRS < 256 ? COLOR_PAIRS : 256); + + attrset( COLOR_PAIR( i >= n_color_blocks ? 2 : i)); + if( i > 2 && i < n_color_blocks) + init_pair((short)i, (short)i, COLOR_BLACK); + if( !(i % color_block_cols)) + move( i / color_block_cols, color_block_start); + attron( A_REVERSE); + addstr( " "); + } + move( cursor_y, cursor_x); + refresh(); + c = getch( ); + attrset( COLOR_PAIR( 1)); + if( c == KEY_RESIZE) + { + redraw = 1; + resize_term( 0, 0); + } + else if( c == KEY_F(1) || c == 27) + quit = 1; +#ifdef PDCURSES + else if( c == KEY_F(2)) + { + blink_state ^= 1; + PDC_set_blink( blink_state); + } +#endif + else if( c == KEY_F(3)) /* toggle SLKs */ + { + use_slk ^= 1; + if( use_slk) + slk_restore( ); + else + slk_clear( ); + } + else if( c >= KEY_F(4) && c < KEY_F(12)) + { + sscanf( labels[c - KEY_F(1)], "%x", (unsigned *)&fmt); + if( use_slk) + slk_setup( show_slk_index_line ? -fmt : fmt); + } + if( c != KEY_MOUSE) + { + sprintf( buff, "Key %s", keyname( c)); + if( !memcmp( buff + 4, "UNKNOWN", 7)) + sprintf( buff + 11, " (%x)", c); + strcat( buff, " hit "); + buff[COL2 - COL1] = '\0'; + mvaddstr( 0, COL1, buff); + } + else + { + MEVENT mouse_event; +#ifdef __PDCURSES__ + nc_getmouse( &mouse_event); +#else + getmouse( &mouse_event); +#endif + sprintf( buff, "Mouse at %d x %d: %x ", mouse_event.x, + mouse_event.y, (unsigned)mouse_event.bstate); + cursor_x = mouse_event.x; + cursor_y = mouse_event.y; + mvaddstr( 0, COL1, buff); + if( mouse_event.x >= color_block_start + && mouse_event.y < color_block_lines) + { + int new_color = (mouse_event.x - color_block_start) / 2 + + mouse_event.y * color_block_cols; + + if( new_color >= 256) + new_color = -1; +#ifdef PDCURSES + PDC_set_line_color( (short)new_color); +#endif + } +#ifdef PDCURSES + else if( mouse_event.x >= color_block_start) + { + int shift = ((mouse_event.bstate & BUTTON_MODIFIER_SHIFT) ? + N_CURSORS - 1 : 1); + + if( mouse_event.y == 19) /* blink/non-blink toggle */ + cursor_state_1 = (cursor_state_1 + shift) % N_CURSORS; + else if( mouse_event.y == 20) /* cycle cursor state */ + cursor_state_2 = (cursor_state_2 + shift) % N_CURSORS; + } +#endif +#ifdef HAVE_WIDE + else if( mouse_event.x >= 40 && mouse_event.x < 40 + 10) + { + if( mouse_event.y == 11) + { + redraw = 1; + unicode_offset += 0x80; + } + else if( mouse_event.y == 12 && unicode_offset) + { + redraw = 1; + unicode_offset -= 0x80; + } + } +#endif + } + } + + endwin(); + + return 0; +} + diff --git a/3rd-party/PDCurses/demos/ozdemo.c b/3rd-party/PDCurses/demos/ozdemo.c new file mode 100644 index 0000000..16a9f23 --- /dev/null +++ b/3rd-party/PDCurses/demos/ozdemo.c @@ -0,0 +1,447 @@ +/* + * ozdemo.c - A demo program using PDCurses. The program + * illustrates the use of colors for text output. + * + * Hacks by jbuhler@cs.washington.edu on 12/29/96 + */ + +#include +#include +#include +#include +#include +#include +#include + +int WaitForUser(void); +int SubWinTest(WINDOW *); +int BouncingBalls(WINDOW *); +void trap(int); + +/* An ASCII map of Australia */ + +char *AusMap[17] = +{ + " A ", + " AA AA ", + " N.T. AAAAA AAAA ", + " AAAAAAAAAAA AAAAAAAA ", + " AAAAAAAAAAAAAAAAAAAAAAAAA Qld.", + " AAAAAAAAAAAAAAAAAAAAAAAAAAAA ", + " AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ", + " AAAAAAAAAAAAAAAAAAAAAAAAAAAA ", + " AAAAAAAAAAAAAAAAAAAAAAAAA N.S.W.", + "W.A. AAAAAAAAA AAAAAA Vic.", + " AAA S.A. AA", + " A Tas.", + "" +}; + +/* Funny messages for the scroller */ + +char *messages[] = +{ + "Hello from the Land Down Under", + "The Land of crocs, and a big Red Rock", + "Where the sunflower runs along the highways", + "The dusty red roads lead one to loneliness", + "Blue sky in the morning and", + "Freezing nights and twinkling stars", + NULL +}; + +int WaitForUser(void) +{ + chtype ch; + + nodelay(stdscr, TRUE); + halfdelay(50); + + ch = getch(); + + nodelay(stdscr, FALSE); + nocbreak(); /* Reset the halfdelay() value */ + cbreak(); + + return (ch == '\033') ? '\033' : 0; +} + +int SubWinTest(WINDOW *win) +{ + WINDOW *swin1, *swin2, *swin3; + int w, h, sw, sh, bx, by; + + wattrset(win, 0); + getmaxyx(win, h, w); + getbegyx(win, by, bx); + + sw = w / 3; + sh = h / 3; + + if ((swin1 = derwin(win, sh, sw, 3, 5)) == NULL) + return 1; + if ((swin2 = subwin(win, sh, sw, by + 4, bx + 8)) == NULL) + return 1; + if ((swin3 = subwin(win, sh, sw, by + 5, bx + 11)) == NULL) + return 1; + + init_pair(8, COLOR_RED, COLOR_BLUE); + wbkgd(swin1, COLOR_PAIR(8)); + werase(swin1); + mvwaddstr(swin1, 0, 3, "Sub-window 1"); + wrefresh(swin1); + + init_pair(9, COLOR_CYAN, COLOR_MAGENTA); + wbkgd(swin2, COLOR_PAIR(9)); + werase(swin2); + mvwaddstr(swin2, 0, 3, "Sub-window 2"); + wrefresh(swin2); + + init_pair(10, COLOR_YELLOW, COLOR_GREEN); + wbkgd(swin3, COLOR_PAIR(10)); + werase(swin3); + mvwaddstr(swin3, 0, 3, "Sub-window 3"); + wrefresh(swin3); + + delwin(swin1); + delwin(swin2); + delwin(swin3); + WaitForUser(); + + return 0; +} + +int BouncingBalls(WINDOW *win) +{ + chtype c1, c2, c3, ball1, ball2, ball3; + int w, h, x1, y1, xd1, yd1, x2, y2, xd2, yd2, x3, y3, xd3, yd3, c; + + curs_set(0); + + wbkgd(win, COLOR_PAIR(1)); + wrefresh(win); + wattrset(win, 0); + + init_pair(11, COLOR_RED, COLOR_GREEN); + init_pair(12, COLOR_BLUE, COLOR_RED); + init_pair(13, COLOR_YELLOW, COLOR_WHITE); + + ball1 = 'O' | COLOR_PAIR(11); + ball2 = '*' | COLOR_PAIR(12); + ball3 = '@' | COLOR_PAIR(13); + + getmaxyx(win, h, w); + + x1 = 2 + rand() % (w - 4); + y1 = 2 + rand() % (h - 4); + x2 = 2 + rand() % (w - 4); + y2 = 2 + rand() % (h - 4); + x3 = 2 + rand() % (w - 4); + y3 = 2 + rand() % (h - 4); + + xd1 = 1; + yd1 = 1; + xd2 = 1; + yd2 = -1; + xd3 = -1; + yd3 = 1; + + nodelay(stdscr, TRUE); + + while ((c = getch()) == ERR) + { + x1 += xd1; + if (x1 <= 1 || x1 >= w - 2) + xd1 *= -1; + + y1 += yd1; + if (y1 <= 1 || y1 >= h - 2) + yd1 *= -1; + + x2 += xd2; + if (x2 <= 1 || x2 >= w - 2) + xd2 *= -1; + + y2 += yd2; + if (y2 <= 1 || y2 >= h - 2) + yd2 *= -1; + + x3 += xd3; + if (x3 <= 1 || x3 >= w - 2) + xd3 *= -1; + + y3 += yd3; + if (y3 <= 1 || y3 >= h - 2) + yd3 *= -1; + + c1 = mvwinch(win, y1, x1); + c2 = mvwinch(win, y2, x2); + c3 = mvwinch(win, y3, x3); + + mvwaddch(win, y1, x1, ball1); + mvwaddch(win, y2, x2, ball2); + mvwaddch(win, y3, x3, ball3); + + wmove(win, 0, 0); + wrefresh(win); + + mvwaddch(win, y1, x1, c1); + mvwaddch(win, y2, x2, c2); + mvwaddch(win, y3, x3, c3); + + napms(150); + } + + nodelay(stdscr, FALSE); + ungetch(c); + return 0; +} + +/* Trap interrupt */ + +void trap(int sig) +{ + if (sig == SIGINT) + { + endwin(); + + exit(0); + } +} + +int main(int argc, char **argv) +{ + WINDOW *win; + chtype save[80], ch; + int width, height, w, x, y, i, j, seed; + const char *versions = + " DOS, OS/2, Windows console & GUI, X11, SDL 1/2, VT"; + const char *hit_any_key = + " Type a key to continue or ESC to quit "; + + assert( strlen( versions) == strlen( hit_any_key)); +#ifdef PDCURSES +#ifdef PDC_VER_MAJOR /* so far only seen in 4.0+ */ + PDC_set_resize_limits( 20, 50, 70, 200); +#endif +#endif + +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif + seed = (int)time((time_t *)0); + srand(seed); + + start_color(); +# if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000) + use_default_colors(); +# endif + cbreak(); + noecho(); + + curs_set(0); + +#if !defined(__TURBOC__) && !defined(OS2) + signal(SIGINT, trap); +#endif + noecho(); + + /* refresh stdscr so that reading from it will not cause it to + overwrite the other windows that are being created */ + + refresh(); + + /* Create a drawing window */ + + width = strlen( versions) + 4; + height = 18; + + win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2); + + if (win == NULL) + { + endwin(); + + return 1; + } + + for (;;) + { + + + init_pair(1, COLOR_WHITE, COLOR_BLUE); + wbkgd(win, COLOR_PAIR(1)); + werase(win); + + init_pair(2, COLOR_RED, COLOR_RED); + wattrset(win, COLOR_PAIR(2)); + box(win, ' ', ' '); + wrefresh(win); + + wattrset(win, 0); + + /* Do random output of a character */ + + ch = 'a'; + + nodelay(stdscr, TRUE); + + for (i = 0; i < 5000; ++i) + { + x = rand() % (width - 2) + 1; + y = rand() % (height - 2) + 1; + + mvwaddch(win, y, x, ch); + wrefresh(win); + + if (getch() != ERR) + break; + napms( 1); + + if (i == 2000) + { + ch = 'b'; + init_pair(3, COLOR_CYAN, COLOR_YELLOW); + wattrset(win, COLOR_PAIR(3)); + } + } + + nodelay(stdscr, FALSE); + + SubWinTest(win); + + /* Erase and draw green window */ + + init_pair(4, COLOR_YELLOW, COLOR_GREEN); + wbkgd(win, COLOR_PAIR(4)); + wattrset(win, A_BOLD); + werase(win); + wrefresh(win); + + /* Draw RED bounding box */ + + wattrset(win, COLOR_PAIR(2)); + box(win, ' ', ' '); + wrefresh(win); + + /* Display Australia map */ + + wattrset(win, A_BOLD); + i = 0; + + while (*AusMap[i]) + { + mvwaddstr(win, i + 1, 8, AusMap[i]); + wrefresh(win); + napms(100); + ++i; + } + + init_pair(5, COLOR_BLUE, COLOR_WHITE); + wattrset(win, COLOR_PAIR(5) | A_BLINK); + mvwaddstr( win, height - 4, 2, longname( )); + mvwaddstr( win, height - 3, 2, curses_version( )); + mvwaddstr( win, height - 2, 2, versions); + wrefresh(win); + + /* Draw running messages */ + + init_pair(6, COLOR_BLACK, COLOR_WHITE); + wattrset(win, COLOR_PAIR(6)); + w = width - 2; + nodelay(win, TRUE); + + mvwhline(win, height / 2, 1, ' ', w); + + for (j = 0; messages[j] != NULL; j++) + { + char *message = messages[j]; + int msg_len = strlen(message); + int stop = 0; + int xpos, start, count, n; + + for (n = 0; n <= w + msg_len; n++) + { + if (n < w) + { + xpos = w - n; + start = 0; + count = (n > msg_len) ? msg_len : n; + } + else + { + xpos = 0; + start = n - w; + count = (w > msg_len - start) ? msg_len - start : w; + } + + mvwaddnstr(win, height / 2, xpos + 1, message + start, count); + if (xpos + count < w) + waddstr(win, " "); + + wrefresh(win); + + if (wgetch(win) != ERR) + { + flushinp(); + stop = 1; + break; + } + + napms(100); + } + + if (stop) + break; + } + + j = 0; + + /* Draw running 'A's across in RED */ + + init_pair(7, COLOR_RED, COLOR_GREEN); + wattron(win, COLOR_PAIR(7)); + + for (i = 2; i < width - 4; ++i) + { + ch = mvwinch(win, 5, i); + save[j++] = ch; + ch = ch & 0x7f; + mvwaddch(win, 5, i, ch); + } + + wrefresh(win); + + /* Put a message up; wait for a key */ + + i = height - 2; + wattrset(win, COLOR_PAIR(5)); + mvwaddstr(win, i, 2, hit_any_key); + wrefresh(win); + + if (WaitForUser() == '\033') + break; + + /* Restore the old line */ + + wattrset(win, 0); + + for (i = 2, j = 0; i < width - 4; ++i) + mvwaddch(win, 5, i, save[j++]); + + wrefresh(win); + + BouncingBalls(win); + + /* BouncingBalls() leaves a keystroke in the queue */ + + if (WaitForUser() == '\033') + break; + } + + endwin(); + + return 0; +} diff --git a/3rd-party/PDCurses/demos/ptest.c b/3rd-party/PDCurses/demos/ptest.c new file mode 100644 index 0000000..222a08d --- /dev/null +++ b/3rd-party/PDCurses/demos/ptest.c @@ -0,0 +1,283 @@ +#include +#include +#include + +PANEL *p1, *p2, *p3, *p4, *p5; +WINDOW *w4, *w5; + +long nap_msec = 1; + +char *mod[] = +{ + "test ", "TEST ", "(**) ", "*()* ", "<--> ", "LAST " +}; + +void pflush(void) +{ + update_panels(); + doupdate(); +} + +void backfill(void) +{ + int y, x; + + erase(); + + for (y = 0; y < LINES - 1; y++) + for (x = 0; x < COLS; x++) + printw("%d", (y + x) % 10); +} + +void wait_a_while(long msec) +{ + int c; + + if (msec != 1) + timeout(msec); + + c = getch(); + + if (c == 'q') + { + endwin(); + exit(1); + } +} + +void saywhat(const char *text) +{ + mvprintw(LINES - 1, 0, "%-20.20s", text); +} + +/* mkpanel - alloc a win and panel and associate them */ + +PANEL *mkpanel(int rows, int cols, int tly, int tlx) +{ + WINDOW *win = newwin(rows, cols, tly, tlx); + PANEL *pan = (PANEL *)0; + + if (win) + { + pan = new_panel(win); + + if (!pan) + delwin(win); + } + + return pan; +} + +void rmpanel(PANEL *pan) +{ + WINDOW *win = pan->win; + + del_panel(pan); + delwin(win); +} + +void fill_panel(PANEL *pan) +{ + WINDOW *win = pan->win; + char num = *((char *)pan->user + 1); + int y, x, maxy, maxx; + + box(win, 0, 0); + mvwprintw(win, 1, 1, "-pan%c-", num); + getmaxyx(win, maxy, maxx); + + for (y = 2; y < maxy - 1; y++) + for (x = 1; x < maxx - 1; x++) + mvwaddch(win, y, x, num); +} + +int main(int argc, char **argv) +{ + int itmp, y; + + if (argc > 1 && atol(argv[1])) + nap_msec = atol(argv[1]); + +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif + backfill(); + + for (y = 0; y < 5; y++) + { + p1 = mkpanel(10, 10, 0, 0); + set_panel_userptr(p1, "p1"); + + p2 = mkpanel(14, 14, 5, 5); + set_panel_userptr(p2, "p2"); + + p3 = mkpanel(6, 8, 12, 12); + set_panel_userptr(p3, "p3"); + + p4 = mkpanel(10, 10, 10, 30); + w4 = panel_window(p4); + set_panel_userptr(p4, "p4"); + + p5 = mkpanel(10, 10, 13, 37); + w5 = panel_window(p5); + set_panel_userptr(p5, "p5"); + + fill_panel(p1); + fill_panel(p2); + fill_panel(p3); + fill_panel(p4); + fill_panel(p5); + hide_panel(p4); + hide_panel(p5); + pflush(); + wait_a_while(nap_msec); + + saywhat("h3 s1 s2 s4 s5;"); + move_panel(p1, 0, 0); + hide_panel(p3); + show_panel(p1); + show_panel(p2); + show_panel(p4); + show_panel(p5); + pflush(); + wait_a_while(nap_msec); + + saywhat("s1;"); + show_panel(p1); + pflush(); + wait_a_while(nap_msec); + + saywhat("s2;"); + show_panel(p2); + pflush(); + wait_a_while(nap_msec); + + saywhat("m2;"); + move_panel(p2, 10, 10); + pflush(); + wait_a_while(nap_msec); + + saywhat("s3;"); + show_panel(p3); + pflush(); + wait_a_while(nap_msec); + + saywhat("m3;"); + move_panel(p3, 5, 5); + pflush(); + wait_a_while(nap_msec); + + saywhat("b3;"); + bottom_panel(p3); + pflush(); + wait_a_while(nap_msec); + + saywhat("s4;"); + show_panel(p4); + pflush(); + wait_a_while(nap_msec); + + saywhat("s5;"); + show_panel(p5); + pflush(); + wait_a_while(nap_msec); + + saywhat("t3;"); + top_panel(p3); + pflush(); + wait_a_while(nap_msec); + + saywhat("t1;"); + top_panel(p1); + pflush(); + wait_a_while(nap_msec); + + saywhat("t2;"); + top_panel(p2); + pflush(); + wait_a_while(nap_msec); + + saywhat("t3;"); + top_panel(p3); + pflush(); + wait_a_while(nap_msec); + + saywhat("t4;"); + top_panel(p4); + pflush(); + wait_a_while(nap_msec); + + for (itmp = 0; itmp < 6; itmp++) + { + saywhat("m4;"); + mvwaddstr(w4, 3, 1, mod[itmp]); + move_panel(p4, 4, itmp * 10); + mvwaddstr(w5, 4, 1, mod[itmp]); + pflush(); + wait_a_while(nap_msec); + + saywhat("m5;"); + mvwaddstr(w4, 4, 1, mod[itmp]); + move_panel(p5, 7, itmp * 10 + 6); + mvwaddstr(w5, 3, 1, mod[itmp]); + pflush(); + wait_a_while(nap_msec); + } + + saywhat("m4;"); + move_panel(p4, 4, itmp * 10); + pflush(); + wait_a_while(nap_msec); + + saywhat("t5;"); + top_panel(p5); + pflush(); + wait_a_while(nap_msec); + + saywhat("t2;"); + top_panel(p2); + pflush(); + wait_a_while(nap_msec); + + saywhat("t1;"); + top_panel(p1); + pflush(); + wait_a_while(nap_msec); + + saywhat("d2;"); + rmpanel(p2); + pflush(); + wait_a_while(nap_msec); + + saywhat("h3;"); + hide_panel(p3); + pflush(); + wait_a_while(nap_msec); + + saywhat("d1;"); + rmpanel(p1); + pflush(); + wait_a_while(nap_msec); + + saywhat("d4; "); + rmpanel(p4); + pflush(); + wait_a_while(nap_msec); + + saywhat("d5; "); + rmpanel(p5); + pflush(); + wait_a_while(nap_msec); + + if (nap_msec == 1) + break; + + nap_msec = 100L; + } + + endwin(); + + return 0; +} /* end of main */ diff --git a/3rd-party/PDCurses/demos/rain.c b/3rd-party/PDCurses/demos/rain.c new file mode 100644 index 0000000..cfa47a0 --- /dev/null +++ b/3rd-party/PDCurses/demos/rain.c @@ -0,0 +1,157 @@ +/**************************************************************************** + * Copyright (c) 2002 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +#include +#include +#include + +/* rain 11/3/1980 EPS/CITHEP */ + +static int next_j(int j) +{ + if (j == 0) + j = 4; + else + --j; + + if (has_colors()) + { + int z = rand() % 3; + chtype color = COLOR_PAIR(z); + + if (z) + color |= A_BOLD; + + attrset(color); + } + + return j; +} + +int main(int argc, char *argv[]) +{ + int x, y, j, r, c, seed; + static int xpos[5], ypos[5]; + +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif + seed = (int)time((time_t *)0); + srand(seed); + + if (has_colors()) + { + short bg = COLOR_BLACK; + + start_color(); + +#if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000) + if (use_default_colors() == OK) + bg = -1; +#endif + init_pair(1, COLOR_BLUE, bg); + init_pair(2, COLOR_CYAN, bg); + } + + nl(); + noecho(); + curs_set(0); + timeout(0); + keypad(stdscr, TRUE); + + r = LINES - 4; + c = COLS - 4; + + for (j = 5; --j >= 0;) + { + xpos[j] = rand() % c + 2; + ypos[j] = rand() % r + 2; + } + + for (j = 0;;) + { + x = rand() % c + 2; + y = rand() % r + 2; + + mvaddch(y, x, '.'); + + mvaddch(ypos[j], xpos[j], 'o'); + + j = next_j(j); + mvaddch(ypos[j], xpos[j], 'O'); + + j = next_j(j); + mvaddch(ypos[j] - 1, xpos[j], '-'); + mvaddstr(ypos[j], xpos[j] - 1, "|.|"); + mvaddch(ypos[j] + 1, xpos[j], '-'); + + j = next_j(j); + mvaddch(ypos[j] - 2, xpos[j], '-'); + mvaddstr(ypos[j] - 1, xpos[j] - 1, "/ \\"); + mvaddstr(ypos[j], xpos[j] - 2, "| O |"); + mvaddstr(ypos[j] + 1, xpos[j] - 1, "\\ /"); + mvaddch(ypos[j] + 2, xpos[j], '-'); + + j = next_j(j); + mvaddch(ypos[j] - 2, xpos[j], ' '); + mvaddstr(ypos[j] - 1, xpos[j] - 1, " "); + mvaddstr(ypos[j], xpos[j] - 2, " "); + mvaddstr(ypos[j] + 1, xpos[j] - 1, " "); + mvaddch(ypos[j] + 2, xpos[j], ' '); + + xpos[j] = x; + ypos[j] = y; + + switch (getch()) + { + case 'q': + case 'Q': + curs_set(1); + endwin(); + return EXIT_SUCCESS; + case 's': + nodelay(stdscr, FALSE); + break; + case ' ': + nodelay(stdscr, TRUE); +#ifdef KEY_RESIZE + break; + case KEY_RESIZE: +# ifdef PDCURSES + resize_term(0, 0); + erase(); +# endif + r = LINES - 4; + c = COLS - 4; +#endif + } + napms(50); + } +} diff --git a/3rd-party/PDCurses/demos/testcurs.c b/3rd-party/PDCurses/demos/testcurs.c new file mode 100644 index 0000000..7d0428d --- /dev/null +++ b/3rd-party/PDCurses/demos/testcurs.c @@ -0,0 +1,1613 @@ +/* + * This is a test program for PDCurses. Originally by + * John Burnell + * + * wrs(5/28/93) -- modified to be consistent (perform identically) + * with either PDCurses or under Unix System V, R4 + */ + +#ifndef _XOPEN_SOURCE_EXTENDED +# define _XOPEN_SOURCE_EXTENDED 1 +#endif + +#ifdef HAVE_NCURSESW + #define HAVE_WIDE 1 + #include + #include +#endif +#ifdef PDC_WIDE + #define HAVE_WIDE 1 + #include + #include +#endif + +#ifndef HAVE_WIDE + #include + #define HAVE_WIDE 0 +#endif + +#include +#include +#include +#include +#include + +#if defined( PDCURSES) + #define getmouse nc_getmouse +#else + #define NCURSES_MOUSE_INTERFACE +#endif + + +#if defined(PDCURSES) && !defined(XCURSES) +# define HAVE_RESIZE 1 +#else +# define HAVE_RESIZE 0 +#endif + +#ifdef A_COLOR +# define HAVE_COLOR 1 +#else +# define HAVE_COLOR 0 +#endif + +/* Set to non-zero if you want to test the PDCurses clipboard */ +/* (obviously, can't do that with ncurses) */ + +#if defined( PDCURSES) + #define HAVE_CLIPBOARD 1 +#else + #define HAVE_CLIPBOARD 0 +#endif + +void inputTest(WINDOW *); +void scrollTest(WINDOW *); +void introTest(WINDOW *); +int initTest(WINDOW **, int, char **); +void outputTest(WINDOW *); +void padTest(WINDOW *); +void acsTest(WINDOW *); + +#if HAVE_COLOR +void colorTest(WINDOW *); +#endif + +#if HAVE_RESIZE +void resizeTest(WINDOW *); +#endif + +#if HAVE_CLIPBOARD +void clipboardTest(WINDOW *); +#endif + +#if HAVE_WIDE +void wideTest(WINDOW *); +#endif + +void display_menu(int, int); + +struct commands +{ + const char *text; + void (*function)(WINDOW *); +}; + +typedef struct commands COMMAND; + +#define MAX_OPTIONS (6 + HAVE_COLOR + HAVE_RESIZE + HAVE_CLIPBOARD + HAVE_WIDE) + +COMMAND command[MAX_OPTIONS] = +{ + {"Intro Test", introTest}, + {"Pad Test", padTest}, +#if HAVE_RESIZE + {"Resize Test", resizeTest}, +#endif + {"Scroll Test", scrollTest}, + {"Input Test", inputTest}, + {"Output Test", outputTest}, + {"ACS Test", acsTest}, +#if HAVE_COLOR + {"Color Test", colorTest}, +#endif +#if HAVE_CLIPBOARD + {"Clipboard Test", clipboardTest}, +#endif +#if HAVE_WIDE + {"Wide Input", wideTest} +#endif +}; + +int width, height; +static short background_index = COLOR_BLACK; +static bool report_mouse_movement = FALSE; + +int main(int argc, char *argv[]) +{ + WINDOW *win; + int key, old_option = -1, new_option = 0, i; + bool quit = FALSE; + + setlocale(LC_ALL, ""); + +#ifdef PDCURSES +#ifdef PDC_VER_MAJOR /* so far only seen in 4.0+ */ + PDC_set_resize_limits( 20, 50, 70, 200); +#endif +#endif + + if (initTest(&win, argc, argv)) + return 1; + + for( i = 1; i < argc; i++) + if( argv[i][0] == '-') + switch( argv[i][1]) + { + case 'l': case 'L': + setlocale( LC_ALL, argv[i] + 2); + break; + case 'i': case 'I': + background_index = (short)atoi( argv[i] + 2); + break; +#ifdef PDCURSES + case 'b': case 'B': + PDC_set_blink( TRUE); + break; + case 'm': case 'M': + PDC_return_key_modifiers( TRUE); + break; +#ifdef PDC_VER_MAJOR /* so far only seen in 4.0+ */ + case 'r': /* allow user-resizable windows */ + { + int min_lines, max_lines, min_cols, max_cols; + + if( sscanf( argv[i] + 2, "%d,%d,%d,%d", + &min_lines, &max_lines, + &min_cols, &max_cols) == 4) + PDC_set_resize_limits( min_lines, max_lines, + min_cols, max_cols); + } + break; +#endif +#endif + case 'z': + report_mouse_movement = TRUE; + break; + default: + break; + } + +#ifdef A_COLOR + if (has_colors()) + { + init_pair(1, COLOR_WHITE, COLOR_BLUE); + wbkgd(win, COLOR_PAIR(1)); + } + else +#endif + wbkgd(win, A_REVERSE); + +#ifdef PDCURSES +#ifdef PDC_VER_MAJOR /* so far only seen in 4.0+ */ + PDC_set_function_key( FUNCTION_KEY_ABORT, 3 ); /* ctrl-C aborts */ +#endif +#endif + + erase(); + display_menu(old_option, new_option); + + while (1) + { + bool run_option = FALSE; + + noecho(); + keypad(stdscr, TRUE); + raw(); +#ifdef PDCURSES + mouse_set( ALL_MOUSE_EVENTS); +#else + mousemask( ALL_MOUSE_EVENTS, NULL); +#endif + + key = getch(); + + switch(key) + { + case KEY_MOUSE: + { + const int tmarg = (LINES - (MAX_OPTIONS + 2)) / 2; + int selected_opt; + MEVENT mouse_event; + + getmouse( &mouse_event); +#if defined( BUTTON4_PRESSED) && defined( BUTTON5_PRESSED) + if( mouse_event.bstate & BUTTON4_PRESSED) + selected_opt = new_option - 1; /* wheel up */ + else if( mouse_event.bstate & BUTTON5_PRESSED) + selected_opt = new_option + 1; /* wheel down */ + else +#endif + selected_opt = mouse_event.y - tmarg; + if( selected_opt >= 0 && selected_opt < MAX_OPTIONS) + { + old_option = new_option; + new_option = selected_opt; + display_menu( old_option, new_option); + } + if( mouse_event.bstate & BUTTON1_DOUBLE_CLICKED) + run_option = TRUE; + } + break; + case 10: + case 13: + case KEY_ENTER: + run_option = TRUE; + break; + + case KEY_PPAGE: + case KEY_HOME: + old_option = new_option; + new_option = 0; + display_menu(old_option, new_option); + break; + + case KEY_NPAGE: + case KEY_END: + old_option = new_option; + new_option = MAX_OPTIONS - 1; + display_menu(old_option, new_option); + break; + + case KEY_UP: + old_option = new_option; + new_option = (new_option == 0) ? + new_option : new_option - 1; + display_menu(old_option, new_option); + break; + + case KEY_DOWN: + old_option = new_option; + new_option = (new_option == MAX_OPTIONS - 1) ? + new_option : new_option + 1; + display_menu(old_option, new_option); + break; + case KEY_RESIZE: +# ifdef PDCURSES + resize_term(0, 0); +# endif + old_option = -1; + erase(); + display_menu(old_option, new_option); + break; + case 'Q': + case 'q': + quit = TRUE; + } + if( run_option) + { + old_option = -1; + erase(); + refresh(); + (*command[new_option].function)(win); + erase(); + display_menu(old_option, new_option); + } + + if (quit == TRUE) + break; + } + + delwin(win); + endwin(); + + return 0; +} + +void Continue(WINDOW *win) +{ + mvwaddstr(win, 10, 1, " Press any key to continue"); + wrefresh(win); + raw(); + wgetch(win); + wrefresh(win); +} + +void Continue2(void) +{ + move(LINES - 1, 1); + clrtoeol(); + mvaddstr(LINES - 2, 1, " Press any key to continue"); + refresh(); + raw(); + getch(); +} + +int initTest(WINDOW **win, int argc, char *argv[]) +{ +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif +#ifdef A_COLOR + if (has_colors()) + start_color(); +#endif + /* Create a drawing window */ + + width = 60; + height = 19; + + *win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2); + + if (*win == NULL) + { + endwin(); + return 1; + } + + return 0; +} + +void introTest(WINDOW *win) +{ + werase(win); + wmove(win, height / 2 - 5, width / 2); + wvline(win, ACS_VLINE, 10); + wmove(win, height / 2, width / 2 - 10); + whline(win, ACS_HLINE, 20); + Continue(win); + + beep(); + werase(win); + + box(win, ACS_VLINE, ACS_HLINE); + wrefresh(win); + + cbreak(); + mvwaddstr(win, 1, 1, + "You should have a rectangle in the middle of the screen"); + mvwaddstr(win, 2, 1, "You should have heard a beep"); + Continue(win); + + flash(); + mvwaddstr(win, 3, 1, "You should have seen a flash"); + Continue(win); +} + +void scrollTest(WINDOW *win) +{ + int i, OldY; +#if !defined (PDCURSES) && !defined (NCURSES_VERSION) + int OldX; +#endif + werase(win); + mvwaddstr(win, height - 2, 1, "The window will now scroll slowly"); + box(win, ACS_VLINE, ACS_HLINE); + wrefresh(win); + scrollok(win, TRUE); + napms(500); + + for (i = 1; i <= height; i++) + { + napms(150); + scroll(win); + wrefresh(win); + }; + +#if defined (PDCURSES) || defined (NCURSES_VERSION) + OldY = getmaxy(win); +#else + getmaxyx(win, OldY, OldX); +#endif + mvwaddstr(win, 6, 1, "The top of the window will scroll"); + wmove(win, 1, 1); + wsetscrreg(win, 0, 4); + box(win, ACS_VLINE, ACS_HLINE); + wrefresh(win); + + for (i = 1; i <= 5; i++) + { + napms(500); + scroll(win); + wrefresh(win); + } + + mvwaddstr(win, 3, 1, "The bottom of the window will scroll"); + wmove(win, 8, 1); + wsetscrreg(win, 5, --OldY); + box(win, ACS_VLINE, ACS_HLINE); + wrefresh(win); + + for (i = 5; i <= OldY; i++) + { + napms(300); + wscrl(win, -1); + wrefresh(win); + } + + wsetscrreg(win, 0, OldY); +} + +void inputTest(WINDOW *win) +{ + int w, h, bx, by, sw, sh, i, c, num = 0; + int line_to_use = 3; + char buffer[80]; + WINDOW *subWin; + static const char spinner[4] = "/-\\|"; + int spinner_count = 0; + + wclear(win); + + getmaxyx(win, h, w); + getbegyx(win, by, bx); + + sw = w / 3; + sh = h / 3; + + if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) + == NULL) + return; + +#ifdef A_COLOR + if (has_colors()) + { + init_pair(2, COLOR_WHITE, COLOR_RED); + wbkgd(subWin, COLOR_PAIR(2) | A_BOLD); + } + else +#endif + wbkgd(subWin, A_BOLD); + + box(subWin, ACS_VLINE, ACS_HLINE); + wrefresh(win); + + nocbreak(); + + wclear (win); + mvwaddstr(win, 1, 1, + "Press keys (or mouse buttons) to show their names"); + mvwaddstr(win, 2, 1, "Press spacebar to finish, Ctrl-A to return to main menu"); + wrefresh(win); + + keypad(win, TRUE); + raw(); + noecho(); + + wtimeout(win, 200); + + +#ifdef PDCURSES + mouse_set( ALL_MOUSE_EVENTS | + (report_mouse_movement ? REPORT_MOUSE_POSITION : 0)); + PDC_save_key_modifiers(TRUE); +#else + mousemask( ALL_MOUSE_EVENTS | + (report_mouse_movement ? REPORT_MOUSE_POSITION : 0), NULL); + if( report_mouse_movement) + printf("\033[?1003h\n"); /* used in ncurses with some X-based */ +#endif /* terms to enable mouse move events */ + curs_set(0); /* turn cursor off */ + + while (1) + { + while (1) + { + c = wgetch(win); + + if (c == ERR) + { + spinner_count++; + if (spinner_count == 4) + spinner_count = 0; + mvwaddch(win, line_to_use, 3, spinner[spinner_count]); + wrefresh(win); + } + else + break; + } +#ifdef PDCURSES +/* wmove(win, line_to_use + 1, 18); + wclrtoeol(win); */ +#endif + mvwaddstr(win, line_to_use, 5, "Key Pressed: "); + wclrtoeol(win); + + wprintw( win, "(%x) ", c); + if( has_key( c)) + wprintw(win, "%s", keyname(c)); + else if (isprint(c) || c > 0xff) + waddch( win, c); + else + wprintw(win, "%s", unctrl(c)); + if (c == KEY_MOUSE) + { +#ifdef NCURSES_MOUSE_INTERFACE + const mmask_t masks[ ] = { + BUTTON1_RELEASED, BUTTON1_PRESSED, BUTTON1_CLICKED, + BUTTON1_DOUBLE_CLICKED, BUTTON1_TRIPLE_CLICKED, + BUTTON2_RELEASED, BUTTON2_PRESSED, BUTTON2_CLICKED, + BUTTON2_DOUBLE_CLICKED, BUTTON2_TRIPLE_CLICKED, + BUTTON3_RELEASED, BUTTON3_PRESSED, BUTTON3_CLICKED, + BUTTON3_DOUBLE_CLICKED, BUTTON3_TRIPLE_CLICKED, + BUTTON4_RELEASED, BUTTON4_PRESSED, BUTTON4_CLICKED, + BUTTON4_DOUBLE_CLICKED, BUTTON4_TRIPLE_CLICKED, +#ifdef BUTTON5_RELEASED + BUTTON5_RELEASED, BUTTON5_PRESSED, BUTTON5_CLICKED, + BUTTON5_DOUBLE_CLICKED, BUTTON5_TRIPLE_CLICKED, +#endif + }; +#ifdef BUTTON4_RESERVED_EVENT + const mmask_t reserved_masks[] = { + BUTTON1_RESERVED_EVENT, BUTTON2_RESERVED_EVENT, + BUTTON3_RESERVED_EVENT, BUTTON4_RESERVED_EVENT }; +#endif + MEVENT mouse_event; + bool mouse_msg_shown = FALSE; + + getmouse( &mouse_event); + wmove(win, line_to_use, 5); + wclrtoeol(win); + wprintw(win, "Posn: Y: %d X: %d", mouse_event.y, mouse_event.x); + for( i = 0; i < sizeof( masks) / sizeof( masks[0]); i++) + if( mouse_event.bstate & masks[i]) + { + const char *event_names[] = { "released", "pressed", "clicked", + "double-clicked", "triple-clicked" }; + + wprintw( win, " Button %d %s", i / 5 + 1, event_names[i % 5]); + mouse_msg_shown = TRUE; + } + if( !mouse_msg_shown) + wprintw( win, " (%lx)", mouse_event.bstate); +#ifdef BUTTON_CTRL + if( mouse_event.bstate & BUTTON_CTRL) + wprintw( win, " Ctrl"); +#endif + if( mouse_event.bstate & BUTTON_ALT) + wprintw( win, " Alt"); + if( mouse_event.bstate & BUTTON_SHIFT) + wprintw( win, " Shift"); + if( mouse_event.bstate & REPORT_MOUSE_POSITION) + wprintw( win, " Moved"); +#ifdef BUTTON4_RESERVED_EVENT + for( i = 0; i < sizeof( reserved_masks) / sizeof( reserved_masks[0]); i++) + if( mouse_event.bstate & reserved_masks[i]) + wprintw( win, " Reserved %d", i + 1); +#endif + +#else /* using the 'classic' (undocumented) Sys V mouse functions */ + int button = 0, status = 0; + request_mouse_pos(); + + if (BUTTON_CHANGED(1)) + button = 1; + else if (BUTTON_CHANGED(2)) + button = 2; + else if (BUTTON_CHANGED(3)) + button = 3; + else if (BUTTON_CHANGED(4)) /* added 21 Jan 2011: BJG */ + button = 4; + else if (BUTTON_CHANGED(5)) + button = 5; + if( button) +#ifdef PDC_N_EXTENDED_MOUSE_BUTTONS + status = (button > 3 ? Mouse_status.xbutton[(button) - 4] : + Mouse_status.button[(button) - 1]); +#else + status = (button > 3 ? 0 : + Mouse_status.button[(button) - 1]); +#endif + + wmove(win, line_to_use, 5); + wclrtoeol(win); + wprintw(win, "Button %d: ", button); + + if (MOUSE_MOVED) + waddstr(win, "moved: "); + else if (MOUSE_POS_REPORT) + waddstr(win, "Posn report: "); + else if (MOUSE_WHEEL_UP) + waddstr(win, "wheel up: "); + else if (MOUSE_WHEEL_DOWN) + waddstr(win, "wheel dn: "); +#ifdef MOUSE_WHEEL_LEFT + else if (MOUSE_WHEEL_LEFT) + waddstr(win, "wheel lt: "); +#endif +#ifdef MOUSE_WHEEL_RIGHT + else if (MOUSE_WHEEL_RIGHT) + waddstr(win, "wheel rt: "); +#endif + else if ((status & BUTTON_ACTION_MASK) == BUTTON_PRESSED) + waddstr(win, "pressed: "); + else if ((status & BUTTON_ACTION_MASK) == BUTTON_CLICKED) + waddstr(win, "clicked: "); + else if ((status & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED) + waddstr(win, "double: "); + else if ((status & BUTTON_ACTION_MASK) == BUTTON_TRIPLE_CLICKED) + waddstr(win, "triple: "); + else if( button) + waddstr(win, "released: "); + + wprintw(win, "Posn: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS); + if( !button) /* just to get shift/alt/ctrl status */ + status = Mouse_status.button[0]; + if (status & BUTTON_SHIFT) + waddstr(win, " SHIFT"); + + if (status & BUTTON_CONTROL) + waddstr(win, " CONTROL"); + + if (status & BUTTON_ALT) + waddstr(win, " ALT"); + } + else if (PDC_get_key_modifiers()) + { + waddstr(win, " Modifier(s):"); + if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_SHIFT) + waddstr(win, " SHIFT"); + + if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_CONTROL) + waddstr(win, " CONTROL"); + + if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_ALT) + waddstr(win, " ALT"); + + if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_NUMLOCK) + waddstr(win, " NUMLOCK"); + +#ifdef PDC_KEY_MODIFIER_REPEAT + if (PDC_get_key_modifiers() & PDC_KEY_MODIFIER_REPEAT) + waddstr(win, " REPEAT"); +#endif +#endif /* end of mouse display */ + } + wrefresh(win); + + if (c == ' ' || c == 1) + break; + line_to_use++; + if( line_to_use == 17) + line_to_use = 3; + } + + wtimeout(win, -1); /* turn off timeout() */ + curs_set(1); /* turn cursor back on */ + +#ifdef PDCURSES + mouse_set(0L); + PDC_save_key_modifiers(FALSE); +/* PDC_return_key_modifiers(FALSE); */ +#endif + wclear(win); + if( c == 1) + return; +#ifdef PDCURSES +#ifdef PDC_VER_MAJOR /* so far only seen in 4.0+ */ + PDC_set_function_key( FUNCTION_KEY_ABORT, 0 ); /* un-abortable */ +#endif +#endif + mvwaddstr(win, 2, 1, "Press some keys for 5 seconds"); + mvwaddstr(win, 1, 1, "Pressing ^C should do nothing"); + wrefresh(win); + + werase(subWin); + box(subWin, ACS_VLINE, ACS_HLINE); + + for (i = 0; i < 5; i++) + { + mvwprintw(subWin, 1, 1, "Time = %d", i); + wrefresh(subWin); + napms(1000); + flushinp(); + } + +#ifdef PDCURSES +#ifdef PDC_VER_MAJOR /* so far only seen in 4.0+ */ + PDC_set_function_key( FUNCTION_KEY_ABORT, 3 ); /* ctrl-C aborts */ +#endif +#endif + + delwin(subWin); + werase(win); + flash(); + wrefresh(win); + napms(500); + flushinp(); + + mvwaddstr(win, 2, 1, "Press a key, followed by ENTER"); + wmove(win, 9, 10); + wrefresh(win); + echo(); + + keypad(win, TRUE); + raw(); + wgetnstr(win, buffer, 3); + flushinp(); + + wmove(win, 9, 10); + wdelch(win); + mvwaddstr(win, 4, 1, "The character should now have been deleted"); + Continue(win); + + refresh(); + wclear(win); + echo(); + buffer[0] = '\0'; + mvwaddstr(win, 3, 2, "The window should have moved"); + mvwaddstr(win, 4, 2, + "This text should have appeared without you pressing a key"); + mvwaddstr(win, 6, 2, "Enter a number then a string separated by space"); + mvwin(win, 2, 1); + wrefresh(win); + mvwscanw(win, 7, 6, "%d %s", &num, buffer); + mvwprintw(win, 8, 6, "String: %s Number: %d", buffer, num); + Continue(win); + + refresh(); + wclear(win); + echo(); + mvwaddstr(win, 3, 2, "Enter a 5 character string: "); + wgetnstr(win, buffer, 5); + mvwprintw(win, 4, 2, "String: %s", buffer); + Continue(win); +} + +void outputTest(WINDOW *win) +{ + WINDOW *win1; + char Buffer[80]; + chtype ch; + int by, bx; + + nl(); + wclear(win); + mvwaddstr(win, 1, 1, "You should now have a screen in the upper " + "left corner, and this text should have wrapped"); + waddstr(win,"\nThis text should be down\n"); + waddstr(win, "and broken into two here ^"); + Continue(win); + + wclear(win); + wattron(win, A_BOLD); + mvwaddstr(win, 1, 1, "A new window will appear with this text in it"); + mvwaddstr(win, 8, 1, "Press any key to continue"); + wrefresh(win); + wgetch(win); + + getbegyx(win, by, bx); + + if (LINES < 24 || COLS < 75) + { + mvwaddstr(win, 5, 1, "Some tests have been skipped as they require a"); + mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS"); + Continue(win); + } + else + { + win1 = newwin(10, 50, 14, 25); + + if (win1 == NULL) + { + endwin(); + return; + } + +#ifdef A_COLOR + if (has_colors()) + { + init_pair(3, COLOR_BLUE, COLOR_WHITE); + wbkgd(win1, COLOR_PAIR(3)); + } + else +#endif + wbkgd(win1, A_NORMAL); + + wclear(win1); + mvwaddstr(win1, 5, 1, "This text should appear; using overlay option"); + copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE); + box(win1, ACS_VLINE, ACS_HLINE); + wmove(win1, 8, 26); + wrefresh(win1); + wgetch(win1); + + wclear(win1); + + wattron(win1, A_BLINK); + mvwaddstr(win1, 4, 1, + "This blinking text should appear in only the second window"); + wattroff(win1, A_BLINK); + + mvwin(win1, by, bx); + overlay(win, win1); + mvwin(win1, 14, 25); + wmove(win1, 8, 26); + wrefresh(win1); + wgetch(win1); + + delwin(win1); + } + + clear(); + wclear(win); + wrefresh(win); + mvwaddstr(win, 6, 2, "This line shouldn't appear"); + mvwaddstr(win, 4, 2, "Only half of the next line is visible"); + mvwaddstr(win, 5, 2, "Only half of the next line is visible"); + wmove(win, 6, 1); + wclrtobot(win); + wmove(win, 5, 20); + wclrtoeol(win); + mvwaddstr(win, 8, 2, "This line also shouldn't appear"); + wmove(win, 8, 1); + winsdelln(win, -1); + Continue(win); + + wmove(win, 5, 9); + ch = winch(win); + + wclear(win); + wmove(win, 6, 2); + waddstr(win, "The next char should be l: "); + winsch(win, ch); + Continue(win); + + mvwinsstr(win, 6, 2, "A1B2C3D4E5"); + Continue(win); + + wmove(win, 5, 1); + winsdelln(win, 1); + mvwaddstr(win, 5, 2, "The lines below should have moved down"); + Continue(win); + + wclear(win); + wmove(win, 2, 2); + wprintw(win, "This is a formatted string in a window: %d %s\n", + 42, "is it"); + mvwaddstr(win, 10, 1, "Enter a string: "); + wrefresh(win); + echo(); + wscanw(win, "%s", Buffer); + + printw("This is a formatted string in stdscr: %d %s\n", 42, "is it"); + mvaddstr(10, 1, "Enter a string: "); + scanw("%s", Buffer); + + wclear(win); + curs_set(2); + mvwaddstr(win, 1, 1, "The cursor should be in high-visibility mode"); + Continue(win); + + wclear(win); + curs_set(0); + mvwaddstr(win, 1, 1, "The cursor should have disappeared"); + Continue(win); + + wclear(win); + curs_set(1); + mvwaddstr(win, 1, 1, "The cursor should be normal"); + Continue(win); + +#ifdef A_COLOR + if (has_colors()) + { + wclear(win); + mvwaddstr(win, 1, 1, "Colors should change after you press a key"); + Continue(win); + + init_pair(1, COLOR_RED, COLOR_WHITE); + wrefresh(win); + } +#endif + werase(win); + mvwaddstr(win, 1, 1, "Information About Your Terminal"); + mvwaddstr(win, 3, 1, termname()); + mvwaddstr(win, 4, 1, longname()); + + if (termattrs() & A_BLINK) + mvwaddstr(win, 5, 1, "This terminal claims to support blinking."); + else + mvwaddstr(win, 5, 1, "This terminal does NOT support blinking."); + + mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16); + wrefresh(win); + + mvwinnstr(win, 7, 5, Buffer, 18); + mvaddstr(LINES - 2, 10, Buffer); + refresh(); + Continue(win); +} + +#if HAVE_RESIZE +void resizeTest(WINDOW *dummy) +{ + WINDOW *win1; + int nwidth = 135, nheight = 52; + int owidth = COLS, oheight = LINES; + + savetty(); + + resize_term(nheight, nwidth); + + clear(); + refresh(); + + win1 = newwin(10, 50, 14, 25); + + if (win1 == NULL) + { + endwin(); + return; + } + +#ifdef A_COLOR + if (has_colors()) + { + init_pair(3, COLOR_BLUE, COLOR_WHITE); + wattrset(win1, COLOR_PAIR(3)); + } + + wclear(win1); +#endif + mvwaddstr(win1, 0, 0, "The screen may now be resized"); + mvwprintw(win1, 1, 4, "Given size: %d by %d", nwidth, nheight); + mvwprintw(win1, 2, 4, "Actual size: %d by %d", COLS, LINES); + Continue(win1); + + wclear(win1); + resetty(); + + mvwaddstr(win1, 0, 0, "The screen should now be reset"); + mvwprintw(win1, 1, 6, "Old size: %d by %d", owidth, oheight); + mvwprintw(win1, 2, 6, "Size now: %d by %d", COLS, LINES); + Continue(win1); + + delwin(win1); + + clear(); + refresh(); +} +#endif /* HAVE_RESIZE */ + +void padTest(WINDOW *dummy) +{ + WINDOW *pad, *spad; + + pad = newpad(50, 100); + wattron(pad, A_REVERSE); + mvwaddstr(pad, 5, 2, "This is a new pad"); + wattrset(pad, 0); + mvwaddstr(pad, 8, 0, + "The end of this line should be truncated here:except now"); + mvwaddstr(pad, 11, 1, "This line should not appear.It will now"); + wmove(pad, 10, 1); + wclrtoeol(pad); + mvwaddstr(pad, 10, 1, " Press any key to continue"); + prefresh(pad, 0, 0, 0, 0, 10, 45); + keypad(pad, TRUE); + raw(); + wgetch(pad); + + spad = subpad(pad, 12, 25, 7, 52); + mvwaddstr(spad, 2, 2, "This is a new subpad"); + box(spad, 0, 0); + prefresh(pad, 0, 0, 0, 0, 15, 75); + keypad(pad, TRUE); + raw(); + wgetch(pad); + + mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad"); + mvwaddstr(pad, 40, 1, " Press any key to continue"); + prefresh(pad, 30, 0, 0, 0, 10, 45); + keypad(pad, TRUE); + raw(); + wgetch(pad); + + delwin(pad); +} + +#if HAVE_CLIPBOARD +void clipboardTest(WINDOW *win) +{ + static const char *text = + "This string placed in clipboard by PDCurses test program, testcurs."; + char *ptr = NULL; + long i, length = 0; + + mvaddstr(1, 1, + "This test will display the contents of the system clipboard"); + + Continue2(); + + scrollok(stdscr, TRUE); + i = PDC_getclipboard(&ptr, &length); + + switch(i) + { + case PDC_CLIP_ACCESS_ERROR: + mvaddstr(3, 1, "There was an error accessing the clipboard"); + refresh(); + break; + + case PDC_CLIP_MEMORY_ERROR: + mvaddstr(3, 1, + "Unable to allocate memory for clipboard contents"); + break; + + case PDC_CLIP_EMPTY: + mvaddstr(3, 1, "There was no text in the clipboard"); + break; + + default: + wsetscrreg(stdscr, 0, LINES - 1); + clear(); + mvaddstr(1, 1, "Clipboard contents..."); + mvprintw(2, 1, "%s\n", ptr); + } + + Continue2(); + + clear(); + mvaddstr(1, 1, + "This test will place the following string in the system clipboard:"); + mvaddstr(2, 1, text); + + i = PDC_setclipboard(text, (long)strlen(text)); + + switch(i) + { + case PDC_CLIP_ACCESS_ERROR: + mvaddstr(3, 1, "There was an error accessing the clipboard"); + break; + + case PDC_CLIP_MEMORY_ERROR: + mvaddstr(3, 1, "Unable to allocate memory for clipboard contents"); + break; + + default: + mvaddstr(3, 1, "The string was placed in the clipboard successfully"); + } + + Continue2(); +} +#endif /* HAVE_CLIPBOARD */ + +void acsTest(WINDOW *win) +{ + static const char *acs_names[] = + { + "ACS_ULCORNER", "ACS_URCORNER", "ACS_LLCORNER", "ACS_LRCORNER", + "ACS_LTEE", "ACS_RTEE", "ACS_TTEE", "ACS_BTEE", "ACS_HLINE", + "ACS_VLINE", "ACS_PLUS", + +#ifdef ACS_D_ULCORNER + "ACS_D_ULCORNER", "ACS_D_URCORNER", "ACS_D_LLCORNER", "ACS_D_LRCORNER", + "ACS_D_LTEE", "ACS_D_RTEE", "ACS_D_TTEE", "ACS_D_BTEE", "ACS_D_HLINE", + "ACS_D_VLINE", "ACS_D_PLUS", +#endif +#ifdef ACS_SD_ULCORNER + "ACS_SD_ULCORNER", "ACS_SD_URCORNER", "ACS_SD_LLCORNER", + "ACS_SD_LRCORNER", "ACS_SD_LTEE", + "ACS_SD_RTEE", "ACS_SD_TTEE", "ACS_SD_BTEE", "ACS_SD_PLUS", + "ACS_DS_ULCORNER", "ACS_DS_URCORNER", "ACS_DS_LLCORNER", + "ACS_DS_LRCORNER", "ACS_DS_LTEE", "ACS_DS_RTEE", "ACS_DS_TTEE", + "ACS_DS_BTEE", "ACS_DS_PLUS", +#endif + "ACS_S1", +#ifdef ACS_S3 + "ACS_S3", "ACS_S7", +#endif + "ACS_S9", "ACS_DIAMOND", +#ifdef ACS_CLUB + "ACS_CLUB", "ACS_SPADE", "ACS_HEART", + "ACS_LTBOARD", +#endif + "ACS_BOARD", "ACS_CKBOARD", "ACS_DEGREE", "ACS_PLMINUS", + "ACS_BULLET", +#ifdef ACS_SM_BULLET + "ACS_SM_BULLET", "ACS_MED_BULLET", "ACS_WHITE_BULLET", + "ACS_PILCROW", "ACS_SECTION", "ACS_SMILE", "ACS_REV_SMILE", +#endif + "ACS_LARROW", "ACS_RARROW", "ACS_UARROW", "ACS_DARROW", + "ACS_LANTERN", "ACS_BLOCK", +#ifdef ACS_LEQUAL + "ACS_LEQUAL", "ACS_GEQUAL", "ACS_NEQUAL", + "ACS_PI", "ACS_STERLING", +#endif +#ifdef ACS_CENT + "ACS_CENT", "ACS_YEN", "ACS_PESETA", + "ACS_ALPHA", "ACS_BETA", "ACS_GAMMA", "ACS_UP_SIGMA", + "ACS_LO_SIGMA", "ACS_MU", "ACS_TAU", "ACS_UP_PHI", "ACS_LO_PHI", + "ACS_OMEGA", "ACS_DELTA", "ACS_INFINITY", "ACS_THETA", "ACS_EPSILON", + "ACS_INTERSECT", "ACS_SUP2", "ACS_SUP_N", "ACS_TRIPLE_BAR", + "ACS_APPROX_EQ", "ACS_SQUARE_ROOT", "ACS_NOT", "ACS_REV_NOT", + "ACS_HALF", "ACS_QUARTER", "ACS_DIVISION", + "ACS_UP_INTEGRAL", "ACS_LO_INTEGRAL", + "ACS_UBLOCK", "ACS_BBLOCK", + "ACS_LBLOCK", "ACS_RBLOCK", + "ACS_A_ORDINAL", "ACS_O_ORDINAL", + "ACS_INV_BANG", "ACS_INV_QUERY", + "ACS_LEFT_ANG_QU", "ACS_RIGHT_ANG_QU", + "ACS_CENTER_SQU", "ACS_F_WITH_HOOK", +#endif + }; + + const chtype acs_values[] = + { + ACS_ULCORNER, ACS_URCORNER, ACS_LLCORNER, ACS_LRCORNER, + ACS_LTEE, ACS_RTEE, ACS_TTEE, ACS_BTEE, ACS_HLINE, + ACS_VLINE, ACS_PLUS, + +#ifdef ACS_D_ULCORNER + ACS_D_ULCORNER, ACS_D_URCORNER, ACS_D_LLCORNER, ACS_D_LRCORNER, + ACS_D_LTEE, ACS_D_RTEE, ACS_D_TTEE, ACS_D_BTEE, ACS_D_HLINE, + ACS_D_VLINE, ACS_D_PLUS, +#endif +#ifdef ACS_SD_ULCORNER + ACS_SD_ULCORNER, ACS_SD_URCORNER, ACS_SD_LLCORNER, + ACS_SD_LRCORNER, ACS_SD_LTEE, + ACS_SD_RTEE, ACS_SD_TTEE, ACS_SD_BTEE, ACS_SD_PLUS, + ACS_DS_ULCORNER, ACS_DS_URCORNER, ACS_DS_LLCORNER, + ACS_DS_LRCORNER, ACS_DS_LTEE, ACS_DS_RTEE, ACS_DS_TTEE, + ACS_DS_BTEE, ACS_DS_PLUS, +#endif + ACS_S1, +#ifdef ACS_S3 + ACS_S3, ACS_S7, +#endif + ACS_S9, ACS_DIAMOND, +#ifdef ACS_CLUB + ACS_CLUB, ACS_SPADE, ACS_HEART, ACS_LTBOARD, +#endif + ACS_BOARD, ACS_CKBOARD, ACS_DEGREE, ACS_PLMINUS, ACS_BULLET, +#ifdef ACS_SM_BULLET + ACS_SM_BULLET, ACS_MED_BULLET, ACS_WHITE_BULLET, + ACS_PILCROW, ACS_SECTION, ACS_SMILE, ACS_REV_SMILE, +#endif + ACS_LARROW, ACS_RARROW, ACS_UARROW, ACS_DARROW, + ACS_LANTERN, ACS_BLOCK, +#ifdef ACS_LEQUAL + ACS_LEQUAL, ACS_GEQUAL, ACS_NEQUAL, + ACS_PI, ACS_STERLING, +#endif +#ifdef ACS_CENT + ACS_CENT, ACS_YEN, ACS_PESETA, + ACS_ALPHA, ACS_BETA, ACS_GAMMA, ACS_UP_SIGMA, + ACS_LO_SIGMA, ACS_MU, ACS_TAU, ACS_UP_PHI, ACS_LO_PHI, + ACS_OMEGA, ACS_DELTA, ACS_INFINITY, ACS_THETA, ACS_EPSILON, + ACS_INTERSECT, ACS_SUP2, ACS_SUP_N, ACS_TRIPLE_BAR, + ACS_APPROX_EQ, ACS_SQUARE_ROOT, ACS_NOT, ACS_REV_NOT, + ACS_HALF, ACS_QUARTER, ACS_DIVISION, + ACS_UP_INTEGRAL, ACS_LO_INTEGRAL, + ACS_UBLOCK, ACS_BBLOCK, + ACS_LBLOCK, ACS_RBLOCK, + ACS_A_ORDINAL, ACS_O_ORDINAL, + ACS_INV_BANG, ACS_INV_QUERY, + ACS_LEFT_ANG_QU, ACS_RIGHT_ANG_QU, + ACS_CENTER_SQU, ACS_F_WITH_HOOK, +#endif + }; + +#if HAVE_WIDE && defined( WACS_S1) + const cchar_t *wacs_values[] = + { + WACS_ULCORNER, WACS_URCORNER, WACS_LLCORNER, WACS_LRCORNER, + WACS_LTEE, WACS_RTEE, WACS_TTEE, WACS_BTEE, WACS_HLINE, + WACS_VLINE, WACS_PLUS, + +#ifdef WACS_D_ULCORNER + WACS_D_ULCORNER, WACS_D_URCORNER, WACS_D_LLCORNER, WACS_D_LRCORNER, + WACS_D_LTEE, WACS_D_RTEE, WACS_D_TTEE, WACS_D_BTEE, WACS_D_HLINE, + WACS_D_VLINE, WACS_D_PLUS, +#endif +#ifdef WACS_SD_ULCORNER + WACS_SD_ULCORNER, WACS_SD_URCORNER, WACS_SD_LLCORNER, + WACS_SD_LRCORNER, WACS_SD_LTEE, + WACS_SD_RTEE, WACS_SD_TTEE, WACS_SD_BTEE, WACS_SD_PLUS, + WACS_DS_ULCORNER, WACS_DS_URCORNER, WACS_DS_LLCORNER, + WACS_DS_LRCORNER, WACS_DS_LTEE, WACS_DS_RTEE, WACS_DS_TTEE, + WACS_DS_BTEE, WACS_DS_PLUS, +#endif + WACS_S1, +#ifdef WACS_S3 + WACS_S3, WACS_S7, +#endif + WACS_S9, WACS_DIAMOND, +#ifdef WACS_CLUB + WACS_CLUB, WACS_SPADE, WACS_HEART, WACS_LTBOARD, +#endif + WACS_BOARD, WACS_CKBOARD, WACS_DEGREE, WACS_PLMINUS, WACS_BULLET, +#ifdef WACS_SM_BULLET + WACS_SM_BULLET, WACS_MED_BULLET, WACS_WHITE_BULLET, + WACS_PILCROW, WACS_SECTION, WACS_SMILE, WACS_REV_SMILE, +#endif + WACS_LARROW, WACS_RARROW, WACS_UARROW, WACS_DARROW, + WACS_LANTERN, WACS_BLOCK, +#ifdef WACS_LEQUAL + WACS_LEQUAL, WACS_GEQUAL, WACS_NEQUAL, + WACS_PI, WACS_STERLING, +#endif +#ifdef WACS_CENT + WACS_CENT, WACS_YEN, WACS_PESETA, + WACS_ALPHA, WACS_BETA, WACS_GAMMA, WACS_UP_SIGMA, + WACS_LO_SIGMA, WACS_MU, WACS_TAU, WACS_UP_PHI, WACS_LO_PHI, + WACS_OMEGA, WACS_DELTA, WACS_INFINITY, WACS_THETA, WACS_EPSILON, + WACS_INTERSECT, WACS_SUP2, WACS_SUP_N, WACS_TRIPLE_BAR, + WACS_APPROX_EQ, WACS_SQUARE_ROOT, WACS_NOT, WACS_REV_NOT, + WACS_HALF, WACS_QUARTER, WACS_DIVISION, + WACS_UP_INTEGRAL, WACS_LO_INTEGRAL, + WACS_UBLOCK, WACS_BBLOCK, + WACS_LBLOCK, WACS_RBLOCK, + WACS_A_ORDINAL, WACS_O_ORDINAL, + WACS_INV_BANG, WACS_INV_QUERY, + WACS_LEFT_ANG_QU, WACS_RIGHT_ANG_QU, + WACS_CENTER_SQU, WACS_F_WITH_HOOK, +#endif /* #if WACS_CENT */ + }; +#endif /* #ifdef WACS_S1 */ + +#if HAVE_WIDE + static const wchar_t russian[] = {0x0420, 0x0443, 0x0441, 0x0441, + 0x043a, 0x0438, 0x0439, L' ', 0x044f, 0x0437, 0x044b, 0x043a, 0}; + + static const wchar_t greek[] = {0x0395, 0x03bb, 0x03bb, 0x03b7, + 0x03bd, 0x03b9, 0x03ba, 0x03ac, 0}; + + static const wchar_t georgian[] = {0x10e5, 0x10d0, 0x10e0, 0x10d7, + 0x10e3, 0x10da, 0x10d8, L' ', 0x10d4, 0x10dc, 0x10d0, 0}; + + static const wchar_t fullwidth[] = { 0xff26, 0xff55, 0xff4c, 0xff4c, + 0xff57, 0xff49, 0xff44, 0xff54, 0xff48, 0 }; /* "Fullwidth" */ + + static const wchar_t combining_marks[] = { L'C', L'o', 0x35c, L'm', + L'b', 0x30a, L'i', L'n', L'i', 0x304, L'n', 0x30b, 0x329, + L'g', 0x310, + L' ', L'C', 0x338, L'h', 0x306, L'a', 0x361, L'r', L's', + 0x30e, 0x348, 0 }; + +#endif + + int i, tmarg = 1, ncols = (COLS - 4) / 19; + int col_size = (COLS - 4) / ncols; + int n_items = sizeof( acs_names) / sizeof( acs_names[0]); + int n_rows = LINES / 2 - 4; + + i = 0; + while( i < n_items) + { + int j, xloc = 3; + + attrset(A_BOLD); + mvaddstr( 1, (COLS - 23) / 2, "Alternate Character Set"); + attrset(A_NORMAL); + tmarg = 4; + while( i < n_items && xloc < COLS - col_size) + { + for( j = 0; i < n_items && j < n_rows; j++, i++) + { + move( j * 2 + tmarg, xloc); + addch(acs_values[i]); + printw(" %s", acs_names[i]); + } + xloc += col_size; + } + + mvaddstr( tmarg + n_rows * 2, 3, curses_version( )); + move( tmarg + n_rows * 2 + 1, 3); + printw( "sizeof( chtype) = %d; sizeof( mmask_t) = %d", + (int)sizeof( chtype), (int)sizeof( mmask_t)); + mvaddstr(tmarg + n_rows * 2 + 2, 3, "Press any key to continue"); + getch(); + clear( ); + } + +#if HAVE_WIDE + i = 0; + while( i < n_items) + { + int j, xloc = 3; + + attrset(A_BOLD); + mvaddstr( 1, (COLS - 28) / 2, "Wide Alternate Character Set"); + attrset(A_NORMAL); + tmarg = 4; +#ifdef WACS_S1 + while( i < n_items && xloc < COLS - col_size) + { + for( j = 0; i < n_items && j < n_rows; j++, i++) + { + move( j * 2 + tmarg, xloc); + add_wch( wacs_values[i]); + printw(" W%s", acs_names[i]); + } + xloc += col_size; + } +#endif + /* Spanish, Russian, Greek, Georgian, fullwidth, combining */ + + tmarg += n_rows * 2; + mvaddwstr(tmarg, COLS / 8 - 5, L"Espa\xf1ol"); + mvaddwstr(tmarg, 3 * (COLS / 8) - 5, russian); + mvaddwstr(tmarg, 5 * (COLS / 8) - 5, greek); + mvaddwstr(tmarg, 7 * (COLS / 8) - 5, georgian); + mvaddwstr(tmarg + 1, COLS / 8 - 5, fullwidth); + + mvaddwstr(tmarg + 1, 3 * (COLS / 8) - 5, combining_marks); +#if(CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes */ + mvaddch( tmarg + 1, 7 * (COLS / 8) - 5, (chtype)0x1d11e); +#endif /* U+1D11E = musical symbol G clef */ + + mvaddstr(tmarg + 2, 3, "Press any key to continue"); + getch(); + clear( ); + } +#endif +} + +#if HAVE_COLOR + +#if CHTYPE_LONG >= 2 || (CHTYPE_LONG == 1 && !defined( PDC_WIDE)) + #define GOT_DIM +#ifdef A_OVERLINE + #define GOT_OVERLINE +#endif +#ifdef A_STIKEOUT + #define GOT_STRIKEOUT +#endif +#endif + +void colorTest(WINDOW *win) +{ + static const short colors[] = + { + COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_BLUE, + COLOR_CYAN, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE + }; + + static const char *colornames[] = + { + "COLOR_BLACK", "COLOR_RED", "COLOR_GREEN", "COLOR_BLUE", + "COLOR_CYAN", "COLOR_MAGENTA", "COLOR_YELLOW", "COLOR_WHITE" + }; + + chtype fill = ACS_BLOCK; + + int i, j, tmarg, col1, col2, col3, col4, ch; + + if (!has_colors()) + return; + + do + { + tmarg = (LINES - 19) / 2; + col1 = (COLS - 60) / 2; + col2 = col1 + 15; + col3 = col2 + 15; + col4 = col3 + 15; + + attrset(A_BOLD); + mvaddstr(tmarg, (COLS - 22) / 2, "Color Attribute Macros"); + attrset(A_NORMAL); + + mvaddstr(tmarg + 3, col2 + 2, "A_NORMAL"); + mvaddstr(tmarg + 3, col3 + 3, "A_BOLD"); + mvaddstr(tmarg + 3, col4 + 3, "A_BLINK"); + + for (i = 0; i < 8; i++) + { + init_pair((short)(i + 4), colors[i], background_index); + mvaddstr(tmarg + i + 5, col1, colornames[i]); + + for (j = 0; j < 12; j++) + { + mvaddch(tmarg + i + 5, col2 + j, fill | COLOR_PAIR(i + 4)); + mvaddch(tmarg + i + 5, col3 + j, fill | COLOR_PAIR(i + 4) | A_BOLD); + mvaddch(tmarg + i + 5, col4 + j, fill | COLOR_PAIR(i + 4) | A_BLINK); + } + attrset( COLOR_PAIR( i + 4) | A_BLINK); + mvaddstr( tmarg + i + 5, col4 + 5, "Text"); + attrset( COLOR_PAIR( i + 4) | A_BOLD); + mvaddstr( tmarg + i + 5, col3 + 5, "Text"); + attroff( A_BOLD); + mvaddstr( tmarg + i + 5, col2 + 5, "Text"); + attrset( A_NORMAL); + } + + mvprintw(tmarg + 15, col1, "COLORS = %d", COLORS); + mvprintw(tmarg + 16, col1, "COLOR_PAIRS = %d", COLOR_PAIRS); + +#ifdef CHTYPE_LONG + attrset(A_ITALIC); + mvprintw( tmarg + 15, col3, "Italic"); + attrset(A_ITALIC | A_BLINK); + mvprintw( tmarg + 15, col4, "Italic Blink"); + attrset(A_BOLD | A_ITALIC); + mvprintw( tmarg + 17, col4, "Italic Bold"); + attrset(A_BOLD | A_ITALIC | A_BLINK); + mvprintw( tmarg + 18, col4, "Italic Blink Bold"); +#endif + attrset(A_BOLD); + mvprintw( tmarg + 16, col3, "Bold"); + attrset(A_BLINK); + mvprintw( tmarg + 17, col3, "Blink"); + + attrset(A_BLINK | A_BOLD); + mvprintw( tmarg + 16, col4, "Blink Bold"); +/* end BJG addenda */ + attrset(A_NORMAL); + + mvaddstr(tmarg + 19, 3, "Press any key to continue"); + ch = getch(); +# ifdef PDCURSES + if( ch == KEY_RESIZE) + { + erase(); + resize_term(0, 0); + } +# endif + } while( ch == KEY_RESIZE); + + if (can_change_color()) + { + struct + { + short red, green, blue; + } orgcolors[16]; + + int MAXCOL = (COLORS >= 16) ? 16 : 8; + + if (MAXCOL < 8) + return; + + for (i = 0; i < MAXCOL; i++) + color_content((short)i, &(orgcolors[i].red), + &(orgcolors[i].green), + &(orgcolors[i].blue)); + + attrset(A_BOLD); + mvaddstr(tmarg, (COLS - 22) / 2, " init_color() Example "); + attrset(A_NORMAL); + + refresh(); + + for (i = 0; i < 8; i++) + { + init_color(colors[i], (short)(i * 125), 0, (short)(i * 125)); + + if (MAXCOL == 16) + init_color((short)(colors[i] + 8), 0, (short)(i * 125), 0); + } + + mvaddstr(tmarg + 19, 3, "Press any key to continue"); + getch(); + for (i = 0; i < MAXCOL; i++) + init_color((short)i, orgcolors[i].red, + orgcolors[i].green, + orgcolors[i].blue); + } + + if (COLORS >= 256) do + { + int x, y, z, lmarg = (COLS - 77) / 2; + + erase(); + + attrset(A_BOLD); + mvaddstr(tmarg, (COLS - 15) / 2, "Extended Colors"); + attrset(A_NORMAL); + + mvaddstr(tmarg + 3, lmarg, "6x6x6 Color Cube (16-231):"); + + for (i = 16; i < 256; i++) + init_pair(i, COLOR_BLACK, i); + + for (i = 16, z = 0; z < 6; z++) + for (y = 0; y < 6; y++) + for (x = 0; x < 6; x++) + { + chtype ch = ' ' | COLOR_PAIR(i++); + + mvaddch(tmarg + 5 + y, z * 13 + x * 2 + lmarg, ch); + addch(ch); + } + + mvaddstr(tmarg + 13, lmarg, "Greyscale (232-255):"); + + for (x = 0; x < 24; x++) + { + chtype ch = ' ' | COLOR_PAIR(232 + x); + + mvaddch(tmarg + 15, x * 2 + lmarg, ch); + addch(ch); + } + +#ifdef CHTYPE_LONG + attrset( A_LEFTLINE); + mvaddstr( tmarg + 17, col1, "A_LEFTLINE"); + attrset( A_UNDERLINE); + mvaddstr( tmarg + 18, col1, "A_UNDERLINE"); + attrset( A_RIGHTLINE); + mvaddstr( tmarg + 19, col1, "A_RIGHTLINE"); +#endif +#ifdef GOT_OVERLINE + attrset( A_OVERLINE); + mvaddstr( tmarg + 17, col2, "A_OVERLINE"); +#ifdef GOT_STRIKEOUT + attrset( A_STRIKEOUT); + mvaddstr( tmarg + 18, col2, "A_STRIKEOUT"); +#endif + attrset( A_OVERLINE | A_UNDERLINE); + mvaddstr( tmarg + 19, col2, "Over/underlined"); +#endif + attrset(A_NORMAL); + refresh( ); + ch = getch( ); +# ifdef PDCURSES + if( ch == KEY_RESIZE) + resize_term(0, 0); +# endif + } while( ch == KEY_RESIZE); +} +#endif + +#if HAVE_WIDE +void wideTest(WINDOW *win) +{ + wchar_t tmp[513]; + size_t i; + + attrset(A_BOLD); + mvaddstr(1, (COLS - 25) / 2, "Wide Character Input Test"); + attrset(A_NORMAL); + + mvaddstr(4, 1, "Enter a string: "); + + echo(); + + get_wstr((wint_t *)tmp); + addstr("\n\n String:\n\n "); + addwstr(tmp); + addstr("\n\n\n Hex:\n\n "); + + for (i = 0; i < wcslen(tmp); i++) + { + printw("%04x ", tmp[i]); + addnwstr(tmp + i, 1); + addstr(" "); + } + + noecho(); + + Continue2(); +} +#endif + +void display_menu(int old_option, int new_option) +{ + int lmarg = (COLS - 14) / 2, + tmarg = (LINES - (MAX_OPTIONS + 2)) / 2; + + if (old_option == -1) + { + int i; + + attrset(A_BOLD); + mvaddstr(tmarg - 3, lmarg - 5, "PDCurses Test Program"); + attrset(A_NORMAL); + + for (i = 0; i < MAX_OPTIONS; i++) + mvaddstr(tmarg + i, lmarg, command[i].text); + } + else + mvaddstr(tmarg + old_option, lmarg, command[old_option].text); + + attrset(A_REVERSE); + mvaddstr(tmarg + new_option, lmarg, command[new_option].text); + attrset(A_NORMAL); + + mvaddstr(tmarg + MAX_OPTIONS + 2, lmarg - 23, + "Use Up and Down Arrows to select - Enter to run - Q to quit"); + refresh(); +} diff --git a/3rd-party/PDCurses/demos/tui.c b/3rd-party/PDCurses/demos/tui.c new file mode 100644 index 0000000..6b2ed78 --- /dev/null +++ b/3rd-party/PDCurses/demos/tui.c @@ -0,0 +1,1048 @@ +/********************************* tui.c ************************************/ +/* + * 'textual user interface' + * + * Author : P.J. Kunst + * Date : 25-02-93 + */ + +#include +#include +#include +#include +#include +#include +#include "tui.h" + +void statusmsg(char *); +int waitforkey(void); +void rmerror(void); + +#if defined(__unix) && !defined(__DJGPP__) +#include +#endif + +#ifdef PDCURSES +#define HAVE_CLIPBOARD +#else +#define nc_getmouse getmouse +#endif + +#ifdef A_COLOR +# define TITLECOLOR 1 /* color pair indices */ +# define MAINMENUCOLOR (2 | A_BOLD) +# define MAINMENUREVCOLOR (3 | A_BOLD | A_REVERSE) +# define SUBMENUCOLOR (4 | A_BOLD) +# define SUBMENUREVCOLOR (5 | A_BOLD | A_REVERSE) +# define BODYCOLOR 6 +# define STATUSCOLOR (7 | A_BOLD) +# define INPUTBOXCOLOR 8 +# define EDITBOXCOLOR (9 | A_BOLD | A_REVERSE) +#else +# define TITLECOLOR 0 /* color pair indices */ +# define MAINMENUCOLOR (A_BOLD) +# define MAINMENUREVCOLOR (A_BOLD | A_REVERSE) +# define SUBMENUCOLOR (A_BOLD) +# define SUBMENUREVCOLOR (A_BOLD | A_REVERSE) +# define BODYCOLOR 0 +# define STATUSCOLOR (A_BOLD) +# define INPUTBOXCOLOR 0 +# define EDITBOXCOLOR (A_BOLD | A_REVERSE) +#endif + + +#define th 1 /* title window height */ +#define mh 1 /* main menu height */ +#define sh 2 /* status window height */ +#define bh (LINES - th - mh - sh) /* body window height */ +#define bw COLS /* body window width */ + + +/******************************* STATIC ************************************/ + +static WINDOW *wtitl, *wmain, *wbody, *wstat; /* title, menu, body, status win*/ +static int nexty, nextx; +static int key = ERR, ch = ERR; +static bool quit = FALSE; +static bool incurses = FALSE; + +#ifndef PDCURSES +static char wordchar(void) +{ + return 0x17; /* ^W */ +} +#endif + +static char *padstr(char *s, int length) +{ + static char buf[MAXSTRLEN]; + char fmt[10]; + + sprintf(fmt, (int)strlen(s) > length ? "%%.%ds" : "%%-%ds", length); + sprintf(buf, fmt, s); + + return buf; +} + +static char *prepad(char *s, int length) +{ + int i; + char *p = s; + + if (length > 0) + { + memmove((void *)(s + length), (const void *)s, strlen(s) + 1); + + for (i = 0; i < length; i++) + *p++ = ' '; + } + + return s; +} + +static void rmline(WINDOW *win, int nr) /* keeps box lines intact */ +{ + mvwaddstr(win, nr, 1, padstr(" ", bw - 2)); + wrefresh(win); +} + +static void initcolor(void) +{ +#ifdef A_COLOR + if (has_colors()) + start_color(); + + /* foreground, background */ + + init_pair(TITLECOLOR & ~A_ATTR, COLOR_BLACK, COLOR_CYAN); + init_pair(MAINMENUCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN); + init_pair(MAINMENUREVCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK); + init_pair(SUBMENUCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN); + init_pair(SUBMENUREVCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK); + init_pair(BODYCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLUE); + init_pair(STATUSCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_CYAN); + init_pair(INPUTBOXCOLOR & ~A_ATTR, COLOR_BLACK, COLOR_CYAN); + init_pair(EDITBOXCOLOR & ~A_ATTR, COLOR_WHITE, COLOR_BLACK); +#endif +} + +static void setcolor(WINDOW *win, chtype color) +{ + chtype attr = color & A_ATTR; /* extract Bold, Reverse, Blink bits */ + +#ifdef A_COLOR + attr &= ~A_REVERSE; /* ignore reverse, use colors instead! */ + wattrset(win, COLOR_PAIR(color & A_CHARTEXT) | attr); +#else + attr &= ~A_BOLD; /* ignore bold, gives messy display on HP-UX */ + wattrset(win, attr); +#endif +} + +static void colorbox(WINDOW *win, chtype color, int hasbox) +{ + int maxy; +#ifndef PDCURSES + int maxx; +#endif + chtype attr = color & A_ATTR; /* extract Bold, Reverse, Blink bits */ + + setcolor(win, color); + +#ifdef A_COLOR + if (has_colors()) + wbkgd(win, COLOR_PAIR(color & A_CHARTEXT) | (attr & ~A_REVERSE)); + else +#endif + wbkgd(win, attr); + + werase(win); + +#ifdef PDCURSES + maxy = getmaxy(win); +#else + getmaxyx(win, maxy, maxx); +#endif + if (hasbox && (maxy > 2)) + box(win, 0, 0); + + touchwin(win); + wrefresh(win); +} + +static void idle(void) +{ + char buf[MAXSTRLEN]; + time_t t; + struct tm *tp; + + if (time (&t) == -1) + return; /* time not available */ + + tp = localtime(&t); + sprintf(buf, " %.2d-%.2d-%.4d %.2d:%.2d:%.2d", + tp->tm_mday, tp->tm_mon + 1, tp->tm_year + 1900, + tp->tm_hour, tp->tm_min, tp->tm_sec); + + mvwaddstr(wtitl, (int)0, (int)(bw - strlen(buf) - 2), buf); + wrefresh(wtitl); +} + +static void menudim(menu *mp, int *lines, int *columns) +{ + int n, l, mmax = 0; + + for (n=0; mp->func; n++, mp++) + if ((l = (int)strlen(mp->name)) > mmax) mmax = l; + + *lines = n; + *columns = mmax + 2; +} + +static void setmenupos(int y, int x) +{ + nexty = y; + nextx = x; +} + +static void getmenupos(int *y, int *x) +{ + *y = nexty; + *x = nextx; +} + +static int hotkey(const char *s) +{ + int c0 = *s; /* if no upper case found, return first char */ + + for (; *s; s++) + if (isupper((unsigned char)*s)) + break; + + return *s ? *s : c0; +} + +static void repaintmenu(WINDOW *wmenu, menu *mp) +{ + int i; + menu *p = mp; + + for (i = 0; p->func; i++, p++) + mvwaddstr(wmenu, i + 1, 2, p->name); + + touchwin(wmenu); + wrefresh(wmenu); +} + +static void repaintmainmenu(int width, menu *mp) +{ + int i; + menu *p = mp; + + for (i = 0; p->func; i++, p++) + mvwaddstr(wmain, 0, i * width, prepad(padstr(p->name, width - 1), 1)); + + touchwin(wmain); + wrefresh(wmain); +} + +static void mainhelp(void) +{ +#ifdef ALT_X + statusmsg("Use arrow keys and Enter to select (Alt-X to quit)"); +#else + statusmsg("Use arrow keys and Enter to select"); +#endif +} + +static void mainmenu(menu *mp) +{ + int nitems, barlen, old = -1, cur = 0, c, cur0, x; + MEVENT mouse_event; + + menudim(mp, &nitems, &barlen); + repaintmainmenu(barlen, mp); +#ifdef __PDCURSES__ + nc_getmouse( &mouse_event); +#else + getmouse( &mouse_event); +#endif + mousemask( BUTTON1_DOUBLE_CLICKED | BUTTON1_PRESSED | BUTTON1_CLICKED |BUTTON3_DOUBLE_CLICKED |BUTTON3_PRESSED |BUTTON3_CLICKED , NULL); + + while (!quit) + { + if (cur != old) + { + if (old != -1) + { + mvwaddstr(wmain, 0, old * barlen, + prepad(padstr(mp[old].name, barlen - 1), 1)); + + statusmsg(mp[cur].desc); + } + else + mainhelp(); + + setcolor(wmain, MAINMENUREVCOLOR); + + mvwaddstr(wmain, 0, cur * barlen, + prepad(padstr(mp[cur].name, barlen - 1), 1)); + + setcolor(wmain, MAINMENUCOLOR); + old = cur; + wrefresh(wmain); + } + + switch (c = (key != ERR ? key : waitforkey())) + { +#ifdef KEY_C2 + case KEY_C2: +#endif + case KEY_DOWN: + + case '\n': /* menu item selected */ + touchwin(wbody); + wrefresh(wbody); + rmerror(); + setmenupos(th + mh, cur * barlen); + curs_set(1); + (mp[cur].func)(); /* perform function */ + curs_set(0); + + switch (key) + { +#ifdef KEY_B1 + case KEY_B1: +#endif + case KEY_LEFT: + cur = (cur + nitems - 1) % nitems; + key = '\n'; + break; + +#ifdef KEY_B3 + case KEY_B3: +#endif + case KEY_RIGHT: + cur = (cur + 1) % nitems; + key = '\n'; + break; + + case KEY_MOUSE: + if(nc_getmouse(&mouse_event) == OK) + { + if((mouse_event.bstate & BUTTON1_PRESSED) || (mouse_event.bstate & BUTTON1_DOUBLE_CLICKED) || (mouse_event.bstate & BUTTON1_CLICKED)) + { + for( x = 1; x <= nitems ; ++x){ + if((mouse_event.x > (barlen * (x-1)) && mouse_event.x < (barlen * x) ) && + (mouse_event.y == th )){ + if(x>=1){ + cur = x-1; + break; + } + else{ + key = KEY_ESC; + break; + } + } + } + } + break; + } + break; + + default: + key = ERR; + } + + repaintmainmenu(barlen, mp); + old = -1; + break; + +#ifdef KEY_B1 + case KEY_B1: +#endif + case KEY_LEFT: + cur = (cur + nitems - 1) % nitems; + break; + +#ifdef KEY_B3 + case KEY_B3: +#endif + case KEY_RIGHT: + cur = (cur + 1) % nitems; + break; + + case KEY_ESC: + mainhelp(); + break; + + case KEY_MOUSE: + if(nc_getmouse(&mouse_event) == OK) + { + if((mouse_event.bstate & BUTTON1_PRESSED) || (mouse_event.bstate & BUTTON1_DOUBLE_CLICKED) || (mouse_event.bstate & BUTTON1_CLICKED)) + { + for( x = 1; x <= nitems ; ++x){ + if((mouse_event.x > (barlen * (x-1)) && mouse_event.x < (barlen * x) ) && + (mouse_event.y == th)){ + cur = x-1; + key = '\n'; + break; + } + } + } + break; + } + break; + + default: + cur0 = cur; + + do + { + cur = (cur + 1) % nitems; + + } while ((cur != cur0) && (hotkey(mp[cur].name) != toupper(c))); + + if (hotkey(mp[cur].name) == toupper(c)) + key = '\n'; + } + + } + + rmerror(); + touchwin(wbody); + wrefresh(wbody); +} + +static void cleanup(void) /* cleanup curses settings */ +{ + if (incurses) + { + delwin(wtitl); + delwin(wmain); + delwin(wbody); + delwin(wstat); + curs_set(1); + endwin(); + incurses = FALSE; + } +} + + +/******************************* EXTERNAL **********************************/ + +void clsbody(void) +{ + werase(wbody); + wmove(wbody, 0, 0); +} + +int bodylen(void) +{ +#ifdef PDCURSES + return getmaxy(wbody); +#else + int maxy, maxx; + + getmaxyx(wbody, maxy, maxx); + return maxy; +#endif +} + +WINDOW *bodywin(void) +{ + return wbody; +} + +void rmerror(void) +{ + rmline(wstat, 0); +} + +void rmstatus(void) +{ + rmline(wstat, 1); +} + +void titlemsg(char *msg) +{ + mvwaddstr(wtitl, 0, 2, padstr(msg, bw - 3)); + wrefresh(wtitl); +} + +void bodymsg(char *msg) +{ + waddstr(wbody, msg); + wrefresh(wbody); +} + +void errormsg(char *msg) +{ + beep(); + mvwaddstr(wstat, 0, 2, padstr(msg, bw - 3)); + wrefresh(wstat); +} + +void statusmsg(char *msg) +{ + mvwaddstr(wstat, 1, 2, padstr(msg, bw - 3)); + wrefresh(wstat); +} + +bool keypressed(void) +{ + ch = wgetch(wbody); + + return ch != ERR; +} + +int getkey(void) +{ + int c = ch; + + ch = ERR; +#ifdef ALT_X + quit = (c == ALT_X); /* PC only ! */ +#endif + return c; +} + +int waitforkey(void) +{ + do idle(); while (!keypressed()); + return getkey(); +} + +void DoExit(void) /* terminate program */ +{ + quit = TRUE; +} + +void domenu(menu *mp) +{ + int y, x, nitems, barlen, mheight, mw, old = -1, cur = 0, cur0; + bool stop = FALSE; + WINDOW *wmenu; + MEVENT mouse_event; + + curs_set(0); + getmenupos(&y, &x); + menudim(mp, &nitems, &barlen); + mheight = nitems + 2; + mw = barlen + 2; + wmenu = newwin(mheight, mw, y, x); + colorbox(wmenu, SUBMENUCOLOR, 1); + repaintmenu(wmenu, mp); + + key = ERR; +#ifdef __PDCURSES__ + nc_getmouse( &mouse_event); +#else + getmouse( &mouse_event); +#endif + mousemask( BUTTON1_DOUBLE_CLICKED | BUTTON1_PRESSED | BUTTON1_CLICKED |BUTTON3_DOUBLE_CLICKED |BUTTON3_PRESSED |BUTTON3_CLICKED , NULL); + + while (!stop && !quit) + { + if (cur != old) + { + if (old != -1) + mvwaddstr(wmenu, old + 1, 1, + prepad(padstr(mp[old].name, barlen - 1), 1)); + + setcolor(wmenu, SUBMENUREVCOLOR); + mvwaddstr(wmenu, cur + 1, 1, + prepad(padstr(mp[cur].name, barlen - 1), 1)); + + setcolor(wmenu, SUBMENUCOLOR); + statusmsg(mp[cur].desc); + + old = cur; + wrefresh(wmenu); + } + + switch (key = ((key != ERR) ? key : waitforkey())) + { + case '\n': /* menu item selected */ + touchwin(wbody); + wrefresh(wbody); + setmenupos(y + 1, x + 1); + rmerror(); + + key = ERR; + curs_set(1); + (mp[cur].func)(); /* perform function */ + curs_set(0); + + repaintmenu(wmenu, mp); + + old = -1; + break; + +#ifdef KEY_A2 + case KEY_A2: +#endif + case KEY_UP: + cur = (cur + nitems - 1) % nitems; + key = ERR; + break; + +#ifdef KEY_C2 + case KEY_C2: +#endif + case KEY_DOWN: + cur = (cur + 1) % nitems; + key = ERR; + break; + + case KEY_ESC: +#ifdef KEY_B1 + case KEY_B1: +#endif + case KEY_LEFT: +#ifdef KEY_B3 + case KEY_B3: +#endif + case KEY_RIGHT: + if (key == KEY_ESC) + key = ERR; /* return to prev submenu */ + + stop = TRUE; + break; + + case KEY_MOUSE: + if(nc_getmouse(&mouse_event) == OK) + { + if((mouse_event.bstate & BUTTON1_PRESSED) || (mouse_event.bstate & BUTTON1_CLICKED)) + { + if( mouse_event.y <= th+1) + { + key = KEY_ESC; /* exit menu */ + break; + } + else if((mouse_event.y - (y-1) > 0) && mouse_event.y > th && mouse_event.y < y+mheight && mouse_event.y > y && mouse_event.x > x && mouse_event.x < mw +x) + { + cur = (mouse_event.y - y-1) % nitems; + key = ERR; + break; + + } + else if(mouse_event.y > 0 && mouse_event.y != y-1 && mouse_event.x > 0 && mouse_event.x != x-1) + { + key = KEY_ESC; /* exit menu */ + break; + } + stop = TRUE; + break; + } + else if(mouse_event.bstate & BUTTON1_DOUBLE_CLICKED) + { + if((mouse_event.y - (y-1) > 0) && mouse_event.y > th && mouse_event.y < y+mheight && mouse_event.y > y){ + cur = (mouse_event.y - y-1) % nitems; + key = '\n'; + break; + }else{ + key = KEY_ESC; + break; + } + + } + else if( (mouse_event.bstate & BUTTON3_PRESSED) || (mouse_event.bstate & BUTTON3_CLICKED)) + { + key = KEY_ESC; + break; + } + } + break; + + default: + cur0 = cur; + + do + { + cur = (cur + 1) % nitems; + + } while ((cur != cur0) && + (hotkey(mp[cur].name) != toupper((int)key))); + + key = (hotkey(mp[cur].name) == toupper((int)key)) ? '\n' : ERR; + } + + } + + rmerror(); + delwin(wmenu); + touchwin(wbody); + wrefresh(wbody); +} + +void startmenu(menu *mp, char *mtitle) +{ + initscr(); + incurses = TRUE; + initcolor(); + + wtitl = subwin(stdscr, th, bw, 0, 0); + wmain = subwin(stdscr, mh, bw, th, 0); + wbody = subwin(stdscr, bh, bw, th + mh, 0); + wstat = subwin(stdscr, sh, bw, th + mh + bh, 0); + + colorbox(wtitl, TITLECOLOR, 0); + colorbox(wmain, MAINMENUCOLOR, 0); + colorbox(wbody, BODYCOLOR, 0); + colorbox(wstat, STATUSCOLOR, 0); + + if (mtitle) + titlemsg(mtitle); + + cbreak(); /* direct input (no newline required)... */ + noecho(); /* ... without echoing */ + curs_set(0); /* hide cursor (if possible) */ + nodelay(wbody, TRUE); /* don't wait for input... */ + halfdelay(10); /* ...well, no more than a second, anyway */ + keypad(wbody, TRUE); /* enable cursor keys */ + scrollok(wbody, TRUE); /* enable scrolling in main window */ + + leaveok(stdscr, TRUE); + leaveok(wtitl, TRUE); + leaveok(wmain, TRUE); + leaveok(wstat, TRUE); + + mainmenu(mp); + + cleanup(); +} + +static void repainteditbox(WINDOW *win, int x, char *buf) +{ +#ifndef PDCURSES + int maxy; +#endif + int maxx; + +#ifdef PDCURSES + maxx = getmaxx(win); +#else + getmaxyx(win, maxy, maxx); +#endif + werase(win); + mvwprintw(win, 0, 0, "%s", padstr(buf, maxx)); + wmove(win, 0, x); + wrefresh(win); +} + +/* + + weditstr() - edit string + + Description: + The initial value of 'str' with a maximum length of 'field' - 1, + which is supplied by the calling routine, is editted. The user's + erase (^H), kill (^U) and delete word (^W) chars are interpreted. + The PC insert or Tab keys toggle between insert and edit mode. + Escape aborts the edit session, leaving 'str' unchanged. + Enter, Up or Down Arrow are used to accept the changes to 'str'. + NOTE: editstr(), mveditstr(), and mvweditstr() are macros. + + Return Value: + Returns the input terminating character on success (Escape, + Enter, Up or Down Arrow) and ERR on error. + + Errors: + It is an error to call this function with a NULL window pointer. + The length of the initial 'str' must not exceed 'field' - 1. + +*/ + +int weditstr(WINDOW *win, char *buf, int field) +{ + char org[MAXSTRLEN], *tp, *bp = buf; + bool defdisp = TRUE, stop = FALSE, insert = FALSE; + int cury, curx, begy, begx; + chtype oldattr; + WINDOW *wedit; + int c = 0; +#ifdef HAVE_CLIPBOARD + char *ptr = NULL; + long j, length = 0; + MEVENT mouse_event; +#ifdef __PDCURSES__ + nc_getmouse( &mouse_event); +#else + getmouse( &mouse_event); +#endif + mousemask( BUTTON1_DOUBLE_CLICKED | BUTTON1_PRESSED | BUTTON1_CLICKED |BUTTON3_DOUBLE_CLICKED |BUTTON3_PRESSED |BUTTON3_CLICKED , NULL); +#endif + if ((field >= MAXSTRLEN) || (buf == NULL) || + ((int)strlen(buf) > field - 1)) + return ERR; + + strcpy(org, buf); /* save original */ + + wrefresh(win); + getyx(win, cury, curx); + getbegyx(win, begy, begx); + + wedit = subwin(win, 1, field, begy + cury, begx + curx); + oldattr = wedit->_attrs; + colorbox(wedit, EDITBOXCOLOR, 0); + + keypad(wedit, TRUE); + curs_set(1); + + while (!stop) + { + idle(); + repainteditbox(wedit, (int)(bp - buf), buf); + + switch (c = wgetch(wedit)) + { + case ERR: + break; + + case KEY_ESC: + strcpy(buf, org); /* restore original */ + stop = TRUE; + break; + + case '\n': +#ifdef KEY_A2 + case KEY_A2: +#endif + case KEY_UP: +#ifdef KEY_C2 + case KEY_C2: +#endif + case KEY_DOWN: + stop = TRUE; + break; + +#ifdef KEY_B1 + case KEY_B1: +#endif + case KEY_LEFT: + if (bp > buf) + bp--; + break; + +#ifdef KEY_B3 + case KEY_B3: +#endif + case KEY_RIGHT: + defdisp = FALSE; + if (bp - buf < (int)strlen(buf)) + bp++; + break; +#ifdef HAVE_CLIPBOARD + case KEY_MOUSE: + if(nc_getmouse(&mouse_event) == OK) + { + if(mouse_event.bstate & BUTTON1_DOUBLE_CLICKED){ + if(mouse_event.y >= begy + cury && mouse_event.y <= begy + cury + 1 && + mouse_event.x >= begx + curx && mouse_event.x <= begx + curx + field){ + c = KEY_DOWN; + stop = TRUE; + break; + }else{ + c = KEY_ESC; + strcpy(buf, org); /* restore original */ + stop = TRUE; + break; + } + } + else if(mouse_event.bstate & BUTTON3_DOUBLE_CLICKED){ + c = KEY_UP; + strcpy(buf, org); /* restore original */ + stop = TRUE; + break; + } + else if( (mouse_event.bstate & BUTTON3_PRESSED) || (mouse_event.bstate & BUTTON3_CLICKED)) + { + j = PDC_getclipboard(&ptr, &length); + switch(j) + { + case PDC_CLIP_ACCESS_ERROR: + strcpy(buf, org); /* restore original as default */ + stop = TRUE; + c = KEY_ESC; + break; + case PDC_CLIP_MEMORY_ERROR: + strcpy(buf, org); /* restore original as default */ + stop = TRUE; + c = KEY_ESC; + break; + case PDC_CLIP_EMPTY: + strcpy(buf, org); /* restore original as default */ + stop = TRUE; + c = KEY_ESC; + break; + case PDC_CLIP_SUCCESS: + if ((int)strlen(ptr) && insert){ + + if ((int)strlen(buf) < field + 1 ) + { + memmove((void *)(ptr+(int)strlen(ptr)), (const void *)bp, (int)strlen(buf)+1); /* Experimental insert/add to existing text*/ + strncpy(bp, ptr, field - (int)strlen(buf)); /* copy clip-board to already existing field */ + insert = !insert; + curs_set(insert ? 2 : 1); + while (bp - buf < (int)strlen(buf)) + bp++; + } + } + break; + default: + strcpy(buf, org); /* restore original */ + stop = TRUE; + c = KEY_ESC; + break; + } + } + } + break; +#endif + case '\t': /* TAB -- because insert + is broken on HPUX */ + case KEY_IC: /* enter insert mode */ + case KEY_EIC: /* exit insert mode */ + defdisp = FALSE; + insert = !insert; + + curs_set(insert ? 2 : 1); + break; + + default: + if (c == erasechar()) /* backspace, ^H */ + { + if (bp > buf) + { + memmove((void *)(bp - 1), (const void *)bp, strlen(bp) + 1); + bp--; + } + } + else if (c == killchar()) /* ^U */ + { + bp = buf; + *bp = '\0'; + } + else if (c == wordchar()) /* ^W */ + { + tp = bp; + + while ((bp > buf) && (*(bp - 1) == ' ')) + bp--; + while ((bp > buf) && (*(bp - 1) != ' ')) + bp--; + + memmove((void *)bp, (const void *)tp, strlen(tp) + 1); + } + else if( c >=0 && c < 256 && isprint(c)) + { + if (defdisp) + { + bp = buf; + *bp = '\0'; + defdisp = FALSE; + } + + if (insert) + { + if ((int)strlen(buf) < field - 1) + { + memmove((void *)(bp + 1), (const void *)bp, + strlen(bp) + 1); + + *bp++ = c; + } + } + else if (bp - buf < field - 1) + { + /* append new string terminator */ + + if (!*bp) + bp[1] = '\0'; + + *bp++ = c; + } + } + } + } + + curs_set(0); + + wattrset(wedit, oldattr); + repainteditbox(wedit, (int)(bp - buf), buf); + delwin(wedit); + + return c; +} + +WINDOW *winputbox(WINDOW *win, int nlines, int ncols) +{ + WINDOW *winp; + int cury, curx, begy, begx; + + getyx(win, cury, curx); + getbegyx(win, begy, begx); + + winp = newwin(nlines, ncols, begy + cury, begx + curx); + colorbox(winp, INPUTBOXCOLOR, 1); + + return winp; +} + +int getstrings(char *desc[], char *buf[], int field) +{ + WINDOW *winput; + int oldy, oldx, maxy, maxx, nlines, ncols, i, n, l, mmax = 0; + int c = 0; + bool stop = FALSE; + + for (n = 0; desc[n]; n++) + if ((l = (int)strlen(desc[n])) > mmax) + mmax = l; + + nlines = n + 2; ncols = mmax + field + 4; + getyx(wbody, oldy, oldx); + getmaxyx(wbody, maxy, maxx); + + winput = mvwinputbox(wbody, (maxy - nlines) / 2, (maxx - ncols) / 2, + nlines, ncols); + + for (i = 0; i < n; i++) + mvwprintw(winput, i + 1, 2, "%s", desc[i]); + + i = 0; + + while (!stop) + { + switch (c = mvweditstr(winput, i+1, mmax+3, buf[i], field)) + { + case KEY_ESC: + stop = TRUE; + break; + +#ifdef KEY_A2 + case KEY_A2: +#endif + case KEY_UP: + i = (i + n - 1) % n; + break; + + case '\n': + case '\t': +#ifdef KEY_C2 + case KEY_C2: +#endif + case KEY_DOWN: + if (++i == n) + stop = TRUE; /* all passed? */ + } + } + + delwin(winput); + touchwin(wbody); + wmove(wbody, oldy, oldx); + wrefresh(wbody); + + return c; +} diff --git a/3rd-party/PDCurses/demos/tui.h b/3rd-party/PDCurses/demos/tui.h new file mode 100644 index 0000000..98bfd5f --- /dev/null +++ b/3rd-party/PDCurses/demos/tui.h @@ -0,0 +1,65 @@ +/* + * 'textual user interface' + * + * Author : P.J. Kunst + * Date : 25-02-93 + */ + +#ifndef _TUI_H_ +#define _TUI_H_ + +#include + +#ifdef A_COLOR +#define A_ATTR (A_ATTRIBUTES ^ A_COLOR) /* A_BLINK, A_REVERSE, A_BOLD */ +#else +#define A_ATTR (A_ATTRIBUTES) /* standard UNIX attributes */ +#endif + +#define MAXSTRLEN 256 +#define KEY_ESC 0x1b /* Escape */ + +typedef void (*FUNC)(void); + +typedef struct +{ + char *name; /* item label */ + FUNC func; /* (pointer to) function */ + char *desc; /* function description */ +} menu; + +/* ANSI C function prototypes: */ + +void clsbody(void); +int bodylen(void); +WINDOW *bodywin(void); + +void rmerror(void); +void rmstatus(void); + +void titlemsg(char *msg); +void bodymsg(char *msg); +void errormsg(char *msg); +void statusmsg(char *msg); + +bool keypressed(void); +int getkey(void); +int waitforkey(void); + +void DoExit(void); +void startmenu(menu *mp, char *title); +void domenu(menu *mp); + +int weditstr(WINDOW *win, char *buf, int field); +WINDOW *winputbox(WINDOW *win, int nlines, int ncols); +int getstrings(char *desc[], char *buf[], int field); + +#define editstr(s,f) (weditstr(stdscr,s,f)) +#define mveditstr(y,x,s,f) (move(y,x)==ERR?ERR:editstr(s,f)) +#define mvweditstr(w,y,x,s,f) (wmove(w,y,x)==ERR?ERR:weditstr(w,s,f)) + +#define inputbox(l,c) (winputbox(stdscr,l,c)) +#define mvinputbox(y,x,l,c) (move(y,x)==ERR?w:inputbox(l,c)) +#define mvwinputbox(w,y,x,l,c) (wmove(w,y,x)==ERR?w:winputbox(w,l,c)) + +#endif diff --git a/3rd-party/PDCurses/demos/tuidemo.c b/3rd-party/PDCurses/demos/tuidemo.c new file mode 100644 index 0000000..e995f49 --- /dev/null +++ b/3rd-party/PDCurses/demos/tuidemo.c @@ -0,0 +1,233 @@ +/* + * Author : P.J. Kunst + * Date : 25-02-93 + * + * Purpose: This program demonstrates the use of the 'curses' library + * for the creation of (simple) menu-operated programs. + * In the PDCurses version, use is made of colors for the + * highlighting of subwindows (title bar, status bar etc). + * + * Acknowledgement: some ideas were borrowed from Mark Hessling's + * version of the 'testcurs' program. + */ + +#include +#include +#include +#include +#include "tui.h" + +/* change this if source at other location */ + +# define FNAME "../demos/tui.c" + +/**************************** strings entry box ***************************/ + +void address(void) +{ + char *fieldname[6] = + { + "Name", "Street", "City", "State", "Country", (char *)0 + }; + + char *fieldbuf[5]; + WINDOW *wbody = bodywin(); + int i, field = 50; + + for (i = 0; i < 5; i++) + fieldbuf[i] = calloc(1, field + 1); + + if (getstrings(fieldname, fieldbuf, field) != KEY_ESC) + { + for (i = 0; fieldname[i]; i++) + wprintw(wbody, "%10s : %s\n", + fieldname[i], fieldbuf[i]); + + wrefresh(wbody); + } + + for (i = 0; i < 5; i++) + free(fieldbuf[i]); +} + +/**************************** string entry box ****************************/ + +char *getfname(char *desc, char *fname, int field) +{ + char *fieldname[2]; + char *fieldbuf[1]; + + fieldname[0] = desc; + fieldname[1] = 0; + fieldbuf[0] = fname; + + return (getstrings(fieldname, fieldbuf, field) == KEY_ESC) ? NULL : fname; +} + +/**************************** a very simple file browser ******************/ + +void showfile(char *fname) +{ + int i, bh = bodylen(); + FILE *fp; + char buf[MAXSTRLEN]; + bool ateof = FALSE; + + statusmsg("FileBrowser: Hit key to continue, Q to quit"); + + if ((fp = fopen(fname, "r")) != NULL) /* file available? */ + { + while (!ateof) + { + clsbody(); + + for (i = 0; i < bh - 1 && !ateof; i++) + { + buf[0] = '\0'; + if( fgets(buf, MAXSTRLEN, fp)) + { + size_t j = 0; + + while( buf[j] >= ' ') + j++; + buf[j] = '\0'; + bodymsg(buf); + bodymsg( "\n"); + } + else + ateof = TRUE; + } + + switch (waitforkey()) + { + case 'Q': + case 'q': + case 0x1b: + ateof = TRUE; + } + } + + fclose(fp); + } + else + { + sprintf(buf, "ERROR: file '%s' not found", fname); + errormsg(buf); + } +} + +/***************************** forward declarations ***********************/ + +void sub0(void), sub1(void), sub2(void), sub3(void); +void func1(void), func2(void); +void subfunc1(void), subfunc2(void); +void subsub(void); + +/***************************** menus initialization ***********************/ + +menu MainMenu[] = +{ + { "Asub", sub0, "Go inside first submenu" }, + { "Bsub", sub1, "Go inside second submenu" }, + { "Csub", sub2, "Go inside third submenu" }, + { "Dsub", sub3, "Go inside fourth submenu" }, + { "", (FUNC)0, "" } /* always add this as the last item! */ +}; + +menu SubMenu0[] = +{ + { "Exit", DoExit, "Terminate program" }, + { "", (FUNC)0, "" } +}; + +menu SubMenu1[] = +{ + { "OneBeep", func1, "Sound one beep" }, + { "TwoBeeps", func2, "Sound two beeps" }, + { "", (FUNC)0, "" } +}; + +menu SubMenu2[] = +{ + { "Browse", subfunc1, "Source file lister" }, + { "Input", subfunc2, "Interactive file lister" }, + { "Address", address, "Get address data" }, + { "", (FUNC)0, "" } +}; + +menu SubMenu3[] = +{ + { "SubSub", subsub, "Go inside sub-submenu" }, + { "", (FUNC)0, "" } +}; + +/***************************** main menu functions ************************/ + +void sub0(void) +{ + domenu(SubMenu0); +} + +void sub1(void) +{ + domenu(SubMenu1); +} + +void sub2(void) +{ + domenu(SubMenu2); +} + +void sub3(void) +{ + domenu(SubMenu3); +} + +/***************************** submenu1 functions *************************/ + +void func1(void) +{ + beep(); + bodymsg("One beep! "); +} + +void func2(void) +{ + beep(); + bodymsg("Two beeps! "); + beep(); +} + +/***************************** submenu2 functions *************************/ + +void subfunc1(void) +{ + showfile(FNAME); +} + +void subfunc2(void) +{ + char fname[MAXSTRLEN]; + + strcpy(fname, FNAME); + if (getfname ("File to browse:", fname, 50)) + showfile(fname); +} + +/***************************** submenu3 functions *************************/ + +void subsub(void) +{ + domenu(SubMenu2); +} + +/***************************** start main menu ***************************/ + +int main(int argc, char **argv) +{ + setlocale(LC_ALL, ""); + + startmenu(MainMenu, "TUI - 'textual user interface' demonstration program"); + + return 0; +} diff --git a/3rd-party/PDCurses/demos/version.c b/3rd-party/PDCurses/demos/version.c new file mode 100644 index 0000000..d7f1a9b --- /dev/null +++ b/3rd-party/PDCurses/demos/version.c @@ -0,0 +1,61 @@ +#include +#include + +/* Example usage of the PDC_version structure declared in curses.h. The +general idea is that, while we have various macros defined to tell us +which version of PDCurses we're using (PDC_VER_MAJOR, PDC_VER_MINOR, +PDC_WIDE, etc.), these may not match the library to which we are linked; +it may have been compiled with different flags, or a different chtype size +(16, 32, or 64-bit), etc. This is a small issue with static libraries, +but with DLLs (Windows and OS/2) or shared libraries (*nix and *BSD), we +may not really control which DLL/shared library happens to be available. + +In such cases, the PDC_version structure (declared within the library but +global/available to the application) tells us how the library was compiled. + +Note that this can be used even though we never call initscr(). The idea +is that version checking can be done without attempting function calls, +some of which would fail if (for example) the library had been compiled +with wide characters and the application had not, or the version numbers +didn't match, or the size of chtypes differed. */ + +int main( const int argc, const char **argv) +{ + static const char *port_text[] = { "X11", "Win32 console", "Win32a", + "DOS", "OS/2", "SDL1", "SDL2", "VT" }; + + printf( "Compiled as version %d.%d.%d, chtype size %d\n", + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + (int)sizeof( chtype)); +#ifdef PDC_WIDE + printf( "Compiled with PDC_WIDE defined\n"); +#else + printf( "Compiled with PDC_WIDE undefined\n"); +#endif +#ifdef PDC_FORCE_UTF8 + printf( "Compiled with PDC_FORCE_UTF8 defined\n"); +#else + printf( "Compiled with PDC_FORCE_UTF8 undefined\n"); +#endif + + + printf( "\nInformation on the library :\n"); + printf( "PDCurses version %d.%d.%d, chtype size %d\n", + PDC_version.ver_major, + PDC_version.ver_minor, + PDC_version.ver_change, + (int)PDC_version.chtype_size); + printf( "Port %d (%s)\n", + PDC_version.port, + port_text[PDC_version.port]); + printf( "is_wide = %d is_utf8 = %d\n", + PDC_version.is_wide, PDC_version.is_forced_utf8); + printf( "longname is '%s'\n", longname( )); + printf( "Curses version string is '%s'\n", curses_version( )); + + if( PDC_version.ver_major != PDC_VER_MAJOR + || PDC_version.ver_minor != PDC_VER_MINOR + || PDC_version.ver_change != PDC_VER_CHANGE) + printf( "Versions do not match!\n"); + return( 0); +} diff --git a/3rd-party/PDCurses/demos/worm.c b/3rd-party/PDCurses/demos/worm.c new file mode 100644 index 0000000..9bc1f3a --- /dev/null +++ b/3rd-party/PDCurses/demos/worm.c @@ -0,0 +1,432 @@ +/**************************************************************************** + * Copyright (c) 2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/* + + @@@ @@@ @@@@@@@@@@ @@@@@@@@@@@ @@@@@@@@@@@@ + @@@ @@@ @@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@@@ + @@@ @@@ @@@@ @@@@ @@@@ @@@@ @@@ @@@@ + @@@ @@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ + @@@ @@@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ + @@@@ @@@@ @@@@ @@@ @@@ @@@ @@@ @@@ @@@ + @@@@@@@@@@@@ @@@@ @@@@ @@@ @@@ @@@ @@@ + @@@@ @@@@ @@@@@@@@@@@@ @@@ @@@ @@@ @@@ + @@ @@ @@@@@@@@@@ @@@ @@@ @@@ @@@ + + Eric P. Scott + Caltech High Energy Physics + October, 1980 + + Color by Eric S. Raymond + July, 1995 + +Options: + -f fill screen with copies of 'WORM' at start. + -l set worm length + -n set number of worms + -t make worms leave droppings +*/ + +#include +#include +#include + +#define FLAVORS 7 + +static chtype flavor[FLAVORS] = +{ + 'O', '*', '#', '$', '%', '0', '@' +}; + +static const short xinc[] = +{ + 1, 1, 1, 0, -1, -1, -1, 0 +}, +yinc[] = +{ + -1, 0, 1, 1, 1, 0, -1, -1 +}; + +static struct worm +{ + int orientation, head; + short *xpos, *ypos; +} worm[40]; + +static const char *field; +static int length = 16, number = 3; +static chtype trail = ' '; + +static const struct options +{ + int nopts; + int opts[3]; +} normal[8] = +{ + { 3, { 7, 0, 1 } }, { 3, { 0, 1, 2 } }, { 3, { 1, 2, 3 } }, + { 3, { 2, 3, 4 } }, { 3, { 3, 4, 5 } }, { 3, { 4, 5, 6 } }, + { 3, { 5, 6, 7 } }, { 3, { 6, 7, 0 } } +}, +upper[8] = +{ + { 1, { 1, 0, 0 } }, { 2, { 1, 2, 0 } }, { 0, { 0, 0, 0 } }, + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 2, { 4, 5, 0 } }, + { 1, { 5, 0, 0 } }, { 2, { 1, 5, 0 } } +}, +left[8] = +{ + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, + { 2, { 2, 3, 0 } }, { 1, { 3, 0, 0 } }, { 2, { 3, 7, 0 } }, + { 1, { 7, 0, 0 } }, { 2, { 7, 0, 0 } } +}, +right[8] = +{ + { 1, { 7, 0, 0 } }, { 2, { 3, 7, 0 } }, { 1, { 3, 0, 0 } }, + { 2, { 3, 4, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, + { 0, { 0, 0, 0 } }, { 2, { 6, 7, 0 } } +}, +lower[8] = +{ + { 0, { 0, 0, 0 } }, { 2, { 0, 1, 0 } }, { 1, { 1, 0, 0 } }, + { 2, { 1, 5, 0 } }, { 1, { 5, 0, 0 } }, { 2, { 5, 6, 0 } }, + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } } +}, +upleft[8] = +{ + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 1, { 3, 0, 0 } }, + { 2, { 1, 3, 0 } }, { 1, { 1, 0, 0 } } +}, +upright[8] = +{ + { 2, { 3, 5, 0 } }, { 1, { 3, 0, 0 } }, { 0, { 0, 0, 0 } }, + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, + { 0, { 0, 0, 0 } }, { 1, { 5, 0, 0 } } +}, +lowleft[8] = +{ + { 3, { 7, 0, 1 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, + { 1, { 1, 0, 0 } }, { 2, { 1, 7, 0 } }, { 1, { 7, 0, 0 } }, + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } } +}, +lowright[8] = +{ + { 0, { 0, 0, 0 } }, { 1, { 7, 0, 0 } }, { 2, { 5, 7, 0 } }, + { 1, { 5, 0, 0 } }, { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } }, + { 0, { 0, 0, 0 } }, { 0, { 0, 0, 0 } } +}; + +static void cleanup(void) +{ + standend(); + refresh(); + curs_set(1); + endwin(); +} + +int main(int argc, char *argv[]) +{ + const struct options *op; + struct worm *w; + short **ref, *ip; + int x, y, n, h, last, bottom, seed; + + for (x = 1; x < argc; x++) + { + char *p = argv[x]; + + if (*p == '-') + p++; + + switch (*p) + { + case 'f': + field = "WORM"; + break; + case 'l': + if (++x == argc) + goto usage; + + if ((length = atoi(argv[x])) < 2 || length > 1024) + { + fprintf(stderr, "%s: Invalid length\n", *argv); + return EXIT_FAILURE; + } + + break; + case 'n': + if (++x == argc) + goto usage; + + if ((number = atoi(argv[x])) < 1 || number > 40) + { + fprintf(stderr, "%s: Invalid number of worms\n", *argv); + return EXIT_FAILURE; + } + + break; + case 't': + trail = '.'; + break; + default: + usage: + fprintf(stderr, "usage: %s [-field] [-length #] " + "[-number #] [-trail]\n", *argv); + return EXIT_FAILURE; + } + } + +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif + seed = (int)time((time_t *)0); + srand(seed); + + noecho(); + cbreak(); + nonl(); + keypad(stdscr, TRUE); + + curs_set(0); + + bottom = LINES - 1; + last = COLS - 1; + +#ifdef A_COLOR + if (has_colors()) + { + short bg = COLOR_BLACK; + start_color(); + +# if defined(NCURSES_VERSION) || (defined(PDC_BUILD) && PDC_BUILD > 3000) + if (use_default_colors() == OK) + bg = -1; +# endif + +# define SET_COLOR(num, fg) \ + init_pair(num + 1, fg, bg); \ + flavor[num] |= COLOR_PAIR(num + 1) | A_BOLD + + SET_COLOR(0, COLOR_GREEN); + SET_COLOR(1, COLOR_RED); + SET_COLOR(2, COLOR_CYAN); + SET_COLOR(3, COLOR_WHITE); + SET_COLOR(4, COLOR_MAGENTA); + SET_COLOR(5, COLOR_BLUE); + SET_COLOR(6, COLOR_YELLOW); + } +#endif + + ref = malloc(sizeof(short *) * LINES); + + for (y = 0; y < LINES; y++) + { + ref[y] = malloc(sizeof(short) * COLS); + + for (x = 0; x < COLS; x++) + ref[y][x] = 0; + } + +#ifdef BADCORNER + /* if addressing the lower right corner doesn't work in your curses */ + + ref[bottom][last] = 1; +#endif + + for (n = number, w = &worm[0]; --n >= 0; w++) + { + w->orientation = w->head = 0; + + if ((ip = malloc(sizeof(short) * (length + 1))) == NULL) + { + fprintf(stderr, "%s: out of memory\n", *argv); + return EXIT_FAILURE; + } + + w->xpos = ip; + + for (x = length; --x >= 0;) + *ip++ = -1; + + if ((ip = malloc(sizeof(short) * (length + 1))) == NULL) + { + fprintf(stderr, "%s: out of memory\n", *argv); + return EXIT_FAILURE; + } + + w->ypos = ip; + + for (y = length; --y >= 0;) + *ip++ = -1; + } + + if (field) + { + const char *p = field; + + for (y = bottom; --y >= 0;) + for (x = COLS; --x >= 0;) + { + addch((chtype) (*p++)); + + if (!*p) + p = field; + } + } + + napms(12); + refresh(); + nodelay(stdscr, TRUE); + + for (;;) + { + int ch; + + if ((ch = getch()) > 0) + { +#ifdef KEY_RESIZE + if (ch == KEY_RESIZE) + { +# ifdef PDCURSES + resize_term(0, 0); + erase(); +# endif + if (last != COLS - 1) + { + for (y = 0; y <= bottom; y++) + { + ref[y] = realloc(ref[y], sizeof(short) * COLS); + + for (x = last + 1; x < COLS; x++) + ref[y][x] = 0; + } + + last = COLS - 1; + } + + if (bottom != LINES - 1) + { + for (y = LINES; y <= bottom; y++) + free(ref[y]); + + ref = realloc(ref, sizeof(short *) * LINES); + + for (y = bottom + 1; y < LINES; y++) + { + ref[y] = malloc(sizeof(short) * COLS); + + for (x = 0; x < COLS; x++) + ref[y][x] = 0; + } + + bottom = LINES - 1; + } + } + +#endif /* KEY_RESIZE */ + + /* Make it simple to put this into single-step mode, + or resume normal operation - T. Dickey */ + + if (ch == 'q') + { + cleanup(); + return EXIT_SUCCESS; + } + else if (ch == 's') + nodelay(stdscr, FALSE); + else if (ch == ' ') + nodelay(stdscr, TRUE); + } + + for (n = 0, w = &worm[0]; n < number; n++, w++) + { + if ((x = w->xpos[h = w->head]) < 0) + { + move(y = w->ypos[h] = bottom, x = w->xpos[h] = 0); + addch(flavor[n % FLAVORS]); + ref[y][x]++; + } + else + y = w->ypos[h]; + + if (x > last) + x = last; + + if (y > bottom) + y = bottom; + + if (++h == length) + h = 0; + + if (w->xpos[w->head = h] >= 0) + { + int x1 = w->xpos[h]; + int y1 = w->ypos[h]; + + if (y1 < LINES && x1 < COLS && --ref[y1][x1] == 0) + { + move(y1, x1); + addch(trail); + } + } + + op = &(x == 0 ? (y == 0 ? upleft : + (y == bottom ? lowleft : left)) : + (x == last ? (y == 0 ? upright : + (y == bottom ? lowright : right)) : + (y == 0 ? upper : + (y == bottom ? lower : normal)))) + [w->orientation]; + + switch (op->nopts) + { + case 0: + cleanup(); + return EXIT_SUCCESS; + case 1: + w->orientation = op->opts[0]; + break; + default: + w->orientation = op->opts[rand() % op->nopts]; + } + + move(y += yinc[w->orientation], x += xinc[w->orientation]); + + if (y < 0) + y = 0; + + addch(flavor[n % FLAVORS]); + ref[w->ypos[h] = y][w->xpos[h] = x]++; + } + napms(12); + refresh(); + } +} diff --git a/3rd-party/PDCurses/demos/xmas.c b/3rd-party/PDCurses/demos/xmas.c new file mode 100644 index 0000000..62b4842 --- /dev/null +++ b/3rd-party/PDCurses/demos/xmas.c @@ -0,0 +1,955 @@ +/******************************************************************************/ +/* asciixmas */ +/* December 1989 Larry Bartz Indianapolis, IN */ +/* */ +/* */ +/* I'm dreaming of an ascii character-based monochrome Christmas, */ +/* Just like the one's I used to know! */ +/* Via a full duplex communications channel, */ +/* At 9600 bits per second, */ +/* Even though it's kinda slow. */ +/* */ +/* I'm dreaming of an ascii character-based monochrome Christmas, */ +/* With ev'ry C program I write! */ +/* May your screen be merry and bright! */ +/* And may all your Christmases be amber or green, */ +/* (for reduced eyestrain and improved visibility)! */ +/* */ +/* */ +/* */ +/* IMPLEMENTATION */ +/* */ +/* Feel free to modify the defined string FROMWHO to reflect you, your */ +/* organization, your site, whatever. */ +/* */ +/* This looks a lot better if you can turn off your cursor before execution. */ +/* The cursor is distracting but it doesn't really ruin the show. */ +/* */ +/* At our site, we invoke this for our users just after login and the */ +/* determination of terminal type. */ +/* */ +/* */ +/* PORTABILITY */ +/* */ +/* I wrote this using only the very simplest curses functions so that it */ +/* might be the most portable. I was personally able to test on five */ +/* different cpu/UNIX combinations. */ +/* */ +/* */ +/* COMPILE */ +/* */ +/* usually this: */ +/* */ +/* cc -O xmas.c -lcurses -o xmas -s */ +/* */ +/******************************************************************************/ + +#include +#include + +void lil(WINDOW *); +void midtop(WINDOW *); +void bigtop(WINDOW *); +void bigface(WINDOW *, chtype); +void legs1(WINDOW *); +void legs2(WINDOW *); +void legs3(WINDOW *); +void legs4(WINDOW *); +void initdeer(void); +void boxit(void); +void seas(void); +void greet(void); +void fromwho(void); +void del_msg(void); +void tree(void); +void balls(void); +void star(void); +void strng1(void); +void strng2(void); +void strng3(void); +void strng4(void); +void strng5(void); +void blinkit(void); +void reindeer(void); + +#define FROMWHO "From Larry Bartz, Mark Hessling and William McBrine" + +int y_pos, x_pos; + +WINDOW *treescrn, *treescrn2, *treescrn3, *treescrn4, *treescrn5, + *treescrn6, *treescrn7, *treescrn8, *dotdeer0, *stardeer0, + *lildeer0, *lildeer1, *lildeer2, *lildeer3, *middeer0, + *middeer1, *middeer2, *middeer3, *bigdeer0, *bigdeer1, + *bigdeer2, *bigdeer3, *bigdeer4, *lookdeer0, *lookdeer1, + *lookdeer2, *lookdeer3, *lookdeer4, *w_holiday, *w_del_msg; + +int main(int argc, char **argv) +{ + int loopy; + +#ifdef XCURSES + Xinitscr(argc, argv); +#else + initscr(); +#endif + nodelay(stdscr, TRUE); + noecho(); + nonl(); + refresh(); + +#ifdef A_COLOR + if (has_colors()) + start_color(); +#endif + curs_set(0); + + treescrn = newwin(16, 27, 3, 53); + treescrn2 = newwin(16, 27, 3, 53); + treescrn3 = newwin(16, 27, 3, 53); + treescrn4 = newwin(16, 27, 3, 53); + treescrn5 = newwin(16, 27, 3, 53); + treescrn6 = newwin(16, 27, 3, 53); + treescrn7 = newwin(16, 27, 3, 53); + treescrn8 = newwin(16, 27, 3, 53); + + w_holiday = newwin(1, 26, 3, 27); + + w_del_msg = newwin(1, 12, 23, 60); + + mvwaddstr(w_holiday, 0, 0, "H A P P Y H O L I D A Y S"); + + initdeer(); + + clear(); + werase(treescrn); + touchwin(treescrn); + werase(treescrn2); + touchwin(treescrn2); + werase(treescrn8); + touchwin(treescrn8); + refresh(); + napms(1000); + + boxit(); + del_msg(); + napms(1000); + + seas(); + del_msg(); + napms(1000); + + greet(); + del_msg(); + napms(1000); + + fromwho(); + del_msg(); + napms(1000); + + tree(); + napms(1000); + + balls(); + napms(1000); + + star(); + napms(1000); + + strng1(); + strng2(); + strng3(); + strng4(); + strng5(); + + /* set up the windows for our blinking trees */ + /* **************************************** */ + /* treescrn3 */ + + overlay(treescrn, treescrn3); + + /* balls */ + mvwaddch(treescrn3, 4, 18, ' '); + mvwaddch(treescrn3, 7, 6, ' '); + mvwaddch(treescrn3, 8, 19, ' '); + mvwaddch(treescrn3, 11, 22, ' '); + + /* star */ + mvwaddch(treescrn3, 0, 12, '*'); + + /* strng1 */ + mvwaddch(treescrn3, 3, 11, ' '); + + /* strng2 */ + mvwaddch(treescrn3, 5, 13, ' '); + mvwaddch(treescrn3, 6, 10, ' '); + + /* strng3 */ + mvwaddch(treescrn3, 7, 16, ' '); + mvwaddch(treescrn3, 7, 14, ' '); + + /* strng4 */ + mvwaddch(treescrn3, 10, 13, ' '); + mvwaddch(treescrn3, 10, 10, ' '); + mvwaddch(treescrn3, 11, 8, ' '); + + /* strng5 */ + mvwaddch(treescrn3, 11, 18, ' '); + mvwaddch(treescrn3, 12, 13, ' '); + + /* treescrn4 */ + + overlay(treescrn, treescrn4); + + /* balls */ + mvwaddch(treescrn4, 3, 9, ' '); + mvwaddch(treescrn4, 4, 16, ' '); + mvwaddch(treescrn4, 7, 6, ' '); + mvwaddch(treescrn4, 8, 19, ' '); + mvwaddch(treescrn4, 11, 2, ' '); + mvwaddch(treescrn4, 12, 23, ' '); + + /* star */ + mvwaddch(treescrn4, 0, 12, '*' | A_STANDOUT); + + /* strng1 */ + mvwaddch(treescrn4, 3, 13, ' '); + + /* strng2 */ + + /* strng3 */ + mvwaddch(treescrn4, 7, 15, ' '); + mvwaddch(treescrn4, 8, 11, ' '); + + /* strng4 */ + mvwaddch(treescrn4, 9, 16, ' '); + mvwaddch(treescrn4, 10, 12, ' '); + mvwaddch(treescrn4, 11, 8, ' '); + + /* strng5 */ + mvwaddch(treescrn4, 11, 18, ' '); + mvwaddch(treescrn4, 12, 14, ' '); + + /* treescrn5 */ + + overlay(treescrn, treescrn5); + + /* balls */ + mvwaddch(treescrn5, 3, 15, ' '); + mvwaddch(treescrn5, 10, 20, ' '); + mvwaddch(treescrn5, 12, 1, ' '); + + /* star */ + mvwaddch(treescrn5, 0, 12, '*'); + + /* strng1 */ + mvwaddch(treescrn5, 3, 11, ' '); + + /* strng2 */ + mvwaddch(treescrn5, 5, 12, ' '); + + /* strng3 */ + mvwaddch(treescrn5, 7, 14, ' '); + mvwaddch(treescrn5, 8, 10, ' '); + + /* strng4 */ + mvwaddch(treescrn5, 9, 15, ' '); + mvwaddch(treescrn5, 10, 11, ' '); + mvwaddch(treescrn5, 11, 7, ' '); + + /* strng5 */ + mvwaddch(treescrn5, 11, 17, ' '); + mvwaddch(treescrn5, 12, 13, ' '); + + /* treescrn6 */ + + overlay(treescrn, treescrn6); + + /* balls */ + mvwaddch(treescrn6, 6, 7, ' '); + mvwaddch(treescrn6, 7, 18, ' '); + mvwaddch(treescrn6, 10, 4, ' '); + mvwaddch(treescrn6, 11, 23, ' '); + + /* star */ + mvwaddch(treescrn6, 0, 12, '*' | A_STANDOUT); + + /* strng1 */ + + /* strng2 */ + mvwaddch(treescrn6, 5, 11, ' '); + + /* strng3 */ + mvwaddch(treescrn6, 7, 13, ' '); + mvwaddch(treescrn6, 8, 9, ' '); + + /* strng4 */ + mvwaddch(treescrn6, 9, 14, ' '); + mvwaddch(treescrn6, 10, 10, ' '); + mvwaddch(treescrn6, 11, 6, ' '); + + /* strng5 */ + mvwaddch(treescrn6, 11, 16, ' '); + mvwaddch(treescrn6, 12, 12, ' '); + + /* treescrn7 */ + + overlay(treescrn, treescrn7); + + /* balls */ + mvwaddch(treescrn7, 3, 15, ' '); + mvwaddch(treescrn7, 6, 7, ' '); + mvwaddch(treescrn7, 7, 18, ' '); + mvwaddch(treescrn7, 10, 4, ' '); + mvwaddch(treescrn7, 11, 22, ' '); + + /* star */ + mvwaddch(treescrn7, 0, 12, '*'); + + /* strng1 */ + mvwaddch(treescrn7, 3, 12, ' '); + + /* strng2 */ + mvwaddch(treescrn7, 5, 13, ' '); + mvwaddch(treescrn7, 6, 9, ' '); + + /* strng3 */ + mvwaddch(treescrn7, 7, 15, ' '); + mvwaddch(treescrn7, 8, 11, ' '); + + /* strng4 */ + mvwaddch(treescrn7, 9, 16, ' '); + mvwaddch(treescrn7, 10, 12, ' '); + mvwaddch(treescrn7, 11, 8, ' '); + + /* strng5 */ + mvwaddch(treescrn7, 11, 18, ' '); + mvwaddch(treescrn7, 12, 14, ' '); + + napms(1000); + reindeer(); + + touchwin(w_holiday); + wrefresh(w_holiday); + wrefresh(w_del_msg); + + napms(1000); + + for (loopy = 0; loopy < 50; loopy++) + blinkit(); + + clear(); + refresh(); + endwin(); + + return 0; +} + +void lil(WINDOW *win) +{ + mvwaddch(win, 0, 0, (chtype) 'V'); + mvwaddch(win, 1, 0, (chtype) '@'); + mvwaddch(win, 1, 3, (chtype) '~'); +} + +void midtop(WINDOW *win) +{ + mvwaddstr(win, 0, 2, "yy"); + mvwaddstr(win, 1, 2, "0(=)~"); +} + +void bigtop(WINDOW *win) +{ + mvwaddstr(win, 0, 17, "\\/"); + mvwaddstr(win, 0, 20, "\\/"); + mvwaddch(win, 1, 18, (chtype) '\\'); + mvwaddch(win, 1, 20, (chtype) '/'); + mvwaddstr(win, 2, 19, "|_"); + mvwaddstr(win, 3, 18, "/^0\\"); + mvwaddstr(win, 4, 17, "//\\"); + mvwaddch(win, 4, 22, (chtype) '\\'); + mvwaddstr(win, 5, 7, "^~~~~~~~~// ~~U"); +} + +void bigface(WINDOW *win, chtype noseattr) +{ + mvwaddstr(win, 0, 16, "\\/ \\/"); + mvwaddstr(win, 1, 17, "\\Y/ \\Y/"); + mvwaddstr(win, 2, 19, "\\=/"); + mvwaddstr(win, 3, 17, "^\\o o/^"); + mvwaddstr(win, 4, 17, "//( )"); + mvwaddstr(win, 5, 7, "^~~~~~~~~// \\"); + waddch(win, 'O' | noseattr); + waddstr(win, "/"); +} + +void legs1(WINDOW *win) +{ + mvwaddstr(win, 6, 7, "( \\_____( /"); + mvwaddstr(win, 7, 8, "( ) /"); + mvwaddstr(win, 8, 9, "\\\\ /"); + mvwaddstr(win, 9, 11, "\\>/>"); +} + +void legs2(WINDOW *win) +{ + mvwaddstr(win, 6, 7, "(( )____( /"); + mvwaddstr(win, 7, 7, "( / |"); + mvwaddstr(win, 8, 8, "\\/ |"); + mvwaddstr(win, 9, 9, "|> |>"); +} + +void legs3(WINDOW *win) +{ + mvwaddstr(win, 6, 6, "( ()_____( /"); + mvwaddstr(win, 7, 6, "/ / /"); + mvwaddstr(win, 8, 5, "|/ \\"); + mvwaddstr(win, 9, 5, "/> \\>"); +} + +void legs4(WINDOW *win) +{ + mvwaddstr(win, 6, 6, "( )______( /"); + mvwaddstr(win, 7, 5, "(/ \\"); + mvwaddstr(win, 8, 0, "v___= ----^"); +} + +void initdeer(void) +{ + chtype noseattr; + +#ifdef A_COLOR + if (has_colors()) + { + init_pair(31, COLOR_RED, COLOR_BLACK); + noseattr = COLOR_PAIR(31); + } + else +#endif + noseattr = A_NORMAL; + + /* set up the windows for our various reindeer */ + + dotdeer0 = newwin(3, 71, 0, 8); + stardeer0 = newwin(4, 56, 0, 8); + lildeer0 = newwin(7, 54, 0, 8); + middeer0 = newwin(15, 42, 0, 8); + bigdeer0 = newwin(10, 23, 0, 0); + lookdeer0 = newwin(10, 25, 0, 0); + + /* lildeer1 */ + lildeer1 = newwin(2, 4, 0, 0); + lil(lildeer1); + mvwaddstr(lildeer1, 1, 1, "<>"); + + /* lildeer2 */ + lildeer2 = newwin(2, 4, 0, 0); + lil(lildeer2); + mvwaddstr(lildeer2, 1, 1, "||"); + + /* lildeer3 */ + lildeer3 = newwin(2, 4, 0, 0); + lil(lildeer3); + mvwaddstr(lildeer3, 1, 1, "><"); + + /* middeer1 */ + middeer1 = newwin(3, 7, 0, 0); + midtop(middeer1); + mvwaddstr(middeer1, 2, 3, "\\/"); + + /* middeer2 */ + middeer2 = newwin(3, 7, 0, 0); + midtop(middeer2); + mvwaddch(middeer2, 2, 3, (chtype) '|'); + mvwaddch(middeer2, 2, 5, (chtype) '|'); + + /* middeer3 */ + middeer3 = newwin(3, 7, 0, 0); + midtop(middeer3); + mvwaddch(middeer3, 2, 2, (chtype) '/'); + mvwaddch(middeer3, 2, 6, (chtype) '\\'); + + /* bigdeer1 */ + bigdeer1 = newwin(10, 23, 0, 0); + bigtop(bigdeer1); + legs1(bigdeer1); + + /* bigdeer2 */ + bigdeer2 = newwin(10, 23, 0, 0); + bigtop(bigdeer2); + legs2(bigdeer2); + + /* bigdeer3 */ + bigdeer3 = newwin(10, 23, 0, 0); + bigtop(bigdeer3); + legs3(bigdeer3); + + /* bigdeer4 */ + bigdeer4 = newwin(10, 23, 0, 0); + bigtop(bigdeer4); + legs4(bigdeer4); + + /* lookdeer1 */ + lookdeer1 = newwin(10, 25, 0, 0); + bigface(lookdeer1, noseattr); + legs1(lookdeer1); + + /* lookdeer2 */ + lookdeer2 = newwin(10, 25, 0, 0); + bigface(lookdeer2, noseattr); + legs2(lookdeer2); + + /* lookdeer3 */ + lookdeer3 = newwin(10, 25, 0, 0); + bigface(lookdeer3, noseattr); + legs3(lookdeer3); + + /* lookdeer4 */ + lookdeer4 = newwin(10, 25, 0, 0); + bigface(lookdeer4, noseattr); + legs4(lookdeer4); +} + +void boxit(void) +{ + int x; + + for (x = 0; x < 20; ++x) + mvaddch(x, 7, '|'); + + for (x = 0; x < 80; ++x) + { + if (x > 7) + mvaddch(19, x, '_'); + + mvaddch(22, x, '_'); + } +} + +void seas(void) +{ + mvaddch(4, 1, 'S'); + mvaddch(6, 1, 'E'); + mvaddch(8, 1, 'A'); + mvaddch(10, 1, 'S'); + mvaddch(12, 1, 'O'); + mvaddch(14, 1, 'N'); + mvaddch(16, 1, '`'); + mvaddch(18, 1, 'S'); +} + +void greet(void) +{ + mvaddch(3, 5, 'G'); + mvaddch(5, 5, 'R'); + mvaddch(7, 5, 'E'); + mvaddch(9, 5, 'E'); + mvaddch(11, 5, 'T'); + mvaddch(13, 5, 'I'); + mvaddch(15, 5, 'N'); + mvaddch(17, 5, 'G'); + mvaddch(19, 5, 'S'); +} + +void fromwho(void) +{ + mvaddstr(21, 13, FROMWHO); +} + +void del_msg(void) +{ + refresh(); +} + +void tree(void) +{ +#ifdef A_COLOR + if (has_colors()) + { + init_pair(30, COLOR_GREEN, COLOR_BLACK); + wattrset(treescrn, COLOR_PAIR(30)); + } +#endif + mvwaddch(treescrn, 1, 11, (chtype) '/'); + mvwaddch(treescrn, 2, 11, (chtype) '/'); + mvwaddch(treescrn, 3, 10, (chtype) '/'); + mvwaddch(treescrn, 4, 9, (chtype) '/'); + mvwaddch(treescrn, 5, 9, (chtype) '/'); + mvwaddch(treescrn, 6, 8, (chtype) '/'); + mvwaddch(treescrn, 7, 7, (chtype) '/'); + mvwaddch(treescrn, 8, 6, (chtype) '/'); + mvwaddch(treescrn, 9, 6, (chtype) '/'); + mvwaddch(treescrn, 10, 5, (chtype) '/'); + mvwaddch(treescrn, 11, 3, (chtype) '/'); + mvwaddch(treescrn, 12, 2, (chtype) '/'); + + mvwaddch(treescrn, 1, 13, (chtype) '\\'); + mvwaddch(treescrn, 2, 13, (chtype) '\\'); + mvwaddch(treescrn, 3, 14, (chtype) '\\'); + mvwaddch(treescrn, 4, 15, (chtype) '\\'); + mvwaddch(treescrn, 5, 15, (chtype) '\\'); + mvwaddch(treescrn, 6, 16, (chtype) '\\'); + mvwaddch(treescrn, 7, 17, (chtype) '\\'); + mvwaddch(treescrn, 8, 18, (chtype) '\\'); + mvwaddch(treescrn, 9, 18, (chtype) '\\'); + mvwaddch(treescrn, 10, 19, (chtype) '\\'); + mvwaddch(treescrn, 11, 21, (chtype) '\\'); + mvwaddch(treescrn, 12, 22, (chtype) '\\'); + + mvwaddch(treescrn, 4, 10, (chtype) '_'); + mvwaddch(treescrn, 4, 14, (chtype) '_'); + mvwaddch(treescrn, 8, 7, (chtype) '_'); + mvwaddch(treescrn, 8, 17, (chtype) '_'); + + mvwaddstr(treescrn, 13, 0, + "//////////// \\\\\\\\\\\\\\\\\\\\\\\\"); + +#ifdef A_COLOR + if (has_colors()) + { + init_pair(20, COLOR_YELLOW, COLOR_BLACK); + wattrset(treescrn, COLOR_PAIR(20)); + } +#endif + mvwaddstr(treescrn, 14, 11, "| |"); + mvwaddstr(treescrn, 15, 11, "|_|"); + + wrefresh(treescrn); + wrefresh(w_del_msg); +} + +void balls(void) +{ + chtype ball1, ball2, ball3, ball4, ball5, ball6; + + overlay(treescrn, treescrn2); + +#ifdef A_COLOR + if (has_colors()) + { + init_pair(1, COLOR_BLUE, COLOR_BLACK); + init_pair(2, COLOR_RED, COLOR_BLACK); + init_pair(3, COLOR_MAGENTA, COLOR_BLACK); + init_pair(4, COLOR_CYAN, COLOR_BLACK); + init_pair(5, COLOR_YELLOW, COLOR_BLACK); + init_pair(6, COLOR_WHITE, COLOR_BLACK); + ball1 = COLOR_PAIR(1) | '@'; + ball2 = COLOR_PAIR(2) | '@'; + ball3 = COLOR_PAIR(3) | '@'; + ball4 = COLOR_PAIR(4) | '@'; + ball5 = COLOR_PAIR(5) | '@'; + ball6 = COLOR_PAIR(6) | '@'; + } + else +#endif + ball1 = ball2 = ball3 = ball4 = ball5 = ball6 = '@'; + + mvwaddch(treescrn2, 3, 9, ball1); + mvwaddch(treescrn2, 3, 15, ball2); + mvwaddch(treescrn2, 4, 8, ball3); + mvwaddch(treescrn2, 4, 16, ball4); + mvwaddch(treescrn2, 5, 7, ball5); + mvwaddch(treescrn2, 5, 17, ball6); + mvwaddch(treescrn2, 7, 6, ball1 | A_BOLD); + mvwaddch(treescrn2, 7, 18, ball2 | A_BOLD); + mvwaddch(treescrn2, 8, 5, ball3 | A_BOLD); + mvwaddch(treescrn2, 8, 19, ball4 | A_BOLD); + mvwaddch(treescrn2, 10, 4, ball5 | A_BOLD); + mvwaddch(treescrn2, 10, 20, ball6 | A_BOLD); + mvwaddch(treescrn2, 11, 2, ball1); + mvwaddch(treescrn2, 11, 22, ball2); + mvwaddch(treescrn2, 12, 1, ball3); + mvwaddch(treescrn2, 12, 23, ball4); + + wrefresh(treescrn2); + wrefresh(w_del_msg); +} + +void star(void) +{ + mvwaddch(treescrn2, 0, 12, (chtype) '*' | A_STANDOUT); + + wrefresh(treescrn2); + wrefresh(w_del_msg); +} + +void strng1(void) +{ +#ifdef A_COLOR + if (has_colors()) + { + init_pair(10, COLOR_YELLOW, COLOR_BLACK); + wattrset(treescrn2, COLOR_PAIR(10) | A_BOLD); + } +#endif + mvwaddstr(treescrn2, 3, 11, ".:'"); + + wrefresh(treescrn2); + wrefresh(w_del_msg); +} + +void strng2(void) +{ +#ifdef A_COLOR + if (has_colors()) + { + init_pair(11, COLOR_RED, COLOR_BLACK); + wattrset(treescrn2, COLOR_PAIR(11) | A_BOLD); + } +#endif + mvwaddstr(treescrn2, 5, 11, ",.:'"); + mvwaddstr(treescrn2, 6, 9, ":'"); + + wrefresh(treescrn2); + wrefresh(w_del_msg); +} + +void strng3(void) +{ +#ifdef A_COLOR + if (has_colors()) + { + init_pair(12, COLOR_GREEN, COLOR_BLACK); + wattrset(treescrn2, COLOR_PAIR(12) | A_BOLD); + } +#endif + mvwaddstr(treescrn2, 7, 13, ",.:'"); + mvwaddstr(treescrn2, 8, 9, ",.:'"); + + wrefresh(treescrn2); + wrefresh(w_del_msg); +} + +void strng4(void) +{ +#ifdef A_COLOR + if (has_colors()) + { + init_pair(13, COLOR_WHITE, COLOR_BLACK); + wattrset(treescrn2, COLOR_PAIR(13) | A_BOLD); + } +#endif + mvwaddstr(treescrn2, 9, 14, ",.:'"); + mvwaddstr(treescrn2, 10, 10, ",.:'"); + mvwaddstr(treescrn2, 11, 6, ",.:'"); + mvwaddch(treescrn2, 12, 5, (chtype) '\''); + + wrefresh(treescrn2); + wrefresh(w_del_msg); +} + +void strng5(void) +{ +#ifdef A_COLOR + if (has_colors()) + { + init_pair(14, COLOR_CYAN, COLOR_BLACK); + wattrset(treescrn2, COLOR_PAIR(14) | A_BOLD); + } +#endif + mvwaddstr(treescrn2, 11, 16, ",.:'"); + mvwaddstr(treescrn2, 12, 12, ",.:'"); + + /* save a fully lit tree */ + overlay(treescrn2, treescrn); + + wrefresh(treescrn2); + wrefresh(w_del_msg); +} + +void blinkit(void) +{ + static int cycle; + + if (cycle > 4) + cycle = 0; + + touchwin(treescrn8); + + switch (cycle) + { + case 0: + overlay(treescrn3, treescrn8); + break; + + case 1: + overlay(treescrn4, treescrn8); + break; + + case 2: + overlay(treescrn5, treescrn8); + break; + + case 3: + overlay(treescrn6, treescrn8); + break; + + case 4: + overlay(treescrn7, treescrn8); + } + + wrefresh(treescrn8); + wrefresh(w_del_msg); + + napms(50); + touchwin(treescrn8); + + /*ALL ON************************************************** */ + + overlay(treescrn, treescrn8); + wrefresh(treescrn8); + wrefresh(w_del_msg); + + ++cycle; +} + +#define TSHOW(win, pause) touchwin(win); wrefresh(win); \ + wrefresh(w_del_msg); napms(pause) + +#define SHOW(win, pause) mvwin(win, y_pos, x_pos); wrefresh(win); \ + wrefresh(w_del_msg); napms(pause) + +void reindeer(void) +{ + int looper; + + y_pos = 0; + + for (x_pos = 70; x_pos > 62; x_pos--) + { + if (x_pos < 62) + y_pos = 1; + + for (looper = 0; looper < 4; looper++) + { + mvwaddch(dotdeer0, y_pos, x_pos, (chtype) '.'); + wrefresh(dotdeer0); + wrefresh(w_del_msg); + werase(dotdeer0); + wrefresh(dotdeer0); + wrefresh(w_del_msg); + } + } + + y_pos = 2; + + for (; x_pos > 50; x_pos--) + { + for (looper = 0; looper < 4; looper++) + { + if (x_pos < 56) + { + y_pos = 3; + + mvwaddch(stardeer0, y_pos, x_pos, (chtype) '*'); + wrefresh(stardeer0); + wrefresh(w_del_msg); + werase(stardeer0); + wrefresh(stardeer0); + } + else + { + mvwaddch(dotdeer0, y_pos, x_pos, (chtype) '*'); + wrefresh(dotdeer0); + wrefresh(w_del_msg); + werase(dotdeer0); + wrefresh(dotdeer0); + } + wrefresh(w_del_msg); + } + } + + x_pos = 58; + + for (y_pos = 2; y_pos < 5; y_pos++) + { + TSHOW(lildeer0, 50); + + for (looper = 0; looper < 4; looper++) + { + SHOW(lildeer3, 50); + SHOW(lildeer2, 50); + SHOW(lildeer1, 50); + SHOW(lildeer2, 50); + SHOW(lildeer3, 50); + + TSHOW(lildeer0, 50); + + x_pos -= 2; + } + } + + x_pos = 35; + + for (y_pos = 5; y_pos < 10; y_pos++) + { + touchwin(middeer0); + wrefresh(middeer0); + wrefresh(w_del_msg); + + for (looper = 0; looper < 2; looper++) + { + SHOW(middeer3, 50); + SHOW(middeer2, 50); + SHOW(middeer1, 50); + SHOW(middeer2, 50); + SHOW(middeer3, 50); + + TSHOW(middeer0, 50); + + x_pos -= 3; + } + } + + napms(2000); + + y_pos = 1; + + for (x_pos = 8; x_pos < 16; x_pos++) + { + SHOW(bigdeer4, 30); + SHOW(bigdeer3, 30); + SHOW(bigdeer2, 30); + SHOW(bigdeer1, 30); + SHOW(bigdeer2, 30); + SHOW(bigdeer3, 30); + SHOW(bigdeer4, 30); + SHOW(bigdeer0, 30); + } + + --x_pos; + + for (looper = 0; looper < 6; looper++) + { + SHOW(lookdeer4, 40); + SHOW(lookdeer3, 40); + SHOW(lookdeer2, 40); + SHOW(lookdeer1, 40); + SHOW(lookdeer2, 40); + SHOW(lookdeer3, 40); + SHOW(lookdeer4, 40); + } + + SHOW(lookdeer0, 40); + + for (; y_pos < 10; y_pos++) + { + for (looper = 0; looper < 2; looper++) + { + SHOW(bigdeer4, 30); + SHOW(bigdeer3, 30); + SHOW(bigdeer2, 30); + SHOW(bigdeer1, 30); + SHOW(bigdeer2, 30); + SHOW(bigdeer3, 30); + SHOW(bigdeer4, 30); + } + + SHOW(bigdeer0, 30); + } + + --y_pos; + + mvwin(lookdeer3, y_pos, x_pos); + wrefresh(lookdeer3); + wrefresh(w_del_msg); +} diff --git a/3rd-party/PDCurses/dos/CMakeLists.txt b/3rd-party/PDCurses/dos/CMakeLists.txt new file mode 100644 index 0000000..d5a4cc2 --- /dev/null +++ b/3rd-party/PDCurses/dos/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "No build type specified, defaulting to MinSizeRel.") +endif() + +PROJECT(dos VERSION "${PROJECT_VERSION}" LANGUAGES C) +MESSAGE(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}") + +include(project_common) + +if(WATCOM) + # this requires using the following toolchainfile file + # -DCMAKE_TOOLCHAIN_FILE={path}\watcom_open_dos_toolchain.cmake + + string(APPEND CMAKE_C_FLAGS " -wx") # warning level: to maximum setting + + if(WATCOM_DOS32) + string(APPEND CMAKE_C_FLAGS " -mf") # memory model: options are flat (-mf), large (-ml), memdium (-mm), small (-ms) + else() + string(APPEND CMAKE_C_FLAGS " -ml") # memory model: options are large (-ml), memdium (-mm), small (-ms) + endif() + + string(APPEND CMAKE_C_FLAGS_RELEASE " -oneatx") + string(APPEND CMAKE_C_FLAGS_MINSIZEREL " -oneatx") + # optimization: + # n -> allow numerically unstable optimizations + # e -> expand user functions inline + # a -> relax aliasing constraints + # t -> favor execution time over code size in optimizations + # x -> equivalent to -obmiler -s + + string(APPEND CMAKE_C_FLAGS_DEBUG " -d2") # full symbolic debugging info + string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " debug watcom all") + +endif() + +demo_app(../demos version) +demo_app(../demos firework) +demo_app(../demos ozdemo) +demo_app(../demos newtest) +demo_app(../demos ptest) +demo_app(../demos rain) +demo_app(../demos testcurs) +demo_app(../demos worm) +demo_app(../demos xmas) diff --git a/3rd-party/PDCurses/dos/Makefile.bcc b/3rd-party/PDCurses/dos/Makefile.bcc new file mode 100644 index 0000000..f5ea092 --- /dev/null +++ b/3rd-party/PDCurses/dos/Makefile.bcc @@ -0,0 +1,96 @@ +# Borland MAKE Makefile for PDCurses library - DOS BC++ 3.0+ +# +# Usage: make -f [path\]Makefile.bcc [DEBUG=] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +# Change the memory MODEL here, if desired +MODEL = l + +O = obj +E = .exe +RM = del + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\dos + +!ifdef DEBUG +CFLAGS = -N -v -y -DPDCDEBUG +!else +CFLAGS = -O +!endif + +!ifdef CHTYPE_32 +CFLAGS = $(CFLAGS) -DCHTYPE_32 +!endif + +!ifdef CHTYPE_16 +CFLAGS = $(CFLAGS) -DCHTYPE_16 +!endif + +CPPFLAGS = -I$(PDCURSES_SRCDIR) + +!ifdef OLD_BCC +BUILD = $(CC) -DNO_STDINT_H -K -G -rd -d -w-eff -w-par -c \ + $(CFLAGS) $(CPPFLAGS) +!else +BUILD = $(CC) -K -G -rd -d -w-eff -w-par -c \ +-m$(MODEL) $(CFLAGS) $(CPPFLAGS) +!endif + +LIBEXE = tlib /C /E + +LIBCURSES = pdcurses.lib + +all: $(LIBCURSES) + +clean: + -$(RM) *.obj + -$(RM) *.lib + -$(RM) *.map + -$(RM) *.exe + +demos: $(DEMOS) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + -$(RM) $@ + $(LIBEXE) $@ @$(PDCURSES_SRCDIR)\borland.lrf + +.autodepend + +{$(srcdir)\}.c.obj: + $(BUILD) $< + +{$(osdir)\}.c.obj: + $(BUILD) $< + +{$(demodir)\}.c.obj: + $(BUILD) $< + +.c.obj: + $(BUILD) $< + +.obj.exe: + $(CC) -m$(MODEL) -e$@ $** $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES) + $(CC) -m$(MODEL) -e$@ $** + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Borland C++ 3.1 +PLATFORM2 = Borland C/C++ 3.1 for DOS +ARCNAME = pdc$(VER)bcc + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/dos/Makefile.dmc b/3rd-party/PDCurses/dos/Makefile.dmc new file mode 100644 index 0000000..36ef470 --- /dev/null +++ b/3rd-party/PDCurses/dos/Makefile.dmc @@ -0,0 +1,257 @@ +# Makefile for PDCurses library - DOS Digital Mars +# +# Usage: make -f Makefile.dmc [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +PDCURSES_SRCDIR = .. + +PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) + +PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h +TERM_HEADER = $(PDCURSES_SRCDIR)\term.h + +srcdir = $(PDCURSES_SRCDIR)\pdcurses +osdir = $(PDCURSES_SRCDIR)\dos +demodir = $(PDCURSES_SRCDIR)\demos + +PDCURSES_DOS_H = $(osdir)\pdcdos.h + +CC = dmc + +CHTYPE = -DCHTYPE_32 + +CFLAGS = -c -o+space -Nc -msd + +CPPFLAGS = -I$(PDCURSES_SRCDIR) -msd $(CHTYPE) + +LINK = dmc +LIBEXE = lib + +LIBCURSES = pdcurses.lib + +BUILD = $(CC) $(CFLAGS) $(CPPFLAGS) + +DEMOS = testcurs.exe ozdemo.exe newtest.exe xmas.exe \ +tuidemo.exe firework.exe ptest.exe rain.exe worm.exe + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.map + -del advapi32.def + +LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \ +border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \ +getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \ +insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \ +outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \ +scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \ +touch.obj util.obj window.obj debug.obj + +PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \ +pdcsetsc.obj pdcutil.obj + +DEMOOBJS = testcurs.obj ozdemo.obj newtest.obj xmas.obj tuidemo.obj \ +tui.obj firework.obj ptest.obj rain.obj worm.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_DOS_H) +panel.obj ptest.obj: $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -c $@ $(LIBOBJS) $(PDCOBJS) + +SRCBUILD = $(BUILD) $(srcdir)\$*.c +OSBUILD = $(BUILD) $(osdir)\$*.c +DEMOBUILD = $(LINK) $(CPPFLAGS) -o+space $@ $** + +addch.obj: $(srcdir)\addch.c + $(SRCBUILD) + +addchstr.obj: $(srcdir)\addchstr.c + $(SRCBUILD) + +addstr.obj: $(srcdir)\addstr.c + $(SRCBUILD) + +attr.obj: $(srcdir)\attr.c + $(SRCBUILD) + +beep.obj: $(srcdir)\beep.c + $(SRCBUILD) + +bkgd.obj: $(srcdir)\bkgd.c + $(SRCBUILD) + +border.obj: $(srcdir)\border.c + $(SRCBUILD) + +clear.obj: $(srcdir)\clear.c + $(SRCBUILD) + +color.obj: $(srcdir)\color.c + $(SRCBUILD) + +delch.obj: $(srcdir)\delch.c + $(SRCBUILD) + +deleteln.obj: $(srcdir)\deleteln.c + $(SRCBUILD) + +deprec.obj: $(srcdir)\deprec.c + $(SRCBUILD) + +getch.obj: $(srcdir)\getch.c + $(SRCBUILD) + +getstr.obj: $(srcdir)\getstr.c + $(SRCBUILD) + +getyx.obj: $(srcdir)\getyx.c + $(SRCBUILD) + +inch.obj: $(srcdir)\inch.c + $(SRCBUILD) + +inchstr.obj: $(srcdir)\inchstr.c + $(SRCBUILD) + +initscr.obj: $(srcdir)\initscr.c + $(SRCBUILD) + +inopts.obj: $(srcdir)\inopts.c + $(SRCBUILD) + +insch.obj: $(srcdir)\insch.c + $(SRCBUILD) + +insstr.obj: $(srcdir)\insstr.c + $(SRCBUILD) + +instr.obj: $(srcdir)\instr.c + $(SRCBUILD) + +kernel.obj: $(srcdir)\kernel.c + $(SRCBUILD) + +keyname.obj: $(srcdir)\keyname.c + $(SRCBUILD) + +mouse.obj: $(srcdir)\mouse.c + $(SRCBUILD) + +move.obj: $(srcdir)\move.c + $(SRCBUILD) + +outopts.obj: $(srcdir)\outopts.c + $(SRCBUILD) + +overlay.obj: $(srcdir)\overlay.c + $(SRCBUILD) + +pad.obj: $(srcdir)\pad.c + $(SRCBUILD) + +panel.obj: $(srcdir)\panel.c + $(SRCBUILD) + +printw.obj: $(srcdir)\printw.c + $(SRCBUILD) + +refresh.obj: $(srcdir)\refresh.c + $(SRCBUILD) + +scanw.obj: $(srcdir)\scanw.c + $(SRCBUILD) + +scr_dump.obj: $(srcdir)\scr_dump.c + $(SRCBUILD) + +scroll.obj: $(srcdir)\scroll.c + $(SRCBUILD) + +slk.obj: $(srcdir)\slk.c + $(SRCBUILD) + +termattr.obj: $(srcdir)\termattr.c + $(SRCBUILD) + +terminfo.obj: $(srcdir)\terminfo.c + $(SRCBUILD) + +touch.obj: $(srcdir)\touch.c + $(SRCBUILD) + +util.obj: $(srcdir)\util.c + $(SRCBUILD) + +window.obj: $(srcdir)\window.c + $(SRCBUILD) + +debug.obj: $(srcdir)\debug.c + $(SRCBUILD) + +pdcclip.obj: $(osdir)\pdcclip.c + $(OSBUILD) + +pdcdisp.obj: $(osdir)\pdcdisp.c + $(OSBUILD) + +pdcgetsc.obj: $(osdir)\pdcgetsc.c + $(OSBUILD) + +pdckbd.obj: $(osdir)\pdckbd.c + $(OSBUILD) + +pdcscrn.obj: $(osdir)\pdcscrn.c + $(OSBUILD) + +pdcsetsc.obj: $(osdir)\pdcsetsc.c + $(OSBUILD) + +pdcutil.obj: $(osdir)\pdcutil.c + $(OSBUILD) + +firework.exe: $(demodir)\firework.c + $(DEMOBUILD) + +ozdemo.exe: $(demodir)\ozdemo.c + $(DEMOBUILD) + +newtest.exe: $(demodir)\newtest.c + $(DEMOBUILD) + +ptest.exe: $(demodir)\ptest.c + $(DEMOBUILD) + +rain.exe: $(demodir)\rain.c + $(DEMOBUILD) + +testcurs.exe: $(demodir)\testcurs.c + $(DEMOBUILD) advapi32.lib + +tuidemo.exe: tuidemo.obj tui.obj + $(DEMOBUILD) + +worm.exe: $(demodir)\worm.c + $(DEMOBUILD) + +xmas.exe: $(demodir)\xmas.c + $(DEMOBUILD) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\$*.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\$*.c diff --git a/3rd-party/PDCurses/dos/Makefile.msc b/3rd-party/PDCurses/dos/Makefile.msc new file mode 100644 index 0000000..b0709a5 --- /dev/null +++ b/3rd-party/PDCurses/dos/Makefile.msc @@ -0,0 +1,113 @@ +# NMAKE Makefile for PDCurses library - Microsoft C for DOS +# +# Usage: nmake -f [path\]Makefile.msc [DEBUG=] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +# Change the memory MODEL here, if desired +MODEL = L # one of L, S, M, T, H, C +SIZE = LARGE # one of LARGE, SMALL, MEDIUM, TINY, HUGE, COMPACT + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\dos + +PDCURSES_DOS_H = $(osdir)\pdcdos.h + +CC = cl + +!ifdef DEBUG +CFLAGS = /Od /Zi /DPDCDEBUG +LDFLAGS = /CO /NOE /SE:160 +!else +CFLAGS = /Ox +LDFLAGS = /NOE /SE:160 +!endif + +CPPFLAGS = -I$(PDCURSES_SRCDIR) + +BUILD = $(CC) /J /nologo /c /D$(SIZE) /A$(MODEL) $(CFLAGS) $(CPPFLAGS) + +LINK = link + +CCLIBS = + +LIBEXE = lib + +LIBCURSES = pdcurses.lib + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + +demos: $(DEMOS) + +DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) +panel.obj : $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $@ @$(osdir)\mscdos.lrf + +{$(srcdir)\}.c{}.obj: + $(BUILD) $< + +{$(osdir)\}.c{}.obj: + $(BUILD) $< + +{$(demodir)\}.c{}.obj: + $(BUILD) $< + +firework.exe: firework.obj + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +ozdemo.exe: ozdemo.obj + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +ptest.exe: ptest.obj + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +rain.exe: rain.obj + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +testcurs.exe: testcurs.obj + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +tuidemo.exe: tuidemo.obj tui.obj + $(LINK) $(LDFLAGS) $*.obj+tui.obj,$*,,$(LIBCURSES); + +worm.exe: worm.obj + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +xmas.exe: xmas.obj + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +ptest.obj: $(demodir)\ptest.c $(PANEL_HEADER) + $(BUILD) $(demodir)\ptest.c + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Microsoft C +PLATFORM2 = Microsoft C for DOS +ARCNAME = pdc$(VER)msc + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/dos/Makefile.wcc b/3rd-party/PDCurses/dos/Makefile.wcc new file mode 100644 index 0000000..2a55494 --- /dev/null +++ b/3rd-party/PDCurses/dos/Makefile.wcc @@ -0,0 +1,107 @@ +# Watcom WMAKE Makefile for PDCurses library - DOS (16 bit) or DOS/4GW Watcom C/C++ 10.6+ +# +# Usage: wmake -f [path/]Makefile.wcc [DEBUG=Y] [MODEL=c|h|l|m|s|f] +# [CROSS=Y|N] [CHTYPE=[-DCHTYPE_16|-DCHTYPE_32]] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] +# +# and MODEL specifies the memory model (16-bit compact/huge/large/medium/ +# small, or 32-bit flat) +# +# and CROSS=Y (CROSS=N) means to assume we are (are not) cross-compiling +# (default is to auto-detect) +# +# and CHTYPE is an optional compiler flag to set the size of chtype (default +# is 64 bits) + +# Change the memory MODEL here, if desired +!ifndef MODEL +MODEL = l +!endif + +!ifdef %PDCURSES_SRCDIR +PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR) +!else +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)/version.mif + +!ifndef CROSS +!ifeq %SHELL /bin/bash +# assume we are cross-compiling +CROSS = Y +!endif +!ifeq %SHELL /bin/sh +CROSS = Y +!endif +!ifeq %SHELL /bin/csh +CROSS = Y +!endif +!ifeq %SHELL /bin/dash +CROSS = Y +!endif +!endif + +osdir = $(PDCURSES_SRCDIR)/dos +# Open Watcom README strongly recommends setting WATCOM environment variable... +!ifeq CROSS Y +!ifdef %WATCOM +watcomdir = $(%WATCOM) +!else +watcomdir = "`which wcc | xargs realpath | xargs dirname`"/.. +!endif +!endif + +!ifneq MODEL f +CC = wcc +TARGET = dos +!else +CC = wcc386 +TARGET = dos4g +!endif + +CFLAGS = -bt=$(TARGET) -zq -wx -m$(MODEL) -i=$(PDCURSES_SRCDIR) +CFLAGS += $(CHTYPE) +# the README also recommends setting INCLUDE; if absent, we need an extra -i= +!ifndef %INCLUDE +CFLAGS += -i=$(watcomdir)/h +!endif + +!ifeq DEBUG Y +CFLAGS += -d2 -DPDCDEBUG +LDFLAGS = D W A op q sys $(TARGET) +!else +CFLAGS += -oneatx +LDFLAGS = op q sys $(TARGET) +!ifeq CROSS Y +!ifneq MODEL f +LDFLAGS += libp $(watcomdir)/lib286/dos\;$(watcomdir)/lib286 +!else +LDFLAGS += libp $(watcomdir)/lib386/dos\;$(watcomdir)/lib386 +!endif +!endif +!endif + +LIBEXE = wlib -q -n -t + +!include $(PDCURSES_SRCDIR)/watcom.mif + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + %write wccdos.lrf $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $@ @wccdos.lrf + -$(DEL) wccdos.lrf + -$(COPY) $(LIBCURSES) panel.lib + +!ifneq MODEL f +PLATFORM1 = Watcom C++ 16-bit DOS +PLATFORM2 = Open Watcom 1.6 for 16-bit DOS +ARCNAME = pdc$(VER)16w +!else +PLATFORM1 = Watcom C++ 32-bit DOS +PLATFORM2 = Open Watcom 1.6 for 32-bit DOS +ARCNAME = pdc$(VER)32w +!endif + +!include $(PDCURSES_SRCDIR)/makedist.mif diff --git a/3rd-party/PDCurses/dos/README.md b/3rd-party/PDCurses/dos/README.md new file mode 100644 index 0000000..a950be5 --- /dev/null +++ b/3rd-party/PDCurses/dos/README.md @@ -0,0 +1,51 @@ +PDCurses for DOS +================ + +This directory contains PDCurses source code files specific to DOS. + + +Building +-------- + +- Choose the appropriate makefile for your compiler: + + Makefile - DJGPP V2 + Makefile.bcc - Borland C++ 3.0+ + Makefile.wcc - Open Watcom 1.8+ (16-bit or 32-bit) + Makefile.dmc - Digital Mars + Makefile.msc - Microsoft C + +- For 16-bit compilers, you can change the memory MODEL in the makefile. + (Large model is the default, and recommended.) + + (For Open Watcom, pass MODEL=f (flat model) to "wmake" in order to use + the 32-bit compiler. Selcting a 16-bit MODEL (e.g. MODEL=l) will + invoke the 16-bit compiler.) + +- Optionally, you can build in a different directory than the platform + directory by setting PDCURSES_SRCDIR to point to the directory where + you unpacked PDCurses, and changing to your target directory: + + set PDCURSES_SRCDIR=c:\pdcurses + +- Build it: + + make -f makefile + + (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll + get the libraries (pdcurses.lib or .a, depending on your compiler; and + panel.lib or .a), the demos (*.exe), and a lot of object files. + + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + + +Acknowledgements +---------------- + +Watcom C port was provided by Pieter Kunst + +DJGPP 1.x port was provided by David Nugent diff --git a/3rd-party/PDCurses/dos/bccdos.lrf b/3rd-party/PDCurses/dos/bccdos.lrf new file mode 100644 index 0000000..9bd18c6 --- /dev/null +++ b/3rd-party/PDCurses/dos/bccdos.lrf @@ -0,0 +1,9 @@ ++addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj & ++border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj & ++getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj & ++inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj & ++mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj & ++printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj & ++termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj & ++pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj & ++pdcsetsc.obj +pdcutil.obj ,lib.map diff --git a/3rd-party/PDCurses/dos/mscdos.lrf b/3rd-party/PDCurses/dos/mscdos.lrf new file mode 100644 index 0000000..b1fdf37 --- /dev/null +++ b/3rd-party/PDCurses/dos/mscdos.lrf @@ -0,0 +1,50 @@ +-+addch.obj & +-+addchstr.obj & +-+addstr.obj & +-+attr.obj & +-+beep.obj & +-+bkgd.obj & +-+border.obj & +-+clear.obj & +-+color.obj & +-+delch.obj & +-+deleteln.obj & +-+deprec.obj & +-+getch.obj & +-+getstr.obj & +-+getyx.obj & +-+inch.obj & +-+inchstr.obj & +-+initscr.obj & +-+inopts.obj & +-+insch.obj & +-+insstr.obj & +-+instr.obj & +-+kernel.obj & +-+keyname.obj & +-+mouse.obj & +-+move.obj & +-+outopts.obj & +-+overlay.obj & +-+pad.obj & +-+panel.obj & +-+printw.obj & +-+refresh.obj & +-+scanw.obj & +-+scr_dump.obj & +-+scroll.obj & +-+slk.obj & +-+termattr.obj & +-+terminfo.obj & +-+touch.obj & +-+util.obj & +-+window.obj & +-+debug.obj & +-+pdcclip.obj & +-+pdcdisp.obj & +-+pdcgetsc.obj & +-+pdckbd.obj & +-+pdcscrn.obj & +-+pdcsetsc.obj & +-+pdcutil.obj & +,lib.map; diff --git a/3rd-party/PDCurses/dos/naptest.c b/3rd-party/PDCurses/dos/naptest.c new file mode 100644 index 0000000..d30d5f0 --- /dev/null +++ b/3rd-party/PDCurses/dos/naptest.c @@ -0,0 +1,61 @@ +#include +#include +#include + +/* Quick, somewhat dirty test code for the weirdnesses that occur +in the DOS PDC_napms() code. Compiles (in Digital Mars C/C++) with + +dmc -I.. -msd -DCHTYPE_32 -o+space naptest.exe pdcurses.lib naptest.c + + (not tested yet with any other compiler; curr_ticks() may need +alteration. See 'pdcutil.c' for code that would do the job.) + + Note that a 'special' PDC_napmsl() function, taking a long integer +for an argument, is used. Otherwise, we couldn't do any testing +past 32.767 seconds. */ + +static long curr_ticks( void) +{ + return( *(long far *)0x46c); +} + +#define MAX_TICK 0x1800b0ul /* no. of IRQ 0 clock ticks per day; + BIOS counter (0:0x46c) will go up + to MAX_TICK - 1 before wrapping to + 0 at midnight */ +#define MS_PER_DAY 86400000ul /* no. of milliseconds in a day */ + +static char *format_ticks( char *buff, const long ticks) +{ + const double tval = (double)ticks * (double)MS_PER_DAY / (double)MAX_TICK; + const long ms = (long)tval; + + sprintf( buff, "%02ld:%02ld:%02ld.%03ld", + (ms / 3600000L) % 24L, /* hours */ + (ms / 60000L) % 60L, /* minutes */ + (ms / 1000L) % 60L, ms % 1000L); + return( buff); +} + +void PDC_napmsl( long ms); + +int main( const int argc, const char **argv) +{ + long ticks1, ticks0; + const long nap_time = atol( argv[1]); + char tbuff[20]; + + printf( "Napping %ld milliseconds\n", nap_time); + ticks0 = curr_ticks( ); + printf( "%s Ticks : %ld\n", format_ticks( tbuff, ticks0), ticks0); + PDC_napmsl( nap_time); + ticks1 = curr_ticks( ); + printf( "%s Ticks : %ld\n", format_ticks( tbuff, ticks1), ticks1); + ticks1 -= ticks0; + if( ticks1 < 0) /* crossed midnight */ + ticks1 += MAX_TICK; + printf( "%s Elapsed time\n", format_ticks( tbuff, ticks1)); + printf( "Hit enter:"); + getchar( ); + return( 0); +} diff --git a/3rd-party/PDCurses/dos/pdcclip.c b/3rd-party/PDCurses/dos/pdcclip.c new file mode 100644 index 0000000..0824eda --- /dev/null +++ b/3rd-party/PDCurses/dos/pdcclip.c @@ -0,0 +1,132 @@ +/* Public Domain Curses */ + +#include "pdcdos.h" + +#include + +/*man-start************************************************************** + +clipboard +--------- + +### Synopsis + + int PDC_getclipboard(char **contents, long *length); + int PDC_setclipboard(const char *contents, long length); + int PDC_freeclipboard(char *contents); + int PDC_clearclipboard(void); + +### Description + + PDC_getclipboard() gets the textual contents of the system's + clipboard. This function returns the contents of the clipboard + in the contents argument. It is the responsibilitiy of the + caller to free the memory returned, via PDC_freeclipboard(). + The length of the clipboard contents is returned in the length + argument. + + PDC_setclipboard copies the supplied text into the system's + clipboard, emptying the clipboard prior to the copy. + + PDC_clearclipboard() clears the internal clipboard. + +### Return Values + + indicator of success/failure of call. + PDC_CLIP_SUCCESS the call was successful + PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for + the clipboard contents + PDC_CLIP_EMPTY the clipboard contains no text + PDC_CLIP_ACCESS_ERROR no clipboard support + +### Portability + X/Open BSD SYS V + PDC_getclipboard - - - + PDC_setclipboard - - - + PDC_freeclipboard - - - + PDC_clearclipboard - - - + +**man-end****************************************************************/ + +/* global clipboard contents, should be NULL if none set */ + +static char *pdc_DOS_clipboard = NULL; + +int PDC_getclipboard(char **contents, long *length) +{ + int len; + + PDC_LOG(("PDC_getclipboard() - called\n")); + + if (!pdc_DOS_clipboard) + return PDC_CLIP_EMPTY; + + len = strlen(pdc_DOS_clipboard); + if ((*contents = malloc(len + 1)) == NULL) + return PDC_CLIP_MEMORY_ERROR; + + strcpy(*contents, pdc_DOS_clipboard); + *length = len; + + return PDC_CLIP_SUCCESS; +} + +int PDC_setclipboard(const char *contents, long length) +{ + PDC_LOG(("PDC_setclipboard() - called\n")); + + if (pdc_DOS_clipboard) + { + free(pdc_DOS_clipboard); + pdc_DOS_clipboard = NULL; + } + + if (contents) + { + if ((pdc_DOS_clipboard = malloc(length + 1)) == NULL) + return PDC_CLIP_MEMORY_ERROR; + + strcpy(pdc_DOS_clipboard, contents); + } + + return PDC_CLIP_SUCCESS; +} + +int PDC_freeclipboard(char *contents) +{ + PDC_LOG(("PDC_freeclipboard() - called\n")); + + /* should we also free empty the system clipboard? probably not */ + + if (contents) + { + + /* NOTE: We free the memory, but we can not set caller's pointer + to NULL, so if caller calls again then will try to access + free'd memory. We 1st overwrite memory with a string so if + caller tries to use free memory they won't get what they + expect & hopefully notice. */ + + /* memset(contents, 0xFD, strlen(contents)); */ + + if (strlen(contents) >= strlen("PDCURSES")) + strcpy(contents, "PDCURSES"); + + free(contents); + } + + return PDC_CLIP_SUCCESS; +} + +int PDC_clearclipboard(void) +{ + PDC_LOG(("PDC_clearclipboard() - called\n")); + + if (pdc_DOS_clipboard) + { + free(pdc_DOS_clipboard); + pdc_DOS_clipboard = NULL; + } + + return PDC_CLIP_SUCCESS; +} diff --git a/3rd-party/PDCurses/dos/pdcdisp.c b/3rd-party/PDCurses/dos/pdcdisp.c new file mode 100644 index 0000000..290baef --- /dev/null +++ b/3rd-party/PDCurses/dos/pdcdisp.c @@ -0,0 +1,135 @@ +/* Public Domain Curses */ + +#include "pdcdos.h" + +/* ACS definitions originally by jshumate@wrdis01.robins.af.mil -- these + match code page 437 and compatible pages (CP850, CP852, etc.) */ + +#ifdef CHTYPE_LONG + #define USE_UNICODE_ACS_CHARS 0 + #include "acs_defs.h" +#endif + +#ifdef __PACIFIC__ +void movedata(unsigned sseg, unsigned soff, unsigned dseg, + unsigned doff, unsigned n) +{ + far char *src = MK_FP(sseg, soff); + far char *dst = MK_FP(dseg, doff); + + while (n--) + *dst++ = *src++; +} +#endif + +/* position hardware cursor at (y, x) */ + +void PDC_gotoyx(int row, int col) +{ + PDCREGS regs; + + PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col)); + + regs.h.ah = 0x02; + regs.h.bh = 0; + regs.h.dh = (unsigned char) row; + regs.h.dl = (unsigned char) col; + PDCINT(0x10, regs); +} + +/* update the given physical line to look like the corresponding line in + curscr */ + +/* NOTE: the original indexing into pdc_atrtab[] relied on three or five + attribute bits in 'chtype' being adjacent to the color bits. Such is + not the case for 64-bit chtypes (CHTYPE_LONG == 2), so we have to do + additional bit-fiddling for that situation. Code is similar in Win32 + and DOS flavors. (BJG) */ + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + int j; + + PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno)); + + if (pdc_direct_video) + { +#if SMALL || MEDIUM +# ifndef __PACIFIC__ + struct SREGS segregs; +# endif + int ds; +#endif + /* this should be enough for the maximum width of a screen */ + + struct {unsigned char text, attr;} temp_line[256]; + + /* replace the attribute part of the chtype with the actual + color value for each chtype in the line */ + + for (j = 0; j < len; j++) + { + chtype ch = srcp[j]; + +#if defined( CHTYPE_LONG) && (CHTYPE_LONG >= 2) + temp_line[j].attr = pdc_atrtab[((ch >> PDC_ATTR_SHIFT) & 0x1f) + | (((ch >> PDC_COLOR_SHIFT) & 0xff) << 5)]; +#else + temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT]; +#endif + +#ifdef CHTYPE_LONG + if (ch & A_ALTCHARSET && !(ch & 0xff80)) + ch = acs_map[ch & 0x7f]; +#endif + temp_line[j].text = ch & 0xff; + } + +#ifdef __DJGPP__ + dosmemput(temp_line, len * 2, + (unsigned long)_FAR_POINTER(pdc_video_seg, + pdc_video_ofs + (lineno * curscr->_maxx + x) * 2)); +#else +# if SMALL || MEDIUM +# ifdef __PACIFIC__ + ds = FP_SEG((void far *) temp_line); +# else + segread(&segregs); + ds = segregs.ds; +# endif + movedata(ds, (int)temp_line, pdc_video_seg, + pdc_video_ofs + (lineno * curscr->_maxx + x) * 2, len * 2); +# else + memcpy((void *)_FAR_POINTER(pdc_video_seg, + pdc_video_ofs + (lineno * curscr->_maxx + x) * 2), + temp_line, len * 2); +# endif +#endif + + } + else + for (j = 0; j < len;) + { + PDCREGS regs; + unsigned short count = 1; + chtype ch = srcp[j]; + + while ((j + count < len) && (ch == srcp[j + count])) + count++; + + PDC_gotoyx(lineno, j + x); + + regs.h.ah = 0x09; + regs.W.bx = pdc_atrtab[ch >> PDC_ATTR_SHIFT]; + regs.W.cx = count; +#ifdef CHTYPE_LONG + if (ch & A_ALTCHARSET && !(ch & 0xff80)) + ch = acs_map[ch & 0x7f]; +#endif + regs.h.al = (unsigned char) (ch & 0xff); + + PDCINT(0x10, regs); + + j += count; + } +} diff --git a/3rd-party/PDCurses/dos/pdcdos.h b/3rd-party/PDCurses/dos/pdcdos.h new file mode 100644 index 0000000..2048ecf --- /dev/null +++ b/3rd-party/PDCurses/dos/pdcdos.h @@ -0,0 +1,194 @@ +/* Public Domain Curses */ + +#include +#include + +# if(CHTYPE_LONG >= 2) /* 64-bit chtypes */ + # define PDC_ATTR_SHIFT 23 +# else +#ifdef CHTYPE_LONG /* 32-bit chtypes */ + # define PDC_ATTR_SHIFT 19 +#else /* 16-bit chtypes */ + # define PDC_ATTR_SHIFT 8 +#endif +#endif + +#if defined(_MSC_VER) || defined(_QC) +# define MSC 1 +#endif + +#if defined(__PACIFIC__) && !defined(__SMALL__) +# define __SMALL__ +#endif + +#if defined(__HIGHC__) || MSC +# include +#endif + +/*---------------------------------------------------------------------- + * MEMORY MODEL SUPPORT: + * + * MODELS + * TINY cs,ds,ss all in 1 segment (not enough memory!) + * SMALL cs:1 segment, ds:1 segment + * MEDIUM cs:many segments, ds:1 segment + * COMPACT cs:1 segment, ds:many segments + * LARGE cs:many segments, ds:many segments + * HUGE cs:many segments, ds:segments > 64K + */ + +#ifdef __TINY__ +# define SMALL 1 +#endif +#ifdef __SMALL__ +# define SMALL 1 +#endif +#ifdef __MEDIUM__ +# define MEDIUM 1 +#endif +#ifdef __COMPACT__ +# define COMPACT 1 +#endif +#ifdef __LARGE__ +# define LARGE 1 +#endif +#ifdef __HUGE__ +# define HUGE 1 +#endif + +#include + +extern unsigned char *pdc_atrtab; +extern int pdc_adapter; +extern int pdc_scrnmode; +extern int pdc_font; +extern bool pdc_direct_video; +extern bool pdc_bogus_adapter; +extern unsigned pdc_video_seg; +extern unsigned pdc_video_ofs; + +#ifdef __DJGPP__ /* Note: works only in plain DOS... */ +# if DJGPP == 2 +# define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o))) +# else +# define _FAR_POINTER(s,o) (0xe0000000 + (((int)(s)) << 4) + ((int)(o))) +# endif +# define _FP_SEGMENT(p) (unsigned short)((((long)p) >> 4) & 0xffff) +#else +# ifdef __TURBOC__ +# define _FAR_POINTER(s,o) MK_FP(s,o) +# else +# if defined(__WATCOMC__) && defined(__FLAT__) +# define _FAR_POINTER(s,o) ((((int)(s)) << 4) + ((int)(o))) +# else +# define _FAR_POINTER(s,o) (((long)s << 16) | (long)o) +# endif +# endif +# define _FP_SEGMENT(p) (unsigned short)(((long)p) >> 4) +#endif +#define _FP_OFFSET(p) ((unsigned short)p & 0x000f) + +#ifdef __DJGPP__ +# include +unsigned char getdosmembyte(int offs); +unsigned short getdosmemword(int offs); +unsigned long getdosmemdword(int offs); +void setdosmembyte(int offs, unsigned char b); +void setdosmemword(int offs, unsigned short w); +#else +# if SMALL || MEDIUM || MSC +# define PDC_FAR far +# else +# define PDC_FAR +# endif +# define getdosmembyte(offs) \ + (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs))) +# define getdosmemword(offs) \ + (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs))) +# define getdosmemdword(offs) \ + (*((unsigned long PDC_FAR *) _FAR_POINTER(0,offs))) +# define setdosmembyte(offs,x) \ + (*((unsigned char PDC_FAR *) _FAR_POINTER(0,offs)) = (x)) +# define setdosmemword(offs,x) \ + (*((unsigned short PDC_FAR *) _FAR_POINTER(0,offs)) = (x)) +#endif + +#if defined(__WATCOMC__) && defined(__386__) + +typedef union +{ + struct + { + unsigned long edi, esi, ebp, res, ebx, edx, ecx, eax; + } d; + + struct + { + unsigned short di, di_hi, si, si_hi, bp, bp_hi, res, res_hi, + bx, bx_hi, dx, dx_hi, cx, cx_hi, ax, ax_hi, + flags, es, ds, fs, gs, ip, cs, sp, ss; + } w; + + struct + { + unsigned char edi[4], esi[4], ebp[4], res[4], + bl, bh, ebx_b2, ebx_b3, dl, dh, edx_b2, edx_b3, + cl, ch, ecx_b2, ecx_b3, al, ah, eax_b2, eax_b3; + } h; +} pdc_dpmi_regs; + +void PDC_dpmi_int(int, pdc_dpmi_regs *); + +#endif + +#ifdef __DJGPP__ +# include +# define PDCREGS __dpmi_regs +# define PDCINT(vector, regs) __dpmi_int(vector, ®s) +#else +# ifdef __WATCOMC__ +# ifdef __386__ +# define PDCREGS pdc_dpmi_regs +# define PDCINT(vector, regs) PDC_dpmi_int(vector, ®s) +# else +# define PDCREGS union REGPACK +# define PDCINT(vector, regs) intr(vector, ®s) +# endif +# else +# define PDCREGS union REGS +# define PDCINT(vector, regs) int86(vector, ®s, ®s) +# endif +#endif + +/* Wide registers in REGS: w or x? */ + +#ifdef __WATCOMC__ +# define W w +#else +# define W x +#endif + +/* Monitor (terminal) type information */ + +enum +{ + _NONE, _MDA, _CGA, + _EGACOLOR = 0x04, _EGAMONO, + _VGACOLOR = 0x07, _VGAMONO, + _MCGACOLOR = 0x0a, _MCGAMONO, + _MDS_GENIUS = 0x30 +}; + +/* Text-mode font size information */ + +enum +{ + _FONT8 = 8, + _FONT14 = 14, + _FONT15, /* GENIUS */ + _FONT16 +}; + +#ifdef __PACIFIC__ +void movedata(unsigned, unsigned, unsigned, unsigned, unsigned); +#endif diff --git a/3rd-party/PDCurses/dos/pdcgetsc.c b/3rd-party/PDCurses/dos/pdcgetsc.c new file mode 100644 index 0000000..58ae8f5 --- /dev/null +++ b/3rd-party/PDCurses/dos/pdcgetsc.c @@ -0,0 +1,98 @@ +/* Public Domain Curses */ + +#include "pdcdos.h" + +#include + +/* return width of screen/viewport */ + +int PDC_get_columns(void) +{ + PDCREGS regs; + int cols; + const char *env_cols; + + PDC_LOG(("PDC_get_columns() - called\n")); + + /* use the value from COLS environment variable, if set. MH 10-Jun-92 */ + /* and use the minimum of COLS and return from int10h MH 18-Jun-92 */ + + regs.h.ah = 0x0f; + PDCINT(0x10, regs); + cols = (int)regs.h.ah; + + env_cols = getenv("COLS"); + + if (env_cols) + cols = min(atoi(env_cols), cols); + + PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols)); + + return cols; +} + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + + return getdosmemword(0x460); +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ + const char *env_rows; + int rows; + + PDC_LOG(("PDC_get_rows() - called\n")); + + /* use the value from LINES environment variable, if set. MH 10-Jun-92 */ + /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */ + + rows = getdosmembyte(0x484) + 1; + env_rows = getenv("LINES"); + + if (env_rows) + rows = min(atoi(env_rows), rows); + + if (rows == 1 && pdc_adapter == _MDS_GENIUS) + rows = 66; + if (rows == 1 && pdc_adapter == _MDA) + rows = 25; + + if (rows == 1) + { + rows = 25; + pdc_direct_video = FALSE; + } + + switch (pdc_adapter) + { + case _EGACOLOR: + case _EGAMONO: + switch (rows) + { + case 25: + case 43: + break; + default: + rows = 25; + } + break; + + case _VGACOLOR: + case _VGAMONO: + break; + + default: + rows = 25; + break; + } + + PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows)); + + return rows; +} diff --git a/3rd-party/PDCurses/dos/pdckbd.c b/3rd-party/PDCurses/dos/pdckbd.c new file mode 100644 index 0000000..2c92c28 --- /dev/null +++ b/3rd-party/PDCurses/dos/pdckbd.c @@ -0,0 +1,523 @@ +/* Public Domain Curses */ + +/* MS C doesn't return flags from int86() */ +#ifdef MSC +# define USE_KBHIT +#endif + +#ifdef USE_KBHIT +# include +#endif + +#include "pdcdos.h" + +/*man-start************************************************************** + +pdckbd +------ + +### Synopsis + + unsigned long PDC_get_input_fd(void); + +### Description + + PDC_get_input_fd() returns the file descriptor that PDCurses + reads its input from. It can be used for select(). + +### Portability + X/Open BSD SYS V + PDC_get_input_fd - - - + +**man-end****************************************************************/ + +#ifdef __DJGPP__ +# include +# include +# include +#endif + +/************************************************************************ + * Table for key code translation of function keys in keypad mode * + * These values are for strict IBM keyboard compatibles only * + ************************************************************************/ + +static short key_table[] = +{ + -1, ALT_ESC, -1, 0, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, ALT_BKSP, KEY_BTAB, + ALT_Q, ALT_W, ALT_E, ALT_R, + ALT_T, ALT_Y, ALT_U, ALT_I, + ALT_O, ALT_P, ALT_LBRACKET, ALT_RBRACKET, + ALT_ENTER, -1, ALT_A, ALT_S, + ALT_D, ALT_F, ALT_G, ALT_H, + ALT_J, ALT_K, ALT_L, ALT_SEMICOLON, + ALT_FQUOTE, ALT_BQUOTE, -1, ALT_BSLASH, + ALT_Z, ALT_X, ALT_C, ALT_V, + ALT_B, ALT_N, ALT_M, ALT_COMMA, + ALT_STOP, ALT_FSLASH, -1, ALT_PADSTAR, + -1, -1, -1, KEY_F(1), + KEY_F(2), KEY_F(3), KEY_F(4), KEY_F(5), + KEY_F(6), KEY_F(7), KEY_F(8), KEY_F(9), + KEY_F(10), -1, -1, KEY_HOME, + KEY_UP, KEY_PPAGE, ALT_PADMINUS, KEY_LEFT, + KEY_B2, KEY_RIGHT, ALT_PADPLUS, KEY_END, + KEY_DOWN, KEY_NPAGE, KEY_IC, KEY_DC, + KEY_F(13), KEY_F(14), KEY_F(15), KEY_F(16), + KEY_F(17), KEY_F(18), KEY_F(19), KEY_F(20), + KEY_F(21), KEY_F(22), KEY_F(25), KEY_F(26), + KEY_F(27), KEY_F(28), KEY_F(29), KEY_F(30), + KEY_F(31), KEY_F(32), KEY_F(33), KEY_F(34), + KEY_F(37), KEY_F(38), KEY_F(39), KEY_F(40), + KEY_F(41), KEY_F(42), KEY_F(43), KEY_F(44), + KEY_F(45), KEY_F(46), -1, CTL_LEFT, + CTL_RIGHT, CTL_END, CTL_PGDN, CTL_HOME, + ALT_1, ALT_2, ALT_3, ALT_4, + ALT_5, ALT_6, ALT_7, ALT_8, + ALT_9, ALT_0, ALT_MINUS, ALT_EQUAL, + CTL_PGUP, KEY_F(11), KEY_F(12), KEY_F(23), + KEY_F(24), KEY_F(35), KEY_F(36), KEY_F(47), + KEY_F(48), CTL_UP, CTL_PADMINUS, CTL_PADCENTER, + CTL_PADPLUS, CTL_DOWN, CTL_INS, CTL_DEL, + CTL_TAB, CTL_PADSLASH, CTL_PADSTAR, ALT_HOME, + ALT_UP, ALT_PGUP, -1, ALT_LEFT, + -1, ALT_RIGHT, -1, ALT_END, + ALT_DOWN, ALT_PGDN, ALT_INS, ALT_DEL, + ALT_PADSLASH, ALT_TAB, ALT_PADENTER, -1 +}; + +unsigned long pdc_key_modifiers = 0L; + +static struct {unsigned short pressed, released;} button[3]; + +static bool mouse_avail = FALSE, mouse_vis = FALSE, mouse_moved = FALSE, + mouse_button = FALSE, key_pressed = FALSE; + +static unsigned char mouse_scroll = 0; +static PDCREGS ms_regs, old_ms; +static unsigned short shift_status, old_shift = 0; +static unsigned char keyboard_function = 0xff, shift_function = 0xff, + check_function = 0xff; + +static const unsigned short button_map[3] = {0, 2, 1}; + +unsigned long PDC_get_input_fd(void) +{ + PDC_LOG(("PDC_get_input_fd() - called\n")); + + return (unsigned long)fileno(stdin); +} + +void PDC_set_keyboard_binary(bool on) +{ + PDC_LOG(("PDC_set_keyboard_binary() - called\n")); + +#ifdef __DJGPP__ + setmode(fileno(stdin), on ? O_BINARY : O_TEXT); + signal(SIGINT, on ? SIG_IGN : SIG_DFL); +#endif +} + +/* check if a key or mouse event is waiting */ + +bool PDC_check_key(void) +{ + PDCREGS regs; + + if (shift_function == 0xff) + { + int scan; + + /* get shift status for all keyboards */ + + regs.h.ah = 0x02; + PDCINT(0x16, regs); + scan = regs.h.al; + + /* get shift status for enhanced keyboards */ + + regs.h.ah = 0x12; + PDCINT(0x16, regs); + + if (scan == regs.h.al && getdosmembyte(0x496) == 0x10) + { + keyboard_function = 0x10; + check_function = 0x11; + shift_function = 0x12; + } + else + { + keyboard_function = 0; + check_function = 1; + shift_function = 2; + } + } + + regs.h.ah = shift_function; + PDCINT(0x16, regs); + + shift_status = regs.W.ax; + + if (mouse_vis) + { + unsigned short i; + + ms_regs.W.ax = 3; + PDCINT(0x33, ms_regs); + + mouse_button = FALSE; + + for (i = 0; i < 3; i++) + { + regs.W.ax = 6; + regs.W.bx = button_map[i]; + PDCINT(0x33, regs); + button[i].released = regs.W.bx; + if (regs.W.bx) + { + ms_regs.W.cx = regs.W.cx; + ms_regs.W.dx = regs.W.dx; + mouse_button = TRUE; + } + + regs.W.ax = 5; + regs.W.bx = button_map[i]; + PDCINT(0x33, regs); + button[i].pressed = regs.W.bx; + if (regs.W.bx) + { + ms_regs.W.cx = regs.W.cx; + ms_regs.W.dx = regs.W.dx; + mouse_button = TRUE; + } + } + + mouse_scroll = ms_regs.h.bh; + + mouse_moved = !mouse_button && ms_regs.h.bl && + ms_regs.h.bl == old_ms.h.bl && + (((ms_regs.W.cx ^ old_ms.W.cx) >> 3) || + ((ms_regs.W.dx ^ old_ms.W.dx) >> 3)); + + if (mouse_scroll || mouse_button || mouse_moved) + return TRUE; + } + + if (old_shift && !shift_status) /* modifier released */ + { + if (!key_pressed && SP->return_key_modifiers) + return TRUE; + } + else if (!old_shift && shift_status) /* modifier pressed */ + key_pressed = FALSE; + + old_shift = shift_status; + +#ifndef USE_KBHIT + regs.h.ah = check_function; + PDCINT(0x16, regs); + + return !(regs.W.flags & 64); +#else + return kbhit(); +#endif +} + +static int _process_mouse_events(void) +{ + int i; + short shift_flags = 0; + + memset(&pdc_mouse_status, 0, sizeof(pdc_mouse_status)); + + key_pressed = TRUE; + old_shift = shift_status; + SP->key_code = TRUE; + + /* Set shift modifiers */ + + if (shift_status & 3) + shift_flags |= BUTTON_SHIFT; + + if (shift_status & 4) + shift_flags |= BUTTON_CONTROL; + + if (shift_status & 8) + shift_flags |= BUTTON_ALT; + + /* Scroll wheel support for CuteMouse */ + + if (mouse_scroll) + { + pdc_mouse_status.changes = mouse_scroll & 0x80 ? + PDC_MOUSE_WHEEL_UP : PDC_MOUSE_WHEEL_DOWN; + + pdc_mouse_status.x = -1; + pdc_mouse_status.y = -1; + + return KEY_MOUSE; + } + + if (mouse_moved) + { + pdc_mouse_status.changes = PDC_MOUSE_MOVED; + + for (i = 0; i < 3; i++) + { + if (ms_regs.h.bl & (1 << button_map[i])) + { + pdc_mouse_status.button[i] = BUTTON_MOVED | shift_flags; + pdc_mouse_status.changes |= (1 << i); + } + } + } + else /* button event */ + { + for (i = 0; i < 3; i++) + { + if (button[i].pressed) + { + /* Check for a click -- a PRESS followed + immediately by a release */ + + if (!button[i].released) + { + if (SP->mouse_wait) + { + PDCREGS regs; + + napms(SP->mouse_wait); + + regs.W.ax = 6; + regs.W.bx = button_map[i]; + PDCINT(0x33, regs); + + pdc_mouse_status.button[i] = regs.W.bx ? + BUTTON_CLICKED : BUTTON_PRESSED; + } + else + pdc_mouse_status.button[i] = BUTTON_PRESSED; + } + else + pdc_mouse_status.button[i] = BUTTON_CLICKED; + } + + if (button[i].pressed || button[i].released) + { + pdc_mouse_status.button[i] |= shift_flags; + pdc_mouse_status.changes |= (1 << i); + } + } + } + + pdc_mouse_status.x = ms_regs.W.cx >> 3; + pdc_mouse_status.y = ms_regs.W.dx >> 3; + + old_ms = ms_regs; + + return KEY_MOUSE; +} + +/* return the next available key or mouse event */ + +int PDC_get_key(void) +{ + PDCREGS regs; + int key, scan; + + pdc_key_modifiers = 0; + + if (mouse_vis && (mouse_scroll || mouse_button || mouse_moved)) + return _process_mouse_events(); + + /* Return modifiers as keys? */ + + if (old_shift && !shift_status) + { + key = -1; + + if (old_shift & 1) + key = KEY_SHIFT_R; + + if (old_shift & 2) + key = KEY_SHIFT_L; + + if (shift_function == 0x12) + { + if (old_shift & 0x400) + key = KEY_CONTROL_R; + + if (old_shift & 0x100) + key = KEY_CONTROL_L; + + if (old_shift & 0x800) + key = KEY_ALT_R; + + if (old_shift & 0x200) + key = KEY_ALT_L; + } + else + { + if (old_shift & 4) + key = KEY_CONTROL_R; + + if (old_shift & 8) + key = KEY_ALT_R; + } + + key_pressed = FALSE; + old_shift = shift_status; + + SP->key_code = TRUE; + return key; + } + + regs.h.ah = keyboard_function; + PDCINT(0x16, regs); + key = regs.h.al; + scan = regs.h.ah; + + if (SP->save_key_modifiers) + { + if (shift_status & 3) + pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT; + + if (shift_status & 4) + pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL; + + if (shift_status & 8) + pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT; + + if (shift_status & 0x20) + pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK; + } + + if (scan == 0x1c && key == 0x0a) /* ^Enter */ + key = CTL_ENTER; + else if (scan == 0xe0 && key == 0x0d) /* PadEnter */ + key = PADENTER; + else if (scan == 0xe0 && key == 0x0a) /* ^PadEnter */ + key = CTL_PADENTER; + else if (scan == 0x37 && key == 0x2a) /* Star */ + key = PADSTAR; + else if (scan == 0x4a && key == 0x2d) /* Minus */ + key = PADMINUS; + else if (scan == 0x4e && key == 0x2b) /* Plus */ + key = PADPLUS; + else if (scan == 0xe0 && key == 0x2f) /* Slash */ + key = PADSLASH; + else if (key == 0x00 || (key == 0xe0 && scan > 53 && scan != 86)) + key = (scan > 0xa7) ? -1 : key_table[scan]; + + if (shift_status & 3) + { + switch (key) + { + case KEY_HOME: /* Shift Home */ + key = KEY_SHOME; + break; + case KEY_UP: /* Shift Up */ + key = KEY_SUP; + break; + case KEY_PPAGE: /* Shift PgUp */ + key = KEY_SPREVIOUS; + break; + case KEY_LEFT: /* Shift Left */ + key = KEY_SLEFT; + break; + case KEY_RIGHT: /* Shift Right */ + key = KEY_SRIGHT; + break; + case KEY_END: /* Shift End */ + key = KEY_SEND; + break; + case KEY_DOWN: /* Shift Down */ + key = KEY_SDOWN; + break; + case KEY_NPAGE: /* Shift PgDn */ + key = KEY_SNEXT; + break; + case KEY_IC: /* Shift Ins */ + key = KEY_SIC; + break; + case KEY_DC: /* Shift Del */ + key = KEY_SDC; + } + } + + key_pressed = TRUE; + SP->key_code = ((unsigned)key >= 256); + + return key; +} + +/* discard any pending keyboard or mouse input -- this is the core + routine for flushinp() */ + +void PDC_flushinp(void) +{ + PDC_LOG(("PDC_flushinp() - called\n")); + + /* Force the BIOS keyboard buffer head and tail pointers to be + the same... Real nasty trick... */ + + setdosmemword(0x41a, getdosmemword(0x41c)); +} + +bool PDC_has_mouse(void) +{ + PDCREGS regs; + + if (!mouse_avail) + { + regs.W.ax = 0; + PDCINT(0x33, regs); + + mouse_avail = !!(regs.W.ax); + } + + return mouse_avail; +} + +int PDC_mouse_set(void) +{ + PDCREGS regs; + unsigned long mbe = SP->_trap_mbe; + + if (mbe && !mouse_avail) + mouse_avail = PDC_has_mouse(); + + if (mbe) + { + if (mouse_avail && !mouse_vis) + { + memset(&old_ms, 0, sizeof(old_ms)); + + regs.W.ax = 1; + PDCINT(0x33, regs); + + mouse_vis = TRUE; + } + } + else + { + if (mouse_avail && mouse_vis) + { + regs.W.ax = 2; + PDCINT(0x33, regs); + + mouse_vis = FALSE; + } + } + + return (mouse_avail || !mbe) ? OK : ERR; +} + +int PDC_modifiers_set(void) +{ + key_pressed = FALSE; + + return OK; +} diff --git a/3rd-party/PDCurses/dos/pdcscrn.c b/3rd-party/PDCurses/dos/pdcscrn.c new file mode 100644 index 0000000..fa76a0d --- /dev/null +++ b/3rd-party/PDCurses/dos/pdcscrn.c @@ -0,0 +1,785 @@ +/* Public Domain Curses */ + +#include "pdcdos.h" + +#include + +#ifdef CHTYPE_LONG +# define PDC_OFFSET 32 +#else +# define PDC_OFFSET 8 +#endif + +/* COLOR_PAIR to attribute encoding table. */ + +unsigned char *pdc_atrtab = (unsigned char *)NULL; + +int pdc_adapter; /* screen type */ +int pdc_scrnmode; /* default screen mode */ +int pdc_font; /* default font size */ +bool pdc_direct_video; /* allow direct screen memory writes */ +bool pdc_bogus_adapter; /* TRUE if adapter has insane values */ +unsigned pdc_video_seg; /* video base segment */ +unsigned pdc_video_ofs; /* video base offset */ + +static short curstoreal[16], realtocurs[16] = +{ + COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED, + COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8, + COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8, + COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8 +}; + +static bool sizeable = FALSE; /* TRUE if adapter is resizeable */ + +static unsigned short *saved_screen = NULL; +static int saved_lines = 0; +static int saved_cols = 0; + +static int saved_scrnmode[3]; +static int saved_font[3]; + +/* special purpose function keys */ +static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 0, 0, 0, 0 }; + +/* Thanks to Jeff Duntemann, K16RA for providing the impetus + (through the Dr. Dobbs Journal, March 1989 issue) for getting + the routines below merged into Bjorn Larsson's PDCurses 1.3... + -- frotz@dri.com 900730 */ + +/* _get_font() - Get the current font size */ + +static int _get_font(void) +{ + int retval; + + retval = getdosmemword(0x485); + + /* Assume the MDS Genius is in 66 line mode. */ + + if ((retval == 0) && (pdc_adapter == _MDS_GENIUS)) + retval = _FONT15; + + switch (pdc_adapter) + { + case _MDA: + retval = 10; /* POINTS is not certain on MDA/Hercules */ + break; + + case _EGACOLOR: + case _EGAMONO: + switch (retval) + { + case _FONT8: + case _FONT14: + break; + default: + retval = _FONT14; + } + break; + + case _CGA: + retval = _FONT8; + } + + return retval; +} + +/* _set_font() - Sets the current font size, if the adapter allows such a + change. It is an error to attempt to change the font size on a + "bogus" adapter. The reason for this is that we have a known video + adapter identity problem. e.g. Two adapters report the same identifying + characteristics. */ + +static void _set_font(int size) +{ + PDCREGS regs; + + if (pdc_bogus_adapter) + return; + + switch (pdc_adapter) + { + case _CGA: + case _MDA: + case _MCGACOLOR: + case _MCGAMONO: + case _MDS_GENIUS: + break; + + case _EGACOLOR: + case _EGAMONO: + if (sizeable && (pdc_font != size)) + { + switch (size) + { + case _FONT8: + regs.W.ax = 0x1112; + regs.h.bl = 0x00; + PDCINT(0x10, regs); + break; + case _FONT14: + regs.W.ax = 0x1111; + regs.h.bl = 0x00; + PDCINT(0x10, regs); + } + } + break; + + case _VGACOLOR: + case _VGAMONO: + if (sizeable && (pdc_font != size)) + { + switch (size) + { + case _FONT8: + regs.W.ax = 0x1112; + regs.h.bl = 0x00; + PDCINT(0x10, regs); + break; + case _FONT14: + regs.W.ax = 0x1111; + regs.h.bl = 0x00; + PDCINT(0x10, regs); + break; + case _FONT16: + regs.W.ax = 0x1114; + regs.h.bl = 0x00; + PDCINT(0x10, regs); + } + } + } + + curs_set(SP->visibility); + + pdc_font = _get_font(); +} + +/* _set_80x25() - force a known screen state: 80x25 text mode. Forces the + appropriate 80x25 alpha mode given the display adapter. */ + +static void _set_80x25(void) +{ + PDCREGS regs; + + switch (pdc_adapter) + { + case _CGA: + case _EGACOLOR: + case _EGAMONO: + case _VGACOLOR: + case _VGAMONO: + case _MCGACOLOR: + case _MCGAMONO: + regs.h.ah = 0x00; + regs.h.al = 0x03; + PDCINT(0x10, regs); + break; + case _MDA: + regs.h.ah = 0x00; + regs.h.al = 0x07; + PDCINT(0x10, regs); + } +} + +/* _get_scrn_mode() - Return the current BIOS video mode */ + +static int _get_scrn_mode(void) +{ + PDCREGS regs; + + regs.h.ah = 0x0f; + PDCINT(0x10, regs); + + return (int)regs.h.al; +} + +/* _set_scrn_mode() - Sets the BIOS Video Mode Number only if it is + different from the current video mode. */ + +static void _set_scrn_mode(int new_mode) +{ + PDCREGS regs; + + if (_get_scrn_mode() != new_mode) + { + regs.h.ah = 0; + regs.h.al = (unsigned char) new_mode; + PDCINT(0x10, regs); + } + + pdc_font = _get_font(); + pdc_scrnmode = new_mode; + LINES = PDC_get_rows(); + COLS = PDC_get_columns(); +} + +/* _sanity_check() - A video adapter identification sanity check. This + routine will force sane values for various control flags. */ + +static int _sanity_check(int adapter) +{ + int fontsize = _get_font(); + int rows = PDC_get_rows(); + + PDC_LOG(("_sanity_check() - called: Adapter %d\n", adapter)); + + switch (adapter) + { + case _EGACOLOR: + case _EGAMONO: + switch (rows) + { + case 25: + case 43: + break; + default: + pdc_bogus_adapter = TRUE; + } + + switch (fontsize) + { + case _FONT8: + case _FONT14: + break; + default: + pdc_bogus_adapter = TRUE; + } + break; + + case _VGACOLOR: + case _VGAMONO: + break; + + case _CGA: + case _MDA: + case _MCGACOLOR: + case _MCGAMONO: + switch (rows) + { + case 25: + break; + default: + pdc_bogus_adapter = TRUE; + } + break; + + default: + pdc_bogus_adapter = TRUE; + } + + if (pdc_bogus_adapter) + { + sizeable = FALSE; + pdc_direct_video = FALSE; + } + + return adapter; +} + +/* _query_adapter_type() - Determine PC video adapter type. */ + +static int _query_adapter_type(void) +{ + PDCREGS regs; + int retval = _NONE; + + /* thanks to paganini@ax.apc.org for the GO32 fix */ + +#if !defined(__DJGPP__) && !defined(__WATCOMC__) + struct SREGS segs; +#endif + short video_base = getdosmemword(0x463); + + PDC_LOG(("_query_adapter_type() - called\n")); + + /* attempt to call VGA Identify Adapter Function */ + + regs.W.ax = 0x1a00; + PDCINT(0x10, regs); + + if ((regs.h.al == 0x1a) && (retval == _NONE)) + { + /* We know that the PS/2 video BIOS is alive and well. */ + + switch (regs.h.al) + { + case 0: + retval = _NONE; + break; + case 1: + retval = _MDA; + break; + case 2: + retval = _CGA; + break; + case 4: + retval = _EGACOLOR; + sizeable = TRUE; + break; + case 5: + retval = _EGAMONO; + break; + case 26: /* ...alt. VGA BIOS... */ + case 7: + retval = _VGACOLOR; + sizeable = TRUE; + break; + case 8: + retval = _VGAMONO; + break; + case 10: + case 13: + retval = _MCGACOLOR; + break; + case 12: + retval = _MCGAMONO; + break; + default: + retval = _CGA; + } + } + else + { + /* No VGA BIOS, check for an EGA BIOS by selecting an + Alternate Function Service... + + bx == 0x0010 --> return EGA information */ + + regs.h.ah = 0x12; + regs.W.bx = 0x10; + PDCINT(0x10, regs); + + if ((regs.h.bl != 0x10) && (retval == _NONE)) + { + /* An EGA BIOS exists */ + + regs.h.ah = 0x12; + regs.h.bl = 0x10; + PDCINT(0x10, regs); + + if (regs.h.bh == 0) + retval = _EGACOLOR; + else + retval = _EGAMONO; + } + else if (retval == _NONE) + { + /* Now we know we only have CGA or MDA */ + + PDCINT(0x11, regs); + + switch (regs.h.al & 0x30) + { + case 0x10: + case 0x20: + retval = _CGA; + break; + case 0x30: + retval = _MDA; + break; + default: + retval = _NONE; + } + } + } + + if (video_base == 0x3d4) + { + pdc_video_seg = 0xb800; + switch (retval) + { + case _EGAMONO: + retval = _EGACOLOR; + break; + case _VGAMONO: + retval = _VGACOLOR; + } + } + + if (video_base == 0x3b4) + { + pdc_video_seg = 0xb000; + switch (retval) + { + case _EGACOLOR: + retval = _EGAMONO; + break; + case _VGACOLOR: + retval = _VGAMONO; + } + } + + if ((retval == _NONE) +#ifndef CGA_DIRECT + || (retval == _CGA) +#endif + ) + pdc_direct_video = FALSE; + + if ((unsigned)pdc_video_seg == 0xb000) + SP->mono = TRUE; + else + SP->mono = FALSE; + + /* Check for DESQview shadow buffer + thanks to paganini@ax.apc.org for the GO32 fix */ + +#ifndef __WATCOMC__ + regs.h.ah = 0xfe; + regs.h.al = 0; + regs.x.di = pdc_video_ofs; +# ifdef __DJGPP__ + regs.x.es = pdc_video_seg; + __dpmi_int(0x10, ®s); + pdc_video_seg = regs.x.es; +# else + segs.es = pdc_video_seg; + int86x(0x10, ®s, ®s, &segs); + pdc_video_seg = segs.es; +# endif + pdc_video_ofs = regs.x.di; +#endif + if (!pdc_adapter) + pdc_adapter = retval; + + return _sanity_check(retval); +} + +/* close the physical screen -- may restore the screen to its state + before PDC_scr_open(); miscellaneous cleanup */ + +void PDC_scr_close(void) +{ +#if SMALL || MEDIUM +# ifndef __PACIFIC__ + struct SREGS segregs; +# endif + int ds; +#endif + PDC_LOG(("PDC_scr_close() - called\n")); + + if (getenv("PDC_RESTORE_SCREEN") && saved_screen) + { +#ifdef __DJGPP__ + dosmemput(saved_screen, saved_lines * saved_cols * 2, + (unsigned long)_FAR_POINTER(pdc_video_seg, + pdc_video_ofs)); +#else +# if (SMALL || MEDIUM) +# ifdef __PACIFIC__ + ds = FP_SEG((void far *)saved_screen); +# else + segread(&segregs); + ds = segregs.ds; +# endif + movedata(ds, (int)saved_screen, pdc_video_seg, pdc_video_ofs, + (saved_lines * saved_cols * 2)); +# else + memcpy((void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs), + (void *)saved_screen, (saved_lines * saved_cols * 2)); +# endif +#endif + free(saved_screen); + saved_screen = NULL; + } + + reset_shell_mode(); + + if (SP->visibility != 1) + curs_set(1); + + /* Position cursor to the bottom left of the screen. */ + + PDC_gotoyx(PDC_get_rows() - 2, 0); +} + +void PDC_scr_free(void) +{ + if (SP) + free(SP); + if (pdc_atrtab) + free(pdc_atrtab); + + pdc_atrtab = (unsigned char *)NULL; +} + +/* open the physical screen -- allocate SP, miscellaneous intialization, + and may save the existing screen for later restoration */ + +int PDC_scr_open(int argc, char **argv) +{ +#if SMALL || MEDIUM +# ifndef __PACIFIC__ + struct SREGS segregs; +# endif + int ds; +#endif + int i; + + PDC_LOG(("PDC_scr_open() - called\n")); + + SP = calloc(1, sizeof(SCREEN)); + pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1); + + if (!SP || !pdc_atrtab) + return ERR; + + for (i = 0; i < 16; i++) + curstoreal[realtocurs[i]] = i; + + SP->orig_attr = FALSE; + + pdc_direct_video = TRUE; /* Assume that we can */ + pdc_video_seg = 0xb000; /* Base screen segment addr */ + pdc_video_ofs = 0x0; /* Base screen segment ofs */ + + pdc_adapter = _query_adapter_type(); + pdc_scrnmode = _get_scrn_mode(); + pdc_font = _get_font(); + + SP->lines = PDC_get_rows(); + SP->cols = PDC_get_columns(); + + SP->mouse_wait = PDC_CLICK_PERIOD; + SP->audible = TRUE; + + /* If the environment variable PDCURSES_BIOS is set, the DOS int10() + BIOS calls are used in place of direct video memory access. */ + + if (getenv("PDCURSES_BIOS")) + pdc_direct_video = FALSE; + + /* This code for preserving the current screen. */ + + if (getenv("PDC_RESTORE_SCREEN")) + { + saved_lines = SP->lines; + saved_cols = SP->cols; + + saved_screen = malloc(saved_lines * saved_cols * 2); + + if (!saved_screen) + { + SP->_preserve = FALSE; + return OK; + } +#ifdef __DJGPP__ + dosmemget((unsigned long)_FAR_POINTER(pdc_video_seg, pdc_video_ofs), + saved_lines * saved_cols * 2, saved_screen); +#else +# if SMALL || MEDIUM +# ifdef __PACIFIC__ + ds = FP_SEG((void far *) saved_screen); +# else + segread(&segregs); + ds = segregs.ds; +# endif + movedata(pdc_video_seg, pdc_video_ofs, ds, (int)saved_screen, + (saved_lines * saved_cols * 2)); +# else + memcpy((void *)saved_screen, + (void *)_FAR_POINTER(pdc_video_seg, pdc_video_ofs), + (saved_lines * saved_cols * 2)); +# endif +#endif + } + + SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL); + + return OK; +} + +/* the core of resize_term() */ + +int PDC_resize_screen(int nlines, int ncols) +{ + PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n", + nlines, ncols)); + + if( !stdscr) /* window hasn't been created yet; we're */ + { /* specifying its size before doing so */ + return OK; /* ...which doesn't work in DOS */ + } + + /* Trash the stored value of orig_cursor -- it's only good if the + video mode doesn't change */ + + SP->orig_cursor = 0x0607; + + switch (pdc_adapter) + { + case _EGACOLOR: + if (nlines >= 43) + _set_font(_FONT8); + else + _set_80x25(); + break; + + case _VGACOLOR: + if (nlines > 28) + _set_font(_FONT8); + else + if (nlines > 25) + _set_font(_FONT14); + else + _set_80x25(); + } + + PDC_set_blink(COLORS == 8); + + return OK; +} + +void PDC_reset_prog_mode(void) +{ + PDC_LOG(("PDC_reset_prog_mode() - called.\n")); +} + +void PDC_reset_shell_mode(void) +{ + PDC_LOG(("PDC_reset_shell_mode() - called.\n")); +} + +void PDC_restore_screen_mode(int i) +{ + if (i >= 0 && i <= 2) + { + pdc_font = _get_font(); + _set_font(saved_font[i]); + + if (_get_scrn_mode() != saved_scrnmode[i]) + _set_scrn_mode(saved_scrnmode[i]); + } +} + +void PDC_save_screen_mode(int i) +{ + if (i >= 0 && i <= 2) + { + saved_font[i] = pdc_font; + saved_scrnmode[i] = pdc_scrnmode; + } +} + +void PDC_init_pair(short pair, short fg, short bg) +{ + unsigned char att, temp_bg; + chtype i; + + fg = curstoreal[fg]; + bg = curstoreal[bg]; + + for (i = 0; i < PDC_OFFSET; i++) + { + att = fg | (bg << 4); + + if (i & (A_REVERSE >> PDC_ATTR_SHIFT)) + att = bg | (fg << 4); + if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT)) + att = 1; + if (i & (A_INVIS >> PDC_ATTR_SHIFT)) + { + temp_bg = att >> 4; + att = temp_bg << 4 | temp_bg; + } + if (i & (A_BOLD >> PDC_ATTR_SHIFT)) + att |= 8; + if (i & (A_BLINK >> PDC_ATTR_SHIFT)) + att |= 128; + + pdc_atrtab[pair * PDC_OFFSET + i] = att; + } +} + +int PDC_pair_content(short pair, short *fg, short *bg) +{ + *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F]; + *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4]; + + return OK; +} + +/* _egapal() - Find the EGA palette value (0-63) for the color (0-15). + On VGA, this is an index into the DAC. */ + +static short _egapal(short color) +{ + PDCREGS regs; + + regs.W.ax = 0x1007; + regs.h.bl = curstoreal[color]; + + PDCINT(0x10, regs); + + return regs.h.bh; +} + +bool PDC_can_change_color(void) +{ + return (pdc_adapter == _VGACOLOR); +} + +/* These are only valid when pdc_adapter == _VGACOLOR */ + +int PDC_color_content(short color, short *red, short *green, short *blue) +{ + PDCREGS regs; + + /* Read single DAC register */ + + regs.W.ax = 0x1015; + regs.h.bl = _egapal(color); + + PDCINT(0x10, regs); + + /* Scale and store */ + + *red = DIVROUND((unsigned)(regs.h.dh) * 1000, 63); + *green = DIVROUND((unsigned)(regs.h.ch) * 1000, 63); + *blue = DIVROUND((unsigned)(regs.h.cl) * 1000, 63); + + return OK; +} + +int PDC_init_color(short color, short red, short green, short blue) +{ + PDCREGS regs; + + /* Scale */ + + regs.h.dh = DIVROUND((unsigned)red * 63, 1000); + regs.h.ch = DIVROUND((unsigned)green * 63, 1000); + regs.h.cl = DIVROUND((unsigned)blue * 63, 1000); + + /* Set single DAC register */ + + regs.W.ax = 0x1010; + regs.W.bx = _egapal(color); + + PDCINT(0x10, regs); + + return OK; +} + + /* Does nothing in the DOS (or OS/2 or Win32 console) flavors of PDCurses, +which lack user resizing. See X11 or Win32a versions of this function for +details of what it does on platforms that do support user resizing. */ + +void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines, + const int new_min_cols, const int new_max_cols) +{ +} + +/* PDC_set_function_key() does nothing on this platform */ +int PDC_set_function_key( const unsigned function, const int new_key) +{ + int old_key = -1; + + if( function < PDC_MAX_FUNCTION_KEYS) + { + old_key = PDC_shutdown_key[function]; + PDC_shutdown_key[function] = new_key; + } + return( old_key); +} diff --git a/3rd-party/PDCurses/dos/pdcsetsc.c b/3rd-party/PDCurses/dos/pdcsetsc.c new file mode 100644 index 0000000..13114fd --- /dev/null +++ b/3rd-party/PDCurses/dos/pdcsetsc.c @@ -0,0 +1,101 @@ +/* Public Domain Curses */ + +#include "pdcdos.h" + +/*man-start************************************************************** + +pdcsetsc +-------- + +### Synopsis + + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + +### Description + + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + +### Portability + X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + +int PDC_curs_set(int visibility) +{ + PDCREGS regs; + int ret_vis, start, end; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + SP->visibility = visibility; + + switch (visibility) + { + case 0: /* invisible */ + start = 32; + end = 0; /* was 32 */ + break; + case 2: /* highly visible */ + start = 0; /* full-height block */ + end = 7; + break; + default: /* normal visibility */ + start = (SP->orig_cursor >> 8) & 0xff; + end = SP->orig_cursor & 0xff; + } + + /* if scrnmode is not set, some BIOSes hang */ + + regs.h.ah = 0x01; + regs.h.al = (unsigned char)pdc_scrnmode; + regs.h.ch = (unsigned char)start; + regs.h.cl = (unsigned char)end; + PDCINT(0x10, regs); + + return ret_vis; +} + +void PDC_set_title(const char *title) +{ + PDC_LOG(("PDC_set_title() - called: <%s>\n", title)); +} + +int PDC_set_blink(bool blinkon) +{ + PDCREGS regs; + + switch (pdc_adapter) + { + case _EGACOLOR: + case _EGAMONO: + case _VGACOLOR: + case _VGAMONO: + regs.W.ax = 0x1003; + regs.W.bx = blinkon; + + PDCINT(0x10, regs); + + if (pdc_color_started) + COLORS = blinkon ? 8 : 16; + + break; + default: + COLORS = 8; + } + + return (COLORS - (blinkon * 8) != 8) ? OK : ERR; +} diff --git a/3rd-party/PDCurses/dos/pdcutil.c b/3rd-party/PDCurses/dos/pdcutil.c new file mode 100644 index 0000000..4ee8491 --- /dev/null +++ b/3rd-party/PDCurses/dos/pdcutil.c @@ -0,0 +1,193 @@ +/* Public Domain Curses */ + +#include +#include "pdcdos.h" + +void PDC_beep(void) +{ + PDCREGS regs; + + PDC_LOG(("PDC_beep() - called\n")); + + regs.W.ax = 0x0e07; /* Write ^G in TTY fashion */ + regs.W.bx = 0; + PDCINT(0x10, regs); +} + +#if UINT_MAX >= 0xfffffffful +# define irq0_ticks() (getdosmemdword(0x46c)) +/* For 16-bit platforms, we expect that the program will need _two_ memory + read instructions to read the tick count. Between the two instructions, + if we do not turn off interrupts, an IRQ 0 might intervene and update the + tick count with a carry over from the lower half to the upper half --- + and our read count will be bogus. */ +#elif defined __TURBOC__ +static unsigned long irq0_ticks(void) +{ + unsigned long t; + disable(); + t = getdosmemdword(0x46c); + enable(); + return t; +} +#elif defined __WATCOMC__ +static unsigned long irq0_ticks(void) +{ + unsigned long t; + _disable(); + t = getdosmemdword(0x46c); + _enable(); + return t; +} +#else +# define irq0_ticks() (getdosmemdword(0x46c)) /* FIXME */ +#endif + +static void do_idle(void) +{ + PDCREGS regs; + + regs.W.ax = 0x1680; + PDCINT(0x2f, regs); + PDCINT(0x28, regs); +} + +#define MAX_TICK 0x1800b0L /* no. of IRQ 0 clock ticks per day; + BIOS counter (0:0x46c) will go up + to MAX_TICK - 1 before wrapping to + 0 at midnight */ +#define MS_PER_DAY 86400000L /* no. of milliseconds in a day */ + +/* 1080 seconds = 18 minutes = 1/80 day is exactly 19663 ticks. +If asked to nap for longer than 1080000 milliseconds, we take +one or more 18-minute naps. This avoids wraparound issues and +the integer overflows that would result for ms > MAX_INT / 859 +(about 42 minutes). */ + +#define MAX_NAP_SPAN (MS_PER_DAY / 80ul) + +void PDC_napmsl( long ms) +{ + long ticks_to_wait, tick0; + + PDC_LOG(("PDC_napms() - called: ms=%d\n", ms)); + + while (ms > MAX_NAP_SPAN) + { + PDC_napmsl( MAX_NAP_SPAN); + ms -= MAX_NAP_SPAN; + } + + if (ms < 0) + return; + + /* Scale the millisecond count by MAX_TICK / MS_PER_DAY. We actually + scale by 859/47181, which is correct to within four parts per + billion and avoids the need for floating-point math. We have to + round to the nearest integer tick anyway and don't know where we + started within a tick, so this error can be accepted. + + Here, we assume that we start (on average) halfway through a tick, + but will end almost exactly when the 'goal' tick begins. So the + rounding (on average) will work out correctly. */ + + ticks_to_wait = (ms * 859L) / 47181L + 1L; + tick0 = irq0_ticks(); + + for( ;;) + { + long t = irq0_ticks() - tick0; + + if( t < 0) /* midnight rollover */ + t += MAX_TICK; + if( t >= ticks_to_wait) + break; + do_idle(); + } +} + +void PDC_napms(int ms) +{ + PDC_napmsl( (long)ms); +} + +const char *PDC_sysname(void) +{ + return "DOS"; +} + +PDC_version_info PDC_version = { PDC_PORT_DOS, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), + /* note that thus far, 'wide' and 'UTF8' versions exist */ + /* only for SDL2, X11, Win32, and Win32a; elsewhere, */ + /* these will be FALSE */ +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; + +#ifdef __DJGPP__ + +unsigned char getdosmembyte(int offset) +{ + unsigned char b; + + dosmemget(offset, sizeof(unsigned char), &b); + return b; +} + +unsigned short getdosmemword(int offset) +{ + unsigned short w; + + dosmemget(offset, sizeof(unsigned short), &w); + return w; +} + +unsigned long getdosmemdword(int offset) +{ + unsigned long dw; + + dosmemget(offset, sizeof(unsigned long), &dw); + return dw; +} + +void setdosmembyte(int offset, unsigned char b) +{ + dosmemput(&b, sizeof(unsigned char), offset); +} + +void setdosmemword(int offset, unsigned short w) +{ + dosmemput(&w, sizeof(unsigned short), offset); +} + +#endif + +#if defined(__WATCOMC__) && defined(__386__) + +void PDC_dpmi_int(int vector, pdc_dpmi_regs *rmregs) +{ + union REGPACK regs = {0}; + + rmregs->w.ss = 0; + rmregs->w.sp = 0; + rmregs->w.flags = 0; + + regs.w.ax = 0x300; + regs.h.bl = vector; + regs.x.edi = FP_OFF(rmregs); + regs.x.es = FP_SEG(rmregs); + + intr(0x31, ®s); +} + +#endif diff --git a/3rd-party/PDCurses/libobjs.mif b/3rd-party/PDCurses/libobjs.mif new file mode 100644 index 0000000..80a5ce2 --- /dev/null +++ b/3rd-party/PDCurses/libobjs.mif @@ -0,0 +1,26 @@ +# Common elements for most of the DOS, OS/2 and Win32 +# makefiles (not Watcom or LCC) + +PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)/curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)/curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) +PANEL_HEADER = $(PDCURSES_SRCDIR)/panel.h +TERM_HEADER = $(PDCURSES_SRCDIR)/term.h + +srcdir = $(PDCURSES_SRCDIR)/pdcurses +demodir = $(PDCURSES_SRCDIR)/demos + +LIBOBJS = addch.$(O) addchstr.$(O) addstr.$(O) attr.$(O) beep.$(O) \ +bkgd.$(O) border.$(O) clear.$(O) color.$(O) delch.$(O) deleteln.$(O) \ +deprec.$(O) getch.$(O) getstr.$(O) getyx.$(O) inch.$(O) inchstr.$(O) \ +initscr.$(O) inopts.$(O) insch.$(O) insstr.$(O) instr.$(O) kernel.$(O) \ +keyname.$(O) mouse.$(O) move.$(O) outopts.$(O) overlay.$(O) pad.$(O) \ +panel.$(O) printw.$(O) refresh.$(O) scanw.$(O) scr_dump.$(O) scroll.$(O) \ +slk.$(O) termattr.$(O) terminfo.$(O) touch.$(O) util.$(O) window.$(O) \ +debug.$(O) + +PDCOBJS = pdcclip.$(O) pdcdisp.$(O) pdcgetsc.$(O) pdckbd.$(O) pdcscrn.$(O) \ +pdcsetsc.$(O) pdcutil.$(O) + +DEMOS = testcurs.exe ozdemo.exe xmas.exe tuidemo.exe firework.exe \ +newtest.exe ptest.exe rain.exe worm.exe diff --git a/3rd-party/PDCurses/makedist.mif b/3rd-party/PDCurses/makedist.mif new file mode 100644 index 0000000..318148b --- /dev/null +++ b/3rd-party/PDCurses/makedist.mif @@ -0,0 +1,20 @@ +# Makefile include: build a binary archive with Info-ZIP +# under DOS, OS/2 or Win32 + +dist: $(PDCLIBS) + echo PDCurses $(VERDOT) for $(PLATFORM1) > file_id.diz + echo ------------------------------------------ >> file_id.diz + echo Public Domain Curses library for >> file_id.diz + echo $(PLATFORM2). >> file_id.diz + echo Source available in PDCURS$(VER).ZIP >> file_id.diz + echo Public Domain. >> file_id.diz + echo $(PDCURSES_SRCDIR)\README.md > flist + echo $(PDCURSES_SRCDIR)\HISTORY.md >> flist + echo $(PDCURSES_SRCDIR)\curses.h >> flist + echo $(PDCURSES_SRCDIR)\panel.h >> flist + echo $(PDCURSES_SRCDIR)\term.h >> flist + echo $(LIBCURSES) >> flist + echo file_id.diz >> flist + zip -9jX $(ARCNAME) -@ Header +-------------------------------------- + +The data types supported by curses are described in this section. + +As the library supports a procedural interface to the data types, actual +structure contents are not described. All curses data are manipulated +using the routines provided. + + +### The \ Header + +The \ header defines various constants and declares the data +types that are available to the application. + + +### Data Types + +The following data types are declared: + + WINDOW * pointer to screen representation + SCREEN * pointer to terminal descriptor + bool boolean data type + chtype representation of a character in a window + cchar_t the wide-character equivalent of chtype + attr_t for WA_-style attributes + +The actual WINDOW and SCREEN objects used to store information are +created by the corresponding routines and a pointer to them is provided. +All manipulation is through that pointer. + + +### Variables + +The following variables are defined: + + LINES number of lines on terminal screen + COLS number of columns on terminal screen + stdscr pointer to the default screen window + curscr pointer to the current screen image + SP pointer to the current SCREEN struct + Mouse_status status of the mouse + COLORS number of colors available + COLOR_PAIRS number of color pairs available + TABSIZE size of one TAB block + acs_map[] alternate character set map + ttytype[] terminal name/description + + +### Constants + +The following constants are defined: + +#### General + + FALSE boolean false value + TRUE boolean true value + NULL zero pointer value + ERR value returned on error condition + OK value returned on successful completion + +#### Video Attributes + +Normally, attributes are a property of the character. + +For chtype: + + A_ALTCHARSET use the alternate character set + A_BLINK bright background or blinking + A_BOLD bright foreground or bold + A_DIM half bright -- no effect in PDCurses + A_INVIS invisible + A_ITALIC italic + A_LEFTLINE line along the left edge + A_PROTECT protected (?) -- PDCurses renders this as a + combination of the *LINE attributes + A_REVERSE reverse video + A_RIGHTLINE line along the right edge + A_STANDOUT terminal's best highlighting mode + A_UNDERLINE underline + + A_ATTRIBUTES bit-mask to extract attributes + A_CHARTEXT bit-mask to extract a character + A_COLOR bit-mask to extract a color-pair + +Not all attributes will work on all terminals. A_RIGHTLINE, A_LEFTLINE +and A_ITALIC are specific to PDCurses. A_INVIS and A_ITALIC are given +the same value in PDCurses. + +For attr_t: + + WA_ALTCHARSET same as A_ALTCHARSET + WA_BLINK same as A_BLINK + WA_BOLD same as A_BOLD + WA_DIM same as A_DIM + WA_INVIS same as A_INVIS + WA_LEFT same as A_LEFTLINE + WA_PROTECT same as A_PROTECT + WA_REVERSE same as A_REVERSE + WA_RIGHT same as A_RIGHTLINE + WA_STANDOUT same as A_STANDOUT + WA_UNDERLINE same as A_UNDERLINE + +Note that while A_LEFTLINE and A_RIGHTLINE are PDCurses-specific, +WA_LEFT and WA_RIGHT are standard. The following are also defined, for +compatibility, but currently have no effect in PDCurses: WA_HORIZONTAL, +WA_LOW, WA_TOP, WA_VERTICAL. + +### The Alternate Character Set + +For use in chtypes and with related functions. These are a portable way +to represent graphics characters on different terminals. + +VT100-compatible symbols -- box characters: + + ACS_ULCORNER upper left box corner + ACS_LLCORNER lower left box corner + ACS_URCORNER upper right box corner + ACS_LRCORNER lower right box corner + ACS_RTEE right "T" + ACS_LTEE left "T" + ACS_BTEE bottom "T" + ACS_TTEE top "T" + ACS_HLINE horizontal line + ACS_VLINE vertical line + ACS_PLUS plus sign, cross, or four-corner piece + +VT100-compatible symbols -- other: + + ACS_S1 scan line 1 + ACS_S9 scan line 9 + ACS_DIAMOND diamond + ACS_CKBOARD checkerboard -- 50% grey + ACS_DEGREE degree symbol + ACS_PLMINUS plus/minus sign + ACS_BULLET bullet + +Teletype 5410v1 symbols -- these are defined in SysV curses, but are not +well-supported by most terminals. Stick to VT100 characters for optimum +portability: + + ACS_LARROW left arrow + ACS_RARROW right arrow + ACS_DARROW down arrow + ACS_UARROW up arrow + ACS_BOARD checkerboard -- lighter (less dense) than + ACS_CKBOARD + ACS_LANTERN lantern symbol + ACS_BLOCK solid block + +That goes double for these -- undocumented SysV symbols. Don't use them: + + ACS_S3 scan line 3 + ACS_S7 scan line 7 + ACS_LEQUAL less than or equal + ACS_GEQUAL greater than or equal + ACS_PI pi + ACS_NEQUAL not equal + ACS_STERLING pounds sterling symbol + +Box character aliases: + + ACS_BSSB same as ACS_ULCORNER + ACS_SSBB same as ACS_LLCORNER + ACS_BBSS same as ACS_URCORNER + ACS_SBBS same as ACS_LRCORNER + ACS_SBSS same as ACS_RTEE + ACS_SSSB same as ACS_LTEE + ACS_SSBS same as ACS_BTEE + ACS_BSSS same as ACS_TTEE + ACS_BSBS same as ACS_HLINE + ACS_SBSB same as ACS_VLINE + ACS_SSSS same as ACS_PLUS + +For cchar_t and wide-character functions, WACS_ equivalents are also +defined. + +### Colors + +For use with init_pair(), color_set(), etc.: + + COLOR_BLACK + COLOR_BLUE + COLOR_GREEN + COLOR_CYAN + COLOR_RED + COLOR_MAGENTA + COLOR_YELLOW + COLOR_WHITE + +Use these instead of numeric values. The definition of the colors +depends on the implementation of curses. + + +### Input Values + +The following constants might be returned by getch() if keypad() has +been enabled. Note that not all of these may be supported on a +particular terminal: + + KEY_BREAK break key + KEY_DOWN the four arrow keys + KEY_UP + KEY_LEFT + KEY_RIGHT + KEY_HOME home key (upward+left arrow) + KEY_BACKSPACE backspace + KEY_F0 function keys; space for 64 keys is reserved + KEY_F(n) (KEY_F0+(n)) + KEY_DL delete line + KEY_IL insert line + KEY_DC delete character + KEY_IC insert character + KEY_EIC exit insert character mode + KEY_CLEAR clear screen + KEY_EOS clear to end of screen + KEY_EOL clear to end of line + KEY_SF scroll 1 line forwards + KEY_SR scroll 1 line backwards (reverse) + KEY_NPAGE next page + KEY_PPAGE previous page + KEY_STAB set tab + KEY_CTAB clear tab + KEY_CATAB clear all tabs + KEY_ENTER enter or send + KEY_SRESET soft (partial) reset + KEY_RESET reset or hard reset + KEY_PRINT print or copy + KEY_LL home down or bottom (lower left) + KEY_A1 upper left of virtual keypad + KEY_A3 upper right of virtual keypad + KEY_B2 center of virtual keypad + KEY_C1 lower left of virtual keypad + KEY_C3 lower right of virtual keypad + + KEY_BTAB Back tab key + KEY_BEG Beginning key + KEY_CANCEL Cancel key + KEY_CLOSE Close key + KEY_COMMAND Cmd (command) key + KEY_COPY Copy key + KEY_CREATE Create key + KEY_END End key + KEY_EXIT Exit key + KEY_FIND Find key + KEY_HELP Help key + KEY_MARK Mark key + KEY_MESSAGE Message key + KEY_MOVE Move key + KEY_NEXT Next object key + KEY_OPEN Open key + KEY_OPTIONS Options key + KEY_PREVIOUS Previous object key + KEY_REDO Redo key + KEY_REFERENCE Reference key + KEY_REFRESH Refresh key + KEY_REPLACE Replace key + KEY_RESTART Restart key + KEY_RESUME Resume key + KEY_SAVE Save key + KEY_SBEG Shifted beginning key + KEY_SCANCEL Shifted cancel key + KEY_SCOMMAND Shifted command key + KEY_SCOPY Shifted copy key + KEY_SCREATE Shifted create key + KEY_SDC Shifted delete char key + KEY_SDL Shifted delete line key + KEY_SELECT Select key + KEY_SEND Shifted end key + KEY_SEOL Shifted clear line key + KEY_SEXIT Shifted exit key + KEY_SFIND Shifted find key + KEY_SHELP Shifted help key + KEY_SHOME Shifted home key + KEY_SIC Shifted input key + KEY_SLEFT Shifted left arrow key + KEY_SMESSAGE Shifted message key + KEY_SMOVE Shifted move key + KEY_SNEXT Shifted next key + KEY_SOPTIONS Shifted options key + KEY_SPREVIOUS Shifted prev key + KEY_SPRINT Shifted print key + KEY_SREDO Shifted redo key + KEY_SREPLACE Shifted replace key + KEY_SRIGHT Shifted right arrow + KEY_SRSUME Shifted resume key + KEY_SSAVE Shifted save key + KEY_SSUSPEND Shifted suspend key + KEY_SUNDO Shifted undo key + KEY_SUSPEND Suspend key + KEY_UNDO Undo key + +The virtual keypad is arranged like this: + + A1 up A3 + left B2 right + C1 down C3 + +This list is incomplete -- see curses.h for the full list, and use the +testcurs demo to see what values are actually returned. The above are +just the keys required by X/Open. In particular, PDCurses defines many +CTL_ and ALT_ combinations; these are not portable. + +-------------------------------------------------------------------------- diff --git a/3rd-party/PDCurses/man/manext.c b/3rd-party/PDCurses/man/manext.c new file mode 100644 index 0000000..4ce7cbf --- /dev/null +++ b/3rd-party/PDCurses/man/manext.c @@ -0,0 +1,119 @@ +/***********************************************************************/ +/* MANEXT - Extract manual pages from C source code. */ +/***********************************************************************/ +/* + * MANEXT - A program to extract manual pages from C source code. + * Copyright (C) 1991-1996 Mark Hessling + * + * 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 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. + * + * If you make modifications to this software that you feel increases + * it usefulness for the rest of the community, please email the + * changes, enhancements, bug fixes as well as any and all ideas to me. + * This software is going to be maintained and enhanced as deemed + * necessary by the community. + * + * Mark Hessling + */ + +#include +#include +#include + +#define MAX_LINE 255 + +void display_info() +{ + fprintf(stderr, "\nMANEXT 1.03 Copyright (C) 1991-1996 Mark Hessling\n" + "All rights reserved.\n" + "MANEXT is distributed under the terms of the GNU\n" + "General Public License and comes with NO WARRANTY.\n" + "See the file COPYING for details.\n" + "\nUsage: manext sourcefile [...]\n\n"); +} + +int main(int argc, char **argv) +{ + char s[MAX_LINE + 1]; /* input line */ + int i; + FILE *fp; + +#ifdef __EMX__ + _wildcard(&argc, &argv); +#endif + if (strcmp(argv[1], "-h") == 0) + { + display_info(); + exit(1); + } + + for (i = 1; i < argc; i++) + { + if ((fp = fopen(argv[i], "r")) == NULL) + { + fprintf(stderr, "\nCould not open %s\n", argv[i]); + continue; + } + + while (!feof(fp)) + { + if (fgets(s, (int)sizeof(s), fp) == NULL) + { + if (ferror(fp) != 0) + { + fprintf(stderr, "*** Error reading %s. Exiting.\n", + argv[i]); + exit(1); + } + + break; + } + + /* check for manual entry marker at beginning of line */ + + if (strncmp(s, "/*man-start*", 12) != 0) + continue; + + /* inner loop */ + + for (;;) + { + /* read next line of manual entry */ + + if (fgets(s, (int)sizeof(s), fp) == NULL) + { + if (ferror(fp) != 0) + { + fprintf(stderr, "*** Error reading %s. Exiting.\n", + argv[i]); + exit(1); + } + + break; + } + + /* check for end of entry marker */ + + if (strncmp(s, "**man-end", 9) == 0) + break; + + printf("%s", s); + } + + printf("\n\n-----------------------------------" + "---------------------------------------\n\n"); + } + + fclose(fp); + } + + return 0; +} diff --git a/3rd-party/PDCurses/man/sdl.md b/3rd-party/PDCurses/man/sdl.md new file mode 100644 index 0000000..7168b36 --- /dev/null +++ b/3rd-party/PDCurses/man/sdl.md @@ -0,0 +1,152 @@ +SDL Considerations +================== + +There are no special requirements to use PDCurses for SDL -- all +PDCurses-compatible code should work fine. (In fact, you can even build +against the Win32 console pdcurses.dll, and then swap in the SDL +pdcurses.dll.) Nothing extra is needed beyond the base SDL library. +However, there are some optional special features, described here. + +The principal limitation of this port is that input is currently +restricted to ASCII (i.e., 0-127), plus the special keys like KEY_LEFT. +(You could have Unicode input, but then the input wouldn't match the +output, which is in Code Page 437.) Also, see the note about the +potential for incomplete output under "PDC_update_rects()", below. + + +Fonts +----- + +The font is a simple BMP, 32 characters wide by 8 characters tall, +preferably with a palette. (BMPs without palettes still work, but in +that case, no attributes will be available, nor will the cursor work.) +The first entry in the palette (usually black) is treated as the +background color; the last entry (usually white) is treated as the +foreground. These are changed or made transparent as appropriate; any +other colors in the palette are passed through unchanged. So -- although +a one-bit depth is sufficient for a normal font -- you could redraw some +characters as multi-colored tiles. + +The font must be monospaced. The size of each character is derived by +dividing the width of the BMP by 32 and the height by 8. There is no +constraint on the dimensions. + +As provided in the default font and expected by acs_map[], the font is +in Code Page 437 form. But you can of course use any layout if you're +not relying on correct values for the ACS_* macros. + +The font can be set via the environment variable PDC_FONT. If it's not +set, PDCurses looks for a file named "pdcfont.bmp" in the current +directory at the time of initscr(). If neither is found, it uses the +built-in default font encoded in deffont.h. + + +Backgrounds +----------- + +PDCurses for SDL supports an optional background image BMP. This is used +whenever start_color() has not been called (see the ptest demo for an +example), or when use_default_colors() has been called after +start_color(), and the background color of a pair has been set to -1 +(see ozdemo, worm, and rain for examples). The usage parallels that of +ncurses in an appropriate terminal (e.g., Gnome Terminal). The image is +tiled to cover the PDCurses window, and can be any size or depth. + +As with the font, you can point to a location for the background via the +environment variable PDC_BACKGROUND; "pdcback.bmp" is the fallback. +(There is no default background.) + + +Icons +----- + +The icon (used with SDL_WM_SetIcon() -- not used for the executable +file) can be set via the environment variable PDC_ICON, and falls back +to "pdcicon.bmp", and then to the built-in icon from deficon.h. The +built-in icon is the PDCurses logo, as seen in ../x11/little_icon.xbm. +The SDL docs say that the icon must be 32x32, at least for use with MS +Windows. + +If pdc_screen is preinitialized (see below), PDCurses does not attempt +to set the icon. + + +Screen size +----------- + +The default screen size is 80x25 characters (whatever size they may be), +but you can override this via the environment variables PDC_COLS and/or +PDC_LINES. (Some other ports use COLS and LINES; this is not done here +because those values are, or should be, those of the controlling +terminal, and PDCurses for SDL is independent of the terminal.) If +pdc_screen is preinitialized (see below), these are ignored. + + +Integration with SDL +-------------------- + +If you want to go further, you can mix PDCurses and SDL functions. (Of +course this is extremely non-portable!) To aid you, there are several +external variables and functions specific to the SDL port; you could +include pdcsdl.h, or just add the declarations you need in your code: + + PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back; + PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset; + + void PDC_update_rects(void); + void PDC_retile(void); + +pdc_screen is the main surface, created by SDL_SetVideoMode(), unless +it's preset before initscr(). You can perform normal SDL operations on +this surface, but PDCurses won't respect them when it updates. (For +that, see PDC_retile().) As an alternative, you can preinitialize this +surface before calling initscr(). In that case, you can use pdc_sheight, +pdc_swidth, pdc_yoffset and/or pdc_xoffset (q.v.) to confine PDCurses to +only a specific area of the surface, reserving the rest for other SDL +operations. If you preinitialize pdc_screen, you'll have to close it +yourself; PDCurses will ignore resize events, and won't try to set the +icon. Also note that if you preinitialize pdc_screen, it need not be the +display surface. + +pdc_font, pdc_icon, and pdc_back are the SDL_surfaces for the font, +icon, and background, respectively. You can set any or all of them +before initscr(), and thus override any of the other ways to set them. +But note that pdc_icon will be ignored if pdc_screen is preset. + +pdc_sheight and pdc_swidth are the dimensions of the area of pdc_screen +to be used by PDCurses. You can preset them before initscr(); if either +is not set, it defaults to the full screen size minus the x or y offset, +as appropriate. + +pdc_xoffset and pdc_yoffset are the x and y offset for the area of +pdc_screen to be used by PDCurses. See the sdltest demo for an example. + +PDC_retile() makes a copy of pdc_screen, then tiles it with the +background image, if any. The resulting surface is used as the +background for transparent character cells. PDC_retile() is called from +initscr() and resize_term(). However, you can also use it at other +times, to take advantage of the way it copies pdc_screen: Draw some SDL +stuff; call PDC_retile(); do some curses stuff -- it will use whatever +was on pdc_screen as the background. Then you can erase the curses +screen, do some more SDL stuff, and call PDC_retile() again to make a +new background. (If you don't erase the curses screen, it will be +incorporated into the background when you call PDC_retile().) But this +only works if no background image is set. + +PDC_update_rects() is how the screen actually gets updated. For +performance reasons, when drawing, PDCurses for SDL maintains a table of +rectangles that need updating, and only updates (by calling this +function) during getch(), napms(), or when the table gets full. +Normally, this is sufficient; but if you're pausing in some way other +than by using napms(), and you're not doing keyboard checks, you may get +an incomplete update. If that happens, you can call PDC_update_rects() +manually. + + +Interaction with stdio +---------------------- + +As with X11, it's a bad idea to mix curses and stdio calls. (In fact, +that's true for PDCurses on any platform; but especially these two, +which don't run under terminals.) Depending on how SDL is built, stdout +and stderr may be redirected to files. diff --git a/3rd-party/PDCurses/man/sdl2.md b/3rd-party/PDCurses/man/sdl2.md new file mode 100644 index 0000000..c2dd8a6 --- /dev/null +++ b/3rd-party/PDCurses/man/sdl2.md @@ -0,0 +1,58 @@ +SDL2 Considerations +=================== + +Most of the information in the [SDL Considerations](sdl.md) document is also +valid for the SDL2 platform. This document describes the differences. + + +Integration with SDL2 +--------------------- + +As mentioned in the [SDL Considerations](sdl.md) document, the SDL port uses +the following variables: + + SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back; + int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset; + +The SDL2 port adds: + + SDL_Window *pdc_window; + +These can be used or modified in your own code. Like the `pdc_screen` variable +used by the SDL port, you can initialize `pdc_window` in your own code. See the +sdltest demo for an example. If it's not initialized, PDCurses will do it for +you. If PDCurses initializes `pdc_window`, it will clean up/deallocate these +variables on exit. + + +Fonts +----- + +If the `PDC_WIDE` flag is set during compilation, SDL2_ttf is used to render +fonts. This allows for use of a full UCS-2 (16 bit Unicode) character set. + +Using SDL2_ttf adds: + + TTF_Font *pdc_ttffont; + int pdc_font_size; + +The default TrueType font can be modified by setting a define during compile +time (e.g. `-DPDC_FONT_PATH=/usr/share/fonts/truetype/dejavu/`). This can be +overridden by initializing `pdc_ttffont` in your own code. Similar +to the `PDC_FONT` environment variable for bitmap fonts, one can also override +TTF fonts using the `PDC_FONT` environment variables. Unless modified during +compile time, the defaults are: + + Windows: C:/Windows/Fonts/lucon.ttf + OS X: /Library/Fonts/Courier New.ttf + Other: /usr/share/fonts/truetype/freefont/FreeMono.ttf + +Font size can be set using the `PDC_FONT_SIZE` environment variable or by +setting the value of `pdc_font_size` in your own code. The default size is 18. + + +Clipboard +--------- + +SDL2 port uses functionality provided by the SDL2 clipboard functions to add +basic clipboard support. diff --git a/3rd-party/PDCurses/man/x11.md b/3rd-party/PDCurses/man/x11.md new file mode 100644 index 0000000..e68bb3a --- /dev/null +++ b/3rd-party/PDCurses/man/x11.md @@ -0,0 +1,407 @@ +X11 Considerations +================== + +PDCurses for X11 uses the System V IPC shared memory facility, along +with sockets, to share data between the curses program and the child +process created to manage the X stuff. + +When compiling your application, you need to include the \ or +\ that comes with PDCurses. You also need to link your code +with libXCurses. You may need to link with the following libraries under +X11R5: + + Xaw Xmu Xt X11 + +or, under X11R6: + + Xaw Xmu Xt X11 SM ICE Xext + +You can run "xcurses-config --libs" to show the link parameters for your +system. If using dynamic linking, on some systems, "-lXCurses" suffices. + +By calling Xinitscr() rather than initscr(), you can pass your program +name and resource overrides to PDCurses. The program name is used as the +title of the X window, and for defining X resources specific to your +program. + + +Interaction with stdio +---------------------- + +Be aware that curses programs that expect to have a normal tty +underneath them will be very disappointed! Output directed to stdout +will go to the xterm that invoked the PDCurses application, or to the +console if not invoked directly from an xterm. Similarly, stdin will +expect its input from the same place as stdout. + + +X Resources +----------- + +PDCurses for X11 recognizes the following resources: + +### lines + +Specifies the number of lines the "screen" will have. Directly equates +to LINES. There is no theoretical maximum. The minimum value must be 2. +Default: 24 + +### cols + +Specifies the number of columns the "screen" will have. Directly equates +to COLS. There is no theoretical maximum. The minimum value must be 2. +Default: 80 + +### normalFont + +The name of a fixed width font. Default: 7x13 + +### italicFont + +The name of a fixed width font to be used for characters with A_ITALIC +attributes. Must have the same cell size as normalFont. Default: 7x13 +(obviously not an italic font) + +### pointer + +The name of a valid pointer cursor. Default: xterm + +### pointerForeColor + +The foreground color of the pointer. Default: black + +### pointerBackColor + +The background color of the pointer. Default: white + +### cursorColor + +### textCursor + +The alignment of the text cursor; horizontal or vertical. Default: +horizontal + +### colorBlack + +The color of the COLOR_BLACK attribute. Default: Black + +### colorRed + +The color of the COLOR_RED attribute. Default: red3 + +### colorGreen + +The color of the COLOR_GREEN attribute. Default: green3 + +### colorYellow + +The color of the COLOR_YELLOW attribute. Default: yellow3 + +### colorBlue + +The color of the COLOR_BLUE attribute. Default: blue3 + +### colorMagenta + +The color of the COLOR_MAGENTA attribute. Default: magenta3 + +### colorCyan + +The color of the COLOR_CYAN attribute. Default: cyan3 + +### colorWhite + +The color of the COLOR_WHITE attribute. Default: Grey + +### colorBoldBlack + +COLOR_BLACK combined with A_BOLD. Default: grey40 + +### colorBoldRed + +COLOR_RED combined with A_BOLD. Default: red1 + +### colorBoldGreen + +COLOR_GREEN combined with A_BOLD. Default: green1 + +### colorBoldYellow + +COLOR_YELLOW combined with A_BOLD. Default: yellow1 + +### colorBoldBlue + +COLOR_BLUE combined with A_BOLD. Default: blue1 + +### colorBoldMagenta + +COLOR_MAGENTA combined with A_BOLD. Default: magenta1 + +### colorBoldCyan + +COLOR_CYAN combined with A_BOLD. Default: cyan1 + +### colorBoldWhite + +COLOR_WHITE combined with A_BOLD. Default: White + +### bitmap + +The name of a valid bitmap file of depth 1 (black and white) used for +the application's icon. The file is an X bitmap. Default: a 32x32 or +64x64 pixmap depending on the window manager + +### pixmap + +The name of a valid pixmap file of any depth supported by the window +manager (color) for the application's icon, The file is an X11 pixmap. +This resource is only available if the libXpm package has been installed +(most systems have this by default). This resource overrides the +"bitmap" resource. Default: none, uses default bitmap above + +### translations + +Translations enable the user to customize the action that occurs when a +key, combination of keys, or a button is pressed. The translations are +similar to those used by xterm. + +Defaults: + + : XCursesKeyPress() + : XCursesKeyPress() + : XCursesButton() + : XCursesButton() + : XCursesButton() + +The most useful action for KeyPress translations is string(). The +argument to the string() action can be either a string or a hex +representation of a character; e.g., string(0x1b) will send the ASCII +escape character to the application; string("[11~") will send [ 1 1 ~ , +as separate keystrokes. + +### shmmin + +On most systems, there are two Unix kernel parameters that determine the +allowable size of a shared memory segment. These parameters are usually +something like SHMMIN and SHMMAX. To use shared memory, a program must +allocate a segment of shared memory that is between these two values. +Usually these values are like 1 for SHMMIN and some large number for +SHMMAX. Sometimes the Unix kernel is configured to have a value of +SHMMIN that is bigger than the size of one of the shared memory segments +that libXCurses uses. On these systems an error message like: + + Cannot allocate shared memory for SCREEN: Invalid argument + +will result. To overcome this problem, this resource should be set to +the kernel value for SHMMIN. This ensures that a shared memory segment +will always be bigger than the kernel value for SHMMIN (and hopefully +less than SHMMAX!) Default: 0 + +### borderColor + +The color of the border around the screen. Default: black + +### borderWidth + +The width in pixels of the border around the screen. Default: 0 + +### clickPeriod + +The period (in milliseconds) between a button press and a button release +that determines if a click of a button has occurred. Default: 100 + +### doubleClickPeriod + +The period (in milliseconds) between two button press events that +determines if a double click of a button has occurred. Default: 200 + +### composeKey + +The name of the X key that defines the "compose key", which is used to +enter characters in the Latin-1 character set above 0xA0. (See "Compose +Keys for Latin-1" below.) This is used only when PDCurses is built +without XIM support. While in compose mode, the text cursor will appear +as a hollow rectangle. Default: Multi_key + + +Using Resources +--------------- + +All applications have a top-level class name of "XCurses". If Xinitscr() +is used, it sets an application's top-level widget name. (Otherwise the +name defaults to "PDCurses".) + +Examples for app-defaults or .Xdefaults: + + ! + ! resources for XCurses class of programs + ! + XCurses*lines: 30 + XCurses*cols: 80 + XCurses*normalFont: 9x13 + XCurses*bitmap: /tmp/xcurses.xbm + XCurses*pointer: top_left_arrow + ! + ! resources for testcurs - XCurses + ! + testcurs.colorRed: orange + testcurs.colorBlack: midnightblue + testcurs.lines: 25 + *testcurs.Translations: #override \n \ + F12: string(0x1b) string("[11~") \n + ! + ! resources for THE - XCurses + ! + ! resources with the * wildcard can be overridden by a parameter passed + ! to initscr() + ! + the*normalFont: 9x15 + the*lines: 40 + the*cols: 86 + the*pointer: xterm + the*pointerForeColor: white + the*pointerBackColor: black + ! + ! resources with the . format can not be overridden by a parameter passed + ! to Xinitscr() + ! + the.bitmap: /home/mark/the/the64.xbm + the.pixmap: /home/mark/the/the64.xpm + +Resources may also be passed as parameters to the Xinitscr() function. +Parameters are strings in the form of switches; e.g., to set the color +"red" to "indianred", and the number of lines to 30, the string passed +to Xinitscr would be: "-colorRed indianred -lines 30" + + +Compose Keys for Latin-1 +------------------------ + +When built without XIM support, PDCurses for X11 provides its own, +limited compose key system for Latin-1 characters. The available +combinations are listed here. For a given character, any of the +combinations shown in the last column may be used. To generate a +character, press the "compose" key followed by one of the pairs of +keystrokes. Where no key is evident, the spacebar is used. Thus, to +generate the NO-BREAK SPACE, press the "compose" key followed by two +hits of the spacebar. + +With a typical modern X server, you can get many more compose key +combinations by using XIM instead. Configure PDCurses with --enable-xim +to use XIM support. + +This document is encoded in UTF-8. + + Hex| Dec |Chr| Description ISO 10646-1:1993(E) | Compose key combinations + ---+-----+---+---------------------------------+------------------------- + A0 | 160 | | NO-BREAK SPACE | + A1 | 161 | ¡ | INVERTED EXCLAMATION MARK | ! !! + A2 | 162 | ¢ | CENT SIGN | c| |c c/ c$ C$ C| + A3 | 163 | £ | POUND SIGN | L- L$ L= l- l$ l= |- + A4 | 164 | ¤ | CURRENCY SIGN | xo ox XO g$ + A5 | 165 | Â¥ | YEN SIGN | =y y= =Y Y= Y- y$ y- + A6 | 166 | ¦ | BROKEN BAR | | || vb VB |^ + A7 | 167 | § | SECTION SIGN | SO SS s! S! so + A8 | 168 | ¨ | DIAERESIS | " "" + A9 | 169 | © | COPYRIGHT SIGN | CO co OC + AA | 170 | ª | FEMININE ORDINAL INDICATOR | sa SA a_ A_ + AB | 171 | « | LEFT DOUBLE ANGLE QUOTES | << + AC | 172 | ¬ | NOT SIGN | -, no NO + AD | 173 | ­ | SOFT HYPHEN | - -- + AE | 174 | ® | REGISTERED SIGN | RO ro OR + AF | 175 | ¯ | MACRON | -^ _^ __ + B0 | 176 | ° | DEGREE SIGN | o 0^ 0* de DE ^0 + B1 | 177 | ± | PLUS-MINUS SIGN | -+ +- + B2 | 178 | ² | SUPERSCRIPT TWO | 2 2^ s2 ^2 + B3 | 179 | ³ | SUPERSCRIPT THREE | 3 3^ s3 ^3 + B4 | 180 | ´ | ACUTE ACCENT | ' '' + B5 | 181 | µ | MICRO SIGN | u /u /U *m *M + B6 | 182 | ¶ | PILCROW SIGN | p! P! pg PG + B7 | 183 | · | MIDDLE DOT | . .^ .. + B8 | 184 | ¸ | CEDILLA | , ,, + B9 | 185 | ¹ | SUPERSCRIPT ONE | 1 1^ s1 ^1 + BA | 186 | º | MASCULINE ORDINAL INDICATOR | o_ s0 S0 + BB | 187 | » | RIGHT DOUBLE ANGLE QUOTES | >> + BC | 188 | ¼ | VULGAR FRACTION ONE QUARTER | 14 + BD | 189 | ½ | VULGAR FRACTION ONE HALF | 12 + BE | 190 | ¾ | VULGAR FRACTION THREE QUARTERS | 34 + BF | 191 | ¿ | INVERTED QUESTION MARK | ? ?? + C0 | 192 | À | CAPITAL A WITH GRAVE ACCENT | `A A` + C1 | 193 | à | CAPITAL A WITH ACUTE ACCENT | 'A A' + C2 | 194 |  | CAPITAL A WITH CIRCUMFLEX ACCENT| ^A A^ A> + C3 | 195 | à | CAPITAL A WITH TILDE | ~A A~ A- + C4 | 196 | Ä | CAPITAL A WITH DIAERESIS | "A A" + C5 | 197 | Ã… | CAPITAL A WITH RING ABOVE | oA Ao A* OA *A + C6 | 198 | Æ | CAPITAL LIGATURE AE | AE + C7 | 199 | Ç | CAPITAL C WITH CEDILLA | ,C C, + C8 | 200 | È | CAPITAL E WITH GRAVE ACCENT | `E E` + C9 | 201 | É | CAPITAL E WITH ACUTE ACCENT | 'E E' + CA | 202 | Ê | CAPITAL E WITH CIRCUMFLEX ACCENT| ^E E^ E> + CB | 203 | Ë | CAPITAL E WITH DIAERESIS | "E E" + CC | 204 | ÃŒ | CAPITAL I WITH GRAVE ACCENT | `I I` + CD | 205 | à | CAPITAL I WITH ACUTE ACCENT | 'I I' + CE | 206 | ÃŽ | CAPITAL I WITH CIRCUMFLEX ACCENT| ^I I^ I> + CF | 207 | à | CAPITAL I WITH DIAERESIS | "I I" + D0 | 208 | à | CAPITAL ETH | D- + D1 | 209 | Ñ | CAPITAL N WITH TILDE | ~N N~ N- + D2 | 210 | Ã’ | CAPITAL O WITH GRAVE ACCENT | `O O` + D3 | 211 | Ó | CAPITAL O WITH ACUTE ACCENT | 'O O' + D4 | 212 | Ô | CAPITAL O WITH CIRCUMFLEX ACCENT| ^O O^ O> + D5 | 213 | Õ | CAPITAL O WITH TILDE | ~O O~ O- + D6 | 214 | Ö | CAPITAL O WITH DIAERESIS | "O O" + D7 | 215 | × | MULTIPLICATION SIGN | x xx XX mu MU + D8 | 216 | Ø | CAPITAL O WITH STROKE | /O O/ + D9 | 217 | Ù | CAPITAL U WITH GRAVE ACCENT | `U U` + DA | 218 | Ú | CAPITAL U WITH ACUTE ACCENT | 'U U' + DB | 219 | Û | CAPITAL U WITH CIRCUMFLEX ACCENT| ^U U^ U> + DC | 220 | Ü | CAPITAL U WITH DIAERESIS | "U U" + DD | 221 | à | CAPITAL Y WITH ACUTE ACCENT | 'Y Y' + DE | 222 | Þ | CAPITAL THORN | P TH |P + DF | 223 | ß | SMALL SHARP S | ss + E0 | 224 | à | SMALL A WITH GRAVE ACCENT | `a a` + E1 | 225 | á | SMALL A WITH ACUTE ACCENT | 'a a' + E2 | 226 | â | SMALL A WITH CIRCUMFLEX ACCENT | ^a a^ a> + E3 | 227 | ã | SMALL A WITH TILDE | ~a a~ a- + E4 | 228 | ä | SMALL A WITH DIAERESIS | "a a" + E5 | 229 | Ã¥ | SMALL A WITH RING ABOVE | oa ao Oa a* *a + E6 | 230 | æ | SMALL LIGATURE AE | ae + E7 | 231 | ç | SMALL C WITH CEDILLA | ,c c, + E8 | 232 | è | SMALL E WITH GRAVE ACCENT | `e e` + E9 | 233 | é | SMALL E WITH ACUTE ACCENT | 'e e' + EA | 234 | ê | SMALL E WITH CIRCUMFLEX ACCENT | ^e e^ e> + EB | 235 | ë | SMALL E WITH DIAERESIS | "e e" + EC | 236 | ì | SMALL I WITH GRAVE ACCENT | `i i` + ED | 237 | í | SMALL I WITH ACUTE ACCENT | 'i i' + EE | 238 | î | SMALL I WITH CIRCUMFLEX ACCENT | ^i i^ i> + EF | 239 | ï | SMALL I WITH DIAERESIS | "i i" + F0 | 240 | ð | SMALL ETH | d- + F1 | 241 | ñ | SMALL N WITH TILDE | ~n n~ n- + F2 | 242 | ò | SMALL O WITH GRAVE ACCENT | `o o` + F3 | 243 | ó | SMALL O WITH ACUTE ACCENT | 'o o' + F4 | 244 | ô | SMALL O WITH CIRCUMFLEX ACCENT | ^o o^ o> + F5 | 245 | õ | SMALL O WITH TILDE | ~o o~ o- + F6 | 246 | ö | SMALL O WITH DIAERESIS | "o o" + F7 | 247 | ÷ | DIVISION SIGN | -: :- + F8 | 248 | ø | SMALL O WITH OBLIQUE BAR | /o o/ + F9 | 249 | ù | SMALL U WITH GRAVE ACCENT | `u u` + FA | 250 | ú | SMALL U WITH ACUTE ACCENT | 'u u' + FB | 251 | û | SMALL U WITH CIRCUMFLEX ACCENT | ^u u^ u> + FC | 252 | ü | SMALL U WITH DIAERESIS | "u u" + FD | 253 | ý | SMALL Y WITH ACUTE ACCENT | 'y y' + FE | 254 | þ | SMALL THORN | p th |p + FF | 255 | ÿ | SMALL Y WITH DIAERESIS | "y y" + + +Deprecated +---------- + +XCursesProgramName is no longer used. To set the program name, you must +use Xinitscr(), or PDC_set_title() to set just the window title. + +The XCursesExit() function is now called automatically via atexit(). +(Multiple calls to it are OK, so you don't need to remove it if you've +already added it for previous versions of PDCurses.) + +XCURSES is no longer defined automatically, but need not be defined, +unless you want the X11-specific prototypes. (Normal curses programs +won't need it.) diff --git a/3rd-party/PDCurses/ncurses/CMakeLists.txt b/3rd-party/PDCurses/ncurses/CMakeLists.txt new file mode 100644 index 0000000..c84007b --- /dev/null +++ b/3rd-party/PDCurses/ncurses/CMakeLists.txt @@ -0,0 +1,66 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to MinSizeRel.") +endif() + +if(APPLE) + # look for brew version first + set(CMAKE_LIBRARY_PATH /usr/local/opt/ncurses/lib) +endif() + +set(CURSES_NEED_WIDE PDC_WIDE) +include(FindCurses) + +if(CURSES_FOUND) + # this project is dependent on libncurses5-dev, and libncursesw5-dev. + # Apple builds without ncursesw + + PROJECT(ncurses VERSION "${PROJECT_VERSION}" LANGUAGES C) + message(STATUS "**** ${PROJECT_NAME} ****") + + if(APPLE) + if ("/usr/lib/libcurses.dylib" IN_LIST CURSES_LIBRARIES) + #MESSAGE(WARNING "Building with old ncurses lib -> Manually defining A_ITALIC to 64-bit...") + MESSAGE(WARNING " Use `brew install ncurses` to resolve this warning") + add_definitions("-DA_ITALIC=((chtype)0x008 << 21)") #default to 64 bit for now... + endif() + MESSAGE(STATUS "Linking with ${CURSES_LIBRARIES}") + endif() + set(PDCURSES_DIST ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}) + + macro (unix_app dir targ) + + set(bin_name "${PROJECT_NAME}_${targ}") + if(${targ} STREQUAL "tuidemo") + set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tuidemo.c ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tui.c) + else() + set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${targ}.c) + endif() + + add_executable(${bin_name} ${src_files}) + + target_compile_options(${bin_name} PUBLIC -Wall) + target_compile_definitions(${bin_name} PUBLIC -D_XOPEN_SOURCE_EXTENDED) + if(PDC_WIDE) + target_compile_definitions(${bin_name} PUBLIC -DHAVE_NCURSESW) + endif() + + target_include_directories(${bin_name} PUBLIC ${CURSES_INCLUDE_DIR}) + target_link_libraries(${bin_name} ${CURSES_LIBRARIES}) + set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ}) + + install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications) + + endmacro () + + unix_app(../demos firework) + unix_app(../demos ozdemo) + unix_app(../demos newtest) + unix_app(../demos rain) + unix_app(../demos testcurs) + unix_app(../demos worm) + unix_app(../demos xmas) + +endif() \ No newline at end of file diff --git a/3rd-party/PDCurses/ncurses/README.md b/3rd-party/PDCurses/ncurses/README.md new file mode 100644 index 0000000..5d4bcab --- /dev/null +++ b/3rd-party/PDCurses/ncurses/README.md @@ -0,0 +1,26 @@ +ncurses build of PDCurses demos +=============================== + +This directory contains a makefile to compile the PDCurses demos against +the ncurses library. This allows us to check for differences between +ncurses and PDCurses. + +Building +-------- + +- Thus far, only GCC on Linux has been tested. Build with either + + make -f makefile + make -f makefile WIDE=Y + + Several demos will be compiled. + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + +Acknowledgments +--------------- + +makefile provided by Bill Gray. diff --git a/3rd-party/PDCurses/os2/CMakeLists.txt b/3rd-party/PDCurses/os2/CMakeLists.txt new file mode 100644 index 0000000..1190557 --- /dev/null +++ b/3rd-party/PDCurses/os2/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "No build type specified, defaulting to MinSizeRel.") +endif() + +PROJECT(os2 VERSION "${PROJECT_VERSION}" LANGUAGES C) +MESSAGE(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}") + +include(project_common) + +if(WATCOM) + # this requires using the following toolchainfile file + # -DCMAKE_TOOLCHAIN_FILE={path}\watcom_open_os2vs_toolchain.cmake + + string(APPEND CMAKE_C_FLAGS " -wx") # warning level: to maximum setting + + string(APPEND CMAKE_C_FLAGS_RELEASE " -oneatx") + string(APPEND CMAKE_C_FLAGS_MINSIZEREL " -oneatx") + # optimization: + # n -> allow numerically unstable optimizations + # e -> expand user functions inline + # a -> relax aliasing constraints + # t -> favor execution time over code size in optimizations + # x -> equivalent to -obmiler -s + + string(APPEND CMAKE_C_FLAGS_DEBUG " -d2") # full symbolic debugging info + string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " debug watcom all") + +endif() + +demo_app(../demos version) +demo_app(../demos firework) +demo_app(../demos ozdemo) +demo_app(../demos newtest) +demo_app(../demos ptest) +demo_app(../demos rain) +demo_app(../demos testcurs) +demo_app(../demos worm) +demo_app(../demos xmas) diff --git a/3rd-party/PDCurses/os2/Makefile.bcc b/3rd-party/PDCurses/os2/Makefile.bcc new file mode 100644 index 0000000..23befb4 --- /dev/null +++ b/3rd-party/PDCurses/os2/Makefile.bcc @@ -0,0 +1,90 @@ +# Borland MAKE Makefile for PDCurses library - OS/2 BC++ 1.0+ +# +# Usage: make -f [path\]Makefile.bcc [DEBUG=] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\os2 + +CC = bcc + +!ifdef DEBUG +CFLAGS = -N -v -y -DPDCDEBUG +!else +CFLAGS = -O +!endif + +CPPFLAGS = -I$(PDCURSES_SRCDIR) + +BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS) + +LINK = tlink + +LIBEXE = tlib /C /E + +LIBCURSES = pdcurses.lib + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + +demos: $(DEMOS) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + -del $@ + $(LIBEXE) $@ \ ++addch.obj +addchstr.obj +addstr.obj +attr.obj +beep.obj +bkgd.obj \ ++border.obj +clear.obj +color.obj +delch.obj +deleteln.obj +deprec.obj \ ++getch.obj +getstr.obj +getyx.obj +inch.obj +inchstr.obj +initscr.obj \ ++inopts.obj +insch.obj +insstr.obj +instr.obj +kernel.obj +keyname.obj \ ++mouse.obj +move.obj +outopts.obj +overlay.obj +pad.obj +panel.obj \ ++printw.obj +refresh.obj +scanw.obj +scr_dump.obj +scroll.obj +slk.obj \ ++termattr.obj +terminfo.obj +touch.obj +util.obj +window.obj +debug.obj \ ++pdcclip.obj +pdcdisp.obj +pdcgetsc.obj +pdckbd.obj +pdcscrn.obj \ ++pdcsetsc.obj +pdcutil.obj ,lib.map + -copy $(LIBCURSES) panel.lib + +.autodepend + +{$(srcdir)\}.c.obj: + $(BUILD) $< + +{$(osdir)\}.c.obj: + $(BUILD) $< + +{$(demodir)\}.c.obj: + $(BUILD) $< + +.c.obj: + $(BUILD) $< + +.obj.exe: + $(CC) -e$@ $** $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES) + $(CC) -e$@ $** + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Borland C++ OS/2 1.0 +PLATFORM2 = Borland C/C++ OS/2 1.0 +ARCNAME = pdc$(VER)bcos2 + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/os2/Makefile.wcc b/3rd-party/PDCurses/os2/Makefile.wcc new file mode 100644 index 0000000..b9c981e --- /dev/null +++ b/3rd-party/PDCurses/os2/Makefile.wcc @@ -0,0 +1,43 @@ +# Watcom WMAKE Makefile for PDCurses library - OS/2 Open Watcom 1.1+ +# +# Usage: wmake -f [path\]Makefile.wcc [DEBUG=Y] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +!ifdef %PDCURSES_SRCDIR +PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR) +!else +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif + +osdir = $(PDCURSES_SRCDIR)\os2 + +CC = wcc386 +TARGET = os2v2 + +CFLAGS = /bt=$(TARGET) /wx /s /zq /i=$(PDCURSES_SRCDIR) + +!ifeq DEBUG Y +CFLAGS += /d2 /DPDCDEBUG +LDFLAGS = D A op q sys $(TARGET) +!else +CFLAGS += /oneatx +LDFLAGS = op q sys $(TARGET) +!endif + +LIBEXE = wlib /q /n /b /c /t + +!include $(PDCURSES_SRCDIR)\watcom.mif + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib + +PLATFORM1 = Watcom C++ OS/2 +PLATFORM2 = Open Watcom 1.6 for OS/2 +ARCNAME = pdc$(VER)_wcc_os2 + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/os2/README.md b/3rd-party/PDCurses/os2/README.md new file mode 100644 index 0000000..0b24ddd --- /dev/null +++ b/3rd-party/PDCurses/os2/README.md @@ -0,0 +1,43 @@ +PDCurses for OS/2 +================= + +This directory contains PDCurses source code files specific to OS/2. + + +Building +-------- + +- Choose the appropriate makefile for your compiler: + + Makefile.bcc - Borland C++ 2.0 + Makefile - EMX 0.9b+ + iccos2.mak - C Set/2 + Makefile.wcc - Open Watcom 1.8+ + +- Optionally, you can build in a different directory than the platform + directory by setting PDCURSES_SRCDIR to point to the directory where + you unpacked PDCurses, and changing to your target directory: + + set PDCURSES_SRCDIR=c:\pdcurses + +- Build it: + + make -f makefilename + + (For Watcom, use "wmake" instead of "make"; for MSVC or C Set/2, + "nmake".) You'll get the libraries (pdcurses.lib or .a, depending on + your compiler; and panel.lib or .a), the demos (*.exe), and a lot of + object files. Note that the panel library is just a copy of the main + library, provided for convenience; both panel and curses functions are + in the main library. + + You can also use the optional parameter "DLL=Y" with EMX, to build the + library as a DLL: + + make -f Makefile DLL=Y + + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. diff --git a/3rd-party/PDCurses/os2/iccos2.lrf b/3rd-party/PDCurses/os2/iccos2.lrf new file mode 100644 index 0000000..b1fdf37 --- /dev/null +++ b/3rd-party/PDCurses/os2/iccos2.lrf @@ -0,0 +1,50 @@ +-+addch.obj & +-+addchstr.obj & +-+addstr.obj & +-+attr.obj & +-+beep.obj & +-+bkgd.obj & +-+border.obj & +-+clear.obj & +-+color.obj & +-+delch.obj & +-+deleteln.obj & +-+deprec.obj & +-+getch.obj & +-+getstr.obj & +-+getyx.obj & +-+inch.obj & +-+inchstr.obj & +-+initscr.obj & +-+inopts.obj & +-+insch.obj & +-+insstr.obj & +-+instr.obj & +-+kernel.obj & +-+keyname.obj & +-+mouse.obj & +-+move.obj & +-+outopts.obj & +-+overlay.obj & +-+pad.obj & +-+panel.obj & +-+printw.obj & +-+refresh.obj & +-+scanw.obj & +-+scr_dump.obj & +-+scroll.obj & +-+slk.obj & +-+termattr.obj & +-+terminfo.obj & +-+touch.obj & +-+util.obj & +-+window.obj & +-+debug.obj & +-+pdcclip.obj & +-+pdcdisp.obj & +-+pdcgetsc.obj & +-+pdckbd.obj & +-+pdcscrn.obj & +-+pdcsetsc.obj & +-+pdcutil.obj & +,lib.map; diff --git a/3rd-party/PDCurses/os2/iccos2.mak b/3rd-party/PDCurses/os2/iccos2.mak new file mode 100644 index 0000000..4f42061 --- /dev/null +++ b/3rd-party/PDCurses/os2/iccos2.mak @@ -0,0 +1,256 @@ +# NMAKE Makefile for PDCurses library - OS/2 C Set/2 +# +# Usage: nmake -f [path\]iccos2.mak [DEBUG=] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\os2 + +PDCURSES_OS2_H = $(osdir)\pdcos2.h + +CC = icc + +!ifdef DEBUG +CFLAGS = /Sm /Ti+ /O- /Q+ /dPDCDEBUG +LDFLAGS = /NOLOGO /NOE /SE:160 /DEBUG /PMTYPE:VIO +!else +CFLAGS = /Sm /Ti- /O+ /Q+ +LDFLAGS = /NOLOGO /NOE /EXEPACK /PACKCODE /PACKDATA /PMTYPE:VIO +!endif + +CPPFLAGS = -I$(PDCURSES_SRCDIR) + +BUILD = $(CC) -c $(CFLAGS) $(CPPFLAGS) + +LINK = link386 + +LIBEXE = lib + +LIBCURSES = pdcurses.lib + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + +demos: $(DEMOS) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $@ @$(osdir)\iccos2.lrf + -copy $(LIBCURSES) panel.lib + +addch.obj: $(srcdir)\addch.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\addch.c + +addchstr.obj: $(srcdir)\addchstr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\addchstr.c + +addstr.obj: $(srcdir)\addstr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\addstr.c + +attr.obj: $(srcdir)\attr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\attr.c + +beep.obj: $(srcdir)\beep.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\beep.c + +bkgd.obj: $(srcdir)\bkgd.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\bkgd.c + +border.obj: $(srcdir)\border.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\border.c + +clear.obj: $(srcdir)\clear.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\clear.c + +color.obj: $(srcdir)\color.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\color.c + +delch.obj: $(srcdir)\delch.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\delch.c + +deleteln.obj: $(srcdir)\deleteln.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\deleteln.c + +deprec.obj: $(srcdir)\deprec.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\deprec.c + +getch.obj: $(srcdir)\getch.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\getch.c + +getstr.obj: $(srcdir)\getstr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\getstr.c + +getyx.obj: $(srcdir)\getyx.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\getyx.c + +inch.obj: $(srcdir)\inch.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\inch.c + +inchstr.obj: $(srcdir)\inchstr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\inchstr.c + +initscr.obj: $(srcdir)\initscr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\initscr.c + +inopts.obj: $(srcdir)\inopts.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\inopts.c + +insch.obj: $(srcdir)\insch.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\insch.c + +insstr.obj: $(srcdir)\insstr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\insstr.c + +instr.obj: $(srcdir)\instr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\instr.c + +kernel.obj: $(srcdir)\kernel.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\kernel.c + +keyname.obj: $(srcdir)\keyname.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\keyname.c + +mouse.obj: $(srcdir)\mouse.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\mouse.c + +move.obj: $(srcdir)\move.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\move.c + +outopts.obj: $(srcdir)\outopts.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\outopts.c + +overlay.obj: $(srcdir)\overlay.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\overlay.c + +pad.obj: $(srcdir)\pad.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\pad.c + +panel.obj: $(srcdir)\panel.c $(PDCURSES_HEADERS) $(PANEL_HEADER) + $(BUILD) $(srcdir)\panel.c + +printw.obj: $(srcdir)\printw.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\printw.c + +refresh.obj: $(srcdir)\refresh.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\refresh.c + +scanw.obj: $(srcdir)\scanw.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\scanw.c + +scr_dump.obj: $(srcdir)\scr_dump.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\scr_dump.c + +scroll.obj: $(srcdir)\scroll.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\scroll.c + +slk.obj: $(srcdir)\slk.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\slk.c + +termattr.obj: $(srcdir)\termattr.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\termattr.c + +terminfo.obj: $(srcdir)\terminfo.c $(PDCURSES_HEADERS) $(TERM_HEADER) + $(BUILD) $(srcdir)\terminfo.c + +touch.obj: $(srcdir)\touch.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\touch.c + +util.obj: $(srcdir)\util.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\util.c + +window.obj: $(srcdir)\window.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\window.c + +debug.obj: $(srcdir)\debug.c $(PDCURSES_HEADERS) + $(BUILD) $(srcdir)\debug.c + +pdcclip.obj: $(osdir)\pdcclip.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H) + $(BUILD) $(osdir)\pdcclip.c + +pdcdisp.obj: $(osdir)\pdcdisp.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H) + $(BUILD) $(osdir)\pdcdisp.c + +pdcgetsc.obj: $(osdir)\pdcgetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H) + $(BUILD) $(osdir)\pdcgetsc.c + +pdckbd.obj: $(osdir)\pdckbd.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H) + $(BUILD) $(osdir)\pdckbd.c + +pdcscrn.obj: $(osdir)\pdcscrn.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H) + $(BUILD) $(osdir)\pdcscrn.c + +pdcsetsc.obj: $(osdir)\pdcsetsc.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H) + $(BUILD) $(osdir)\pdcsetsc.c + +pdcutil.obj: $(osdir)\pdcutil.c $(PDCURSES_HEADERS) $(PDCURSES_OS2_H) + $(BUILD) $(osdir)\pdcutil.c + +firework.exe: firework.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +ozdemo.exe: ozdemo.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +ptest.exe: ptest.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +rain.exe: rain.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +testcurs.exe: testcurs.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj+tui.obj,$*,,$(LIBCURSES); + +worm.exe: worm.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +xmas.exe: xmas.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) $*.obj,$*,,$(LIBCURSES); + +firework.obj: $(demodir)\firework.c $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\firework.c + +ozdemo.obj: $(demodir)\ozdemo.c $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\ozdemo.c + +ptest.obj: $(demodir)\ptest.c $(PANEL_HEADER) $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\ptest.c + +rain.obj: $(demodir)\rain.c $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\rain.c + +testcurs.obj: $(demodir)\testcurs.c $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\testcurs.c + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\tuidemo.c + +worm.obj: $(demodir)\worm.c $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\worm.c + +xmas.obj: $(demodir)\xmas.c $(PDCURSES_CURSES_H) + $(BUILD) $(demodir)\xmas.c + +PLATFORM1 = C Set/2 OS/2 +PLATFORM2 = C Set/2 for OS/2 +ARCNAME = pdc$(VER)_icc_os2 + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/os2/pdcclip.c b/3rd-party/PDCurses/os2/pdcclip.c new file mode 100644 index 0000000..a8a80f3 --- /dev/null +++ b/3rd-party/PDCurses/os2/pdcclip.c @@ -0,0 +1,188 @@ +/* Public Domain Curses */ + +#include "pdcos2.h" + +/*man-start************************************************************** + +clipboard +--------- + +### Synopsis + + int PDC_getclipboard(char **contents, long *length); + int PDC_setclipboard(const char *contents, long length); + int PDC_freeclipboard(char *contents); + int PDC_clearclipboard(void); + +### Description + + PDC_getclipboard() gets the textual contents of the system's + clipboard. This function returns the contents of the clipboard + in the contents argument. It is the responsibilitiy of the + caller to free the memory returned, via PDC_freeclipboard(). + The length of the clipboard contents is returned in the length + argument. + + PDC_setclipboard copies the supplied text into the system's + clipboard, emptying the clipboard prior to the copy. + + PDC_clearclipboard() clears the internal clipboard. + +### Return Values + + indicator of success/failure of call. + PDC_CLIP_SUCCESS the call was successful + PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for + the clipboard contents + PDC_CLIP_EMPTY the clipboard contains no text + PDC_CLIP_ACCESS_ERROR no clipboard support + +### Portability + X/Open BSD SYS V + PDC_getclipboard - - - + PDC_setclipboard - - - + PDC_freeclipboard - - - + PDC_clearclipboard - - - + +**man-end****************************************************************/ + +int PDC_getclipboard(char **contents, long *length) +{ +#ifndef EMXVIDEO + HMQ hmq; + HAB hab; + PTIB ptib; + PPIB ppib; + ULONG ulRet; + long len; + int rc; +#endif + PDC_LOG(("PDC_getclipboard() - called\n")); + +#ifndef EMXVIDEO + DosGetInfoBlocks(&ptib, &ppib); + ppib->pib_ultype = 3; + hab = WinInitialize(0); + hmq = WinCreateMsgQueue(hab, 0); + + if (!WinOpenClipbrd(hab)) + { + WinDestroyMsgQueue(hmq); + WinTerminate(hab); + return PDC_CLIP_ACCESS_ERROR; + } + + rc = PDC_CLIP_EMPTY; + + ulRet = WinQueryClipbrdData(hab, CF_TEXT); + + if (ulRet) + { + len = strlen((char *)ulRet); + *contents = malloc(len + 1); + + if (!*contents) + rc = PDC_CLIP_MEMORY_ERROR; + else + { + strcpy((char *)*contents, (char *)ulRet); + *length = len; + rc = PDC_CLIP_SUCCESS; + } + } + + WinCloseClipbrd(hab); + WinDestroyMsgQueue(hmq); + WinTerminate(hab); + + return rc; +#else + return PDC_CLIP_ACCESS_ERROR; +#endif +} + +int PDC_setclipboard(const char *contents, long length) +{ +#ifndef EMXVIDEO + HAB hab; + PTIB ptib; + PPIB ppib; + ULONG ulRC; + PSZ szTextOut = NULL; + int rc; +#endif + PDC_LOG(("PDC_setclipboard() - called\n")); + +#ifndef EMXVIDEO + DosGetInfoBlocks(&ptib, &ppib); + ppib->pib_ultype = 3; + hab = WinInitialize(0); + + if (!WinOpenClipbrd(hab)) + { + WinTerminate(hab); + return PDC_CLIP_ACCESS_ERROR; + } + + rc = PDC_CLIP_MEMORY_ERROR; + + ulRC = DosAllocSharedMem((PVOID)&szTextOut, NULL, length + 1, + PAG_WRITE | PAG_COMMIT | OBJ_GIVEABLE); + + if (ulRC == 0) + { + strcpy(szTextOut, contents); + WinEmptyClipbrd(hab); + + if (WinSetClipbrdData(hab, (ULONG)szTextOut, CF_TEXT, CFI_POINTER)) + rc = PDC_CLIP_SUCCESS; + else + { + DosFreeMem(szTextOut); + rc = PDC_CLIP_ACCESS_ERROR; + } + } + + WinCloseClipbrd(hab); + WinTerminate(hab); + + return rc; +#else + return PDC_CLIP_ACCESS_ERROR; +#endif +} + +int PDC_freeclipboard(char *contents) +{ + PDC_LOG(("PDC_freeclipboard() - called\n")); + + if (contents) + free(contents); + + return PDC_CLIP_SUCCESS; +} + +int PDC_clearclipboard(void) +{ +#ifndef EMXVIDEO + HAB hab; + PTIB ptib; + PPIB ppib; +#endif + PDC_LOG(("PDC_clearclipboard() - called\n")); + +#ifndef EMXVIDEO + DosGetInfoBlocks(&ptib, &ppib); + ppib->pib_ultype = 3; + hab = WinInitialize(0); + + WinEmptyClipbrd(hab); + + WinCloseClipbrd(hab); + WinTerminate(hab); + + return PDC_CLIP_SUCCESS; +#else + return PDC_CLIP_ACCESS_ERROR; +#endif +} diff --git a/3rd-party/PDCurses/os2/pdcdisp.c b/3rd-party/PDCurses/os2/pdcdisp.c new file mode 100644 index 0000000..95c08d8 --- /dev/null +++ b/3rd-party/PDCurses/os2/pdcdisp.c @@ -0,0 +1,93 @@ +/* Public Domain Curses */ + +#include "pdcos2.h" + +/* ACS definitions originally by jshumate@wrdis01.robins.af.mil -- these + match code page 437 and compatible pages (CP850, CP852, etc.) */ + +#ifdef CHTYPE_LONG + +# define A(x) ((chtype)x | A_ALTCHARSET) + +chtype acs_map[128] = +{ + A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8), A(9), + A(10), A(11), A(12), A(13), A(14), A(15), A(16), A(17), A(18), + A(19), A(20), A(21), A(22), A(23), A(24), A(25), A(26), A(27), + A(28), A(29), A(30), A(31), ' ', '!', '"', '#', '$', '%', '&', + '\'', '(', ')', '*', + + A(0x1a), A(0x1b), A(0x18), A(0x19), + + '/', + + 0xdb, + + '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', + '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', + 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + + A(0x04), 0xb1, + + 'b', 'c', 'd', 'e', + + 0xf8, 0xf1, 0xb0, A(0x0f), 0xd9, 0xbf, 0xda, 0xc0, 0xc5, 0x2d, + 0x2d, 0xc4, 0x2d, 0x5f, 0xc3, 0xb4, 0xc1, 0xc2, 0xb3, 0xf3, + 0xf2, 0xe3, 0xd8, 0x9c, 0xf9, + + A(127) +}; + +# undef A + +#endif + +/* position hardware cursor at (y, x) */ + +void PDC_gotoyx(int row, int col) +{ + PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col)); + +#ifdef EMXVIDEO + v_gotoxy(col, row); +#else + VioSetCurPos(row, col, 0); +#endif +} + +/* update the given physical line to look like the corresponding line in + curscr */ + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + /* this should be enough for the maximum width of a screen. */ + + struct {unsigned char text, attr;} temp_line[256]; + int j; + + PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno)); + + /* replace the attribute part of the chtype with the + actual color value for each chtype in the line */ + + for (j = 0; j < len; j++) + { + chtype ch = srcp[j]; + + temp_line[j].attr = pdc_atrtab[ch >> PDC_ATTR_SHIFT]; + +#ifdef CHTYPE_LONG + if (ch & A_ALTCHARSET && !(ch & 0xff80)) + ch = acs_map[ch & 0x7f]; +#endif + temp_line[j].text = ch & 0xff; + } + +#ifdef EMXVIDEO + v_putline((char *)temp_line, x, lineno, len); +#else + VioWrtCellStr((PCH)temp_line, (USHORT)(len * sizeof(unsigned short)), + (USHORT)lineno, (USHORT)x, 0); +#endif +} diff --git a/3rd-party/PDCurses/os2/pdcgetsc.c b/3rd-party/PDCurses/os2/pdcgetsc.c new file mode 100644 index 0000000..288a3df --- /dev/null +++ b/3rd-party/PDCurses/os2/pdcgetsc.c @@ -0,0 +1,89 @@ +/* Public Domain Curses */ + +#include "pdcos2.h" + +/* return width of screen/viewport */ + +int PDC_get_columns(void) +{ +#ifdef EMXVIDEO + int rows = 0; +#else + VIOMODEINFO modeInfo = {0}; +#endif + int cols = 0; + const char *env_cols; + + PDC_LOG(("PDC_get_columns() - called\n")); + +#ifdef EMXVIDEO + v_dimen(&cols, &rows); +#else + modeInfo.cb = sizeof(modeInfo); + VioGetMode(&modeInfo, 0); + cols = modeInfo.col; +#endif + env_cols = getenv("COLS"); + + if (env_cols) + cols = min(atoi(env_cols), cols); + + PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols)); + + return cols; +} + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ +#ifdef EMXVIDEO + int curstart = 0, curend = 0; +#else + VIOCURSORINFO cursorInfo; +#endif + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + +#ifdef EMXVIDEO + v_getctype(&curstart, &curend); + return (curstart << 8) | curend; +#else + VioGetCurType (&cursorInfo, 0); + + return (cursorInfo.yStart << 8) | cursorInfo.cEnd; +#endif +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ +#ifdef EMXVIDEO + int cols = 0; +#else + VIOMODEINFO modeInfo = {0}; +#endif + int rows = 0; + const char *env_rows; + + PDC_LOG(("PDC_get_rows() - called\n")); + + /* use the value from LINES environment variable, if set. MH 10-Jun-92 */ + /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */ + +#ifdef EMXVIDEO + v_dimen(&cols, &rows); +#else + modeInfo.cb = sizeof(modeInfo); + VioGetMode(&modeInfo, 0); + rows = modeInfo.row; +#endif + env_rows = getenv("LINES"); + + if (env_rows) + rows = min(atoi(env_rows), rows); + + PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows)); + + return rows; +} diff --git a/3rd-party/PDCurses/os2/pdckbd.c b/3rd-party/PDCurses/os2/pdckbd.c new file mode 100644 index 0000000..4bc4dc5 --- /dev/null +++ b/3rd-party/PDCurses/os2/pdckbd.c @@ -0,0 +1,530 @@ +/* Public Domain Curses */ + +#if defined(__EMX__) || defined(__WATCOMC__) || defined(__IBMC__) || \ +defined(__TURBOC__) +# define HAVE_SIGNAL +# include +#endif + +#include "pdcos2.h" + +/*man-start************************************************************** + +pdckbd +------ + +### Synopsis + + unsigned long PDC_get_input_fd(void); + +### Description + + PDC_get_input_fd() returns the file descriptor that PDCurses + reads its input from. It can be used for select(). + +### Portability + X/Open BSD SYS V + PDC_get_input_fd - - - + +**man-end****************************************************************/ + +#ifdef EMXVIDEO +# include +static int tahead = -1; +#else +static KBDINFO kbdinfo; /* default keyboard mode */ +static HMOU mouse_handle = 0; +static MOUSE_STATUS old_mouse_status; +static USHORT old_shift = 0; +static bool key_pressed = FALSE; +static int mouse_events = 0; +#endif + +/************************************************************************ + * Table for key code translation of function keys in keypad mode * + * These values are for strict IBM keyboard compatibles only * + ************************************************************************/ + +static short key_table[] = +{ + -1, ALT_ESC, -1, 0, + -1, -1, -1, -1, + -1, -1, -1, -1, + -1, -1, ALT_BKSP, KEY_BTAB, + ALT_Q, ALT_W, ALT_E, ALT_R, + ALT_T, ALT_Y, ALT_U, ALT_I, + ALT_O, ALT_P, ALT_LBRACKET, ALT_RBRACKET, + ALT_ENTER, -1, ALT_A, ALT_S, + ALT_D, ALT_F, ALT_G, ALT_H, + ALT_J, ALT_K, ALT_L, ALT_SEMICOLON, + ALT_FQUOTE, ALT_BQUOTE, -1, ALT_BSLASH, + ALT_Z, ALT_X, ALT_C, ALT_V, + ALT_B, ALT_N, ALT_M, ALT_COMMA, + ALT_STOP, ALT_FSLASH, -1, ALT_PADSTAR, + -1, -1, -1, KEY_F(1), + KEY_F(2), KEY_F(3), KEY_F(4), KEY_F(5), + KEY_F(6), KEY_F(7), KEY_F(8), KEY_F(9), + KEY_F(10), -1, -1, KEY_HOME, + KEY_UP, KEY_PPAGE, ALT_PADMINUS, KEY_LEFT, + KEY_B2, KEY_RIGHT, ALT_PADPLUS, KEY_END, + KEY_DOWN, KEY_NPAGE, KEY_IC, KEY_DC, + KEY_F(13), KEY_F(14), KEY_F(15), KEY_F(16), + KEY_F(17), KEY_F(18), KEY_F(19), KEY_F(20), + KEY_F(21), KEY_F(22), KEY_F(25), KEY_F(26), + KEY_F(27), KEY_F(28), KEY_F(29), KEY_F(30), + KEY_F(31), KEY_F(32), KEY_F(33), KEY_F(34), + KEY_F(37), KEY_F(38), KEY_F(39), KEY_F(40), + KEY_F(41), KEY_F(42), KEY_F(43), KEY_F(44), + KEY_F(45), KEY_F(46), -1, CTL_LEFT, + CTL_RIGHT, CTL_END, CTL_PGDN, CTL_HOME, + ALT_1, ALT_2, ALT_3, ALT_4, + ALT_5, ALT_6, ALT_7, ALT_8, + ALT_9, ALT_0, ALT_MINUS, ALT_EQUAL, + CTL_PGUP, KEY_F(11), KEY_F(12), KEY_F(23), + KEY_F(24), KEY_F(35), KEY_F(36), KEY_F(47), + KEY_F(48), CTL_UP, CTL_PADMINUS, CTL_PADCENTER, + CTL_PADPLUS, CTL_DOWN, CTL_INS, CTL_DEL, + CTL_TAB, CTL_PADSLASH, CTL_PADSTAR, ALT_HOME, + ALT_UP, ALT_PGUP, -1, ALT_LEFT, + -1, ALT_RIGHT, -1, ALT_END, + ALT_DOWN, ALT_PGDN, ALT_INS, ALT_DEL, + ALT_PADSLASH, ALT_TAB, ALT_PADENTER, -1 +}; + +unsigned long pdc_key_modifiers = 0L; + +unsigned long PDC_get_input_fd(void) +{ + PDC_LOG(("PDC_get_input_fd() - called\n")); + + return (unsigned long)fileno(stdin); +} + +#ifndef EMXVIDEO + +void PDC_get_keyboard_info(void) +{ + kbdinfo.cb = sizeof(kbdinfo); + KbdGetStatus(&kbdinfo, 0); +} + +void PDC_set_keyboard_default(void) +{ + KbdSetStatus(&kbdinfo, 0); +} + +#endif /* ifndef EMXVIDEO */ + +void PDC_set_keyboard_binary(bool on) +{ + PDC_LOG(("PDC_set_keyboard_binary() - called\n")); + +#ifndef EMXVIDEO + if (on) + { + kbdinfo.fsMask &= ~(KEYBOARD_ASCII_MODE); + kbdinfo.fsMask |= KEYBOARD_BINARY_MODE; + } + else + { + kbdinfo.fsMask &= ~(KEYBOARD_BINARY_MODE); + kbdinfo.fsMask |= KEYBOARD_ASCII_MODE; + } + + KbdSetStatus(&kbdinfo, 0); +#endif + +#ifdef HAVE_SIGNAL + signal(SIGBREAK, on ? SIG_IGN : SIG_DFL); +#endif +} + +/* check if a key or mouse event is waiting */ + +bool PDC_check_key(void) +{ +#if !defined(_MSC_VER) && !defined(EMXVIDEO) + KBDKEYINFO keyInfo = {0}; +#endif + +#ifdef EMXVIDEO + if (tahead == -1) /* Nothing typed yet */ + { + tahead = _read_kbd(0, 0, 0); + + /* Read additional */ + + if (tahead == 0) + tahead = _read_kbd(0, 1, 0) << 8; + } + + return (tahead != -1); +#else +# ifndef _MSC_VER + + KbdGetStatus(&kbdinfo, 0); + + if (mouse_handle) + { + MOUQUEINFO queue; + + MouGetNumQueEl(&queue, mouse_handle); + mouse_events = queue.cEvents; + + if (mouse_events) + return TRUE; + } + + if (old_shift && !kbdinfo.fsState) /* modifier released */ + { + if (!key_pressed && SP->return_key_modifiers) + return TRUE; + } + else if (!old_shift && kbdinfo.fsState) /* modifier pressed */ + key_pressed = FALSE; + + old_shift = kbdinfo.fsState; + + KbdPeek(&keyInfo, 0); /* peek at keyboard */ + return (keyInfo.fbStatus != 0); +# else + return kbhit(); +# endif +#endif +} + +#ifndef EMXVIDEO + +static int _process_mouse_events(void) +{ + MOUEVENTINFO event; + static const USHORT button_mask[] = {6, 96, 24}, + move_mask[] = {2, 32, 8}, + press_mask[] = {4, 64, 16}; + USHORT count = 1; + short shift_flags = 0; + int i; + + MouReadEventQue(&event, &count, mouse_handle); + mouse_events--; + + for (i = 0; i < 3; i++) + { + pdc_mouse_status.button[i] = + ((event.fs & move_mask[i]) ? BUTTON_MOVED : 0) | + ((event.fs & press_mask[i]) ? BUTTON_PRESSED : 0); + + /* PRESS events are sometimes mistakenly reported as MOVE + events. A MOVE should always follow a PRESS, so treat a MOVE + immediately after a RELEASE as a PRESS. */ + + if ((pdc_mouse_status.button[i] == BUTTON_MOVED) && + (old_mouse_status.button[i] == BUTTON_RELEASED)) + { + pdc_mouse_status.button[i] = BUTTON_PRESSED; + } + + if (pdc_mouse_status.button[i] == BUTTON_PRESSED && SP->mouse_wait) + { + /* Check for a click -- a PRESS followed immediately by a + release */ + + if (!mouse_events) + { + MOUQUEINFO queue; + + napms(SP->mouse_wait); + + MouGetNumQueEl(&queue, mouse_handle); + mouse_events = queue.cEvents; + } + + if (mouse_events) + { + MouReadEventQue(&event, &count, mouse_handle); + + if (!(event.fs & button_mask[i])) + pdc_mouse_status.button[i] = BUTTON_CLICKED; + } + } + } + + pdc_mouse_status.x = event.col; + pdc_mouse_status.y = event.row; + + pdc_mouse_status.changes = 0; + + for (i = 0; i < 3; i++) + { + if (old_mouse_status.button[i] != pdc_mouse_status.button[i]) + pdc_mouse_status.changes |= (1 << i); + + if (pdc_mouse_status.button[i] == BUTTON_MOVED) + { + /* Discard non-moved "moves" */ + + if (pdc_mouse_status.x == old_mouse_status.x && + pdc_mouse_status.y == old_mouse_status.y) + return -1; + + /* Motion events always flag the button as changed */ + + pdc_mouse_status.changes |= (1 << i); + pdc_mouse_status.changes |= PDC_MOUSE_MOVED; + break; + } + } + + old_mouse_status = pdc_mouse_status; + + /* Treat click events as release events for comparison purposes */ + + for (i = 0; i < 3; i++) + { + if (old_mouse_status.button[i] == BUTTON_CLICKED) + old_mouse_status.button[i] = BUTTON_RELEASED; + } + + /* Check for SHIFT/CONTROL/ALT */ + + if (kbdinfo.fsState & KBDSTF_ALT) + shift_flags |= BUTTON_ALT; + + if (kbdinfo.fsState & KBDSTF_CONTROL) + shift_flags |= BUTTON_CONTROL; + + if (kbdinfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT)) + shift_flags |= BUTTON_SHIFT; + + if (shift_flags) + { + for (i = 0; i < 3; i++) + { + if (pdc_mouse_status.changes & (1 << i)) + pdc_mouse_status.button[i] |= shift_flags; + } + } + + old_shift = kbdinfo.fsState; + key_pressed = TRUE; + + SP->key_code = TRUE; + return KEY_MOUSE; +} + +#endif + +/* return the next available key or mouse event */ + +int PDC_get_key(void) +{ + int key, scan; +#ifndef EMXVIDEO + KBDKEYINFO keyInfo = {0}; +#endif + +#ifdef EMXVIDEO + if (tahead == -1) + { + tahead = _read_kbd(0, 1, 0); + + /* Read additional */ + + if (tahead == 0) + tahead = _read_kbd(0, 1, 0) << 8; + } + + key = tahead & 0xff; + scan = tahead >> 8; + pdc_key_modifiers = 0L; + + tahead = -1; +#else + pdc_key_modifiers = 0L; + + if (mouse_handle && mouse_events) + return _process_mouse_events(); + + if (old_shift && !kbdinfo.fsState) + { + key = -1; + + if (old_shift & KBDSTF_LEFTALT) + { + key = KEY_ALT_L; + } + else if (old_shift & KBDSTF_RIGHTALT) + { + key = KEY_ALT_R; + } + else if (old_shift & KBDSTF_LEFTCONTROL) + { + key = KEY_CONTROL_L; + } + else if (old_shift & KBDSTF_RIGHTCONTROL) + { + key = KEY_CONTROL_R; + } + else if (old_shift & KBDSTF_LEFTSHIFT) + { + key = KEY_SHIFT_L; + } + else if (old_shift & KBDSTF_RIGHTSHIFT) + { + key = KEY_SHIFT_R; + } + + key_pressed = FALSE; + old_shift = kbdinfo.fsState; + + SP->key_code = TRUE; + return key; + } + + KbdCharIn(&keyInfo, IO_WAIT, 0); /* get a character */ + + key = keyInfo.chChar; + scan = keyInfo.chScan; + + if (SP->save_key_modifiers) + { + if (keyInfo.fsState & KBDSTF_ALT) + pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT; + + if (keyInfo.fsState & KBDSTF_CONTROL) + pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL; + + if (keyInfo.fsState & KBDSTF_NUMLOCK_ON) + pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK; + + if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT)) + pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT; + } +#endif + if (scan == 0x1c && key == 0x0a) /* ^Enter */ + key = CTL_ENTER; + else if (scan == 0xe0 && key == 0x0d) /* PadEnter */ + key = PADENTER; + else if (scan == 0xe0 && key == 0x0a) /* ^PadEnter */ + key = CTL_PADENTER; + else if (scan == 0x37 && key == 0x2a) /* Star */ + key = PADSTAR; + else if (scan == 0x4a && key == 0x2d) /* Minus */ + key = PADMINUS; + else if (scan == 0x4e && key == 0x2b) /* Plus */ + key = PADPLUS; + else if (scan == 0xe0 && key == 0x2f) /* Slash */ + key = PADSLASH; + else if (key == 0x00 || (key == 0xe0 && scan > 53 && scan != 86)) + key = (scan > 0xa7) ? -1 : key_table[scan]; + + if (keyInfo.fsState & (KBDSTF_LEFTSHIFT|KBDSTF_RIGHTSHIFT)) + { + switch (key) + { + case KEY_HOME: /* Shift Home */ + key = KEY_SHOME; + break; + case KEY_UP: /* Shift Up */ + key = KEY_SUP; + break; + case KEY_PPAGE: /* Shift PgUp */ + key = KEY_SPREVIOUS; + break; + case KEY_LEFT: /* Shift Left */ + key = KEY_SLEFT; + break; + case KEY_RIGHT: /* Shift Right */ + key = KEY_SRIGHT; + break; + case KEY_END: /* Shift End */ + key = KEY_SEND; + break; + case KEY_DOWN: /* Shift Down */ + key = KEY_SDOWN; + break; + case KEY_NPAGE: /* Shift PgDn */ + key = KEY_SNEXT; + break; + case KEY_IC: /* Shift Ins */ + key = KEY_SIC; + break; + case KEY_DC: /* Shift Del */ + key = KEY_SDC; + } + } + + key_pressed = TRUE; + SP->key_code = ((unsigned)key >= 256); + + return key; +} + +/* discard any pending keyboard or mouse input -- this is the core + routine for flushinp() */ + +void PDC_flushinp(void) +{ + PDC_LOG(("PDC_flushinp() - called\n")); + +#ifdef EMXVIDEO + tcflush(0, TCIFLUSH); +#else + if (mouse_handle) + MouFlushQue(mouse_handle); + + KbdFlushBuffer(0); +#endif +} + +bool PDC_has_mouse(void) +{ + if (!mouse_handle) + { + memset(&old_mouse_status, 0, sizeof(MOUSE_STATUS)); + MouOpen(NULL, &mouse_handle); + } + + return !!mouse_handle; +} + +int PDC_mouse_set(void) +{ +#ifndef EMXVIDEO + + unsigned long mbe = SP->_trap_mbe; + + if (mbe && !mouse_handle) + { + if (PDC_has_mouse()) + MouDrawPtr(mouse_handle); + } + else if (!mbe && mouse_handle) + { + MouClose(mouse_handle); + mouse_handle = 0; + } + + if (mbe && mouse_handle) + { + USHORT mask = ((mbe & (BUTTON1_PRESSED | BUTTON1_CLICKED | + BUTTON1_MOVED)) ? 6 : 0) | + + ((mbe & (BUTTON3_PRESSED | BUTTON3_CLICKED | + BUTTON3_MOVED)) ? 24 : 0) | + + ((mbe & (BUTTON2_PRESSED | BUTTON2_CLICKED | + BUTTON2_MOVED)) ? 96 : 0); + + MouSetEventMask(&mask, mouse_handle); + } +#endif + return OK; +} + +int PDC_modifiers_set(void) +{ + key_pressed = FALSE; + + return OK; +} diff --git a/3rd-party/PDCurses/os2/pdcos2.h b/3rd-party/PDCurses/os2/pdcos2.h new file mode 100644 index 0000000..3704067 --- /dev/null +++ b/3rd-party/PDCurses/os2/pdcos2.h @@ -0,0 +1,55 @@ +/* Public Domain Curses */ + +#ifdef _MSC_VER +# define USE_OS2_H 1 /* Use the os2.h for the compiler */ +# define APIRET USHORT +#endif + +#include +#include + +#ifdef EMXVIDEO +# include +#else +# define INCL_DOS +# define INCL_DOSMISC +# define INCL_WIN +# define INCL_VIO +# define INCL_KBD +# define INCL_MOU +# include +#endif + +#include + +#ifdef CHTYPE_LONG +# define PDC_ATTR_SHIFT 19 +#else +# define PDC_ATTR_SHIFT 8 +#endif + +#ifdef __WATCOMC__ +# define PDCTHUNK(x) ((ptr_16)(x)) +# ifdef __386__ +# define SEG16 _Seg16 +# else +# define SEG16 +# endif + +typedef void * SEG16 ptr_16; + +#else +# ifdef __EMX__ +# ifdef __INNOTEK_LIBC__ +# define PDCTHUNK(x) ((PCH)_libc_32to16(x)) +# else +# define PDCTHUNK(x) ((PCH)_emx_32to16(x)) +# endif +# endif +#endif + +extern unsigned char *pdc_atrtab; +extern int pdc_font; + +extern void PDC_get_keyboard_info(void); +extern void PDC_set_keyboard_default(void); diff --git a/3rd-party/PDCurses/os2/pdcscrn.c b/3rd-party/PDCurses/os2/pdcscrn.c new file mode 100644 index 0000000..8cff86b --- /dev/null +++ b/3rd-party/PDCurses/os2/pdcscrn.c @@ -0,0 +1,449 @@ +/* Public Domain Curses */ + +#include "pdcos2.h" + +#ifdef CHTYPE_LONG +# define PDC_OFFSET 32 +#else +# define PDC_OFFSET 8 +#endif + +/* COLOR_PAIR to attribute encoding table. */ + +unsigned char *pdc_atrtab = (unsigned char *)NULL; + +int pdc_font; /* default font size */ + +static short curstoreal[16], realtocurs[16] = +{ + COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED, + COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8, + COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8, + COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8 +}; + +#ifdef EMXVIDEO +static unsigned char *saved_screen = NULL; +static int saved_lines = 0; +static int saved_cols = 0; +#else +# ifdef PDCTHUNK +# ifdef __EMX__ +# define THUNKEDVIO VIOCOLORREG +# else + +typedef struct { + USHORT cb; + USHORT type; + USHORT firstcolorreg; + USHORT numcolorregs; + ptr_16 colorregaddr; +} THUNKEDVIO; + +# endif +# endif + +static PCH saved_screen = NULL; +static USHORT saved_lines = 0; +static USHORT saved_cols = 0; +static VIOMODEINFO scrnmode; /* default screen mode */ +static VIOMODEINFO saved_scrnmode[3]; +static int saved_font[3]; +static bool can_change = FALSE; + +/* special purpose function keys */ +static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 0, 0, 0, 0 }; + +static int _get_font(void) +{ + VIOMODEINFO modeInfo = {0}; + + modeInfo.cb = sizeof(modeInfo); + + VioGetMode(&modeInfo, 0); + return (modeInfo.vres / modeInfo.row); +} + +static void _set_font(int size) +{ + VIOMODEINFO modeInfo = {0}; + + if (pdc_font != size) + { + modeInfo.cb = sizeof(modeInfo); + + /* set most parameters of modeInfo */ + + VioGetMode(&modeInfo, 0); + modeInfo.cb = 8; /* ignore horiz an vert resolution */ + modeInfo.row = modeInfo.vres / size; + VioSetMode(&modeInfo, 0); + } + + curs_set(SP->visibility); + + pdc_font = _get_font(); +} + +#endif + +/* close the physical screen -- may restore the screen to its state + before PDC_scr_open(); miscellaneous cleanup */ + +void PDC_scr_close(void) +{ + PDC_LOG(("PDC_scr_close() - called\n")); + + if (saved_screen && getenv("PDC_RESTORE_SCREEN")) + { +#ifdef EMXVIDEO + v_putline(saved_screen, 0, 0, saved_lines * saved_cols); +#else + VioWrtCellStr(saved_screen, saved_lines * saved_cols * 2, + 0, 0, (HVIO)NULL); +#endif + free(saved_screen); + saved_screen = NULL; + } + + reset_shell_mode(); + + if (SP->visibility != 1) + curs_set(1); + + /* Position cursor to the bottom left of the screen. */ + + PDC_gotoyx(PDC_get_rows() - 2, 0); +} + +void PDC_scr_free(void) +{ + if (SP) + free(SP); + if (pdc_atrtab) + free(pdc_atrtab); + + pdc_atrtab = (unsigned char *)NULL; +} + +/* open the physical screen -- allocate SP, miscellaneous intialization, + and may save the existing screen for later restoration */ + +int PDC_scr_open(int argc, char **argv) +{ +#ifdef EMXVIDEO + int adapter; +#else + USHORT totchars; +#endif + int i; + short r, g, b; + + PDC_LOG(("PDC_scr_open() - called\n")); + + SP = calloc(1, sizeof(SCREEN)); + pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1); + + if (!SP || !pdc_atrtab) + return ERR; + + for (i = 0; i < 16; i++) + curstoreal[realtocurs[i]] = i; + +#ifdef EMXVIDEO + v_init(); +#endif + SP->orig_attr = FALSE; + +#ifdef EMXVIDEO + adapter = v_hardware(); + SP->mono = (adapter == V_MONOCHROME); + + pdc_font = SP->mono ? 14 : (adapter == V_COLOR_8) ? 8 : 12; +#else + VioGetMode(&scrnmode, 0); + PDC_get_keyboard_info(); + + pdc_font = _get_font(); +#endif + SP->lines = PDC_get_rows(); + SP->cols = PDC_get_columns(); + + SP->mouse_wait = PDC_CLICK_PERIOD; + SP->audible = TRUE; + + /* This code for preserving the current screen */ + + if (getenv("PDC_RESTORE_SCREEN")) + { + saved_lines = SP->lines; + saved_cols = SP->cols; + + saved_screen = malloc(2 * saved_lines * saved_cols); + + if (!saved_screen) + { + SP->_preserve = FALSE; + return OK; + } +#ifdef EMXVIDEO + v_getline(saved_screen, 0, 0, saved_lines * saved_cols); +#else + totchars = saved_lines * saved_cols * 2; + VioReadCellStr((PCH)saved_screen, &totchars, 0, 0, (HVIO)NULL); +#endif + } + + SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL); + + can_change = (PDC_color_content(0, &r, &g, &b) == OK); + + return OK; +} + +/* the core of resize_term() */ + +int PDC_resize_screen(int nlines, int ncols) +{ +#ifndef EMXVIDEO + VIOMODEINFO modeInfo = {0}; + USHORT result; +#endif + + PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n", + nlines, ncols)); + + if( !stdscr) /* window hasn't been created yet; we're */ + { /* specifying its size before doing so */ + return OK; /* ...which doesn't work (yet) on Win32 */ + } +#ifdef EMXVIDEO + return ERR; +#else + modeInfo.cb = sizeof(modeInfo); + + /* set most parameters of modeInfo */ + + VioGetMode(&modeInfo, 0); + modeInfo.fbType = 1; + modeInfo.row = nlines; + modeInfo.col = ncols; + result = VioSetMode(&modeInfo, 0); + + LINES = PDC_get_rows(); + COLS = PDC_get_columns(); + + return (result == 0) ? OK : ERR; +#endif +} + +void PDC_reset_prog_mode(void) +{ + PDC_LOG(("PDC_reset_prog_mode() - called.\n")); + +#ifndef EMXVIDEO + PDC_set_keyboard_binary(TRUE); +#endif +} + +void PDC_reset_shell_mode(void) +{ + PDC_LOG(("PDC_reset_shell_mode() - called.\n")); + +#ifndef EMXVIDEO + PDC_set_keyboard_default(); +#endif +} + +#ifndef EMXVIDEO + +static bool _screen_mode_equals(VIOMODEINFO *oldmode) +{ + VIOMODEINFO current = {0}; + + VioGetMode(¤t, 0); + + return ((current.cb == oldmode->cb) && + (current.fbType == oldmode->fbType) && + (current.color == oldmode->color) && + (current.col == oldmode->col) && + (current.row == oldmode->row) && + (current.hres == oldmode->vres) && + (current.vres == oldmode->vres)); +} + +#endif + +void PDC_restore_screen_mode(int i) +{ +#ifndef EMXVIDEO + if (i >= 0 && i <= 2) + { + pdc_font = _get_font(); + _set_font(saved_font[i]); + + if (!_screen_mode_equals(&saved_scrnmode[i])) + if (VioSetMode(&saved_scrnmode[i], 0) != 0) + { + pdc_font = _get_font(); + scrnmode = saved_scrnmode[i]; + LINES = PDC_get_rows(); + COLS = PDC_get_columns(); + } + } +#endif +} + +void PDC_save_screen_mode(int i) +{ +#ifndef EMXVIDEO + if (i >= 0 && i <= 2) + { + saved_font[i] = pdc_font; + saved_scrnmode[i] = scrnmode; + } +#endif +} + +void PDC_init_pair(short pair, short fg, short bg) +{ + unsigned char att, temp_bg; + chtype i; + + fg = curstoreal[fg]; + bg = curstoreal[bg]; + + for (i = 0; i < PDC_OFFSET; i++) + { + att = fg | (bg << 4); + + if (i & (A_REVERSE >> PDC_ATTR_SHIFT)) + att = bg | (fg << 4); + if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT)) + att = 1; + if (i & (A_INVIS >> PDC_ATTR_SHIFT)) + { + temp_bg = att >> 4; + att = temp_bg << 4 | temp_bg; + } + if (i & (A_BOLD >> PDC_ATTR_SHIFT)) + att |= 8; + if (i & (A_BLINK >> PDC_ATTR_SHIFT)) + att |= 128; + + pdc_atrtab[pair * PDC_OFFSET + i] = att; + } +} + +int PDC_pair_content(short pair, short *fg, short *bg) +{ + *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F]; + *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4]; + + return OK; +} + +bool PDC_can_change_color(void) +{ + return can_change; +} + +int PDC_color_content(short color, short *red, short *green, short *blue) +{ +#ifdef PDCTHUNK + THUNKEDVIO vcr; + USHORT palbuf[4]; + unsigned char pal[3]; + int rc; + + /* Read single DAC register */ + + palbuf[0] = 8; + palbuf[1] = 0; + palbuf[2] = curstoreal[color]; + + rc = VioGetState(&palbuf, 0); + if (rc) + return ERR; + + vcr.cb = sizeof(vcr); + vcr.type = 3; + vcr.firstcolorreg = palbuf[3]; + vcr.numcolorregs = 1; + vcr.colorregaddr = PDCTHUNK(pal); + + rc = VioGetState(&vcr, 0); + if (rc) + return ERR; + + /* Scale and store */ + + *red = DIVROUND((unsigned)(pal[0]) * 1000, 63); + *green = DIVROUND((unsigned)(pal[1]) * 1000, 63); + *blue = DIVROUND((unsigned)(pal[2]) * 1000, 63); + + return OK; +#else + return ERR; +#endif +} + +int PDC_init_color(short color, short red, short green, short blue) +{ +#ifdef PDCTHUNK + THUNKEDVIO vcr; + USHORT palbuf[4]; + unsigned char pal[3]; + int rc; + + /* Scale */ + + pal[0] = DIVROUND((unsigned)red * 63, 1000); + pal[1] = DIVROUND((unsigned)green * 63, 1000); + pal[2] = DIVROUND((unsigned)blue * 63, 1000); + + /* Set single DAC register */ + + palbuf[0] = 8; + palbuf[1] = 0; + palbuf[2] = curstoreal[color]; + + rc = VioGetState(&palbuf, 0); + if (rc) + return ERR; + + vcr.cb = sizeof(vcr); + vcr.type = 3; + vcr.firstcolorreg = palbuf[3]; + vcr.numcolorregs = 1; + vcr.colorregaddr = PDCTHUNK(pal); + + rc = VioSetState(&vcr, 0); + + return rc ? ERR : OK; +#else + return ERR; +#endif +} + + /* Does nothing in the DOS (or OS/2 or Win32 console) flavors of PDCurses, +which lack user resizing. See X11 or Win32a versions of this function for +details of what it does on platforms that do support user resizing. */ + +void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines, + const int new_min_cols, const int new_max_cols) +{ +} + +/* PDC_set_function_key() does nothing on this platform */ +int PDC_set_function_key( const unsigned function, const int new_key) +{ + int old_key = -1; + + if( function < PDC_MAX_FUNCTION_KEYS) + { + old_key = PDC_shutdown_key[function]; + PDC_shutdown_key[function] = new_key; + } + return( old_key); +} diff --git a/3rd-party/PDCurses/os2/pdcsetsc.c b/3rd-party/PDCurses/os2/pdcsetsc.c new file mode 100644 index 0000000..406aa4f --- /dev/null +++ b/3rd-party/PDCurses/os2/pdcsetsc.c @@ -0,0 +1,112 @@ +/* Public Domain Curses */ + +#include "pdcos2.h" + +/*man-start************************************************************** + +pdcsetsc +-------- + +### Synopsis + + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + +### Description + + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + +### Portability + X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + +int PDC_curs_set(int visibility) +{ +#ifndef EMXVIDEO + VIOCURSORINFO pvioCursorInfo; +#endif + int ret_vis, hidden = 0, start = 0, end = 0; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + SP->visibility = visibility; + + switch(visibility) + { + case 0: /* invisible */ +#ifdef EMXVIDEO + start = end = 0; +#else + start = pdc_font / 4; + end = pdc_font; + hidden = -1; +#endif + break; + + case 2: /* highly visible */ + start = 2; /* almost full-height block */ + end = pdc_font - 1; + break; + + default: /* normal visibility */ + start = (SP->orig_cursor >> 8) & 0xff; + end = SP->orig_cursor & 0xff; + } + +#ifdef EMXVIDEO + if (!visibility) + v_hidecursor(); + else + v_ctype(start, end); +#else + pvioCursorInfo.yStart = (USHORT)start; + pvioCursorInfo.cEnd = (USHORT)end; + pvioCursorInfo.cx = (USHORT)1; + pvioCursorInfo.attr = hidden; + VioSetCurType((PVIOCURSORINFO)&pvioCursorInfo, 0); +#endif + return ret_vis; +} + +void PDC_set_title(const char *title) +{ + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); +} + +int PDC_set_blink(bool blinkon) +{ +#ifndef EMXVIDEO + USHORT statebuf[3], result; + + statebuf[0] = 6; /* length */ + statebuf[1] = 2; /* blink/intensity */ + statebuf[2] = !blinkon; + + result = VioSetState(&statebuf, 0); + VioGetState(&statebuf, 0); /* needed? */ + + if (pdc_color_started) + COLORS = statebuf[2] ? 16 : 8; + + return (result == 0) ? OK : ERR; +#else + if (pdc_color_started) + COLORS = 16; + + return blinkon ? ERR : OK; +#endif +} diff --git a/3rd-party/PDCurses/os2/pdcutil.c b/3rd-party/PDCurses/os2/pdcutil.c new file mode 100644 index 0000000..c2ccbcb --- /dev/null +++ b/3rd-party/PDCurses/os2/pdcutil.c @@ -0,0 +1,52 @@ +/* Public Domain Curses */ + +#include "pdcos2.h" + +#if defined(OS2) && !defined(__EMX__) +APIRET APIENTRY DosSleep(ULONG ulTime); +#endif + +void PDC_beep(void) +{ + PDC_LOG(("PDC_beep() - called\n")); + +#ifdef EMXVIDEO + putchar('\007'); +#else + DosBeep(1380, 100); +#endif +} + +void PDC_napms(int ms) +{ + PDC_LOG(("PDC_napms() - called: ms=%d\n", ms)); + +#ifdef __EMX__ + _sleep2(ms); +#else + DosSleep(ms); +#endif +} + +const char *PDC_sysname(void) +{ + return "OS/2"; +} + +PDCEX PDC_version_info PDC_version = { PDC_PORT_OS2, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), + /* note that thus far, 'wide' and 'UTF8' versions exist */ + /* only for SDL2, X11, Win32, and Win32a; elsewhere, */ + /* these will be FALSE */ +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; diff --git a/3rd-party/PDCurses/panel.h b/3rd-party/PDCurses/panel.h new file mode 100644 index 0000000..7f1fb1f --- /dev/null +++ b/3rd-party/PDCurses/panel.h @@ -0,0 +1,56 @@ +/* Public Domain Curses */ + +/*----------------------------------------------------------------------* + * Panels for PDCurses * + *----------------------------------------------------------------------*/ + +#ifndef __PDCURSES_PANEL_H__ +#define __PDCURSES_PANEL_H__ 1 + +#include + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +extern "C" +{ +#endif + +typedef struct panelobs +{ + struct panelobs *above; + struct panel *pan; +} PANELOBS; + +typedef struct panel +{ + WINDOW *win; + int wstarty; + int wendy; + int wstartx; + int wendx; + struct panel *below; + struct panel *above; + const void *user; + struct panelobs *obscure; +} PANEL; + +PDCEX int bottom_panel(PANEL *pan); +PDCEX int del_panel(PANEL *pan); +PDCEX int hide_panel(PANEL *pan); +PDCEX int move_panel(PANEL *pan, int starty, int startx); +PDCEX PANEL *new_panel(WINDOW *win); +PDCEX PANEL *panel_above(const PANEL *pan); +PDCEX PANEL *panel_below(const PANEL *pan); +PDCEX int panel_hidden(const PANEL *pan); +PDCEX const void *panel_userptr(const PANEL *pan); +PDCEX WINDOW *panel_window(const PANEL *pan); +PDCEX int replace_panel(PANEL *pan, WINDOW *win); +PDCEX int set_panel_userptr(PANEL *pan, const void *uptr); +PDCEX int show_panel(PANEL *pan); +PDCEX int top_panel(PANEL *pan); +PDCEX void update_panels(void); + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +} +#endif + +#endif /* __PDCURSES_PANEL_H__ */ diff --git a/3rd-party/PDCurses/pdcurses/README.md b/3rd-party/PDCurses/pdcurses/README.md new file mode 100644 index 0000000..bef1c4c --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/README.md @@ -0,0 +1,25 @@ +PDCurses Portable Core +====================== + +This directory contains core PDCurses source code files common to all +platforms. + + +Building +-------- + +These modules are built by the platform-specific makefiles, in the +platform directories. + + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + + +Acknowledgements +---------------- + +The panel library was originally provided by +Warren Tucker diff --git a/3rd-party/PDCurses/pdcurses/addch.c b/3rd-party/PDCurses/pdcurses/addch.c new file mode 100644 index 0000000..8d5af51 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/addch.c @@ -0,0 +1,695 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + + Name: addch + + Synopsis: + int addch(const chtype ch); + int waddch(WINDOW *win, const chtype ch); + int mvaddch(int y, int x, const chtype ch); + int mvwaddch(WINDOW *win, int y, int x, const chtype ch); + int echochar(const chtype ch); + int wechochar(WINDOW *win, const chtype ch); + + int addrawch(chtype ch); + int waddrawch(WINDOW *win, chtype ch); + int mvaddrawch(int y, int x, chtype ch); + int mvwaddrawch(WINDOW *win, int y, int x, chtype ch); + + int add_wch(const cchar_t *wch); + int wadd_wch(WINDOW *win, const cchar_t *wch); + int mvadd_wch(int y, int x, const cchar_t *wch); + int mvwadd_wch(WINDOW *win, int y, int x, const cchar_t *wch); + int echo_wchar(const cchar_t *wch); + int wecho_wchar(WINDOW *win, const cchar_t *wch); + + Description: + addch() adds the chtype ch to the default window (stdscr) at the + current cursor position, and advances the cursor. Note that + chtypes can convey both text (a single character) and + attributes, including a color pair. add_wch() is the wide- + character version of this function, taking a pointer to a + cchar_t instead of a chtype. + + waddch() is like addch(), but also lets you specify the window. + (This is in fact the core output routine.) wadd_wch() is the + wide version. + + mvaddch() moves the cursor to the specified (y, x) position, and + adds ch to stdscr. mvadd_wch() is the wide version. + + mvwaddch() moves the cursor to the specified position and adds + ch to the specified window. mvwadd_wch() is the wide version. + + echochar() adds ch to stdscr at the current cursor position and + calls refresh(). echo_wchar() is the wide version. + + wechochar() adds ch to the specified window and calls + wrefresh(). wecho_wchar() is the wide version. + + addrawch(), waddrawch(), mvaddrawch() and mvwaddrawch() are + PDCurses-specific wrappers for addch() etc. that disable the + translation of control characters. + + The following applies to all these functions: + + If the cursor moves on to the right margin, an automatic newline + is performed. If scrollok is enabled, and a character is added + to the bottom right corner of the window, the scrolling region + will be scrolled up one line. If scrolling is not allowed, ERR + will be returned. + + If ch is a tab, newline, or backspace, the cursor will be moved + appropriately within the window. If ch is a newline, the + clrtoeol routine is called before the cursor is moved to the + beginning of the next line. If newline mapping is off, the + cursor will be moved to the next line, but the x coordinate will + be unchanged. If ch is a tab the cursor is moved to the next + tab position within the window. If ch is another control + character, it will be drawn in the ^X notation. Calling the + inch() routine after adding a control character returns the + representation of the control character, not the control + character. + + Video attributes can be combined with a character by ORing them + into the parameter. Text, including attributes, can be copied + from one place to another by using inch() and addch(). + + Note that in PDCurses, for now, a cchar_t and a chtype are the + same. The text field is 16 bits wide, and is treated as Unicode + (UCS-2) when PDCurses is built with wide-character support + (define PDC_WIDE). So, in functions that take a chtype, like + addch(), both the wide and narrow versions will handle Unicode. + But for portability, you should use the wide functions. + + Return Value: + All functions return OK on success and ERR on error. + + Portability X/Open BSD SYS V + addch Y Y Y + waddch Y Y Y + mvaddch Y Y Y + mvwaddch Y Y Y + echochar Y - 3.0 + wechochar Y - 3.0 + addrawch - - - + waddrawch - - - + mvaddrawch - - - + mvwaddrawch - - - + add_wch Y + wadd_wch Y + mvadd_wch Y + mvwadd_wch Y + echo_wchar Y + wecho_wchar Y + +**man-end****************************************************************/ + +/* As will be described below, the method used here for combining + characters requires going beyond the usual 17*2^16 limit for Unicode. + That can only happen with 64-bit chtype / cchar_t, and it's only + worth doing if we're going past 8-byte characters in the first place. + So if PDC_WIDE is defined _and_ we're using 64-bit chtypes, we're + using the combining character scheme : */ + +#if defined( PDC_WIDE) && defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + #define USING_COMBINING_CHARACTER_SCHEME +#endif + +#ifdef USING_COMBINING_CHARACTER_SCHEME +#include +#include +/* + * A greatly stripped-down version of Markus Kuhn's excellent + * wcwidth implementation. For his latest version and many + * comments, see http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c + * For PDCurses, only mk_wcwidth is used, modified to take an + * int argument instead of wchar_t, because in MS-land, wchar_t + * is 16 bits; getting the full Unicode range requires 21 bits. + * Also modified format/indenting to conform to PDCurses norms. + * NOTE that this version is current only to Unicode 5.0! Some + * updates are almost certainly needed... + */ + +struct interval +{ + int first, last; +}; + +/* auxiliary function for binary search in interval table */ + +static int bisearch( const int ucs, const struct interval *table, int max) +{ + int min = 0; + int mid; + + if (ucs < table[0].first || ucs > table[max].last) + return 0; + while (max >= min) + { + mid = (min + max) / 2; + if (ucs > table[mid].last) + min = mid + 1; + else if (ucs < table[mid].first) + max = mid - 1; + else + return 1; + } + return 0; +} + +/* The following two functions define the column width of an ISO 10646 + * character as follows: + * + * - The null character (U+0000) has a column width of 0. + * + * - Other C0/C1 control characters and DEL will lead to a return + * value of -1. + * + * - Non-spacing and enclosing combining characters (general + * category code Mn or Me in the Unicode database) have a + * column width of 0. + * + * - SOFT HYPHEN (U+00AD) has a column width of 1. + * + * - Other format characters (general category code Cf in the Unicode + * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0. + * + * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF) + * have a column width of 0. + * + * - Spacing characters in the East Asian Wide (W) or East Asian + * Full-width (F) category as defined in Unicode Technical + * Report #11 have a column width of 2. + * + * - All remaining characters (including all printable + * ISO 8859-1 and WGL4 characters, Unicode control characters, + * etc.) have a column width of 1. + * + * This implementation assumes that wchar_t characters are encoded + * in ISO 10646. + */ + +static int mk_wcwidth( const int ucs) +{ + /* sorted list of non-overlapping intervals of non-spacing characters */ + /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */ + static const struct interval combining[] = + { + { 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 }, + { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 }, + { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 }, + { 0x0610, 0x0615 }, { 0x064B, 0x065E }, { 0x0670, 0x0670 }, + { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED }, + { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A }, + { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0901, 0x0902 }, + { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D }, + { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 }, + { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD }, + { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C }, + { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D }, + { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC }, + { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD }, + { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C }, + { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D }, + { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 }, + { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 }, + { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC }, + { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD }, + { 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D }, + { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, + { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, + { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, + { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, + { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, + { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 }, + { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, + { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 }, + { 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x135F, 0x135F }, + { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 }, + { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, + { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, + { 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, + { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B }, + { 0x1A17, 0x1A18 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 }, + { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 }, + { 0x1B6B, 0x1B73 }, { 0x1DC0, 0x1DCA }, { 0x1DFE, 0x1DFF }, + { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2063 }, + { 0x206A, 0x206F }, { 0x20D0, 0x20EF }, { 0x302A, 0x302F }, + { 0x3099, 0x309A }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B }, + { 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F }, + { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB }, + { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F }, + { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x1D167, 0x1D169 }, + { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD }, + { 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F }, + { 0xE0100, 0xE01EF } + }; + + /* test for 8-bit control characters */ + if (ucs == 0) + return 0; + if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0)) + return -1; + + if( ucs < combining[0].first) /* everything else up to 0x300 is a */ + return( 1); /* plain old single-width character */ + /* binary search in table of non-spacing characters */ + if (bisearch(ucs, combining, + sizeof(combining) / sizeof(struct interval) - 1)) + return 0; + + /* if we arrive here, ucs is not a combining or C0/C1 control character */ + + return 1 + + (ucs >= 0x1100 && + (ucs <= 0x115f || /* Hangul Jamo init. consonants */ + ucs == 0x2329 || ucs == 0x232a || + (ucs >= 0x2e80 && ucs <= 0xa4cf && + ucs != 0x303f) || /* CJK ... Yi */ + (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */ + (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */ + (ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */ + (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */ + (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */ + (ucs >= 0xffe0 && ucs <= 0xffe6) || + (ucs >= 0x20000 && ucs <= 0x2fffd) || + (ucs >= 0x30000 && ucs <= 0x3fffd))); +} + +/* The handling of "fullwidth" characters (those consuming two "normal" +columns) and combining characters (characters that can add accents to a +preceding character) in PDCurses is, of necessity, complex. + +Unicode is defined to have 17 planes of 2^16 characters each, so that +the maximum Unicode code point is U+10FFFF. When addch() is given a +fullwidth character, it handles that character "normally", and then +stores the non-Unicode character DUMMY_CHAR_NEXT_TO_FULLWIDTH +(U+110000) next to it, just as a placeholder. (That part is actually +rather simple.) + +PDCurses handles combining characters by creating entirely new "Unicode" +(let's call them "post-Unicode") characters, at code point U+110001 +(COMBINED_CHAR_START) and beyond. The 'combos' table keeps track of +these newly-created characters, essentially saying: "This post-Unicode +character consists of the following 'root' character, plus an +added combining character." The 'root' character in question may itself +be a post-Unicode character; this allows us to add more than one +combining character. + +For example, if one calls wchar() with, in succession, 'r' (U+72), +a circumflex (U+0302), and an acute accent below (U+317), the call +with the circumflex would cause 'combo' to be allocated, with +combo[0].root = 'r' and combo[0].added = 0x302. Code point U+110001 +would correspond to this character ('r' plus circumflex). The call +with the acute accent below would create code point U+110002, +combo[1].root = 0x110001 and combo[1].added = 0x317. Thus, a character +with multiple combining characters simply resolves itself as a series +of "post-Unicode" characters. When the display function in pdcdisp.c +is asked to show character 0x110001 or 0x110002, it can use +PDC_expand_combined_characters() to convert that code point to the +actual series of characters. + +'ncurses' handles combined characters in a very different manner: a +'cchar' is defined as an array of five characters, so that you can +add up to four combining characters in any given cell. I had to reject +that solution because backward compatibility within PDCurses would be +broken. Quite aside from that, this is a simpler solution, and allows +for any number of combining characters (though four ought to be enough +for anybody). */ + +#define MAX_UNICODE 0x10ffff +#define DUMMY_CHAR_NEXT_TO_FULLWIDTH (MAX_UNICODE + 1) +#define COMBINED_CHAR_START (MAX_UNICODE + 2) + + /* "non-standard" 64-bit chtypes */ +static int n_combos = 0, n_combos_allocated = 0; +static struct combined_char +{ + int32_t root, added; +} *combos = NULL; + +static int find_combined_char_idx( const cchar_t root, const cchar_t added) +{ + int i; + + for( i = 0; i < n_combos; i++) + if( (int32_t)root == combos[i].root && (int32_t)added == combos[i].added) + return( i); + /* Didn't find this pair among existing combos; */ + /* create a new one */ + if( i == n_combos_allocated) + { + n_combos_allocated += 30 + n_combos_allocated / 2; + combos = realloc( combos, n_combos_allocated * sizeof( struct combined_char)); + } + combos[i].root = (int32_t)root; + combos[i].added = (int32_t)added; + n_combos++; + return( i); +} + +int PDC_expand_combined_characters( const cchar_t c, cchar_t *added) +{ + if( !c) /* flag to free up memory */ + { + n_combos = n_combos_allocated = 0; + if( combos) + free( combos); + combos = NULL; + return( 0); + } + assert( (int)c >= COMBINED_CHAR_START && (int)c < COMBINED_CHAR_START + n_combos); + *added = combos[c - COMBINED_CHAR_START].added; + return( combos[c - COMBINED_CHAR_START].root); +} + +#endif /* #ifdef USING_COMBINING_CHARACTER_SCHEME */ + +int waddch( WINDOW *win, const chtype ch) +{ + int x, y; +#ifdef USING_COMBINING_CHARACTER_SCHEME + int text_width; +#endif + chtype text, attr; + bool xlat; + + PDC_LOG(("waddch() - called: win=%p ch=%x (text=%c attr=0x%x)\n", + win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES)); + + if (!win) + return ERR; + + x = win->_curx; + y = win->_cury; + + if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0) + return ERR; + + xlat = !SP->raw_out && !(ch & A_ALTCHARSET); + text = ch & A_CHARTEXT; + attr = ch & A_ATTRIBUTES; +#ifdef USING_COMBINING_CHARACTER_SCHEME + text_width = mk_wcwidth( (int)text); + + if( !text_width && text && (x || y)) + { /* it's a combining char; combine w/prev char */ + if( x) + x--; + else + { + y--; + x = win->_maxx - 1; + } + text = COMBINED_CHAR_START + + find_combined_char_idx( win->_y[y][x], text); + } +#endif + + if (xlat && (text < ' ' || text == 0x7f)) + { + int x2; + + switch ((int)text) + { + case '\t': + for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++) + { + if (waddch(win, attr | ' ') == ERR) + return ERR; + + /* if tab to next line, exit the loop */ + + if (!win->_curx) + break; + } + return OK; + + case '\n': + /* if lf -> crlf */ + + if (!SP->raw_out) + x = 0; + + /* Had this commented out. I think it matters in */ + /* wide, non-UTF8 mode on some platforms. */ + wclrtoeol(win); + + if (++y > win->_bmarg) + { + y--; + + if (wscrl(win, 1) == ERR) + return ERR; + } + + break; + + case '\b': + /* don't back over left margin */ + + if (--x < 0) + case '\r': + x = 0; + + break; + + case 0x7f: + if (waddch(win, attr | '^') == ERR) + return ERR; + + return waddch(win, attr | '?'); + + default: + /* handle control chars */ + + if (waddch(win, attr | '^') == ERR) + return ERR; + + return waddch(win, ch + '@'); + } + } + else + { + /* If the incoming character doesn't have its own attribute, + then use the current attributes for the window. If it has + attributes but not a color component, OR the attributes to + the current attributes for the window. If it has a color + component, use the attributes solely from the incoming + character. */ + + if (!(attr & A_COLOR)) + attr |= win->_attrs; + + /* wrs (4/10/93): Apply the same sort of logic for the window + background, in that it only takes precedence if other color + attributes are not there and that the background character + will only print if the printing character is blank. */ + + if (!(attr & A_COLOR)) + attr |= win->_bkgd & A_ATTRIBUTES; + else + attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR); + + if (text == ' ') + text = win->_bkgd & A_CHARTEXT; + + /* Add the attribute back into the character. */ + + text |= attr; + + /* Only change _firstch/_lastch if the character to be added is + different from the character/attribute that is already in + that position in the window. */ + + if (win->_y[y][x] != text) + { + if (win->_firstch[y] == _NO_CHANGE) + win->_firstch[y] = win->_lastch[y] = x; + else + if (x < win->_firstch[y]) + win->_firstch[y] = x; + else + if (x > win->_lastch[y]) + win->_lastch[y] = x; + + win->_y[y][x] = text; + } + + if (++x >= win->_maxx) + { + /* wrap around test */ + + x = 0; + + if (++y > win->_bmarg) + { + y--; + + if (wscrl(win, 1) == ERR) + { + PDC_sync(win); + return ERR; + } + } + } + } + + win->_curx = x; + win->_cury = y; + +#ifdef USING_COMBINING_CHARACTER_SCHEME + /* If the character was fullwidth (should occupy two cells), we */ + /* add a "dummy" character next to it : */ + if( text_width == 2 && x) + waddch( win, DUMMY_CHAR_NEXT_TO_FULLWIDTH); +#endif + + if (win->_immed) + wrefresh(win); + if (win->_sync) + wsyncup(win); + + return OK; +} + +int addch(const chtype ch) +{ + PDC_LOG(("addch() - called: ch=%x\n", ch)); + + return waddch(stdscr, ch); +} + +int mvaddch(int y, int x, const chtype ch) +{ + PDC_LOG(("mvaddch() - called: y=%d x=%d ch=%x\n", y, x, ch)); + + if (move(y,x) == ERR) + return ERR; + + return waddch(stdscr, ch); +} + +int mvwaddch(WINDOW *win, int y, int x, const chtype ch) +{ + PDC_LOG(("mvwaddch() - called: win=%p y=%d x=%d ch=%d\n", win, y, x, ch)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddch(win, ch); +} + +int echochar(const chtype ch) +{ + PDC_LOG(("echochar() - called: ch=%x\n", ch)); + + return wechochar(stdscr, ch); +} + +int wechochar(WINDOW *win, const chtype ch) +{ + PDC_LOG(("wechochar() - called: win=%p ch=%x\n", win, ch)); + + if (waddch(win, ch) == ERR) + return ERR; + + return wrefresh(win); +} + +int waddrawch(WINDOW *win, chtype ch) +{ + PDC_LOG(("waddrawch() - called: win=%p ch=%x (text=%c attr=0x%x)\n", + win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES)); + + if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f) + ch |= A_ALTCHARSET; + + return waddch(win, ch); +} + +int addrawch(chtype ch) +{ + PDC_LOG(("addrawch() - called: ch=%x\n", ch)); + + return waddrawch(stdscr, ch); +} + +int mvaddrawch(int y, int x, chtype ch) +{ + PDC_LOG(("mvaddrawch() - called: y=%d x=%d ch=%d\n", y, x, ch)); + + if (move(y, x) == ERR) + return ERR; + + return waddrawch(stdscr, ch); +} + +int mvwaddrawch(WINDOW *win, int y, int x, chtype ch) +{ + PDC_LOG(("mvwaddrawch() - called: win=%p y=%d x=%d ch=%d\n", + win, y, x, ch)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddrawch(win, ch); +} + +#ifdef PDC_WIDE +int wadd_wch(WINDOW *win, const cchar_t *wch) +{ + PDC_LOG(("wadd_wch() - called: win=%p wch=%x\n", win, *wch)); + + return wch ? waddch(win, *wch) : ERR; +} + +int add_wch(const cchar_t *wch) +{ + PDC_LOG(("add_wch() - called: wch=%x\n", *wch)); + + return wadd_wch(stdscr, wch); +} + +int mvadd_wch(int y, int x, const cchar_t *wch) +{ + PDC_LOG(("mvaddch() - called: y=%d x=%d wch=%x\n", y, x, *wch)); + + if (move(y,x) == ERR) + return ERR; + + return wadd_wch(stdscr, wch); +} + +int mvwadd_wch(WINDOW *win, int y, int x, const cchar_t *wch) +{ + PDC_LOG(("mvwaddch() - called: win=%p y=%d x=%d wch=%d\n", + win, y, x, *wch)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wadd_wch(win, wch); +} + +int echo_wchar(const cchar_t *wch) +{ + PDC_LOG(("echo_wchar() - called: wch=%x\n", *wch)); + + return wecho_wchar(stdscr, wch); +} + +int wecho_wchar(WINDOW *win, const cchar_t *wch) +{ + PDC_LOG(("wecho_wchar() - called: win=%p wch=%x\n", win, *wch)); + + if (!wch || (wadd_wch(win, wch) == ERR)) + return ERR; + + return wrefresh(win); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/addchstr.c b/3rd-party/PDCurses/pdcurses/addchstr.c new file mode 100644 index 0000000..0369f8d --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/addchstr.c @@ -0,0 +1,245 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +addchstr +-------- + +### Synopsis + + int addchstr(const chtype *ch); + int addchnstr(const chtype *ch, int n); + int waddchstr(WINDOW *win, const chtype *ch); + int waddchnstr(WINDOW *win, const chtype *ch, int n); + int mvaddchstr(int y, int x, const chtype *ch); + int mvaddchnstr(int y, int x, const chtype *ch, int n); + int mvwaddchstr(WINDOW *, int y, int x, const chtype *ch); + int mvwaddchnstr(WINDOW *, int y, int x, const chtype *ch, int n); + + int add_wchstr(const cchar_t *wch); + int add_wchnstr(const cchar_t *wch, int n); + int wadd_wchstr(WINDOW *win, const cchar_t *wch); + int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n); + int mvadd_wchstr(int y, int x, const cchar_t *wch); + int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n); + int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch); + int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch, + int n); + +### Description + + These routines write a chtype or cchar_t string directly into + the window structure, starting at the current or specified + position. The four routines with n as the last argument copy at + most n elements, but no more than will fit on the line. If n = + -1 then the whole string is copied, up to the maximum number + that will fit on the line. + + The cursor position is not advanced. These routines do not check + for newline or other special characters, nor does any line + wrapping occur. + +### Return Value + + All functions return OK or ERR. + +### Portability + X/Open BSD SYS V + addchstr Y - 4.0 + waddchstr Y - 4.0 + mvaddchstr Y - 4.0 + mvwaddchstr Y - 4.0 + addchnstr Y - 4.0 + waddchnstr Y - 4.0 + mvaddchnstr Y - 4.0 + mvwaddchnstr Y - 4.0 + add_wchstr Y + wadd_wchstr Y + mvadd_wchstr Y + mvwadd_wchstr Y + add_wchnstr Y + wadd_wchnstr Y + mvadd_wchnstr Y + mvwadd_wchnstr Y + +**man-end****************************************************************/ + +#include + +int waddchnstr(WINDOW *win, const chtype *ch, int n) +{ + int y, x, maxx, minx; + chtype *ptr; + + PDC_LOG(("waddchnstr() - called: win=%p n=%d\n", win, n)); + + if (!win || !ch || !n || n < -1) + return ERR; + + x = win->_curx; + y = win->_cury; + ptr = &(win->_y[y][x]); + + if (n == -1 || n > win->_maxx - x) + n = win->_maxx - x; + + minx = win->_firstch[y]; + maxx = win->_lastch[y]; + + for (; n && *ch; n--, x++, ptr++, ch++) + { + if (*ptr != *ch) + { + if (x < minx || minx == _NO_CHANGE) + minx = x; + + if (x > maxx) + maxx = x; + + PDC_LOG(("y %d x %d minx %d maxx %d *ptr %x *ch" + " %x firstch: %d lastch: %d\n", + y, x, minx, maxx, *ptr, *ch, + win->_firstch[y], win->_lastch[y])); + + *ptr = *ch; + } + } + + win->_firstch[y] = minx; + win->_lastch[y] = maxx; + + return OK; +} + +int addchstr(const chtype *ch) +{ + PDC_LOG(("addchstr() - called\n")); + + return waddchnstr(stdscr, ch, -1); +} + +int addchnstr(const chtype *ch, int n) +{ + PDC_LOG(("addchnstr() - called\n")); + + return waddchnstr(stdscr, ch, n); +} + +int waddchstr(WINDOW *win, const chtype *ch) +{ + PDC_LOG(("waddchstr() - called: win=%p\n", win)); + + return waddchnstr(win, ch, -1); +} + +int mvaddchstr(int y, int x, const chtype *ch) +{ + PDC_LOG(("mvaddchstr() - called: y %d x %d\n", y, x)); + + if (move(y, x) == ERR) + return ERR; + + return waddchnstr(stdscr, ch, -1); +} + +int mvaddchnstr(int y, int x, const chtype *ch, int n) +{ + PDC_LOG(("mvaddchnstr() - called: y %d x %d n %d\n", y, x, n)); + + if (move(y, x) == ERR) + return ERR; + + return waddchnstr(stdscr, ch, n); +} + +int mvwaddchstr(WINDOW *win, int y, int x, const chtype *ch) +{ + PDC_LOG(("mvwaddchstr() - called:\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddchnstr(win, ch, -1); +} + +int mvwaddchnstr(WINDOW *win, int y, int x, const chtype *ch, int n) +{ + PDC_LOG(("mvwaddchnstr() - called: y %d x %d n %d \n", y, x, n)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddchnstr(win, ch, n); +} + +#ifdef PDC_WIDE +int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n) +{ + PDC_LOG(("wadd_wchnstr() - called: win=%p n=%d\n", win, n)); + + return waddchnstr(win, wch, n); +} + +int add_wchstr(const cchar_t *wch) +{ + PDC_LOG(("add_wchstr() - called\n")); + + return wadd_wchnstr(stdscr, wch, -1); +} + +int add_wchnstr(const cchar_t *wch, int n) +{ + PDC_LOG(("add_wchnstr() - called\n")); + + return wadd_wchnstr(stdscr, wch, n); +} + +int wadd_wchstr(WINDOW *win, const cchar_t *wch) +{ + PDC_LOG(("wadd_wchstr() - called: win=%p\n", win)); + + return wadd_wchnstr(win, wch, -1); +} + +int mvadd_wchstr(int y, int x, const cchar_t *wch) +{ + PDC_LOG(("mvadd_wchstr() - called: y %d x %d\n", y, x)); + + if (move(y, x) == ERR) + return ERR; + + return wadd_wchnstr(stdscr, wch, -1); +} + +int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n) +{ + PDC_LOG(("mvadd_wchnstr() - called: y %d x %d n %d\n", y, x, n)); + + if (move(y, x) == ERR) + return ERR; + + return wadd_wchnstr(stdscr, wch, n); +} + +int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch) +{ + PDC_LOG(("mvwadd_wchstr() - called:\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wadd_wchnstr(win, wch, -1); +} + +int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch, int n) +{ + PDC_LOG(("mvwadd_wchnstr() - called: y %d x %d n %d \n", y, x, n)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wadd_wchnstr(win, wch, n); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/addstr.c b/3rd-party/PDCurses/pdcurses/addstr.c new file mode 100644 index 0000000..cf2be8f --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/addstr.c @@ -0,0 +1,240 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +addstr +------ + +### Synopsis + + int addstr(const char *str); + int addnstr(const char *str, int n); + int waddstr(WINDOW *win, const char *str); + int waddnstr(WINDOW *win, const char *str, int n); + int mvaddstr(int y, int x, const char *str); + int mvaddnstr(int y, int x, const char *str, int n); + int mvwaddstr(WINDOW *win, int y, int x, const char *str); + int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n); + + int addwstr(const wchar_t *wstr); + int addnwstr(const wchar_t *wstr, int n); + int waddwstr(WINDOW *win, const wchar_t *wstr); + int waddnwstr(WINDOW *win, const wchar_t *wstr, int n); + int mvaddwstr(int y, int x, const wchar_t *wstr); + int mvaddnwstr(int y, int x, const wchar_t *wstr, int n); + int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr); + int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n); + +### Description + + These routines write all the characters of the null-terminated + string str or wide-character string wstr to the given window. + The functionality is similar to calling waddch() once for each + character in the string; except that, when PDCurses is built + with wide-character support enabled, the narrow-character + functions treat the string as a multibyte string in the current + locale, and convert it. The routines with n as the last + argument write at most n characters; if n is negative, then the + entire string will be added. + +### Return Value + + All functions return OK or ERR. + +### Portability + X/Open BSD SYS V + addstr Y Y Y + waddstr Y Y Y + mvaddstr Y Y Y + mvwaddstr Y Y Y + addnstr Y - 4.0 + waddnstr Y - 4.0 + mvaddnstr Y - 4.0 + mvwaddnstr Y - 4.0 + addwstr Y + waddwstr Y + mvaddwstr Y + mvwaddwstr Y + addnwstr Y + waddnwstr Y + mvaddnwstr Y + mvwaddnwstr Y + +**man-end****************************************************************/ + +int waddnstr(WINDOW *win, const char *str, int n) +{ + int i = 0; + + PDC_LOG(("waddnstr() - called: string=\"%s\" n %d \n", str, n)); + + if (!win || !str) + return ERR; + + while (str[i] && (i < n || n < 0)) + { +#ifdef PDC_WIDE + wchar_t wch; + int retval = PDC_mbtowc(&wch, str + i, n >= 0 ? n - i : 6); + + if (retval <= 0) + return OK; + + i += retval; +#else + chtype wch = (unsigned char)(str[i++]); +#endif + if (waddch(win, wch) == ERR) + return ERR; + } + + return OK; +} + +int addstr(const char *str) +{ + PDC_LOG(("addstr() - called: string=\"%s\"\n", str)); + + return waddnstr(stdscr, str, -1); +} + +int addnstr(const char *str, int n) +{ + PDC_LOG(("addnstr() - called: string=\"%s\" n %d \n", str, n)); + + return waddnstr(stdscr, str, n); +} + +int waddstr(WINDOW *win, const char *str) +{ + PDC_LOG(("waddstr() - called: string=\"%s\"\n", str)); + + return waddnstr(win, str, -1); +} + +int mvaddstr(int y, int x, const char *str) +{ + PDC_LOG(("mvaddstr() - called: y %d x %d string=\"%s\"\n", y, x, str)); + + if (move(y, x) == ERR) + return ERR; + + return waddnstr(stdscr, str, -1); +} + +int mvaddnstr(int y, int x, const char *str, int n) +{ + PDC_LOG(("mvaddnstr() - called: y %d x %d string=\"%s\" n %d \n", + y, x, str, n)); + + if (move(y, x) == ERR) + return ERR; + + return waddnstr(stdscr, str, n); +} + +int mvwaddstr(WINDOW *win, int y, int x, const char *str) +{ + PDC_LOG(("mvwaddstr() - called: string=\"%s\"\n", str)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddnstr(win, str, -1); +} + +int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n) +{ + PDC_LOG(("mvwaddnstr() - called: y %d x %d string=\"%s\" n %d \n", + y, x, str, n)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddnstr(win, str, n); +} + +#ifdef PDC_WIDE +int waddnwstr(WINDOW *win, const wchar_t *wstr, int n) +{ + int i = 0; + + PDC_LOG(("waddnwstr() - called\n")); + + if (!win || !wstr) + return ERR; + + while (wstr[i] && (i < n || n < 0)) + { + chtype wch = wstr[i++]; + + if (waddch(win, wch) == ERR) + return ERR; + } + + return OK; +} + +int addwstr(const wchar_t *wstr) +{ + PDC_LOG(("addwstr() - called\n")); + + return waddnwstr(stdscr, wstr, -1); +} + +int addnwstr(const wchar_t *wstr, int n) +{ + PDC_LOG(("addnwstr() - called\n")); + + return waddnwstr(stdscr, wstr, n); +} + +int waddwstr(WINDOW *win, const wchar_t *wstr) +{ + PDC_LOG(("waddwstr() - called\n")); + + return waddnwstr(win, wstr, -1); +} + +int mvaddwstr(int y, int x, const wchar_t *wstr) +{ + PDC_LOG(("mvaddstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return waddnwstr(stdscr, wstr, -1); +} + +int mvaddnwstr(int y, int x, const wchar_t *wstr, int n) +{ + PDC_LOG(("mvaddnstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return waddnwstr(stdscr, wstr, n); +} + +int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr) +{ + PDC_LOG(("mvwaddstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddnwstr(win, wstr, -1); +} + +int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n) +{ + PDC_LOG(("mvwaddnstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return waddnwstr(win, wstr, n); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/attr.c b/3rd-party/PDCurses/pdcurses/attr.c new file mode 100644 index 0000000..0cd64da --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/attr.c @@ -0,0 +1,359 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +attr +---- + +### Synopsis + + int attroff(chtype attrs); + int wattroff(WINDOW *win, chtype attrs); + int attron(chtype attrs); + int wattron(WINDOW *win, chtype attrs); + int attrset(chtype attrs); + int wattrset(WINDOW *win, chtype attrs); + int standend(void); + int wstandend(WINDOW *win); + int standout(void); + int wstandout(WINDOW *win); + + int color_set(short color_pair, void *opts); + int wcolor_set(WINDOW *win, short color_pair, void *opts); + + int attr_get(attr_t *attrs, short *color_pair, void *opts); + int attr_off(attr_t attrs, void *opts); + int attr_on(attr_t attrs, void *opts); + int attr_set(attr_t attrs, short color_pair, void *opts); + int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair, + void *opts); + int wattr_off(WINDOW *win, attr_t attrs, void *opts); + int wattr_on(WINDOW *win, attr_t attrs, void *opts); + int wattr_set(WINDOW *win, attr_t attrs, short color_pair, + void *opts); + + int chgat(int n, attr_t attr, short color, const void *opts); + int mvchgat(int y, int x, int n, attr_t attr, short color, + const void *opts); + int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr, + short color, const void *opts); + int wchgat(WINDOW *win, int n, attr_t attr, short color, + const void *opts); + + chtype getattrs(WINDOW *win); + +### Description + + These functions manipulate the current attributes and/or colors + of the named window. These attributes can be any combination + of A_STANDOUT, A_REVERSE, A_BOLD, A_DIM, A_BLINK, A_UNDERLINE. + + These constants are defined in and can be combined + with the bitwise-OR operator (|). + + The current attributes of a window are applied to all chtypes + that are written into the window with waddch(). Attributes are + a property of the chtype, and move with the character through + any scrolling or insert/delete operations. + + attrset() sets the current attributes of the given window to + attrs. attroff() turns off the named attributes without + affecting any other attributes; attron() turns them on. + color_set() sets the window color to the value of color_pair. + + standout() is the same as attron(A_STANDOUT). standend() is the + same as attrset(A_NORMAL); that is, it turns off all attributes. + + wchgat() sets the attributes of the n symbols starts from current + position of the given window. + + mvwchgat() moves the cursor to the specified position and sets + the attributes of the n symbols starts from current position of + the given window. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + attroff Y Y Y + wattroff Y Y Y + attron Y Y Y + wattron Y Y Y + attrset Y Y Y + wattrset Y Y Y + standend Y Y Y + wstandend Y Y Y + standout Y Y Y + wstandout Y Y Y + color_set Y + wcolor_set Y + attr_get Y + wattr_get Y + attr_on Y + wattr_on Y + attr_off Y + wattr_off Y + attr_set Y + wattr_set Y + chgat Y + wchgat Y + mvchgat Y + mvwchgat Y + getattrs - + +**man-end****************************************************************/ + +int wattroff(WINDOW *win, chtype attrs) +{ + PDC_LOG(("wattroff() - called\n")); + + if (!win) + return ERR; + + win->_attrs &= (~attrs & A_ATTRIBUTES); + + return OK; +} + +int attroff(chtype attrs) +{ + PDC_LOG(("attroff() - called\n")); + + return wattroff(stdscr, attrs); +} + +int wattron(WINDOW *win, chtype attrs) +{ + chtype newcolr, oldcolr, newattr, oldattr; + + PDC_LOG(("wattron() - called\n")); + + if (!win) + return ERR; + + if ((win->_attrs & A_COLOR) && (attrs & A_COLOR)) + { + oldcolr = win->_attrs & A_COLOR; + oldattr = win->_attrs ^ oldcolr; + newcolr = attrs & A_COLOR; + newattr = (attrs & A_ATTRIBUTES) ^ newcolr; + newattr |= oldattr; + win->_attrs = newattr | newcolr; + } + else + win->_attrs |= (attrs & A_ATTRIBUTES); + + return OK; +} + +int attron(chtype attrs) +{ + PDC_LOG(("attron() - called\n")); + + return wattron(stdscr, attrs); +} + +int wattrset(WINDOW *win, chtype attrs) +{ + PDC_LOG(("wattrset() - called\n")); + + if (!win) + return ERR; + + win->_attrs = attrs & A_ATTRIBUTES; + + return OK; +} + +int attrset(chtype attrs) +{ + PDC_LOG(("attrset() - called\n")); + + return wattrset(stdscr, attrs); +} + +int standend(void) +{ + PDC_LOG(("standend() - called\n")); + + return wattrset(stdscr, A_NORMAL); +} + +int standout(void) +{ + PDC_LOG(("standout() - called\n")); + + return wattrset(stdscr, A_STANDOUT); +} + +int wstandend(WINDOW *win) +{ + PDC_LOG(("wstandend() - called\n")); + + return wattrset(win, A_NORMAL); +} + +int wstandout(WINDOW *win) +{ + PDC_LOG(("wstandout() - called\n")); + + return wattrset(win, A_STANDOUT); +} + +chtype getattrs(WINDOW *win) +{ + return win ? win->_attrs : 0; +} + +int wcolor_set(WINDOW *win, short color_pair, void *opts) +{ + PDC_LOG(("wcolor_set() - called\n")); + + if (!win) + return ERR; + + win->_attrs = (win->_attrs & ~A_COLOR) | COLOR_PAIR(color_pair); + + return OK; +} + +int color_set(short color_pair, void *opts) +{ + PDC_LOG(("color_set() - called\n")); + + return wcolor_set(stdscr, color_pair, opts); +} + +int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair, void *opts) +{ + PDC_LOG(("wattr_get() - called\n")); + + if (!win) + return ERR; + + if (attrs) + *attrs = win->_attrs & (A_ATTRIBUTES & ~A_COLOR); + + if (color_pair) + *color_pair = (short)PAIR_NUMBER(win->_attrs); + + return OK; +} + +int attr_get(attr_t *attrs, short *color_pair, void *opts) +{ + PDC_LOG(("attr_get() - called\n")); + + return wattr_get(stdscr, attrs, color_pair, opts); +} + +int wattr_off(WINDOW *win, attr_t attrs, void *opts) +{ + PDC_LOG(("wattr_off() - called\n")); + + return wattroff(win, attrs); +} + +int attr_off(attr_t attrs, void *opts) +{ + PDC_LOG(("attr_off() - called\n")); + + return wattroff(stdscr, attrs); +} + +int wattr_on(WINDOW *win, attr_t attrs, void *opts) +{ + PDC_LOG(("wattr_off() - called\n")); + + return wattron(win, attrs); +} + +int attr_on(attr_t attrs, void *opts) +{ + PDC_LOG(("attr_on() - called\n")); + + return wattron(stdscr, attrs); +} + +int wattr_set(WINDOW *win, attr_t attrs, short color_pair, void *opts) +{ + PDC_LOG(("wattr_set() - called\n")); + + if (!win) + return ERR; + + win->_attrs = (attrs & (A_ATTRIBUTES & ~A_COLOR)) | COLOR_PAIR(color_pair); + + return OK; +} + +int attr_set(attr_t attrs, short color_pair, void *opts) +{ + PDC_LOG(("attr_get() - called\n")); + + return wattr_set(stdscr, attrs, color_pair, opts); +} + +int wchgat(WINDOW *win, int n, attr_t attr, short color, const void *opts) +{ + chtype *dest, newattr; + int startpos, endpos; + + PDC_LOG(("wchgat() - called\n")); + + if (!win) + return ERR; + + newattr = (attr & A_ATTRIBUTES) | COLOR_PAIR(color); + + startpos = win->_curx; + endpos = ((n < 0) ? win->_maxx : min(startpos + n, win->_maxx)) - 1; + dest = win->_y[win->_cury]; + + for (n = startpos; n <= endpos; n++) + dest[n] = (dest[n] & A_CHARTEXT) | newattr; + + n = win->_cury; + + if (startpos < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE) + win->_firstch[n] = startpos; + + if (endpos > win->_lastch[n]) + win->_lastch[n] = endpos; + + PDC_sync(win); + + return OK; +} + +int chgat(int n, attr_t attr, short color, const void *opts) +{ + PDC_LOG(("chgat() - called\n")); + + return wchgat(stdscr, n, attr, color, opts); +} + +int mvchgat(int y, int x, int n, attr_t attr, short color, const void *opts) +{ + PDC_LOG(("mvchgat() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wchgat(stdscr, n, attr, color, opts); +} + +int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr, short color, + const void *opts) +{ + PDC_LOG(("mvwchgat() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wchgat(win, n, attr, color, opts); +} diff --git a/3rd-party/PDCurses/pdcurses/beep.c b/3rd-party/PDCurses/pdcurses/beep.c new file mode 100644 index 0000000..c6e5a35 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/beep.c @@ -0,0 +1,68 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +beep +---- + +### Synopsis + + int beep(void); + int flash(void); + +### Description + + beep() sounds the audible bell on the terminal, if possible; + if not, it calls flash(). + + flash() "flashes" the screen, by inverting the foreground and + background of every cell, pausing, and then restoring the + original attributes. + +### Return Value + + These functions return OK. + +### Portability + X/Open BSD SYS V + beep Y Y Y + flash Y Y Y + +**man-end****************************************************************/ + +int beep(void) +{ + PDC_LOG(("beep() - called\n")); + + if (SP->audible) + PDC_beep(); + else + flash(); + + return OK; +} + +int flash(void) +{ + int z, y, x; + + PDC_LOG(("flash() - called\n")); + + /* Reverse each cell; wait; restore the screen */ + + for (z = 0; z < 2; z++) + { + for (y = 0; y < LINES; y++) + for (x = 0; x < COLS; x++) + curscr->_y[y][x] ^= A_REVERSE; + + wrefresh(curscr); + + if (!z) + napms(50); + } + + return OK; +} diff --git a/3rd-party/PDCurses/pdcurses/bkgd.c b/3rd-party/PDCurses/pdcurses/bkgd.c new file mode 100644 index 0000000..5c6ef20 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/bkgd.c @@ -0,0 +1,223 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +bkgd +---- + +### Synopsis + + int bkgd(chtype ch); + void bkgdset(chtype ch); + chtype getbkgd(WINDOW *win); + int wbkgd(WINDOW *win, chtype ch); + void wbkgdset(WINDOW *win, chtype ch); + + int bkgrnd(const cchar_t *wch); + void bkgrndset(const cchar_t *wch); + int getbkgrnd(cchar_t *wch); + int wbkgrnd(WINDOW *win, const cchar_t *wch); + void wbkgrndset(WINDOW *win, const cchar_t *wch); + int wgetbkgrnd(WINDOW *win, cchar_t *wch); + +### Description + + bkgdset() and wbkgdset() manipulate the background of a window. + The background is a chtype consisting of any combination of + attributes and a character; it is combined with each chtype + added or inserted to the window by waddch() or winsch(). Only + the attribute part is used to set the background of non-blank + characters, while both character and attributes are used for + blank positions. + + bkgd() and wbkgd() not only change the background, but apply it + immediately to every cell in the window. + + The attributes that are defined with the attrset()/attron() set + of functions take precedence over the background attributes if + there is a conflict (e.g., different color pairs). + +### Return Value + + bkgd() and wbkgd() return OK, unless the window is NULL, in + which case they return ERR. + +### Portability + X/Open BSD SYS V + bkgd Y - 4.0 + bkgdset Y - 4.0 + getbkgd Y + wbkgd Y - 4.0 + wbkgdset Y - 4.0 + bkgrnd Y + bkgrndset Y + getbkgrnd Y + wbkgrnd Y + wbkgrndset Y + wgetbkgrnd Y + +**man-end****************************************************************/ + +int wbkgd(WINDOW *win, chtype ch) +{ + int x, y; + chtype oldcolr, oldch, newcolr, newch, colr, attr; + chtype oldattr = 0, newattr = 0; + chtype *winptr; + + PDC_LOG(("wbkgd() - called\n")); + + if (!win) + return ERR; + + if (win->_bkgd == ch) + return OK; + + oldcolr = win->_bkgd & A_COLOR; + if (oldcolr) + oldattr = (win->_bkgd & A_ATTRIBUTES) ^ oldcolr; + + oldch = win->_bkgd & A_CHARTEXT; + + wbkgdset(win, ch); + + newcolr = win->_bkgd & A_COLOR; + if (newcolr) + newattr = (win->_bkgd & A_ATTRIBUTES) ^ newcolr; + + newch = win->_bkgd & A_CHARTEXT; + + /* what follows is what seems to occur in the System V + implementation of this routine */ + + for (y = 0; y < win->_maxy; y++) + { + for (x = 0; x < win->_maxx; x++) + { + winptr = win->_y[y] + x; + + ch = *winptr; + + /* determine the colors and attributes of the character read + from the window */ + + colr = ch & A_COLOR; + attr = ch & (A_ATTRIBUTES ^ A_COLOR); + + /* if the color is the same as the old background color, + then make it the new background color, otherwise leave it */ + + if (colr == oldcolr) + colr = newcolr; + + /* remove any attributes (non color) from the character that + were part of the old background, then combine the + remaining ones with the new background */ + + attr ^= oldattr; + attr |= newattr; + + /* change character if it is there because it was the old + background character */ + + ch &= A_CHARTEXT; + if (ch == oldch) + ch = newch; + + ch |= (attr | colr); + + *winptr = ch; + + } + } + + touchwin(win); + PDC_sync(win); + return OK; +} + +int bkgd(chtype ch) +{ + PDC_LOG(("bkgd() - called\n")); + + return wbkgd(stdscr, ch); +} + +void wbkgdset(WINDOW *win, chtype ch) +{ + PDC_LOG(("wbkgdset() - called\n")); + + if (win) + { + if (!(ch & A_CHARTEXT)) + ch |= ' '; + + win->_bkgd = ch; + } +} + +void bkgdset(chtype ch) +{ + PDC_LOG(("bkgdset() - called\n")); + + wbkgdset(stdscr, ch); +} + +chtype getbkgd(WINDOW *win) +{ + PDC_LOG(("getbkgd() - called\n")); + + return win ? win->_bkgd : (chtype)ERR; +} + +#ifdef PDC_WIDE +int wbkgrnd(WINDOW *win, const cchar_t *wch) +{ + PDC_LOG(("wbkgrnd() - called\n")); + + return wch ? wbkgd(win, *wch) : ERR; +} + +int bkgrnd(const cchar_t *wch) +{ + PDC_LOG(("bkgrnd() - called\n")); + + return wbkgrnd(stdscr, wch); +} + +void wbkgrndset(WINDOW *win, const cchar_t *wch) +{ + PDC_LOG(("wbkgdset() - called\n")); + + if (wch) + wbkgdset(win, *wch); +} + +void bkgrndset(const cchar_t *wch) +{ + PDC_LOG(("bkgrndset() - called\n")); + + wbkgrndset(stdscr, wch); +} + +int wgetbkgrnd(WINDOW *win, cchar_t *wch) +{ + PDC_LOG(("wgetbkgrnd() - called\n")); + + if (!win || !wch) + return ERR; + + *wch = win->_bkgd; + + return OK; +} + +int getbkgrnd(cchar_t *wch) +{ + PDC_LOG(("getbkgrnd() - called\n")); + + return wgetbkgrnd(stdscr, wch); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/border.c b/3rd-party/PDCurses/pdcurses/border.c new file mode 100644 index 0000000..23975c4 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/border.c @@ -0,0 +1,411 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +border +------ + +### Synopsis + + int border(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl, + chtype tr, chtype bl, chtype br); + int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts, + chtype bs, chtype tl, chtype tr, chtype bl, chtype br); + int box(WINDOW *win, chtype verch, chtype horch); + int hline(chtype ch, int n); + int vline(chtype ch, int n); + int whline(WINDOW *win, chtype ch, int n); + int wvline(WINDOW *win, chtype ch, int n); + int mvhline(int y, int x, chtype ch, int n); + int mvvline(int y, int x, chtype ch, int n); + int mvwhline(WINDOW *win, int y, int x, chtype ch, int n); + int mvwvline(WINDOW *win, int y, int x, chtype ch, int n); + + int border_set(const cchar_t *ls, const cchar_t *rs, + const cchar_t *ts, const cchar_t *bs, + const cchar_t *tl, const cchar_t *tr, + const cchar_t *bl, const cchar_t *br); + int wborder_set(WINDOW *win, const cchar_t *ls, const cchar_t *rs, + const cchar_t *ts, const cchar_t *bs, + const cchar_t *tl, const cchar_t *tr, + const cchar_t *bl, const cchar_t *br); + int box_set(WINDOW *win, const cchar_t *verch, const cchar_t *horch); + int hline_set(const cchar_t *wch, int n); + int vline_set(const cchar_t *wch, int n); + int whline_set(WINDOW *win, const cchar_t *wch, int n); + int wvline_set(WINDOW *win, const cchar_t *wch, int n); + int mvhline_set(int y, int x, const cchar_t *wch, int n); + int mvvline_set(int y, int x, const cchar_t *wch, int n); + int mvwhline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n); + int mvwvline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n); + +### Description + + border(), wborder(), and box() draw a border around the edge of + the window. If any argument is zero, an appropriate default is + used: + + ls left side of border ACS_VLINE + rs right side of border ACS_VLINE + ts top side of border ACS_HLINE + bs bottom side of border ACS_HLINE + tl top left corner of border ACS_ULCORNER + tr top right corner of border ACS_URCORNER + bl bottom left corner of border ACS_LLCORNER + br bottom right corner of border ACS_LRCORNER + + hline() and whline() draw a horizontal line, using ch, starting + from the current cursor position. The cursor position does not + change. The line is at most n characters long, or as many as + will fit in the window. + + vline() and wvline() draw a vertical line, using ch, starting + from the current cursor position. The cursor position does not + change. The line is at most n characters long, or as many as + will fit in the window. + +### Return Value + + These functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + border Y - 4.0 + wborder Y - 4.0 + box Y Y Y + hline Y - 4.0 + vline Y - 4.0 + whline Y - 4.0 + wvline Y - 4.0 + mvhline Y + mvvline Y + mvwhline Y + mvwvline Y + border_set Y + wborder_set Y + box_set Y + hline_set Y + vline_set Y + whline_set Y + wvline_set Y + mvhline_set Y + mvvline_set Y + mvwhline_set Y + mvwvline_set Y + +**man-end****************************************************************/ + +/* _attr_passthru() -- Takes a single chtype 'ch' and checks if the + current attribute of window 'win', as set by wattrset(), and/or the + current background of win, as set by wbkgd(), should by combined with + it. Attributes set explicitly in ch take precedence. */ + +static chtype _attr_passthru(WINDOW *win, chtype ch) +{ + chtype attr; + + /* If the incoming character doesn't have its own attribute, then + use the current attributes for the window. If the incoming + character has attributes, but not a color component, OR the + attributes to the current attributes for the window. If the + incoming character has a color component, use only the attributes + from the incoming character. */ + + attr = ch & A_ATTRIBUTES; + if (!(attr & A_COLOR)) + attr |= win->_attrs; + + /* wrs (4/10/93) -- Apply the same sort of logic for the window + background, in that it only takes precedence if other color + attributes are not there. */ + + if (!(attr & A_COLOR)) + attr |= win->_bkgd & A_ATTRIBUTES; + else + attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR); + + ch = (ch & A_CHARTEXT) | attr; + + return ch; +} + +int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts, chtype bs, + chtype tl, chtype tr, chtype bl, chtype br) +{ + int i, ymax, xmax; + + PDC_LOG(("wborder() - called\n")); + + if (!win) + return ERR; + + ymax = win->_maxy - 1; + xmax = win->_maxx - 1; + + ls = _attr_passthru(win, ls ? ls : ACS_VLINE); + rs = _attr_passthru(win, rs ? rs : ACS_VLINE); + ts = _attr_passthru(win, ts ? ts : ACS_HLINE); + bs = _attr_passthru(win, bs ? bs : ACS_HLINE); + tl = _attr_passthru(win, tl ? tl : ACS_ULCORNER); + tr = _attr_passthru(win, tr ? tr : ACS_URCORNER); + bl = _attr_passthru(win, bl ? bl : ACS_LLCORNER); + br = _attr_passthru(win, br ? br : ACS_LRCORNER); + + for (i = 1; i < xmax; i++) + { + win->_y[0][i] = ts; + win->_y[ymax][i] = bs; + } + + for (i = 1; i < ymax; i++) + { + win->_y[i][0] = ls; + win->_y[i][xmax] = rs; + } + + win->_y[0][0] = tl; + win->_y[0][xmax] = tr; + win->_y[ymax][0] = bl; + win->_y[ymax][xmax] = br; + + for (i = 0; i <= ymax; i++) + { + win->_firstch[i] = 0; + win->_lastch[i] = xmax; + } + + PDC_sync(win); + + return OK; +} + +int border(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl, + chtype tr, chtype bl, chtype br) +{ + PDC_LOG(("border() - called\n")); + + return wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br); +} + +int box(WINDOW *win, chtype verch, chtype horch) +{ + PDC_LOG(("box() - called\n")); + + return wborder(win, verch, verch, horch, horch, 0, 0, 0, 0); +} + +int whline(WINDOW *win, chtype ch, int n) +{ + chtype *dest; + int startpos, endpos; + + PDC_LOG(("whline() - called\n")); + + if (!win || n < 1) + return ERR; + + startpos = win->_curx; + endpos = min(startpos + n, win->_maxx) - 1; + dest = win->_y[win->_cury]; + ch = _attr_passthru(win, ch ? ch : ACS_HLINE); + + for (n = startpos; n <= endpos; n++) + dest[n] = ch; + + n = win->_cury; + + if (startpos < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE) + win->_firstch[n] = startpos; + + if (endpos > win->_lastch[n]) + win->_lastch[n] = endpos; + + PDC_sync(win); + + return OK; +} + +int hline(chtype ch, int n) +{ + PDC_LOG(("hline() - called\n")); + + return whline(stdscr, ch, n); +} + +int mvhline(int y, int x, chtype ch, int n) +{ + PDC_LOG(("mvhline() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return whline(stdscr, ch, n); +} + +int mvwhline(WINDOW *win, int y, int x, chtype ch, int n) +{ + PDC_LOG(("mvwhline() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return whline(win, ch, n); +} + +int wvline(WINDOW *win, chtype ch, int n) +{ + int endpos, x; + + PDC_LOG(("wvline() - called\n")); + + if (!win || n < 1) + return ERR; + + endpos = min(win->_cury + n, win->_maxy); + x = win->_curx; + + ch = _attr_passthru(win, ch ? ch : ACS_VLINE); + + for (n = win->_cury; n < endpos; n++) + { + win->_y[n][x] = ch; + + if (x < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE) + win->_firstch[n] = x; + + if (x > win->_lastch[n]) + win->_lastch[n] = x; + } + + PDC_sync(win); + + return OK; +} + +int vline(chtype ch, int n) +{ + PDC_LOG(("vline() - called\n")); + + return wvline(stdscr, ch, n); +} + +int mvvline(int y, int x, chtype ch, int n) +{ + PDC_LOG(("mvvline() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wvline(stdscr, ch, n); +} + +int mvwvline(WINDOW *win, int y, int x, chtype ch, int n) +{ + PDC_LOG(("mvwvline() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wvline(win, ch, n); +} + +#ifdef PDC_WIDE +int wborder_set(WINDOW *win, const cchar_t *ls, const cchar_t *rs, + const cchar_t *ts, const cchar_t *bs, const cchar_t *tl, + const cchar_t *tr, const cchar_t *bl, const cchar_t *br) +{ + PDC_LOG(("wborder_set() - called\n")); + + return wborder(win, ls ? *ls : 0, rs ? *rs : 0, ts ? *ts : 0, + bs ? *bs : 0, tl ? *tl : 0, tr ? *tr : 0, + bl ? *bl : 0, br ? *br : 0); +} + +int border_set(const cchar_t *ls, const cchar_t *rs, const cchar_t *ts, + const cchar_t *bs, const cchar_t *tl, const cchar_t *tr, + const cchar_t *bl, const cchar_t *br) +{ + PDC_LOG(("border_set() - called\n")); + + return wborder_set(stdscr, ls, rs, ts, bs, tl, tr, bl, br); +} + +int box_set(WINDOW *win, const cchar_t *verch, const cchar_t *horch) +{ + PDC_LOG(("box_set() - called\n")); + + return wborder_set(win, verch, verch, horch, horch, + (const cchar_t *)NULL, (const cchar_t *)NULL, + (const cchar_t *)NULL, (const cchar_t *)NULL); +} + +int whline_set(WINDOW *win, const cchar_t *wch, int n) +{ + PDC_LOG(("whline_set() - called\n")); + + return wch ? whline(win, *wch, n) : ERR; +} + +int hline_set(const cchar_t *wch, int n) +{ + PDC_LOG(("hline_set() - called\n")); + + return whline_set(stdscr, wch, n); +} + +int mvhline_set(int y, int x, const cchar_t *wch, int n) +{ + PDC_LOG(("mvhline_set() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return whline_set(stdscr, wch, n); +} + +int mvwhline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n) +{ + PDC_LOG(("mvwhline_set() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return whline_set(win, wch, n); +} + +int wvline_set(WINDOW *win, const cchar_t *wch, int n) +{ + PDC_LOG(("wvline_set() - called\n")); + + return wch ? wvline(win, *wch, n) : ERR; +} + +int vline_set(const cchar_t *wch, int n) +{ + PDC_LOG(("vline_set() - called\n")); + + return wvline_set(stdscr, wch, n); +} + +int mvvline_set(int y, int x, const cchar_t *wch, int n) +{ + PDC_LOG(("mvvline_set() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wvline_set(stdscr, wch, n); +} + +int mvwvline_set(WINDOW *win, int y, int x, const cchar_t *wch, int n) +{ + PDC_LOG(("mvwvline_set() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wvline_set(win, wch, n); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/clear.c b/3rd-party/PDCurses/pdcurses/clear.c new file mode 100644 index 0000000..6f46c62 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/clear.c @@ -0,0 +1,159 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +clear +----- + +### Synopsis + + int clear(void); + int wclear(WINDOW *win); + int erase(void); + int werase(WINDOW *win); + int clrtobot(void); + int wclrtobot(WINDOW *win); + int clrtoeol(void); + int wclrtoeol(WINDOW *win); + +### Description + + erase() and werase() copy blanks (i.e. the background chtype) to + every cell of the window. + + clear() and wclear() are similar to erase() and werase(), but + they also call clearok() to ensure that the the window is + cleared on the next wrefresh(). + + clrtobot() and wclrtobot() clear the window from the current + cursor position to the end of the window. + + clrtoeol() and wclrtoeol() clear the window from the current + cursor position to the end of the current line. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + clear Y Y Y + wclear Y Y Y + erase Y Y Y + werase Y Y Y + clrtobot Y Y Y + wclrtobot Y Y Y + clrtoeol Y Y Y + wclrtoeol Y Y Y + +**man-end****************************************************************/ + +int wclrtoeol(WINDOW *win) +{ + int x, y, minx; + chtype blank, *ptr; + + PDC_LOG(("wclrtoeol() - called: Row: %d Col: %d\n", + win->_cury, win->_curx)); + + if (!win) + return ERR; + + y = win->_cury; + x = win->_curx; + + /* wrs (4/10/93) account for window background */ + + blank = win->_bkgd; + + for (minx = x, ptr = &win->_y[y][x]; minx < win->_maxx; minx++, ptr++) + *ptr = blank; + + if (x < win->_firstch[y] || win->_firstch[y] == _NO_CHANGE) + win->_firstch[y] = x; + + win->_lastch[y] = win->_maxx - 1; + + PDC_sync(win); + return OK; +} + +int clrtoeol(void) +{ + PDC_LOG(("clrtoeol() - called\n")); + + return wclrtoeol(stdscr); +} + +int wclrtobot(WINDOW *win) +{ + int savey, savex; + + PDC_LOG(("wclrtobot() - called\n")); + + if (!win) + return ERR; + + savey = win->_cury; + savex = win->_curx; + + /* should this involve scrolling region somehow ? */ + + if (win->_cury + 1 < win->_maxy) + { + win->_curx = 0; + win->_cury++; + for (; win->_maxy > win->_cury; win->_cury++) + wclrtoeol(win); + win->_cury = savey; + win->_curx = savex; + } + wclrtoeol(win); + + PDC_sync(win); + return OK; +} + +int clrtobot(void) +{ + PDC_LOG(("clrtobot() - called\n")); + + return wclrtobot(stdscr); +} + +int werase(WINDOW *win) +{ + PDC_LOG(("werase() - called\n")); + + if (wmove(win, 0, 0) == ERR) + return ERR; + + return wclrtobot(win); +} + +int erase(void) +{ + PDC_LOG(("erase() - called\n")); + + return werase(stdscr); +} + +int wclear(WINDOW *win) +{ + PDC_LOG(("wclear() - called\n")); + + if (!win) + return ERR; + + win->_clear = TRUE; + return werase(win); +} + +int clear(void) +{ + PDC_LOG(("clear() - called\n")); + + return wclear(stdscr); +} diff --git a/3rd-party/PDCurses/pdcurses/color.c b/3rd-party/PDCurses/pdcurses/color.c new file mode 100644 index 0000000..d2e9da7 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/color.c @@ -0,0 +1,298 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +color +----- + +### Synopsis + + int start_color(void); + int init_pair(short pair, short fg, short bg); + int init_color(short color, short red, short green, short blue); + bool has_colors(void); + bool can_change_color(void); + int color_content(short color, short *red, short *green, short *blue); + int pair_content(short pair, short *fg, short *bg); + + int assume_default_colors(int f, int b); + int use_default_colors(void); + + int PDC_set_line_color(short color); + +### Description + + To use these routines, start_color() must be called, usually + immediately after initscr(). Colors are always used in pairs, + referred to as color-pairs. A color-pair consists of a + foreground color and a background color. A color-pair is + initialized via init_pair(). After initialization, COLOR_PAIR(n) + can be used like any other video attribute. + + start_color() initializes eight basic colors (black, red, green, + yellow, blue, magenta, cyan, and white), and two global + variables; COLORS and COLOR_PAIRS (respectively defining the + maximum number of colors and color-pairs the terminal is capable + of displaying). + + init_pair() changes the definition of a color-pair. It takes + three arguments: the number of the color-pair to be redefined, + and the new values of the foreground and background colors. The + pair number must be between 0 and COLOR_PAIRS - 1, inclusive. + The foreground and background must be between 0 and COLORS - 1, + inclusive. If the color pair was previously initialized, the + screen is refreshed, and all occurrences of that color-pair are + changed to the new definition. + + has_colors() indicates if the terminal supports, and can + maniplulate color. It returns TRUE or FALSE. + + can_change_color() indicates if the terminal has the capability + to change the definition of its colors. + + pair_content() is used to determine what the colors of a given + color-pair consist of. + + assume_default_colors() and use_default_colors() emulate the + ncurses extensions of the same names. assume_default_colors(f, + b) is essentially the same as init_pair(0, f, b) (which isn't + allowed); it redefines the default colors. use_default_colors() + allows the use of -1 as a foreground or background color with + init_pair(), and calls assume_default_colors(-1, -1); -1 + represents the foreground or background color that the terminal + had at startup. If the environment variable PDC_ORIGINAL_COLORS + is set at the time start_color() is called, that's equivalent to + calling use_default_colors(). + + PDC_set_line_color() is used to set the color, globally, for + the color of the lines drawn for the attributes: A_UNDERLINE, + A_OVERLINE, A_LEFTLINE and A_RIGHTLINE. A value of -1 (the + default) indicates that the current foreground color should be + used. + + NOTE: COLOR_PAIR() and PAIR_NUMBER() are implemented as macros. + +### Return Value + + All functions return OK on success and ERR on error, except for + has_colors() and can_change_colors(), which return TRUE or FALSE. + +### Portability + X/Open BSD SYS V + start_color Y - 3.2 + init_pair Y - 3.2 + init_color Y - 3.2 + has_colors Y - 3.2 + can_change_color Y - 3.2 + color_content Y - 3.2 + pair_content Y - 3.2 + assume_default_colors - - - + use_default_colors - - - + PDC_set_line_color - - - + +**man-end****************************************************************/ + +#include +#include + +int COLORS = 0; +int COLOR_PAIRS = PDC_COLOR_PAIRS; + +bool pdc_color_started = FALSE; + +/* pair_set[] tracks whether a pair has been set via init_pair() */ + +static bool pair_set[PDC_COLOR_PAIRS]; +static bool default_colors = FALSE; +static short first_col = 0; + +int start_color(void) +{ + PDC_LOG(("start_color() - called\n")); + + if (SP->mono) + return ERR; + + pdc_color_started = TRUE; + + PDC_set_blink(FALSE); /* Also sets COLORS, to 8 or 16 */ + + if (!default_colors && SP->orig_attr && getenv("PDC_ORIGINAL_COLORS")) + default_colors = TRUE; + + PDC_init_atrtab(); + + memset(pair_set, 0, PDC_COLOR_PAIRS); + + return OK; +} + +static void _normalize(short *fg, short *bg) +{ + if (*fg == -1) + *fg = SP->orig_attr ? SP->orig_fore : COLOR_WHITE; + + if (*bg == -1) + *bg = SP->orig_attr ? SP->orig_back : COLOR_BLACK; +} + +int init_pair(short pair, short fg, short bg) +{ + PDC_LOG(("init_pair() - called: pair %d fg %d bg %d\n", pair, fg, bg)); + + if (!pdc_color_started || pair < 1 || pair >= COLOR_PAIRS || + fg < first_col || fg >= COLORS || bg < first_col || bg >= COLORS) + return ERR; + + _normalize(&fg, &bg); + + /* To allow the PDC_PRESERVE_SCREEN option to work, we only reset + curscr if this call to init_pair() alters a color pair created by + the user. */ + + if (pair_set[pair]) + { + short oldfg, oldbg; + + PDC_pair_content(pair, &oldfg, &oldbg); + + if (oldfg != fg || oldbg != bg) + curscr->_clear = TRUE; + } + + PDC_init_pair(pair, fg, bg); + + pair_set[pair] = TRUE; + + return OK; +} + +bool has_colors(void) +{ + PDC_LOG(("has_colors() - called\n")); + + return !(SP->mono); +} + +int init_color(short color, short red, short green, short blue) +{ + PDC_LOG(("init_color() - called\n")); + + if (color < 0 || color >= COLORS || !PDC_can_change_color() || + red < 0 || red > 1000 || green < 0 || green > 1000 || + blue < 0 || blue > 1000) + return ERR; + + return PDC_init_color(color, red, green, blue); +} + +int color_content(short color, short *red, short *green, short *blue) +{ + PDC_LOG(("color_content() - called\n")); + + if (color < 0 || color >= COLORS || !red || !green || !blue) + return ERR; + + if (PDC_can_change_color()) + return PDC_color_content(color, red, green, blue); + else + { + /* Simulated values for platforms that don't support palette + changing */ + + short maxval = (color & 8) ? 1000 : 680; + + *red = (color & COLOR_RED) ? maxval : 0; + *green = (color & COLOR_GREEN) ? maxval : 0; + *blue = (color & COLOR_BLUE) ? maxval : 0; + + return OK; + } +} + +bool can_change_color(void) +{ + PDC_LOG(("can_change_color() - called\n")); + + return PDC_can_change_color(); +} + +int pair_content(short pair, short *fg, short *bg) +{ + PDC_LOG(("pair_content() - called\n")); + + if (pair < 0 || pair >= COLOR_PAIRS || !fg || !bg) + return ERR; + + return PDC_pair_content(pair, fg, bg); +} + +int assume_default_colors(int f, int b) +{ + PDC_LOG(("assume_default_colors() - called: f %d b %d\n", f, b)); + + if (f < -1 || f >= COLORS || b < -1 || b >= COLORS) + return ERR; + + if (pdc_color_started) + { + short fg, bg, oldfg, oldbg; + + fg = f; + bg = b; + + _normalize(&fg, &bg); + + PDC_pair_content(0, &oldfg, &oldbg); + + if (oldfg != fg || oldbg != bg) + curscr->_clear = TRUE; + + PDC_init_pair(0, fg, bg); + } + + return OK; +} + +int use_default_colors(void) +{ + PDC_LOG(("use_default_colors() - called\n")); + + default_colors = TRUE; + first_col = -1; + + return assume_default_colors(-1, -1); +} + +int PDC_set_line_color(short color) +{ + PDC_LOG(("PDC_set_line_color() - called: %d\n", color)); + + if (color < -1 || color >= COLORS) + return ERR; + + SP->line_color = color; + + return OK; +} + +void PDC_init_atrtab(void) +{ + int i; + short fg, bg; + + if (pdc_color_started && !default_colors) + { + fg = COLOR_WHITE; + bg = COLOR_BLACK; + } + else + fg = bg = -1; + + _normalize(&fg, &bg); + + for (i = 0; i < PDC_COLOR_PAIRS; i++) + PDC_init_pair( (short)i, fg, bg); +} diff --git a/3rd-party/PDCurses/pdcurses/debug.c b/3rd-party/PDCurses/pdcurses/debug.c new file mode 100644 index 0000000..ed6b4b2 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/debug.c @@ -0,0 +1,109 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +debug +----- + +### Synopsis + + void traceon(void); + void traceoff(void); + void PDC_debug(const char *, ...); + +### Description + + traceon() and traceoff() toggle the recording of debugging + information to the file "trace". Although not standard, similar + functions are in some other curses implementations. + + PDC_debug() is the function that writes to the file, based on + whether traceon() has been called. It's used from the PDC_LOG() + macro. + + The environment variable PDC_TRACE_FLUSH controls whether the + trace file contents are fflushed after each write. The default + is not. Set it to 1 to enable this (may affect performance). + +### Portability + X/Open BSD SYS V + traceon - - - + traceoff - - - + PDC_debug - - - + +**man-end****************************************************************/ + +#include +#include +#include +#include + +FILE *pdc_dbfp = NULL; +static bool trace_on = FALSE; +static bool want_fflush = FALSE; + +void PDC_debug(const char *fmt, ...) +{ + va_list args; + char hms[9]; + time_t now; + + if( !trace_on) + return; + if (!pdc_dbfp) + { + pdc_dbfp = fopen("trace", "a"); + if (!pdc_dbfp) + { + fprintf(stderr, + "PDC_debug(): Unable to open debug log file\n"); + return; + } + } + + time(&now); + strftime(hms, 9, "%H:%M:%S", localtime(&now)); + fprintf(pdc_dbfp, "At: %8.8ld - %s ", (long) clock(), hms); + + va_start(args, fmt); + vfprintf(pdc_dbfp, fmt, args); + va_end(args); + + /* If you are crashing and losing debugging information, enable this + * by setting the environment variable PDC_TRACE_FLUSH to 1. This may + * impact performance. + */ + if (want_fflush) + fflush(pdc_dbfp); + + /* If with PDC_TRACE_FLUSH enabled you are still losing logging in + * crashes, you may need to add a platform-dependent mechanism to flush + * the OS buffers as well (such as fsync() on POSIX) -- but expect + * terrible performance. + */ +} + +void traceon(void) +{ + char *env; + + trace_on = TRUE; + if ((env = getenv("PDC_TRACE_FLUSH"))) + want_fflush = atoi(env); + + PDC_LOG(("traceon() - called\n")); +} + +void traceoff(void) +{ + if (!pdc_dbfp) + return; + + PDC_LOG(("traceoff() - called\n")); + + fclose(pdc_dbfp); + pdc_dbfp = NULL; + want_fflush = trace_on = FALSE; +} diff --git a/3rd-party/PDCurses/pdcurses/delch.c b/3rd-party/PDCurses/pdcurses/delch.c new file mode 100644 index 0000000..f55a28e --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/delch.c @@ -0,0 +1,96 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +delch +----- + +### Synopsis + + int delch(void); + int wdelch(WINDOW *win); + int mvdelch(int y, int x); + int mvwdelch(WINDOW *win, int y, int x); + +### Description + + The character under the cursor in the window is deleted. All + characters to the right on the same line are moved to the left + one position and the last character on the line is filled with + a blank. The cursor position does not change (after moving to + y, x if coordinates are specified). + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + delch Y Y Y + wdelch Y Y Y + mvdelch Y Y Y + mvwdelch Y Y Y + +**man-end****************************************************************/ + +#include + +int wdelch(WINDOW *win) +{ + int y, x, maxx; + chtype *temp1; + + PDC_LOG(("wdelch() - called\n")); + + if (!win) + return ERR; + + y = win->_cury; + x = win->_curx; + maxx = win->_maxx - 1; + temp1 = &win->_y[y][x]; + + memmove(temp1, temp1 + 1, (maxx - x) * sizeof(chtype)); + + /* wrs (4/10/93) account for window background */ + + win->_y[y][maxx] = win->_bkgd; + + win->_lastch[y] = maxx; + + if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x)) + win->_firstch[y] = x; + + PDC_sync(win); + + return OK; +} + +int delch(void) +{ + PDC_LOG(("delch() - called\n")); + + return wdelch(stdscr); +} + +int mvdelch(int y, int x) +{ + PDC_LOG(("mvdelch() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wdelch(stdscr); +} + +int mvwdelch(WINDOW *win, int y, int x) +{ + PDC_LOG(("mvwdelch() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wdelch(win); +} diff --git a/3rd-party/PDCurses/pdcurses/deleteln.c b/3rd-party/PDCurses/pdcurses/deleteln.c new file mode 100644 index 0000000..8274fc9 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/deleteln.c @@ -0,0 +1,211 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +deleteln +-------- + +### Synopsis + + int deleteln(void); + int wdeleteln(WINDOW *win); + int insdelln(int n); + int winsdelln(WINDOW *win, int n); + int insertln(void); + int winsertln(WINDOW *win); + + int mvdeleteln(int y, int x); + int mvwdeleteln(WINDOW *win, int y, int x); + int mvinsertln(int y, int x); + int mvwinsertln(WINDOW *win, int y, int x); + +### Description + + With the deleteln() and wdeleteln() functions, the line under + the cursor in the window is deleted. All lines below the + current line are moved up one line. The bottom line of the + window is cleared. The cursor position does not change. + + With the insertln() and winsertn() functions, a blank line is + inserted above the current line and the bottom line is lost. + + mvdeleteln(), mvwdeleteln(), mvinsertln() and mvwinsertln() + allow moving the cursor and inserting/deleting in one call. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + deleteln Y Y Y + wdeleteln Y Y Y + mvdeleteln - - - + mvwdeleteln - - - + insdelln Y - 4.0 + winsdelln Y - 4.0 + insertln Y Y Y + winsertln Y Y Y + mvinsertln - - - + mvwinsertln - - - + +**man-end****************************************************************/ + +int wdeleteln(WINDOW *win) +{ + chtype blank, *temp, *ptr; + int y; + + PDC_LOG(("wdeleteln() - called\n")); + + if (!win) + return ERR; + + /* wrs (4/10/93) account for window background */ + + blank = win->_bkgd; + + temp = win->_y[win->_cury]; + + for (y = win->_cury; y < win->_bmarg; y++) + { + win->_y[y] = win->_y[y + 1]; + win->_firstch[y] = 0; + win->_lastch[y] = win->_maxx - 1; + } + + for (ptr = temp; (ptr - temp < win->_maxx); ptr++) + *ptr = blank; /* make a blank line */ + + if (win->_cury <= win->_bmarg) + { + win->_firstch[win->_bmarg] = 0; + win->_lastch[win->_bmarg] = win->_maxx - 1; + win->_y[win->_bmarg] = temp; + } + + return OK; +} + +int deleteln(void) +{ + PDC_LOG(("deleteln() - called\n")); + + return wdeleteln(stdscr); +} + +int mvdeleteln(int y, int x) +{ + PDC_LOG(("mvdeleteln() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wdeleteln(stdscr); +} + +int mvwdeleteln(WINDOW *win, int y, int x) +{ + PDC_LOG(("mvwdeleteln() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wdeleteln(win); +} + +int winsdelln(WINDOW *win, int n) +{ + int i; + + PDC_LOG(("winsdelln() - called\n")); + + if (!win) + return ERR; + + if (n > 0) + { + for (i = 0; i < n; i++) + if (winsertln(win) == ERR) + return ERR; + } + else if (n < 0) + { + n = -n; + for (i = 0; i < n; i++) + if (wdeleteln(win) == ERR) + return ERR; + } + + return OK; +} + +int insdelln(int n) +{ + PDC_LOG(("insdelln() - called\n")); + + return winsdelln(stdscr, n); +} + +int winsertln(WINDOW *win) +{ + chtype blank, *temp, *end; + int y; + + PDC_LOG(("winsertln() - called\n")); + + if (!win) + return ERR; + + /* wrs (4/10/93) account for window background */ + + blank = win->_bkgd; + + temp = win->_y[win->_maxy - 1]; + + for (y = win->_maxy - 1; y > win->_cury; y--) + { + win->_y[y] = win->_y[y - 1]; + win->_firstch[y] = 0; + win->_lastch[y] = win->_maxx - 1; + } + + win->_y[win->_cury] = temp; + + for (end = &temp[win->_maxx - 1]; temp <= end; temp++) + *temp = blank; + + win->_firstch[win->_cury] = 0; + win->_lastch[win->_cury] = win->_maxx - 1; + + return OK; +} + +int insertln(void) +{ + PDC_LOG(("insertln() - called\n")); + + return winsertln(stdscr); +} + +int mvinsertln(int y, int x) +{ + PDC_LOG(("mvinsertln() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return winsertln(stdscr); +} + +int mvwinsertln(WINDOW *win, int y, int x) +{ + PDC_LOG(("mvwinsertln() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winsertln(win); +} diff --git a/3rd-party/PDCurses/pdcurses/deprec.c b/3rd-party/PDCurses/pdcurses/deprec.c new file mode 100644 index 0000000..a7c9a82 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/deprec.c @@ -0,0 +1,27 @@ +/* PDCurses */ + +#include + +/* Deprecated functions. These should not be used, and will eventually + be removed. They're here solely for the benefit of applications that + linked to them in older versions of PDCurses. */ + +bool PDC_check_bios_key(void) +{ + return PDC_check_key(); +} + +int PDC_get_bios_key(void) +{ + return PDC_get_key(); +} + +bool PDC_get_ctrl_break(void) +{ + return !SP->raw_inp; +} + +int PDC_set_ctrl_break(bool setting) +{ + return setting ? noraw() : raw(); +} diff --git a/3rd-party/PDCurses/pdcurses/getch.c b/3rd-party/PDCurses/pdcurses/getch.c new file mode 100644 index 0000000..5ea4814 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/getch.c @@ -0,0 +1,417 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +getch +----- + +### Synopsis + + int getch(void); + int wgetch(WINDOW *win); + int mvgetch(int y, int x); + int mvwgetch(WINDOW *win, int y, int x); + int ungetch(int ch); + int flushinp(void); + + int get_wch(wint_t *wch); + int wget_wch(WINDOW *win, wint_t *wch); + int mvget_wch(int y, int x, wint_t *wch); + int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch); + int unget_wch(const wchar_t wch); + + unsigned long PDC_get_key_modifiers(void); + int PDC_save_key_modifiers(bool flag); + int PDC_return_key_modifiers(bool flag); + +### Description + + With the getch(), wgetch(), mvgetch(), and mvwgetch() functions, a + character is read from the terminal associated with the window. In + nodelay mode, if there is no input waiting, the value ERR is + returned. In delay mode, the program will hang until the system + passes text through to the program. Depending on the setting of + cbreak(), this will be after one character or after the first + newline. Unless noecho() has been set, the character will also be + echoed into the designated window. + + If keypad() is TRUE, and a function key is pressed, the token for + that function key will be returned instead of the raw characters. + Possible function keys are defined in with integers + beginning with 0401, whose names begin with KEY_. + + If nodelay(win, TRUE) has been called on the window and no input is + waiting, the value ERR is returned. + + ungetch() places ch back onto the input queue to be returned by the + next call to wgetch(). + + flushinp() throws away any type-ahead that has been typed by the user + and has not yet been read by the program. + + wget_wch() is the wide-character version of wgetch(), available when + PDCurses is built with the PDC_WIDE option. It takes a pointer to a + wint_t rather than returning the key as an int, and instead returns + KEY_CODE_YES if the key is a function key. Otherwise, it returns OK + or ERR. It's important to check for KEY_CODE_YES, since regular wide + characters can have the same values as function key codes. + + unget_wch() puts a wide character on the input queue. + + PDC_get_key_modifiers() returns the keyboard modifiers (shift, + control, alt, numlock) effective at the time of the last getch() + call, if PDC_save_key_modifiers(TRUE) has been called before the + getch(). Use the macros PDC_KEY_MODIFIER_* to determine which + modifier(s) were set. PDC_return_key_modifiers() tells getch() to + return modifier keys pressed alone as keystrokes (KEY_ALT_L, etc.). + These may not work on all platforms. + + NOTE: getch() and ungetch() are implemented as macros, to avoid + conflict with many DOS compiler's runtime libraries. + +### Return Value + + These functions return ERR or the value of the character, meta + character or function key token. + +### Portability + X/Open ncurses NetBSD + getch Y Y Y + wgetch Y Y Y + mvgetch Y Y Y + mvwgetch Y Y Y + ungetch Y Y Y + flushinp Y Y Y + get_wch Y Y Y + wget_wch Y Y Y + mvget_wch Y Y Y + mvwget_wch Y Y Y + unget_wch Y Y Y + PDC_get_key_modifiers - - - + +**man-end****************************************************************/ + +#define _INBUFSIZ 512 /* size of terminal input buffer */ +#define NUNGETCH 256 /* max # chars to ungetch() */ + +static int c_pindex = 0; /* putter index */ +static int c_gindex = 1; /* getter index */ +static int c_ungind = 0; /* ungetch() push index */ +static int c_ungch[NUNGETCH]; /* array of ungotten chars */ + +static int _mouse_key(void) +{ + int i, key = KEY_MOUSE; + unsigned long mbe = SP->_trap_mbe; + + /* Filter unwanted mouse events */ + + for (i = 0; i < 3; i++) + { + if (pdc_mouse_status.changes & (1 << i)) + { + int shf = i * 5; + short button = pdc_mouse_status.button[i] & BUTTON_ACTION_MASK; + + if ( (!(mbe & (BUTTON1_PRESSED << shf)) && + (button == BUTTON_PRESSED)) + + || (!(mbe & (BUTTON1_CLICKED << shf)) && + (button == BUTTON_CLICKED)) + + || (!(mbe & (BUTTON1_DOUBLE_CLICKED << shf)) && + (button == BUTTON_DOUBLE_CLICKED)) + + /* added triple clicks 2011 jun 4: BJG */ + || (!(mbe & (BUTTON1_TRIPLE_CLICKED << shf)) && + (button == BUTTON_TRIPLE_CLICKED)) + + || (!(mbe & (BUTTON1_MOVED << shf)) && + (button == BUTTON_MOVED)) + + || (!(mbe & (BUTTON1_RELEASED << shf)) && + (button == BUTTON_RELEASED)) + ) + pdc_mouse_status.changes ^= (1 << i); + } + } + + if (pdc_mouse_status.changes & PDC_MOUSE_MOVED) + { + if (!(mbe & (BUTTON1_MOVED|BUTTON2_MOVED|BUTTON3_MOVED | REPORT_MOUSE_POSITION))) + pdc_mouse_status.changes ^= PDC_MOUSE_MOVED; + } + + if (pdc_mouse_status.changes & + (PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN)) + { + if (!(mbe & MOUSE_WHEEL_SCROLL)) + pdc_mouse_status.changes &= + ~(PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN); + } + + if (!pdc_mouse_status.changes) + return -1; + + /* Check for click in slk area */ + + i = PDC_mouse_in_slk(pdc_mouse_status.y, pdc_mouse_status.x); + + if (i) + { + if (pdc_mouse_status.button[0] & (BUTTON_PRESSED|BUTTON_CLICKED)) + key = KEY_F(i); + else + key = -1; + } + + return key; +} + +#define WAIT_FOREVER -1 + +int wgetch(WINDOW *win) +{ + static int buffer[_INBUFSIZ]; /* character buffer */ + int key, remaining_millisecs; + + PDC_LOG(("wgetch() - called\n")); + + if (!win) + return ERR; + + if (SP->delaytenths) + remaining_millisecs = 100 * SP->delaytenths; + else + remaining_millisecs = win->_delayms; + if( !remaining_millisecs && !win->_nodelay) + remaining_millisecs = WAIT_FOREVER; + + /* refresh window when wgetch is called if there have been changes + to it and it is not a pad */ + + if (!(win->_flags & _PAD) && ((!win->_leaveit && + (win->_begx + win->_curx != SP->curscol || + win->_begy + win->_cury != SP->cursrow)) || is_wintouched(win))) + wrefresh(win); + + /* if ungotten char exists, remove and return it */ + + if (c_ungind) + return c_ungch[--c_ungind]; + + /* if normal and data in buffer */ + + if ((!SP->raw_inp && !SP->cbreak) && (c_gindex < c_pindex)) + return buffer[c_gindex++]; + + /* prepare to buffer data */ + + c_pindex = 0; + c_gindex = 0; + + /* to get here, no keys are buffered. go and get one. */ + + for (;;) /* loop for any buffering */ + { + + /* is there a keystroke ready? */ + + if (!PDC_check_key()) + { + /* if not, handle timeout() and halfdelay() */ + int nap_time = 50; + + if (remaining_millisecs != WAIT_FOREVER) + { + if (!remaining_millisecs) + return ERR; + if( nap_time > remaining_millisecs) + nap_time = remaining_millisecs; + remaining_millisecs -= nap_time; + } + napms( nap_time); + continue; /* then check again */ + } + + /* if there is, fetch it */ + + key = PDC_get_key(); + + if (SP->key_code) + { + /* filter special keys if not in keypad mode */ + + if (!win->_use_keypad) + key = -1; + + /* filter mouse events; translate mouse clicks in the slk + area to function keys */ + + else if (key == KEY_MOUSE) + key = _mouse_key(); + } + + /* unwanted key? loop back */ + + if (key == -1) + continue; + + /* translate CR */ + + if (key == '\r' && SP->autocr && !SP->raw_inp) + key = '\n'; + + /* if echo is enabled */ + + if (SP->echo && !SP->key_code) + { + waddch(win, key); + wrefresh(win); + } + + /* if no buffering */ + + if (SP->raw_inp || SP->cbreak) + return key; + + /* if no overflow, put data in buffer */ + + if (key == '\b') + { + if (c_pindex > c_gindex) + c_pindex--; + } + else + if (c_pindex < _INBUFSIZ - 2) + buffer[c_pindex++] = key; + + /* if we got a line */ + + if (key == '\n' || key == '\r') + return buffer[c_gindex++]; + } +} + +int mvgetch(int y, int x) +{ + PDC_LOG(("mvgetch() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wgetch(stdscr); +} + +int mvwgetch(WINDOW *win, int y, int x) +{ + PDC_LOG(("mvwgetch() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wgetch(win); +} + +int PDC_ungetch(int ch) +{ + PDC_LOG(("ungetch() - called\n")); + + if (c_ungind >= NUNGETCH) /* pushback stack full */ + return ERR; + + c_ungch[c_ungind++] = ch; + + return OK; +} + +int flushinp(void) +{ + PDC_LOG(("flushinp() - called\n")); + + PDC_flushinp(); + + c_gindex = 1; /* set indices to kill buffer */ + c_pindex = 0; + c_ungind = 0; /* clear c_ungch array */ + + return OK; +} + +unsigned long PDC_get_key_modifiers(void) +{ + PDC_LOG(("PDC_get_key_modifiers() - called\n")); + + return pdc_key_modifiers; +} + +int PDC_save_key_modifiers(bool flag) +{ + PDC_LOG(("PDC_save_key_modifiers() - called\n")); + + SP->save_key_modifiers = flag; + return OK; +} + +int PDC_return_key_modifiers(bool flag) +{ + PDC_LOG(("PDC_return_key_modifiers() - called\n")); + + SP->return_key_modifiers = flag; + return PDC_modifiers_set(); +} + +#ifdef PDC_WIDE +int wget_wch(WINDOW *win, wint_t *wch) +{ + int key; + + PDC_LOG(("wget_wch() - called\n")); + + if (!wch) + return ERR; + + key = wgetch(win); + + if (key == ERR) + return ERR; + + *wch = key; + + return SP->key_code ? KEY_CODE_YES : OK; +} + +int get_wch(wint_t *wch) +{ + PDC_LOG(("get_wch() - called\n")); + + return wget_wch(stdscr, wch); +} + +int mvget_wch(int y, int x, wint_t *wch) +{ + PDC_LOG(("mvget_wch() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wget_wch(stdscr, wch); +} + +int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch) +{ + PDC_LOG(("mvwget_wch() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wget_wch(win, wch); +} + +int unget_wch(const wchar_t wch) +{ + return PDC_ungetch(wch); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/getstr.c b/3rd-party/PDCurses/pdcurses/getstr.c new file mode 100644 index 0000000..8282419 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/getstr.c @@ -0,0 +1,474 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +getstr +------ + +### Synopsis + + int getstr(char *str); + int wgetstr(WINDOW *win, char *str); + int mvgetstr(int y, int x, char *str); + int mvwgetstr(WINDOW *win, int y, int x, char *str); + int getnstr(char *str, int n); + int wgetnstr(WINDOW *win, char *str, int n); + int mvgetnstr(int y, int x, char *str, int n); + int mvwgetnstr(WINDOW *win, int y, int x, char *str, int n); + + int get_wstr(wint_t *wstr); + int wget_wstr(WINDOW *win, wint_t *wstr); + int mvget_wstr(int y, int x, wint_t *wstr); + int mvwget_wstr(WINDOW *win, int, int, wint_t *wstr); + int getn_wstr(wint_t *wstr, int n); + int wgetn_wstr(WINDOW *win, wint_t *wstr, int n); + int mvgetn_wstr(int y, int x, wint_t *wstr, int n); + int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n); + +### Description + + These routines call wgetch() repeatedly to build a string, + interpreting erase and kill characters along the way, until a + newline or carriage return is received. When PDCurses is built + with wide-character support enabled, the narrow-character + functions convert the wgetch()'d values into a multibyte string + in the current locale before returning it. The resulting string + is placed in the area pointed to by *str. The routines with n as + the last argument read at most n characters. + + Note that there's no way to know how long the buffer passed to + wgetstr() is, so use wgetnstr() to avoid buffer overflows. + +### Return Value + + These functions return ERR on failure or any other value on + success. + +### Portability + X/Open BSD SYS V + getstr Y Y Y + wgetstr Y Y Y + mvgetstr Y Y Y + mvwgetstr Y Y Y + getnstr Y - 4.0 + wgetnstr Y - 4.0 + mvgetnstr Y - - + mvwgetnstr Y - - + get_wstr Y + wget_wstr Y + mvget_wstr Y + mvwget_wstr Y + getn_wstr Y + wgetn_wstr Y + mvgetn_wstr Y + mvwgetn_wstr Y + +**man-end****************************************************************/ + +#define MAXLINE 255 + +int wgetnstr(WINDOW *win, char *str, int n) +{ +#ifdef PDC_WIDE + wchar_t wstr[MAXLINE + 1]; + + if (n < 0 || n > MAXLINE) + n = MAXLINE; + + if (wgetn_wstr(win, (wint_t *)wstr, n) == ERR) + return ERR; + + return (int)PDC_wcstombs(str, wstr, n); +#else + int ch, i, num, x, chars; + char *p; + bool stop, oldecho, oldcbreak, oldnodelay; + + PDC_LOG(("wgetnstr() - called\n")); + + if (!win || !str) + return ERR; + + chars = 0; + p = str; + stop = FALSE; + + x = win->_curx; + + oldcbreak = SP->cbreak; /* remember states */ + oldecho = SP->echo; + oldnodelay = win->_nodelay; + + SP->echo = FALSE; /* we do echo ourselves */ + cbreak(); /* ensure each key is returned immediately */ + win->_nodelay = FALSE; /* don't return -1 */ + + wrefresh(win); + + while (!stop) + { + ch = wgetch(win); + + switch (ch) + { + + case '\t': + ch = ' '; + num = TABSIZE - (win->_curx - x) % TABSIZE; + for (i = 0; i < num; i++) + { + if (chars < n) + { + if (oldecho) + waddch(win, ch); + *p++ = (char)ch; + ++chars; + } + else + beep(); + } + break; + + case _ECHAR: /* CTRL-H -- Delete character */ + if (p > str) + { + if (oldecho) + waddstr(win, "\b \b"); + ch = (unsigned char)(*--p); + if ((ch < ' ') && (oldecho)) + waddstr(win, "\b \b"); + chars--; + } + break; + + case _DLCHAR: /* CTRL-U -- Delete line */ + while (p > str) + { + if (oldecho) + waddstr(win, "\b \b"); + ch = (unsigned char)(*--p); + if ((ch < ' ') && (oldecho)) + waddstr(win, "\b \b"); + } + chars = 0; + break; + + case _DWCHAR: /* CTRL-W -- Delete word */ + + while ((p > str) && (*(p - 1) == ' ')) + { + if (oldecho) + waddstr(win, "\b \b"); + + --p; /* remove space */ + chars--; + } + while ((p > str) && (*(p - 1) != ' ')) + { + if (oldecho) + waddstr(win, "\b \b"); + + ch = (unsigned char)(*--p); + if ((ch < ' ') && (oldecho)) + waddstr(win, "\b \b"); + chars--; + } + break; + + case '\n': + case '\r': + stop = TRUE; + if (oldecho) + waddch(win, '\n'); + break; + + default: + if (chars < n) + { + if (!SP->key_code && ch < 0x100) + { + *p++ = (char)ch; + if (oldecho) + waddch(win, ch); + chars++; + } + } + else + beep(); + + break; + + } + + wrefresh(win); + } + + *p = '\0'; + + SP->echo = oldecho; /* restore old settings */ + SP->cbreak = oldcbreak; + win->_nodelay = oldnodelay; + + return OK; +#endif +} + +int getstr(char *str) +{ + PDC_LOG(("getstr() - called\n")); + + return wgetnstr(stdscr, str, MAXLINE); +} + +int wgetstr(WINDOW *win, char *str) +{ + PDC_LOG(("wgetstr() - called\n")); + + return wgetnstr(win, str, MAXLINE); +} + +int mvgetstr(int y, int x, char *str) +{ + PDC_LOG(("mvgetstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wgetnstr(stdscr, str, MAXLINE); +} + +int mvwgetstr(WINDOW *win, int y, int x, char *str) +{ + PDC_LOG(("mvwgetstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wgetnstr(win, str, MAXLINE); +} + +int getnstr(char *str, int n) +{ + PDC_LOG(("getnstr() - called\n")); + + return wgetnstr(stdscr, str, n); +} + +int mvgetnstr(int y, int x, char *str, int n) +{ + PDC_LOG(("mvgetnstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wgetnstr(stdscr, str, n); +} + +int mvwgetnstr(WINDOW *win, int y, int x, char *str, int n) +{ + PDC_LOG(("mvwgetnstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wgetnstr(win, str, n); +} + +#ifdef PDC_WIDE +int wgetn_wstr(WINDOW *win, wint_t *wstr, int n) +{ + int ch, i, num, x, chars; + wint_t *p; + bool stop, oldecho, oldcbreak, oldnodelay; + + PDC_LOG(("wgetn_wstr() - called\n")); + + if (!win || !wstr) + return ERR; + + chars = 0; + p = wstr; + stop = FALSE; + + x = win->_curx; + + oldcbreak = SP->cbreak; /* remember states */ + oldecho = SP->echo; + oldnodelay = win->_nodelay; + + SP->echo = FALSE; /* we do echo ourselves */ + cbreak(); /* ensure each key is returned immediately */ + win->_nodelay = FALSE; /* don't return -1 */ + + wrefresh(win); + + while (!stop) + { + ch = wgetch(win); + + switch (ch) + { + + case '\t': + ch = ' '; + num = TABSIZE - (win->_curx - x) % TABSIZE; + for (i = 0; i < num; i++) + { + if (chars < n) + { + if (oldecho) + waddch(win, ch); + *p++ = ch; + ++chars; + } + else + beep(); + } + break; + + case _ECHAR: /* CTRL-H -- Delete character */ + if (p > wstr) + { + if (oldecho) + waddstr(win, "\b \b"); + ch = *--p; + if ((ch < ' ') && (oldecho)) + waddstr(win, "\b \b"); + chars--; + } + break; + + case _DLCHAR: /* CTRL-U -- Delete line */ + while (p > wstr) + { + if (oldecho) + waddstr(win, "\b \b"); + ch = *--p; + if ((ch < ' ') && (oldecho)) + waddstr(win, "\b \b"); + } + chars = 0; + break; + + case _DWCHAR: /* CTRL-W -- Delete word */ + + while ((p > wstr) && (*(p - 1) == ' ')) + { + if (oldecho) + waddstr(win, "\b \b"); + + --p; /* remove space */ + chars--; + } + while ((p > wstr) && (*(p - 1) != ' ')) + { + if (oldecho) + waddstr(win, "\b \b"); + + ch = *--p; + if ((ch < ' ') && (oldecho)) + waddstr(win, "\b \b"); + chars--; + } + break; + + case '\n': + case '\r': + stop = TRUE; + if (oldecho) + waddch(win, '\n'); + break; + + default: + if (chars < n) + { + if (!SP->key_code) + { + *p++ = ch; + if (oldecho) + waddch(win, ch); + chars++; + } + } + else + beep(); + + break; + + } + + wrefresh(win); + } + + *p = '\0'; + + SP->echo = oldecho; /* restore old settings */ + SP->cbreak = oldcbreak; + win->_nodelay = oldnodelay; + + return OK; +} + +int get_wstr(wint_t *wstr) +{ + PDC_LOG(("get_wstr() - called\n")); + + return wgetn_wstr(stdscr, wstr, MAXLINE); +} + +int wget_wstr(WINDOW *win, wint_t *wstr) +{ + PDC_LOG(("wget_wstr() - called\n")); + + return wgetn_wstr(win, wstr, MAXLINE); +} + +int mvget_wstr(int y, int x, wint_t *wstr) +{ + PDC_LOG(("mvget_wstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wgetn_wstr(stdscr, wstr, MAXLINE); +} + +int mvwget_wstr(WINDOW *win, int y, int x, wint_t *wstr) +{ + PDC_LOG(("mvwget_wstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wgetn_wstr(win, wstr, MAXLINE); +} + +int getn_wstr(wint_t *wstr, int n) +{ + PDC_LOG(("getn_wstr() - called\n")); + + return wgetn_wstr(stdscr, wstr, n); +} + +int mvgetn_wstr(int y, int x, wint_t *wstr, int n) +{ + PDC_LOG(("mvgetn_wstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wgetn_wstr(stdscr, wstr, n); +} + +int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n) +{ + PDC_LOG(("mvwgetn_wstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wgetn_wstr(win, wstr, n); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/getyx.c b/3rd-party/PDCurses/pdcurses/getyx.c new file mode 100644 index 0000000..2681865 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/getyx.c @@ -0,0 +1,139 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +getyx +----- + +### Synopsis + + void getyx(WINDOW *win, int y, int x); + void getparyx(WINDOW *win, int y, int x); + void getbegyx(WINDOW *win, int y, int x); + void getmaxyx(WINDOW *win, int y, int x); + + void getsyx(int y, int x); + void setsyx(int y, int x); + + int getbegy(WINDOW *win); + int getbegx(WINDOW *win); + int getcury(WINDOW *win); + int getcurx(WINDOW *win); + int getpary(WINDOW *win); + int getparx(WINDOW *win); + int getmaxy(WINDOW *win); + int getmaxx(WINDOW *win); + +### Description + + The getyx() macro (defined in curses.h -- the prototypes here + are merely illustrative) puts the current cursor position of the + specified window into y and x. getbegyx() and getmaxyx() return + the starting coordinates and size of the specified window, + respectively. getparyx() returns the starting coordinates of the + parent's window, if the specified window is a subwindow; + otherwise it sets y and x to -1. These are all macros. + + getsyx() gets the coordinates of the virtual screen cursor, and + stores them in y and x. If leaveok() is TRUE, it returns -1, -1. + If lines have been removed with ripoffline(), then getsyx() + includes these lines in its count; so, the returned y and x + values should only be used with setsyx(). + + setsyx() sets the virtual screen cursor to the y, x coordinates. + If either y or x is -1, leaveok() is set TRUE, else it's set FALSE. + + getsyx() and setsyx() are meant to be used by a library routine + that manipulates curses windows without altering the position of + the cursor. Note that getsyx() is defined only as a macro. + + getbegy(), getbegx(), getcurx(), getcury(), getmaxy(), + getmaxx(), getpary(), and getparx() return the appropriate + coordinate or size values, or ERR in the case of a NULL window. + +### Portability + X/Open BSD SYS V + getyx Y Y Y + getparyx - - 4.0 + getbegyx - - 3.0 + getmaxyx - - 3.0 + getsyx - - 3.0 + setsyx - - 3.0 + getbegy - - - + getbegx - - - + getcury - - - + getcurx - - - + getpary - - - + getparx - - - + getmaxy - - - + getmaxx - - - + +**man-end****************************************************************/ + +int getbegy(WINDOW *win) +{ + PDC_LOG(("getbegy() - called\n")); + + return win ? win->_begy : ERR; +} + +int getbegx(WINDOW *win) +{ + PDC_LOG(("getbegx() - called\n")); + + return win ? win->_begx : ERR; +} + +int getcury(WINDOW *win) +{ + PDC_LOG(("getcury() - called\n")); + + return win ? win->_cury : ERR; +} + +int getcurx(WINDOW *win) +{ + PDC_LOG(("getcurx() - called\n")); + + return win ? win->_curx : ERR; +} + +int getpary(WINDOW *win) +{ + PDC_LOG(("getpary() - called\n")); + + return win ? win->_pary : ERR; +} + +int getparx(WINDOW *win) +{ + PDC_LOG(("getparx() - called\n")); + + return win ? win->_parx : ERR; +} + +int getmaxy(WINDOW *win) +{ + PDC_LOG(("getmaxy() - called\n")); + + return win ? win->_maxy : ERR; +} + +int getmaxx(WINDOW *win) +{ + PDC_LOG(("getmaxx() - called\n")); + + return win ? win->_maxx : ERR; +} + +void setsyx(int y, int x) +{ + PDC_LOG(("setsyx() - called\n")); + + curscr->_leaveit = y == -1 || x == -1; + + if (!curscr->_leaveit) + wmove(curscr, y, x); +} diff --git a/3rd-party/PDCurses/pdcurses/inch.c b/3rd-party/PDCurses/pdcurses/inch.c new file mode 100644 index 0000000..47c1636 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/inch.c @@ -0,0 +1,127 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +inch +---- + +### Synopsis + + chtype inch(void); + chtype winch(WINDOW *win); + chtype mvinch(int y, int x); + chtype mvwinch(WINDOW *win, int y, int x); + + int in_wch(cchar_t *wcval); + int win_wch(WINDOW *win, cchar_t *wcval); + int mvin_wch(int y, int x, cchar_t *wcval); + int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval); + +### Description + + The inch() functions retrieve the character and attribute from + the current or specified window position, in the form of a + chtype. If a NULL window is specified, (chtype)ERR is returned. + + The in_wch() functions are the wide-character versions; instead + of returning a chtype, they store a cchar_t at the address + specified by wcval, and return OK or ERR. (No value is stored + when ERR is returned.) Note that in PDCurses, chtype and cchar_t + are the same. + +### Portability + X/Open BSD SYS V + inch Y Y Y + winch Y Y Y + mvinch Y Y Y + mvwinch Y Y Y + in_wch Y + win_wch Y + mvin_wch Y + mvwin_wch Y + +**man-end****************************************************************/ + +chtype winch(WINDOW *win) +{ + PDC_LOG(("winch() - called\n")); + + if (!win) + return (chtype)ERR; + + return win->_y[win->_cury][win->_curx]; +} + +chtype inch(void) +{ + PDC_LOG(("inch() - called\n")); + + return winch(stdscr); +} + +chtype mvinch(int y, int x) +{ + PDC_LOG(("mvinch() - called\n")); + + if (move(y, x) == ERR) + return (chtype)ERR; + + return stdscr->_y[stdscr->_cury][stdscr->_curx]; +} + +chtype mvwinch(WINDOW *win, int y, int x) +{ + PDC_LOG(("mvwinch() - called\n")); + + if (wmove(win, y, x) == ERR) + return (chtype)ERR; + + return win->_y[win->_cury][win->_curx]; +} + +#ifdef PDC_WIDE +int win_wch(WINDOW *win, cchar_t *wcval) +{ + PDC_LOG(("win_wch() - called\n")); + + if (!win || !wcval) + return ERR; + + *wcval = win->_y[win->_cury][win->_curx]; + + return OK; +} + +int in_wch(cchar_t *wcval) +{ + PDC_LOG(("in_wch() - called\n")); + + return win_wch(stdscr, wcval); +} + +int mvin_wch(int y, int x, cchar_t *wcval) +{ + PDC_LOG(("mvin_wch() - called\n")); + + if (!wcval || (move(y, x) == ERR)) + return ERR; + + *wcval = stdscr->_y[stdscr->_cury][stdscr->_curx]; + + return OK; +} + +int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval) +{ + PDC_LOG(("mvwin_wch() - called\n")); + + if (!wcval || (wmove(win, y, x) == ERR)) + return ERR; + + *wcval = win->_y[win->_cury][win->_curx]; + + return OK; +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/inchstr.c b/3rd-party/PDCurses/pdcurses/inchstr.c new file mode 100644 index 0000000..b107fb0 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/inchstr.c @@ -0,0 +1,214 @@ +/* Public Domain Curses */ + +#include + +/*man-start************************************************************** + +inchstr +------- + +### Synopsis + + int inchstr(chtype *ch); + int inchnstr(chtype *ch, int n); + int winchstr(WINDOW *win, chtype *ch); + int winchnstr(WINDOW *win, chtype *ch, int n); + int mvinchstr(int y, int x, chtype *ch); + int mvinchnstr(int y, int x, chtype *ch, int n); + int mvwinchstr(WINDOW *, int y, int x, chtype *ch); + int mvwinchnstr(WINDOW *, int y, int x, chtype *ch, int n); + + int in_wchstr(cchar_t *wch); + int in_wchnstr(cchar_t *wch, int n); + int win_wchstr(WINDOW *win, cchar_t *wch); + int win_wchnstr(WINDOW *win, cchar_t *wch, int n); + int mvin_wchstr(int y, int x, cchar_t *wch); + int mvin_wchnstr(int y, int x, cchar_t *wch, int n); + int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wch); + int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wch, int n); + +### Description + + These routines read a chtype or cchar_t string from the window, + starting at the current or specified position, and ending at the + right margin, or after n elements, whichever is less. + +### Return Value + + All functions return the number of elements read, or ERR on + error. + +### Portability + X/Open BSD SYS V + inchstr Y - 4.0 + winchstr Y - 4.0 + mvinchstr Y - 4.0 + mvwinchstr Y - 4.0 + inchnstr Y - 4.0 + winchnstr Y - 4.0 + mvinchnstr Y - 4.0 + mvwinchnstr Y - 4.0 + in_wchstr Y + win_wchstr Y + mvin_wchstr Y + mvwin_wchstr Y + in_wchnstr Y + win_wchnstr Y + mvin_wchnstr Y + mvwin_wchnstr Y + +**man-end****************************************************************/ + +int winchnstr(WINDOW *win, chtype *ch, int n) +{ + chtype *src; + int i; + + PDC_LOG(("winchnstr() - called\n")); + + if (!win || !ch || n < 0) + return ERR; + + if ((win->_curx + n) > win->_maxx) + n = win->_maxx - win->_curx; + + src = win->_y[win->_cury] + win->_curx; + + for (i = 0; i < n; i++) + *ch++ = *src++; + + *ch = (chtype)0; + + return OK; +} + +int inchstr(chtype *ch) +{ + PDC_LOG(("inchstr() - called\n")); + + return winchnstr(stdscr, ch, stdscr->_maxx - stdscr->_curx); +} + +int winchstr(WINDOW *win, chtype *ch) +{ + PDC_LOG(("winchstr() - called\n")); + + return winchnstr(win, ch, win->_maxx - win->_curx); +} + +int mvinchstr(int y, int x, chtype *ch) +{ + PDC_LOG(("mvinchstr() - called: y %d x %d\n", y, x)); + + if (move(y, x) == ERR) + return ERR; + + return winchnstr(stdscr, ch, stdscr->_maxx - stdscr->_curx); +} + +int mvwinchstr(WINDOW *win, int y, int x, chtype *ch) +{ + PDC_LOG(("mvwinchstr() - called:\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winchnstr(win, ch, win->_maxx - win->_curx); +} + +int inchnstr(chtype *ch, int n) +{ + PDC_LOG(("inchnstr() - called\n")); + + return winchnstr(stdscr, ch, n); +} + +int mvinchnstr(int y, int x, chtype *ch, int n) +{ + PDC_LOG(("mvinchnstr() - called: y %d x %d n %d\n", y, x, n)); + + if (move(y, x) == ERR) + return ERR; + + return winchnstr(stdscr, ch, n); +} + +int mvwinchnstr(WINDOW *win, int y, int x, chtype *ch, int n) +{ + PDC_LOG(("mvwinchnstr() - called: y %d x %d n %d \n", y, x, n)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winchnstr(win, ch, n); +} + +#ifdef PDC_WIDE +int win_wchnstr(WINDOW *win, cchar_t *wch, int n) +{ + PDC_LOG(("win_wchnstr() - called\n")); + + return winchnstr(win, wch, n); +} + +int in_wchstr(cchar_t *wch) +{ + PDC_LOG(("in_wchstr() - called\n")); + + return win_wchnstr(stdscr, wch, stdscr->_maxx - stdscr->_curx); +} + +int win_wchstr(WINDOW *win, cchar_t *wch) +{ + PDC_LOG(("win_wchstr() - called\n")); + + return win_wchnstr(win, wch, win->_maxx - win->_curx); +} + +int mvin_wchstr(int y, int x, cchar_t *wch) +{ + PDC_LOG(("mvin_wchstr() - called: y %d x %d\n", y, x)); + + if (move(y, x) == ERR) + return ERR; + + return win_wchnstr(stdscr, wch, stdscr->_maxx - stdscr->_curx); +} + +int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wch) +{ + PDC_LOG(("mvwin_wchstr() - called:\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return win_wchnstr(win, wch, win->_maxx - win->_curx); +} + +int in_wchnstr(cchar_t *wch, int n) +{ + PDC_LOG(("in_wchnstr() - called\n")); + + return win_wchnstr(stdscr, wch, n); +} + +int mvin_wchnstr(int y, int x, cchar_t *wch, int n) +{ + PDC_LOG(("mvin_wchnstr() - called: y %d x %d n %d\n", y, x, n)); + + if (move(y, x) == ERR) + return ERR; + + return win_wchnstr(stdscr, wch, n); +} + +int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wch, int n) +{ + PDC_LOG(("mvwinchnstr() - called: y %d x %d n %d \n", y, x, n)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return win_wchnstr(win, wch, n); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/initscr.c b/3rd-party/PDCurses/pdcurses/initscr.c new file mode 100644 index 0000000..0d63e9d --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/initscr.c @@ -0,0 +1,367 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +initscr +------- + +### Synopsis + + WINDOW *initscr(void); + WINDOW *Xinitscr(int argc, char *argv[]); + int endwin(void); + bool isendwin(void); + SCREEN *newterm(const char *type, FILE *outfd, FILE *infd); + SCREEN *set_term(SCREEN *new); + void delscreen(SCREEN *sp); + + int resize_term(int nlines, int ncols); + bool is_termresized(void); + const char *curses_version(void); + +### Description + + initscr() should be the first curses routine called. It will + initialize all curses data structures, and arrange that the + first call to refresh() will clear the screen. In case of + error, initscr() will write a message to standard error and end + the program. + + endwin() should be called before exiting or escaping from curses + mode temporarily. It will restore tty modes, move the cursor to + the lower left corner of the screen and reset the terminal into + the proper non-visual mode. To resume curses after a temporary + escape, call refresh() or doupdate(). + + isendwin() returns TRUE if endwin() has been called without a + subsequent refresh, unless SP is NULL. + + In some implementations of curses, newterm() allows the use of + multiple terminals. Here, it's just an alternative interface for + initscr(). It always returns SP, or NULL. + + delscreen() frees the memory allocated by newterm() or + initscr(), since it's not freed by endwin(). This function is + usually not needed. In PDCurses, the parameter must be the + value of SP, and delscreen() sets SP to NULL. + + set_term() does nothing meaningful in PDCurses, but is included + for compatibility with other curses implementations. + + resize_term() is effectively two functions: When called with + nonzero values for nlines and ncols, it attempts to resize the + screen to the given size. On some platforms, you can do this + before calling initscr(), thereby setting the starting screen + size. When called with (0, 0), it merely adjusts the internal + structures to match the current size after the screen is + resized by the user. User, pre-initscr(), and programmatic + resizing is platform-dependent, as follows (with ncurses added + as a "platform" for comparison; it supports only user resizing.) + + Platform User Init Programmatic + DOS - - x + ncurses x - - + OS/2 - - x + SDL1 x x x + SDL2 x x x + VT x x x + Wincon x - x + WinGUI x x x + X11 x x - + + If you want to support user resizing, you should check for getch() + returning KEY_RESIZE, and/or call is_termresized() at appropriate + times; if either condition occurs, call resize_term(0, 0). Then, + with either user or programmatic resizing, you'll have to resize + any windows you've created, as appropriate; resize_term() only + handles stdscr and curscr. + + is_termresized() returns TRUE if the curses screen has been + resized by the user, and a call to resize_term() is needed. + Checking for KEY_RESIZE is generally preferable, unless you're + not handling the keyboard. + + curses_version() returns a string describing the version of + PDCurses. + +### Return Value + + All functions return NULL on error, except endwin(), which always + returns OK, and resize_term(), which returns either OK or ERR. + +### Portability + X/Open BSD SYS V + initscr Y Y Y + endwin Y Y Y + isendwin Y - 3.0 + newterm Y - Y + set_term Y - Y + delscreen Y - 4.0 + resize_term - - - + is_termresized - - - + curses_version - - - + +**man-end****************************************************************/ + +#include + +char ttytype[128]; + +#define PDC_STR( x) #x +#define PDC_str( x) PDC_STR( x) + +static const char *_curses_notice = + "PDCurses " PDC_str(PDC_VER_MAJOR) "." + PDC_str(PDC_VER_MINOR) "." + PDC_str(PDC_VER_CHANGE) " - Public Domain " + PDC_str(PDC_VER_YEAR) "-" + PDC_str(PDC_VER_MONTH) "-" + PDC_str(PDC_VER_DAY); + +SCREEN *SP = (SCREEN*)NULL; /* curses variables */ +WINDOW *curscr = (WINDOW *)NULL; /* the current screen image */ +WINDOW *stdscr = (WINDOW *)NULL; /* the default screen window */ +WINDOW *pdc_lastscr = (WINDOW *)NULL; /* the last screen image */ + +int LINES = 0; /* current terminal height */ +int COLS = 0; /* current terminal width */ +int TABSIZE = 8; + +MOUSE_STATUS Mouse_status, pdc_mouse_status; + +extern RIPPEDOFFLINE linesripped[5]; +extern char linesrippedoff; + +WINDOW *Xinitscr(int argc, char *argv[]) +{ + int i; + + PDC_LOG(("Xinitscr() - called\n")); + + if (SP && SP->alive) + return NULL; + + if (PDC_scr_open(argc, argv) == ERR) + { + fprintf(stderr, "initscr(): Unable to create SP\n"); + exit(8); + } + + SP->autocr = TRUE; /* cr -> lf by default */ + SP->raw_out = FALSE; /* tty I/O modes */ + SP->raw_inp = FALSE; /* tty I/O modes */ + SP->cbreak = TRUE; + SP->save_key_modifiers = FALSE; + SP->return_key_modifiers = FALSE; + SP->echo = TRUE; + SP->visibility = 1; + SP->resized = FALSE; + SP->_trap_mbe = 0L; + SP->_map_mbe_to_key = 0L; + SP->linesrippedoff = 0; + SP->linesrippedoffontop = 0; + SP->delaytenths = 0; + SP->line_color = -1; + + SP->orig_cursor = PDC_get_cursor_mode(); + + LINES = SP->lines; + COLS = SP->cols; + + if (LINES < 2 || COLS < 2) + { + fprintf(stderr, "initscr(): LINES=%d COLS=%d: too small.\n", + LINES, COLS); + exit(4); + } + + if ((curscr = newwin(LINES, COLS, 0, 0)) == (WINDOW *)NULL) + { + fprintf(stderr, "initscr(): Unable to create curscr.\n"); + exit(2); + } + + if ((pdc_lastscr = newwin(LINES, COLS, 0, 0)) == (WINDOW *)NULL) + { + fprintf(stderr, "initscr(): Unable to create pdc_lastscr.\n"); + exit(2); + } + + wattrset(pdc_lastscr, (chtype)(-1)); + werase(pdc_lastscr); + + PDC_slk_initialize(); + LINES -= SP->slklines; + + /* We have to sort out ripped off lines here, and reduce the height + of stdscr by the number of lines ripped off */ + + for (i = 0; i < linesrippedoff; i++) + { + if (linesripped[i].line < 0) + (*linesripped[i].init)(newwin(1, COLS, LINES - 1, 0), COLS); + else + (*linesripped[i].init)(newwin(1, COLS, + SP->linesrippedoffontop++, 0), COLS); + + SP->linesrippedoff++; + LINES--; + } + + linesrippedoff = 0; + + if (!(stdscr = newwin(LINES, COLS, SP->linesrippedoffontop, 0))) + { + fprintf(stderr, "initscr(): Unable to create stdscr.\n"); + exit(1); + } + + wclrtobot(stdscr); + + /* If preserving the existing screen, don't allow a screen clear */ + + if (SP->_preserve) + { + untouchwin(curscr); + untouchwin(stdscr); + stdscr->_clear = FALSE; + curscr->_clear = FALSE; + } + else + curscr->_clear = TRUE; + + PDC_init_atrtab(); /* set up default colors */ + + MOUSE_X_POS = MOUSE_Y_POS = -1; + BUTTON_STATUS(1) = BUTTON_RELEASED; + BUTTON_STATUS(2) = BUTTON_RELEASED; + BUTTON_STATUS(3) = BUTTON_RELEASED; + Mouse_status.changes = 0; + + SP->alive = TRUE; + + def_shell_mode(); + + longname( ); /* to ensure that ttytype is initialized */ + + return stdscr; +} + +WINDOW *initscr(void) +{ + PDC_LOG(("initscr() - called\n")); + + return Xinitscr(0, NULL); +} + +int endwin(void) +{ + PDC_LOG(("endwin() - called\n")); + + /* Allow temporary exit from curses using endwin() */ + + def_prog_mode(); + PDC_scr_close(); + + SP->alive = FALSE; + + return OK; +} + +bool isendwin(void) +{ + PDC_LOG(("isendwin() - called\n")); + + return SP ? !(SP->alive) : FALSE; +} + +SCREEN *newterm(const char *type, FILE *outfd, FILE *infd) +{ + PDC_LOG(("newterm() - called\n")); + + return Xinitscr(0, NULL) ? SP : NULL; +} + +SCREEN *set_term(SCREEN *new) +{ + PDC_LOG(("set_term() - called\n")); + + /* We only support one screen */ + + return (new == SP) ? SP : NULL; +} + +void delscreen(SCREEN *sp) +{ + PDC_LOG(("delscreen() - called\n")); + + if (sp != SP) + return; + + PDC_slk_free(); /* free the soft label keys, if needed */ + + delwin(stdscr); + delwin(curscr); + delwin(pdc_lastscr); + stdscr = (WINDOW *)NULL; + curscr = (WINDOW *)NULL; + pdc_lastscr = (WINDOW *)NULL; + + SP->alive = FALSE; + + PDC_scr_free(); /* free SP and pdc_atrtab */ + + SP = (SCREEN *)NULL; +} + +int resize_term(int nlines, int ncols) +{ + PDC_LOG(("resize_term() - called: nlines %d\n", nlines)); + + if( PDC_resize_screen(nlines, ncols) == ERR) + return ERR; + + if (!stdscr) + return OK; + + SP->lines = PDC_get_rows(); + LINES = SP->lines - SP->linesrippedoff - SP->slklines; + SP->cols = COLS = PDC_get_columns(); + + if (wresize(curscr, SP->lines, SP->cols) == ERR || + wresize(stdscr, LINES, COLS) == ERR || + wresize(pdc_lastscr, SP->lines, SP->cols) == ERR) + return ERR; + + werase(pdc_lastscr); + curscr->_clear = TRUE; + + if (SP->slk_winptr) + { + if (wresize(SP->slk_winptr, SP->slklines, COLS) == ERR) + return ERR; + + wmove(SP->slk_winptr, 0, 0); + wclrtobot(SP->slk_winptr); + PDC_slk_initialize(); + slk_noutrefresh(); + } + + touchwin(stdscr); + wnoutrefresh(stdscr); + return OK; +} + +bool is_termresized(void) +{ + PDC_LOG(("is_termresized() - called\n")); + + return SP->resized; +} + +const char *curses_version(void) +{ + return _curses_notice; +} diff --git a/3rd-party/PDCurses/pdcurses/inopts.c b/3rd-party/PDCurses/pdcurses/inopts.c new file mode 100644 index 0000000..6c730c8 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/inopts.c @@ -0,0 +1,324 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +inopts +------ + +### Synopsis + + int cbreak(void); + int nocbreak(void); + int echo(void); + int noecho(void); + int halfdelay(int tenths); + int intrflush(WINDOW *win, bool bf); + int keypad(WINDOW *win, bool bf); + int meta(WINDOW *win, bool bf); + int nl(void); + int nonl(void); + int nodelay(WINDOW *win, bool bf); + int notimeout(WINDOW *win, bool bf); + int raw(void); + int noraw(void); + void noqiflush(void); + void qiflush(void); + void timeout(int delay); + void wtimeout(WINDOW *win, int delay); + int typeahead(int fildes); + + int crmode(void); + int nocrmode(void); + +### Description + + cbreak() and nocbreak() toggle cbreak mode. In cbreak mode, + characters typed by the user are made available immediately, and + erase/kill character processing is not performed. In nocbreak + mode, typed characters are buffered until a newline or carriage + return. Interrupt and flow control characters are unaffected by + this mode. PDCurses always starts in cbreak mode. + + echo() and noecho() control whether typed characters are echoed + by the input routine. Initially, input characters are echoed. + Subsequent calls to echo() and noecho() do not flush type-ahead. + + halfdelay() is similar to cbreak(), but allows for a time limit + to be specified, in tenths of a second. This causes getch() to + block for that period before returning ERR if no key has been + received. tenths must be between 1 and 255. + + keypad() controls whether getch() returns function/special keys + as single key codes (e.g., the left arrow key as KEY_LEFT). Per + X/Open, the default for keypad mode is OFF. You'll probably want + it on. With keypad mode off, if a special key is pressed, + getch() does nothing or returns ERR. + + nodelay() controls whether wgetch() is a non-blocking call. If + the option is enabled, and no input is ready, wgetch() will + return ERR. If disabled, wgetch() will hang until input is + ready. + + nl() enables the translation of a carriage return into a newline + on input. nonl() disables this. Initially, the translation does + occur. + + raw() and noraw() toggle raw mode. Raw mode is similar to cbreak + mode, in that characters typed are immediately passed through to + the user program. The difference is that in raw mode, the INTR, + QUIT, SUSP, and STOP characters are passed through without being + interpreted, and without generating a signal. + + In PDCurses, the meta() function sets raw mode on or off. + + timeout() and wtimeout() set blocking or non-blocking reads for + the specified window. The delay is measured in milliseconds. If + it's negative, a blocking read is used; if zero, then non- + blocking reads are done -- if no input is waiting, ERR is + returned immediately. If the delay is positive, the read blocks + for the delay period; if the period expires, ERR is returned. + + intrflush(), notimeout(), noqiflush(), qiflush() and typeahead() + do nothing in PDCurses, but are included for compatibility with + other curses implementations. + + crmode() and nocrmode() are archaic equivalents to cbreak() and + nocbreak(), respectively. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + cbreak Y Y Y + nocbreak Y Y Y + echo Y Y Y + noecho Y Y Y + halfdelay Y - Y + intrflush Y - Y + keypad Y - Y + meta Y - Y + nl Y Y Y + nonl Y Y Y + nodelay Y - Y + notimeout Y - Y + raw Y Y Y + noraw Y Y Y + noqiflush Y - Y + qiflush Y - Y + timeout Y - Y + wtimeout Y - Y + typeahead Y - Y + crmode - + nocrmode - + +**man-end****************************************************************/ + +int cbreak(void) +{ + PDC_LOG(("cbreak() - called\n")); + + SP->cbreak = TRUE; + + return OK; +} + +int nocbreak(void) +{ + PDC_LOG(("nocbreak() - called\n")); + + SP->cbreak = FALSE; + SP->delaytenths = 0; + + return OK; +} + +int echo(void) +{ + PDC_LOG(("echo() - called\n")); + + SP->echo = TRUE; + + return OK; +} + +int noecho(void) +{ + PDC_LOG(("noecho() - called\n")); + + SP->echo = FALSE; + + return OK; +} + +int halfdelay(int tenths) +{ + PDC_LOG(("halfdelay() - called\n")); + + if (tenths < 1 || tenths > 255) + return ERR; + + SP->delaytenths = tenths; + + return OK; +} + +int intrflush(WINDOW *win, bool bf) +{ + PDC_LOG(("intrflush() - called\n")); + + return OK; +} + +int keypad(WINDOW *win, bool bf) +{ + PDC_LOG(("keypad() - called\n")); + + if (!win) + return ERR; + + win->_use_keypad = bf; + + return OK; +} + +int meta(WINDOW *win, bool bf) +{ + PDC_LOG(("meta() - called\n")); + + SP->raw_inp = bf; + + return OK; +} + +int nl(void) +{ + PDC_LOG(("nl() - called\n")); + + SP->autocr = TRUE; + + return OK; +} + +int nonl(void) +{ + PDC_LOG(("nonl() - called\n")); + + SP->autocr = FALSE; + + return OK; +} + +int nodelay(WINDOW *win, bool flag) +{ + PDC_LOG(("nodelay() - called\n")); + + if (!win) + return ERR; + + win->_nodelay = flag; + + return OK; +} + +int notimeout(WINDOW *win, bool flag) +{ + PDC_LOG(("notimeout() - called\n")); + + return OK; +} + +int raw(void) +{ + PDC_LOG(("raw() - called\n")); + + PDC_set_keyboard_binary(TRUE); + SP->raw_inp = TRUE; + + return OK; +} + +int noraw(void) +{ + PDC_LOG(("noraw() - called\n")); + + PDC_set_keyboard_binary(FALSE); + SP->raw_inp = FALSE; + + return OK; +} + +void noqiflush(void) +{ + PDC_LOG(("noqiflush() - called\n")); +} + +void qiflush(void) +{ + PDC_LOG(("qiflush() - called\n")); +} + +int typeahead(int fildes) +{ + PDC_LOG(("typeahead() - called\n")); + + return OK; +} + +void wtimeout(WINDOW *win, int delay) +{ + PDC_LOG(("wtimeout() - called\n")); + + if (!win) + return; + + if (delay < 0) + { + /* This causes a blocking read on the window, so turn on delay + mode */ + + win->_nodelay = FALSE; + win->_delayms = 0; + } + else if (!delay) + { + /* This causes a non-blocking read on the window, so turn off + delay mode */ + + win->_nodelay = TRUE; + win->_delayms = 0; + } + else + { + /* This causes the read on the window to delay for the number of + milliseconds. Also forces the window into non-blocking read + mode */ + + /*win->_nodelay = TRUE;*/ + win->_delayms = delay; + } +} + +void timeout(int delay) +{ + PDC_LOG(("timeout() - called\n")); + + wtimeout(stdscr, delay); +} + +int crmode(void) +{ + PDC_LOG(("crmode() - called\n")); + + return cbreak(); +} + +int nocrmode(void) +{ + PDC_LOG(("nocrmode() - called\n")); + + return nocbreak(); +} diff --git a/3rd-party/PDCurses/pdcurses/insch.c b/3rd-party/PDCurses/pdcurses/insch.c new file mode 100644 index 0000000..a6434bd --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/insch.c @@ -0,0 +1,271 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +insch +----- + +### Synopsis + + int insch(chtype ch); + int winsch(WINDOW *win, chtype ch); + int mvinsch(int y, int x, chtype ch); + int mvwinsch(WINDOW *win, int y, int x, chtype ch); + + int insrawch(chtype ch); + int winsrawch(WINDOW *win, chtype ch); + int mvinsrawch(int y, int x, chtype ch); + int mvwinsrawch(WINDOW *win, int y, int x, chtype ch); + + int ins_wch(const cchar_t *wch); + int wins_wch(WINDOW *win, const cchar_t *wch); + int mvins_wch(int y, int x, const cchar_t *wch); + int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch); + +### Description + + The insch() functions insert a chtype into the window at the + current or specified cursor position. The cursor is NOT + advanced. A newline is equivalent to clrtoeol(); tabs are + expanded; other control characters are converted as with + unctrl(). + + The ins_wch() functions are the wide-character + equivalents, taking cchar_t pointers rather than chtypes. + + Video attributes can be combined with a character by ORing + them into the parameter. Text, including attributes, can be + copied from one place to another using inch() and insch(). + + insrawch() etc. are PDCurses-specific wrappers for insch() etc. + that disable the translation of control characters. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + insch Y Y Y + winsch Y Y Y + mvinsch Y Y Y + mvwinsch Y Y Y + insrawch - - - + winsrawch - - - + ins_wch Y + wins_wch Y + mvins_wch Y + mvwins_wch Y + +**man-end****************************************************************/ + +#include + +int winsch(WINDOW *win, chtype ch) +{ + int x, y; + chtype attr; + bool xlat; + + PDC_LOG(("winsch() - called: win=%p ch=%x (text=%c attr=0x%x)\n", + win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES)); + + if (!win) + return ERR; + + x = win->_curx; + y = win->_cury; + + if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0) + return ERR; + + xlat = !SP->raw_out && !(ch & A_ALTCHARSET); + attr = ch & A_ATTRIBUTES; + ch &= A_CHARTEXT; + + if (xlat && (ch < ' ' || ch == 0x7f)) + { + int x2; + + switch ((int)ch) + { + case '\t': + for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++) + { + if (winsch(win, attr | ' ') == ERR) + return ERR; + } + return OK; + + case '\n': + wclrtoeol(win); + break; + + case 0x7f: + if (winsch(win, attr | '?') == ERR) + return ERR; + + return winsch(win, attr | '^'); + + default: + /* handle control chars */ + + if (winsch(win, attr | (ch + '@')) == ERR) + return ERR; + + return winsch(win, attr | '^'); + } + } + else + { + int maxx; + chtype *temp; + + /* If the incoming character doesn't have its own attribute, + then use the current attributes for the window. If it has + attributes but not a color component, OR the attributes to + the current attributes for the window. If it has a color + component, use the attributes solely from the incoming + character. */ + + if (!(attr & A_COLOR)) + attr |= win->_attrs; + + /* wrs (4/10/93): Apply the same sort of logic for the window + background, in that it only takes precedence if other color + attributes are not there and that the background character + will only print if the printing character is blank. */ + + if (!(attr & A_COLOR)) + attr |= win->_bkgd & A_ATTRIBUTES; + else + attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR); + + if (ch == ' ') + ch = win->_bkgd & A_CHARTEXT; + + /* Add the attribute back into the character. */ + + ch |= attr; + + maxx = win->_maxx; + temp = &win->_y[y][x]; + + memmove(temp + 1, temp, (maxx - x - 1) * sizeof(chtype)); + + win->_lastch[y] = maxx - 1; + + if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x)) + win->_firstch[y] = x; + + *temp = ch; + } + + PDC_sync(win); + + return OK; +} + +int insch(chtype ch) +{ + PDC_LOG(("insch() - called\n")); + + return winsch(stdscr, ch); +} + +int mvinsch(int y, int x, chtype ch) +{ + PDC_LOG(("mvinsch() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return winsch(stdscr, ch); +} + +int mvwinsch(WINDOW *win, int y, int x, chtype ch) +{ + PDC_LOG(("mvwinsch() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winsch(win, ch); +} + +int winsrawch(WINDOW *win, chtype ch) +{ + PDC_LOG(("winsrawch() - called: win=%p ch=%x " + "(char=%c attr=0x%x)\n", win, ch, + ch & A_CHARTEXT, ch & A_ATTRIBUTES)); + + if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f) + ch |= A_ALTCHARSET; + + return winsch(win, ch); +} + +int insrawch(chtype ch) +{ + PDC_LOG(("insrawch() - called\n")); + + return winsrawch(stdscr, ch); +} + +int mvinsrawch(int y, int x, chtype ch) +{ + PDC_LOG(("mvinsrawch() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return winsrawch(stdscr, ch); +} + +int mvwinsrawch(WINDOW *win, int y, int x, chtype ch) +{ + PDC_LOG(("mvwinsrawch() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winsrawch(win, ch); +} + +#ifdef PDC_WIDE +int wins_wch(WINDOW *win, const cchar_t *wch) +{ + PDC_LOG(("wins_wch() - called\n")); + + return wch ? winsch(win, *wch) : ERR; +} + +int ins_wch(const cchar_t *wch) +{ + PDC_LOG(("ins_wch() - called\n")); + + return wins_wch(stdscr, wch); +} + +int mvins_wch(int y, int x, const cchar_t *wch) +{ + PDC_LOG(("mvins_wch() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wins_wch(stdscr, wch); +} + +int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch) +{ + PDC_LOG(("mvwins_wch() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wins_wch(win, wch); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/insstr.c b/3rd-party/PDCurses/pdcurses/insstr.c new file mode 100644 index 0000000..3c9c6e3 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/insstr.c @@ -0,0 +1,264 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +insstr +------ + +### Synopsis + + int insstr(const char *str); + int insnstr(const char *str, int n); + int winsstr(WINDOW *win, const char *str); + int winsnstr(WINDOW *win, const char *str, int n); + int mvinsstr(int y, int x, const char *str); + int mvinsnstr(int y, int x, const char *str, int n); + int mvwinsstr(WINDOW *win, int y, int x, const char *str); + int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n); + + int ins_wstr(const wchar_t *wstr); + int ins_nwstr(const wchar_t *wstr, int n); + int wins_wstr(WINDOW *win, const wchar_t *wstr); + int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n); + int mvins_wstr(int y, int x, const wchar_t *wstr); + int mvins_nwstr(int y, int x, const wchar_t *wstr, int n); + int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr); + int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n); + +### Description + + The insstr() functions insert a character string into a window + at the current cursor position, by repeatedly calling winsch(). + When PDCurses is built with wide-character support enabled, the + narrow-character functions treat the string as a multibyte + string in the current locale, and convert it first. All + characters to the right of the cursor are moved to the right, + with the possibility of the rightmost characters on the line + being lost. The cursor position does not change (after moving + to y, x, if specified). The routines with n as the last + argument insert at most n characters; if n is negative, then the + entire string is inserted. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + insstr Y - 4.0 + winsstr Y - 4.0 + mvinsstr Y - 4.0 + mvwinsstr Y - 4.0 + insnstr Y - 4.0 + winsnstr Y - 4.0 + mvinsnstr Y - 4.0 + mvwinsnstr Y - 4.0 + ins_wstr Y + wins_wstr Y + mvins_wstr Y + mvwins_wstr Y + ins_nwstr Y + wins_nwstr Y + mvins_nwstr Y + mvwins_nwstr Y + +**man-end****************************************************************/ + +#include + +int winsnstr(WINDOW *win, const char *str, int n) +{ +#ifdef PDC_WIDE + wchar_t wstr[513], *p; + int i; +#endif + int len; + + PDC_LOG(("winsnstr() - called: string=\"%s\" n %d \n", str, n)); + + if (!win || !str) + return ERR; + + len = (int)strlen(str); + + if (n < 0 || n < len) + n = len; + +#ifdef PDC_WIDE + if (n > 512) + n = 512; + + p = wstr; + i = 0; + + while (str[i] && i < n) + { + int retval = PDC_mbtowc(p, str + i, n - i); + + if (retval <= 0) + break; + p++; + i += retval; + } + + while (p > wstr) + if (winsch(win, *--p) == ERR) +#else + while (n) + if (winsch(win, (unsigned char)(str[--n])) == ERR) +#endif + return ERR; + + return OK; +} + +int insstr(const char *str) +{ + PDC_LOG(("insstr() - called: string=\"%s\"\n", str)); + + return winsnstr(stdscr, str, -1); +} + +int winsstr(WINDOW *win, const char *str) +{ + PDC_LOG(("winsstr() - called: string=\"%s\"\n", str)); + + return winsnstr(win, str, -1); +} + +int mvinsstr(int y, int x, const char *str) +{ + PDC_LOG(("mvinsstr() - called: y %d x %d string=\"%s\"\n", y, x, str)); + + if (move(y, x) == ERR) + return ERR; + + return winsnstr(stdscr, str, -1); +} + +int mvwinsstr(WINDOW *win, int y, int x, const char *str) +{ + PDC_LOG(("mvwinsstr() - called: string=\"%s\"\n", str)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winsnstr(win, str, -1); +} + +int insnstr(const char *str, int n) +{ + PDC_LOG(("insnstr() - called: string=\"%s\" n %d \n", str, n)); + + return winsnstr(stdscr, str, n); +} + +int mvinsnstr(int y, int x, const char *str, int n) +{ + PDC_LOG(("mvinsnstr() - called: y %d x %d string=\"%s\" n %d \n", + y, x, str, n)); + + if (move(y, x) == ERR) + return ERR; + + return winsnstr(stdscr, str, n); +} + +int mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n) +{ + PDC_LOG(("mvwinsnstr() - called: y %d x %d string=\"%s\" n %d \n", + y, x, str, n)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winsnstr(win, str, n); +} + +#ifdef PDC_WIDE +int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n) +{ + const wchar_t *p; + int len; + + PDC_LOG(("wins_nwstr() - called\n")); + + if (!win || !wstr) + return ERR; + + for (len = 0, p = wstr; *p; p++) + len++; + + if (n < 0 || n < len) + n = len; + + while (n) + if (winsch(win, wstr[--n]) == ERR) + return ERR; + + return OK; +} + +int ins_wstr(const wchar_t *wstr) +{ + PDC_LOG(("ins_wstr() - called\n")); + + return wins_nwstr(stdscr, wstr, -1); +} + +int wins_wstr(WINDOW *win, const wchar_t *wstr) +{ + PDC_LOG(("wins_wstr() - called\n")); + + return wins_nwstr(win, wstr, -1); +} + +int mvins_wstr(int y, int x, const wchar_t *wstr) +{ + PDC_LOG(("mvins_wstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wins_nwstr(stdscr, wstr, -1); +} + +int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr) +{ + PDC_LOG(("mvwinsstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wins_nwstr(win, wstr, -1); +} + +int ins_nwstr(const wchar_t *wstr, int n) +{ + PDC_LOG(("ins_nwstr() - called\n")); + + return wins_nwstr(stdscr, wstr, n); +} + +int mvins_nwstr(int y, int x, const wchar_t *wstr, int n) +{ + PDC_LOG(("mvinsnstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return wins_nwstr(stdscr, wstr, n); +} + +int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n) +{ + PDC_LOG(("mvwinsnstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return wins_nwstr(win, wstr, n); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/instr.c b/3rd-party/PDCurses/pdcurses/instr.c new file mode 100644 index 0000000..23f8332 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/instr.c @@ -0,0 +1,246 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +instr +----- + +### Synopsis + + int instr(char *str); + int innstr(char *str, int n); + int winstr(WINDOW *win, char *str); + int winnstr(WINDOW *win, char *str, int n); + int mvinstr(int y, int x, char *str); + int mvinnstr(int y, int x, char *str, int n); + int mvwinstr(WINDOW *win, int y, int x, char *str); + int mvwinnstr(WINDOW *win, int y, int x, char *str, int n); + + int inwstr(wchar_t *wstr); + int innwstr(wchar_t *wstr, int n); + int winwstr(WINDOW *win, wchar_t *wstr); + int winnwstr(WINDOW *win, wchar_t *wstr, int n); + int mvinwstr(int y, int x, wchar_t *wstr); + int mvinnwstr(int y, int x, wchar_t *wstr, int n); + int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr); + int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n); + +### Description + + These functions take characters (or wide characters) from the + current or specified position in the window, and return them as + a string in str (or wstr). Attributes are ignored. The functions + with n as the last argument return a string at most n characters + long. + +### Return Value + + Upon successful completion, innstr(), mvinnstr(), mvwinnstr() + and winnstr() return the number of characters actually read into + the string; instr(), mvinstr(), mvwinstr() and winstr() return + OK. Otherwise, all these functions return ERR. + +### Portability + X/Open BSD SYS V + instr Y - 4.0 + winstr Y - 4.0 + mvinstr Y - 4.0 + mvwinstr Y - 4.0 + innstr Y - 4.0 + winnstr Y - 4.0 + mvinnstr Y - 4.0 + mvwinnstr Y - 4.0 + inwstr Y + winwstr Y + mvinwstr Y + mvwinwstr Y + innwstr Y + winnwstr Y + mvinnwstr Y + mvwinnwstr Y + +**man-end****************************************************************/ + +int winnstr(WINDOW *win, char *str, int n) +{ +#ifdef PDC_WIDE + wchar_t wstr[513]; + + if (n < 0 || n > 512) + n = 512; + + if (winnwstr(win, wstr, n) == ERR) + return ERR; + + return (int)PDC_wcstombs(str, wstr, n); +#else + chtype *src; + int i; + + PDC_LOG(("winnstr() - called: n %d \n", n)); + + if (!win || !str) + return ERR; + + if (n < 0 || (win->_curx + n) > win->_maxx) + n = win->_maxx - win->_curx; + + src = win->_y[win->_cury] + win->_curx; + + for (i = 0; i < n; i++) + str[i] = (char)( src[i] & A_CHARTEXT); + + str[i] = '\0'; + + return i; +#endif +} + +int instr(char *str) +{ + PDC_LOG(("instr() - called: string=\"%s\"\n", str)); + + return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK; +} + +int winstr(WINDOW *win, char *str) +{ + PDC_LOG(("winstr() - called: \n")); + + return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK; +} + +int mvinstr(int y, int x, char *str) +{ + PDC_LOG(("mvinstr() - called: y %d x %d \n", y, x)); + + if (move(y, x) == ERR) + return ERR; + + return (ERR == winnstr(stdscr, str, stdscr->_maxx)) ? ERR : OK; +} + +int mvwinstr(WINDOW *win, int y, int x, char *str) +{ + PDC_LOG(("mvwinstr() - called: y %d x %d \n", y, x)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return (ERR == winnstr(win, str, win->_maxx)) ? ERR : OK; +} + +int innstr(char *str, int n) +{ + PDC_LOG(("innstr() - called: n %d \n", n)); + + return winnstr(stdscr, str, n); +} + +int mvinnstr(int y, int x, char *str, int n) +{ + PDC_LOG(("mvinnstr() - called: y %d x %d n %d \n", y, x, n)); + + if (move(y, x) == ERR) + return ERR; + + return winnstr(stdscr, str, n); +} + +int mvwinnstr(WINDOW *win, int y, int x, char *str, int n) +{ + PDC_LOG(("mvwinnstr() - called: y %d x %d n %d \n", y, x, n)); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winnstr(win, str, n); +} + +#ifdef PDC_WIDE +int winnwstr(WINDOW *win, wchar_t *wstr, int n) +{ + chtype *src; + int i; + + PDC_LOG(("winnstr() - called: n %d \n", n)); + + if (!win || !wstr) + return ERR; + + if (n < 0 || (win->_curx + n) > win->_maxx) + n = win->_maxx - win->_curx; + + src = win->_y[win->_cury] + win->_curx; + + for (i = 0; i < n; i++) + wstr[i] = (wchar_t)src[i] & A_CHARTEXT; + + wstr[i] = L'\0'; + + return i; +} + +int inwstr(wchar_t *wstr) +{ + PDC_LOG(("inwstr() - called\n")); + + return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK; +} + +int winwstr(WINDOW *win, wchar_t *wstr) +{ + PDC_LOG(("winwstr() - called\n")); + + return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK; +} + +int mvinwstr(int y, int x, wchar_t *wstr) +{ + PDC_LOG(("mvinwstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return (ERR == winnwstr(stdscr, wstr, stdscr->_maxx)) ? ERR : OK; +} + +int mvwinwstr(WINDOW *win, int y, int x, wchar_t *wstr) +{ + PDC_LOG(("mvwinstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return (ERR == winnwstr(win, wstr, win->_maxx)) ? ERR : OK; +} + +int innwstr(wchar_t *wstr, int n) +{ + PDC_LOG(("innwstr() - called\n")); + + return winnwstr(stdscr, wstr, n); +} + +int mvinnwstr(int y, int x, wchar_t *wstr, int n) +{ + PDC_LOG(("mvinnstr() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + return winnwstr(stdscr, wstr, n); +} + +int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *wstr, int n) +{ + PDC_LOG(("mvwinnwstr() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + return winnwstr(win, wstr, n); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/kernel.c b/3rd-party/PDCurses/pdcurses/kernel.c new file mode 100644 index 0000000..ab54b51 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/kernel.c @@ -0,0 +1,259 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +kernel +------ + +### Synopsis + + int def_prog_mode(void); + int def_shell_mode(void); + int reset_prog_mode(void); + int reset_shell_mode(void); + int resetty(void); + int savetty(void); + int ripoffline(int line, int (*init)(WINDOW *, int)); + int curs_set(int visibility); + int napms(int ms); + + int draino(int ms); + int resetterm(void); + int fixterm(void); + int saveterm(void); + +### Description + + def_prog_mode() and def_shell_mode() save the current terminal + modes as the "program" (in curses) or "shell" (not in curses) + state for use by the reset_prog_mode() and reset_shell_mode() + functions. This is done automatically by initscr(). + + reset_prog_mode() and reset_shell_mode() restore the terminal to + "program" (in curses) or "shell" (not in curses) state. These + are done automatically by endwin() and doupdate() after an + endwin(), so they would normally not be called before these + functions. + + savetty() and resetty() save and restore the state of the + terminal modes. savetty() saves the current state in a buffer, + and resetty() restores the state to what it was at the last call + to savetty(). + + curs_set() alters the appearance of the cursor. A visibility of + 0 makes it disappear; 1 makes it appear "normal" (usually an + underline) and 2 makes it "highly visible" (usually a block). + + ripoffline() reduces the size of stdscr by one line. If the + "line" parameter is positive, the line is removed from the top + of the screen; if negative, from the bottom. Up to 5 lines can + be ripped off stdscr by calling ripoffline() repeatedly. The + function argument, init, is called from within initscr() or + newterm(), so ripoffline() must be called before either of these + functions. The init function receives a pointer to a one-line + WINDOW, and the width of the window. Calling ripoffline() with a + NULL init function pointer is an error. + + napms() suspends the program for the specified number of + milliseconds. draino() is an archaic equivalent. + + resetterm(), fixterm() and saveterm() are archaic equivalents + for reset_shell_mode(), reset_prog_mode() and def_prog_mode(), + respectively. + +### Return Value + + All functions return OK on success and ERR on error, except + curs_set(), which returns the previous visibility. + +### Portability + X/Open BSD SYS V + def_prog_mode Y Y Y + def_shell_mode Y Y Y + reset_prog_mode Y Y Y + reset_shell_mode Y Y Y + resetty Y Y Y + savetty Y Y Y + ripoffline Y - 3.0 + curs_set Y - 3.0 + napms Y Y Y + draino - + resetterm - + fixterm - + saveterm - + +**man-end****************************************************************/ + +#include + +RIPPEDOFFLINE linesripped[5]; +char linesrippedoff = 0; + +static struct cttyset +{ + bool been_set; + SCREEN saved; +} ctty[3]; + +enum { PDC_SH_TTY, PDC_PR_TTY, PDC_SAVE_TTY }; + +static void _save_mode(int i) +{ + ctty[i].been_set = TRUE; + + memcpy(&(ctty[i].saved), SP, sizeof(SCREEN)); + + PDC_save_screen_mode(i); +} + +static int _restore_mode(int i) +{ + if (ctty[i].been_set == TRUE) + { + memcpy(SP, &(ctty[i].saved), sizeof(SCREEN)); + + if (ctty[i].saved.raw_out) + raw(); + + PDC_restore_screen_mode(i); + + if ((LINES != ctty[i].saved.lines) || + (COLS != ctty[i].saved.cols)) + resize_term(ctty[i].saved.lines, ctty[i].saved.cols); + + PDC_curs_set(ctty[i].saved.visibility); + + PDC_gotoyx(ctty[i].saved.cursrow, ctty[i].saved.curscol); + } + + return ctty[i].been_set ? OK : ERR; +} + +int def_prog_mode(void) +{ + PDC_LOG(("def_prog_mode() - called\n")); + + _save_mode(PDC_PR_TTY); + + return OK; +} + +int def_shell_mode(void) +{ + PDC_LOG(("def_shell_mode() - called\n")); + + _save_mode(PDC_SH_TTY); + + return OK; +} + +int reset_prog_mode(void) +{ + PDC_LOG(("reset_prog_mode() - called\n")); + + _restore_mode(PDC_PR_TTY); + PDC_reset_prog_mode(); + + return OK; +} + +int reset_shell_mode(void) +{ + PDC_LOG(("reset_shell_mode() - called\n")); + + _restore_mode(PDC_SH_TTY); + PDC_reset_shell_mode(); + + return OK; +} + +int resetty(void) +{ + PDC_LOG(("resetty() - called\n")); + + return _restore_mode(PDC_SAVE_TTY); +} + +int savetty(void) +{ + PDC_LOG(("savetty() - called\n")); + + _save_mode(PDC_SAVE_TTY); + + return OK; +} + +int curs_set(int visibility) +{ + int ret_vis; + + PDC_LOG(("curs_set() - called: visibility=%d\n", visibility)); + + if ((visibility < 0) || (visibility > 0x10000)) + return ERR; + + ret_vis = PDC_curs_set(visibility); + + /* If the cursor is changing from invisible to visible, update + its position */ + + if (visibility && !ret_vis) + PDC_gotoyx(SP->cursrow, SP->curscol); + + return ret_vis; +} + +int napms(int ms) +{ + PDC_LOG(("napms() - called: ms=%d\n", ms)); + + if (ms) + PDC_napms(ms); + + return OK; +} + +int ripoffline(int line, int (*init)(WINDOW *, int)) +{ + PDC_LOG(("ripoffline() - called: line=%d\n", line)); + + if (linesrippedoff < 5 && line && init) + { + linesripped[(int)linesrippedoff].line = line; + linesripped[(int)linesrippedoff++].init = init; + + return OK; + } + + return ERR; +} + +int draino(int ms) +{ + PDC_LOG(("draino() - called\n")); + + return napms(ms); +} + +int resetterm(void) +{ + PDC_LOG(("resetterm() - called\n")); + + return reset_shell_mode(); +} + +int fixterm(void) +{ + PDC_LOG(("fixterm() - called\n")); + + return reset_prog_mode(); +} + +int saveterm(void) +{ + PDC_LOG(("saveterm() - called\n")); + + return def_prog_mode(); +} diff --git a/3rd-party/PDCurses/pdcurses/keyname.c b/3rd-party/PDCurses/pdcurses/keyname.c new file mode 100644 index 0000000..0df91a8 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/keyname.c @@ -0,0 +1,157 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +keyname +------- + +### Synopsis + + char *keyname(int key); + + char *key_name(wchar_t c); + + bool has_key(int key); + +### Description + + keyname() returns a string corresponding to the argument key. + key may be any key returned by wgetch(). + + key_name() is the wide-character version. It takes a wchar_t + parameter, but still returns a char *. + + has_key() returns TRUE for recognized keys, FALSE otherwise. + This function is an ncurses extension. + +### Portability + X/Open BSD SYS V + keyname Y - 3.0 + key_name Y + has_key - - - + +**man-end****************************************************************/ + +#include + +char *keyname(int key) +{ + static char _keyname[14]; + + /* Key names must be in exactly the same order as in curses.h */ + + static char *key_names[] = + { + "KEY_BREAK", "KEY_DOWN", "KEY_UP", "KEY_LEFT", "KEY_RIGHT", + "KEY_HOME", "KEY_BACKSPACE", "KEY_F0", "KEY_F(1)", "KEY_F(2)", + "KEY_F(3)", "KEY_F(4)", "KEY_F(5)", "KEY_F(6)", "KEY_F(7)", + "KEY_F(8)", "KEY_F(9)", "KEY_F(10)", "KEY_F(11)", "KEY_F(12)", + "KEY_F(13)", "KEY_F(14)", "KEY_F(15)", "KEY_F(16)", "KEY_F(17)", + "KEY_F(18)", "KEY_F(19)", "KEY_F(20)", "KEY_F(21)", "KEY_F(22)", + "KEY_F(23)", "KEY_F(24)", "KEY_F(25)", "KEY_F(26)", "KEY_F(27)", + "KEY_F(28)", "KEY_F(29)", "KEY_F(30)", "KEY_F(31)", "KEY_F(32)", + "KEY_F(33)", "KEY_F(34)", "KEY_F(35)", "KEY_F(36)", "KEY_F(37)", + "KEY_F(38)", "KEY_F(39)", "KEY_F(40)", "KEY_F(41)", "KEY_F(42)", + "KEY_F(43)", "KEY_F(44)", "KEY_F(45)", "KEY_F(46)", "KEY_F(47)", + "KEY_F(48)", "KEY_F(49)", "KEY_F(50)", "KEY_F(51)", "KEY_F(52)", + "KEY_F(53)", "KEY_F(54)", "KEY_F(55)", "KEY_F(56)", "KEY_F(57)", + "KEY_F(58)", "KEY_F(59)", "KEY_F(60)", "KEY_F(61)", "KEY_F(62)", + "KEY_F(63)", "KEY_DL", "KEY_IL", "KEY_DC", "KEY_IC", "KEY_EIC", + "KEY_CLEAR", "KEY_EOS", "KEY_EOL", "KEY_SF", "KEY_SR", + "KEY_NPAGE", "KEY_PPAGE", "KEY_STAB", "KEY_CTAB", "KEY_CATAB", + "KEY_ENTER", "KEY_SRESET", "KEY_RESET", "KEY_PRINT", "KEY_LL", + "KEY_ABORT", "KEY_SHELP", "KEY_LHELP", "KEY_BTAB", "KEY_BEG", + "KEY_CANCEL", "KEY_CLOSE", "KEY_COMMAND", "KEY_COPY", + "KEY_CREATE", "KEY_END", "KEY_EXIT", "KEY_FIND", "KEY_HELP", + "KEY_MARK", "KEY_MESSAGE", "KEY_MOVE", "KEY_NEXT", "KEY_OPEN", + "KEY_OPTIONS", "KEY_PREVIOUS", "KEY_REDO", "KEY_REFERENCE", + "KEY_REFRESH", "KEY_REPLACE", "KEY_RESTART", "KEY_RESUME", + "KEY_SAVE", "KEY_SBEG", "KEY_SCANCEL", "KEY_SCOMMAND", + "KEY_SCOPY", "KEY_SCREATE", "KEY_SDC", "KEY_SDL", "KEY_SELECT", + "KEY_SEND", "KEY_SEOL", "KEY_SEXIT", "KEY_SFIND", "KEY_SHOME", + "KEY_SIC", "UNKNOWN KEY", "KEY_SLEFT", "KEY_SMESSAGE", + "KEY_SMOVE", "KEY_SNEXT", "KEY_SOPTIONS", "KEY_SPREVIOUS", + "KEY_SPRINT", "KEY_SREDO", "KEY_SREPLACE", "KEY_SRIGHT", + "KEY_SRSUME", "KEY_SSAVE", "KEY_SSUSPEND", "KEY_SUNDO", + "KEY_SUSPEND", "KEY_UNDO", "ALT_0", "ALT_1", "ALT_2", "ALT_3", + "ALT_4", "ALT_5", "ALT_6", "ALT_7", "ALT_8", "ALT_9", "ALT_A", + "ALT_B", "ALT_C", "ALT_D", "ALT_E", "ALT_F", "ALT_G", "ALT_H", + "ALT_I", "ALT_J", "ALT_K", "ALT_L", "ALT_M", "ALT_N", "ALT_O", + "ALT_P", "ALT_Q", "ALT_R", "ALT_S", "ALT_T", "ALT_U", "ALT_V", + "ALT_W", "ALT_X", "ALT_Y", "ALT_Z", "CTL_LEFT", "CTL_RIGHT", + "CTL_PGUP", "CTL_PGDN", "CTL_HOME", "CTL_END", "KEY_A1", + "KEY_A2", "KEY_A3", "KEY_B1", "KEY_B2", "KEY_B3", "KEY_C1", + "KEY_C2", "KEY_C3", "PADSLASH", "PADENTER", "CTL_PADENTER", + "ALT_PADENTER", "PADSTOP", "PADSTAR", "PADMINUS", "PADPLUS", + "CTL_PADSTOP", "CTL_PADCENTER", "CTL_PADPLUS", "CTL_PADMINUS", + "CTL_PADSLASH", "CTL_PADSTAR", "ALT_PADPLUS", "ALT_PADMINUS", + "ALT_PADSLASH", "ALT_PADSTAR", "ALT_PADSTOP", "CTL_INS", + "ALT_DEL", "ALT_INS", "CTL_UP", "CTL_DOWN", "CTL_TAB", + "ALT_TAB", "ALT_MINUS", "ALT_EQUAL", "ALT_HOME", "ALT_PGUP", + "ALT_PGDN", "ALT_END", "ALT_UP", "ALT_DOWN", "ALT_RIGHT", + "ALT_LEFT", "ALT_ENTER", "ALT_ESC", "ALT_BQUOTE", + "ALT_LBRACKET", "ALT_RBRACKET", "ALT_SEMICOLON", "ALT_FQUOTE", + "ALT_COMMA", "ALT_STOP", "ALT_FSLASH", "ALT_BKSP", "CTL_BKSP", + "PAD0", "CTL_PAD0", "CTL_PAD1", "CTL_PAD2", "CTL_PAD3", + "CTL_PAD4", "CTL_PAD5", "CTL_PAD6", "CTL_PAD7","CTL_PAD8", + "CTL_PAD9", "ALT_PAD0", "ALT_PAD1", "ALT_PAD2", "ALT_PAD3", + "ALT_PAD4", "ALT_PAD5", "ALT_PAD6", "ALT_PAD7", "ALT_PAD8", + "ALT_PAD9", "CTL_DEL", "ALT_BSLASH", "CTL_ENTER", + "SHF_PADENTER", "SHF_PADSLASH", "SHF_PADSTAR", "SHF_PADPLUS", + "SHF_PADMINUS", "SHF_UP", "SHF_DOWN", "SHF_IC", "SHF_DC", + "KEY_MOUSE", "KEY_SHIFT_L", "KEY_SHIFT_R", "KEY_CONTROL_L", + "KEY_CONTROL_R", "KEY_ALT_L", "KEY_ALT_R", "KEY_RESIZE", + "KEY_SUP", "KEY_SDOWN", + /* Win32a extras: */ + "CTL_SEMICOLON", "CTL_EQUAL", "CTL_COMMA", + "CTL_MINUS", "CTL_STOP", "CTL_FSLASH", + "CTL_BQUOTE", "KEY_APPS", "KEY_SAPPS", "CTL_APPS", + "ALT_APPS", "KEY_PAUSE", "KEY_SPAUSE", + "CTL_PAUSE", "KEY_PRINTSCREEN", "ALT_PRINTSCREEN", + "KEY_SCROLLLOCK", "ALT_SCROLLLOCK", + "CTL_0", "CTL_1", "CTL_2", "CTL_3", "CTL_4", + "CTL_5", "CTL_6", "CTL_7", "CTL_8", "CTL_9", + "BROWSER_BACK", "SBROWSER_BACK", "CBROWSER_BACK", "ABROWSER_BACK", + "BROWSER_FWD", "SBROWSER_FWD", "CBROWSER_FWD", "ABROWSER_FWD", + "BROWSER_REF", "SBROWSER_REF", "CBROWSER_REF", "ABROWSER_REF", + "BROWSER_STOP", "SBROWSER_STOP", "CBROWSER_STOP", "ABROWSER_STOP", + "SEARCH", "SSEARCH", "CSEARCH", "ASEARCH", + "FAVORITES", "SFAVORITES", "CFAVORITES", "AFAVORITES", + "BROWSER_HOME", "SBROWSER_HOME", "CBROWSER_HOME", "ABROWSER_HOME", + "VOLUME_MUTE", "SVOLUME_MUTE", "CVOLUME_MUTE", "AVOLUME_MUTE", + "VOLUME_DOWN", "SVOLUME_DOWN", "CVOLUME_DOWN", "AVOLUME_DOWN", + "VOLUME_UP", "SVOLUME_UP", "CVOLUME_UP", "AVOLUME_UP", + "NEXT_TRACK", "SNEXT_TRACK", "CNEXT_TRACK", "ANEXT_TRACK", + "PREV_TRACK", "SPREV_TRACK", "CPREV_TRACK", "APREV_TRACK", + "MEDIA_STOP", "SMEDIA_STOP", "CMEDIA_STOP", "AMEDIA_STOP", + "PLAY_PAUSE", "SPLAY_PAUSE", "CPLAY_PAUSE", "APLAY_PAUSE", + "LAUNCH_MAIL", "SLAUNCH_MAIL", "CLAUNCH_MAIL", "ALAUNCH_MAIL", + "MEDIA_SELECT", "SMEDIA_SELECT", "CMEDIA_SELECT", "AMEDIA_SELECT", + "LAUNCH_APP1", "SLAUNCH_APP1", "CLAUNCH_APP1", "ALAUNCH_APP1", + "LAUNCH_APP2", "SLAUNCH_APP2", "CLAUNCH_APP2", "ALAUNCH_APP2" }; + + PDC_LOG(("keyname() - called: key %d\n", key)); + + strcpy(_keyname, ((key >= 0) && (key < 0x80)) ? unctrl((chtype)key) : + has_key(key) ? key_names[key - KEY_MIN] : "UNKNOWN KEY"); + + return _keyname; +} + +bool has_key(int key) +{ + PDC_LOG(("has_key() - called: key %d\n", key)); + + return (key >= KEY_MIN && key <= KEY_MAX); +} + +#ifdef PDC_WIDE +char *key_name(wchar_t c) +{ + PDC_LOG(("key_name() - called\n")); + + return keyname((int)c); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/mouse.c b/3rd-party/PDCurses/pdcurses/mouse.c new file mode 100644 index 0000000..37b074a --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/mouse.c @@ -0,0 +1,447 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +mouse +----- + +### Synopsis + + int mouse_set(unsigned long mbe); + int mouse_on(unsigned long mbe); + int mouse_off(unsigned long mbe); + int request_mouse_pos(void); + int map_button(unsigned long button); + void wmouse_position(WINDOW *win, int *y, int *x); + unsigned long getmouse(void); + unsigned long getbmap(void); + + int mouseinterval(int wait); + bool wenclose(const WINDOW *win, int y, int x); + bool wmouse_trafo(const WINDOW *win, int *y, int *x, bool to_screen); + bool mouse_trafo(int *y, int *x, bool to_screen); + mmask_t mousemask(mmask_t mask, mmask_t *oldmask); + int nc_getmouse(MEVENT *event); + int ungetmouse(MEVENT *event); + bool has_mouse(void); + +### Description + + As of PDCurses 3.0, there are two separate mouse interfaces: the + classic interface, which is based on the undocumented Sys V + mouse functions; and an ncurses-compatible interface. Both are + active at all times, and you can mix and match functions from + each, though it's not recommended. The ncurses interface is + essentially an emulation layer built on top of the classic + interface; it's here to allow easier porting of ncurses apps. + + The classic interface: mouse_set(), mouse_on(), mouse_off(), + request_mouse_pos(), map_button(), wmouse_position(), + getmouse(), and getbmap(). An application using this interface + would start by calling mouse_set() or mouse_on() with a non-zero + value, often ALL_MOUSE_EVENTS. Then it would check for a + KEY_MOUSE return from getch(). If found, it would call + request_mouse_pos() to get the current mouse status. + + mouse_set(), mouse_on() and mouse_off() are analagous to + attrset(), attron() and attroff(). These functions set the + mouse button events to trap. The button masks used in these + functions are defined in curses.h and can be or'ed together. + They are the group of masks starting with BUTTON1_RELEASED. + + request_mouse_pos() requests curses to fill in the Mouse_status + structure with the current state of the mouse. + + map_button() enables the specified mouse action to activate the + Soft Label Keys if the action occurs over the area of the screen + where the Soft Label Keys are displayed. The mouse actions are + defined in curses.h in the group that starts with BUTTON_RELEASED. + + wmouse_position() determines if the current mouse position is + within the window passed as an argument. If the mouse is + outside the current window, -1 is returned in the y and x + arguments; otherwise the y and x coordinates of the mouse + (relative to the top left corner of the window) are returned in + y and x. + + getmouse() returns the current status of the trapped mouse + buttons as set by mouse_set() or mouse_on(). + + getbmap() returns the current status of the button action used + to map a mouse action to the Soft Label Keys as set by the + map_button() function. + + The ncurses interface: mouseinterval(), wenclose(), wmouse_traá±fo(), + mouse_trafo(), mousemask(), nc_getmouse(), ungetmouse(), and + has_mouse(). A typical application using this interface would start + by calling mousemask() with a non-zero value, often ALL_MOUSE_EVENTS. + Then it would check for a KEY_MOUSE return from getch(). If found, it + would call nc_getmouse() to get the current mouse status. + + mouseinterval() sets the timeout for a mouse click. On all + current platforms, PDCurses receives mouse button press and + release events, but must synthesize click events. It does this + by checking whether a release event is queued up after a press + event. If it gets a press event, and there are no more events + waiting, it will wait for the timeout interval, then check again + for a release. A press followed by a release is reported as + BUTTON_CLICKED; otherwise it's passed through as BUTTON_PRESSED. + The default timeout is 150ms; valid values are 0 (no clicks + reported) through 1000ms. In x11, the timeout can also be set + via the clickPeriod resource. The return value from + mouseinterval() is the old timeout. To check the old value + without setting a new one, call it with a parameter of -1. Note + that although there's no classic equivalent for this function + (apart from the clickPeriod resource), the value set applies in + both interfaces. + + wenclose() reports whether the given screen-relative y, x + coordinates fall within the given window. + + wmouse_trafo() converts between screen-relative and window- + relative coordinates. A to_screen parameter of TRUE means to + convert from window to screen; otherwise the reverse. The + function returns FALSE if the coordinates aren't within the + window, or if any of the parameters are NULL. The coordinates + have been converted when the function returns TRUE. + + mouse_trafo() is the stdscr version of wmouse_trafo(). + + mousemask() is nearly equivalent to mouse_set(), but instead of + OK/ERR, it returns the value of the mask after setting it. (This + isn't necessarily the same value passed in, since the mask could + be altered on some platforms.) And if the second parameter is a + non-null pointer, mousemask() stores the previous mask value + there. Also, since the ncurses interface doesn't work with + PDCurses' BUTTON_MOVED events, mousemask() filters them out. + + nc_getmouse() returns the current mouse status in an MEVENT + struct. This is equivalent to ncurses' getmouse(), renamed to + avoid conflict with PDCurses' getmouse(). But if you define + PDC_NCMOUSE before including curses.h, it defines getmouse() to + nc_getmouse(), along with a few other redefintions needed for + compatibility with ncurses code. nc_getmouse() calls + request_mouse_pos(), which (not getmouse()) is the classic + equivalent. + + ungetmouse() is the mouse equivalent of ungetch(). However, + PDCurses doesn't maintain a queue of mouse events; only one can + be pushed back, and it can overwrite or be overwritten by real + mouse events. + + has_mouse() reports whether the mouse is available at all on the + current platform. + +### Portability + X/Open BSD SYS V + mouse_set - - 4.0 + mouse_on - - 4.0 + mouse_off - - 4.0 + request_mouse_pos - - 4.0 + map_button - - 4.0 + wmouse_position - - 4.0 + getmouse - - 4.0 + getbmap - - 4.0 + mouseinterval - - - + wenclose - - - + wmouse_trafo - - - + mouse_trafo - - - + mousemask - - - + nc_getmouse - - - + ungetmouse - - - + has_mouse - - - + +**man-end****************************************************************/ + +#include + +static bool ungot = FALSE; + +int mouse_set(unsigned long mbe) +{ + PDC_LOG(("mouse_set() - called: event %x\n", mbe)); + + SP->_trap_mbe = mbe; + return PDC_mouse_set(); +} + +int mouse_on(unsigned long mbe) +{ + PDC_LOG(("mouse_on() - called: event %x\n", mbe)); + + SP->_trap_mbe |= mbe; + return PDC_mouse_set(); +} + +int mouse_off(unsigned long mbe) +{ + PDC_LOG(("mouse_off() - called: event %x\n", mbe)); + + SP->_trap_mbe &= ~mbe; + return PDC_mouse_set(); +} + +int map_button(unsigned long button) +{ + PDC_LOG(("map_button() - called: button %x\n", button)); + +/****************** this does nothing at the moment ***************/ + SP->_map_mbe_to_key = button; + + return OK; +} + +int request_mouse_pos(void) +{ + PDC_LOG(("request_mouse_pos() - called\n")); + + Mouse_status = pdc_mouse_status; + + return OK; +} + +void wmouse_position(WINDOW *win, int *y, int *x) +{ + PDC_LOG(("wmouse_position() - called\n")); + + if (win && wenclose(win, MOUSE_Y_POS, MOUSE_X_POS)) + { + if (y) + *y = MOUSE_Y_POS - win->_begy; + if (x) + *x = MOUSE_X_POS - win->_begx; + } + else + { + if (y) + *y = -1; + if (x) + *x = -1; + } +} + +unsigned long getmouse(void) +{ + PDC_LOG(("getmouse() - called\n")); + + return SP->_trap_mbe; +} + +unsigned long getbmap(void) +{ + PDC_LOG(("getbmap() - called\n")); + + return SP->_map_mbe_to_key; +} + +/* ncurses mouse interface */ + +int mouseinterval(int wait) +{ + int old_wait; + + PDC_LOG(("mouseinterval() - called: %d\n", wait)); + + old_wait = SP->mouse_wait; + + if (wait >= 0 && wait <= 1000) + SP->mouse_wait = wait; + + return old_wait; +} + +bool wenclose(const WINDOW *win, int y, int x) +{ + PDC_LOG(("wenclose() - called: %p %d %d\n", win, y, x)); + + return (win && y >= win->_begy && y < win->_begy + win->_maxy + && x >= win->_begx && x < win->_begx + win->_maxx); +} + +bool wmouse_trafo(const WINDOW *win, int *y, int *x, bool to_screen) +{ + int newy, newx; + + PDC_LOG(("wmouse_trafo() - called\n")); + + if (!win || !y || !x) + return FALSE; + + newy = *y; + newx = *x; + + if (to_screen) + { + newy += win->_begy; + newx += win->_begx; + + if (!wenclose(win, newy, newx)) + return FALSE; + } + else + { + if (wenclose(win, newy, newx)) + { + newy -= win->_begy; + newx -= win->_begx; + } + else + return FALSE; + } + + *y = newy; + *x = newx; + + return TRUE; +} + +bool mouse_trafo(int *y, int *x, bool to_screen) +{ + PDC_LOG(("mouse_trafo() - called\n")); + + return wmouse_trafo(stdscr, y, x, to_screen); +} + +mmask_t mousemask(mmask_t mask, mmask_t *oldmask) +{ + PDC_LOG(("mousemask() - called\n")); + + if (oldmask) + *oldmask = SP->_trap_mbe; + + /* The ncurses interface doesn't work with our move events, so + filter them here */ + + mask &= ~(BUTTON1_MOVED | BUTTON2_MOVED | BUTTON3_MOVED); + + mouse_set(mask); + + return SP->_trap_mbe; +} + +int nc_getmouse(MEVENT *event) +{ + int i; + mmask_t bstate = 0; + + PDC_LOG(("nc_getmouse() - called\n")); + + if (!event) + return ERR; + + ungot = FALSE; + + request_mouse_pos(); + + event->id = 0; + + event->x = Mouse_status.x; + event->y = Mouse_status.y; + event->z = 0; + + for (i = 0; i < 3; i++) + { + if (Mouse_status.changes & (1 << i)) + { + int shf = i * 5; + short button = Mouse_status.button[i] & BUTTON_ACTION_MASK; + + if (button == BUTTON_RELEASED) + bstate |= (BUTTON1_RELEASED << shf); + else if (button == BUTTON_PRESSED) + bstate |= (BUTTON1_PRESSED << shf); + else if (button == BUTTON_CLICKED) + bstate |= (BUTTON1_CLICKED << shf); + else if (button == BUTTON_DOUBLE_CLICKED) + bstate |= (BUTTON1_DOUBLE_CLICKED << shf); + else if (button == BUTTON_TRIPLE_CLICKED) + bstate |= (BUTTON1_TRIPLE_CLICKED << shf); + + button = Mouse_status.button[i] & BUTTON_MODIFIER_MASK; + + if (button & PDC_BUTTON_SHIFT) + bstate |= BUTTON_MODIFIER_SHIFT; + if (button & PDC_BUTTON_CONTROL) + bstate |= BUTTON_MODIFIER_CONTROL; + if (button & PDC_BUTTON_ALT) + bstate |= BUTTON_MODIFIER_ALT; + } + } + + if (MOUSE_WHEEL_UP) + bstate |= BUTTON4_PRESSED; + else if (MOUSE_WHEEL_DOWN) + bstate |= BUTTON5_PRESSED; + if( MOUSE_MOVED) + bstate |= REPORT_MOUSE_POSITION; + + /* extra filter pass -- mainly for button modifiers */ + + event->bstate = bstate & SP->_trap_mbe; + + return OK; +} + +int ungetmouse(MEVENT *event) +{ + int i; + unsigned long bstate; + + PDC_LOG(("ungetmouse() - called\n")); + + if (!event || ungot) + return ERR; + + ungot = TRUE; + + pdc_mouse_status.x = event->x; + pdc_mouse_status.y = event->y; + + pdc_mouse_status.changes = 0; + bstate = event->bstate; + + for (i = 0; i < 3; i++) + { + int shf = i * 5; + short button = 0; + + if (bstate & ((BUTTON1_RELEASED | BUTTON1_PRESSED | + BUTTON1_TRIPLE_CLICKED | + BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED) << shf)) + { + pdc_mouse_status.changes |= 1 << i; + + if (bstate & (BUTTON1_PRESSED << shf)) + button = BUTTON_PRESSED; + if (bstate & (BUTTON1_CLICKED << shf)) + button = BUTTON_CLICKED; + if (bstate & (BUTTON1_DOUBLE_CLICKED << shf)) + button = BUTTON_DOUBLE_CLICKED; + if (bstate & (BUTTON1_TRIPLE_CLICKED << shf)) + button = BUTTON_TRIPLE_CLICKED; + + if (bstate & BUTTON_MODIFIER_SHIFT) + button |= PDC_BUTTON_SHIFT; + if (bstate & BUTTON_MODIFIER_CONTROL) + button |= PDC_BUTTON_CONTROL; + if (bstate & BUTTON_MODIFIER_ALT) + button |= PDC_BUTTON_ALT; + } + + pdc_mouse_status.button[i] = button; + } + + if (bstate & BUTTON4_PRESSED) + pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_UP; + else if (bstate & BUTTON5_PRESSED) + pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_DOWN; + + return ungetch(KEY_MOUSE); +} + +bool has_mouse(void) +{ + return PDC_has_mouse(); +} diff --git a/3rd-party/PDCurses/pdcurses/move.c b/3rd-party/PDCurses/pdcurses/move.c new file mode 100644 index 0000000..780ccce --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/move.c @@ -0,0 +1,57 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +move +---- + +### Synopsis + + int move(int y, int x); + int wmove(WINDOW *win, int y, int x); + +### Description + + The cursor associated with the window is moved to the given + location. This does not move the physical cursor of the + terminal until refresh() is called. The position specified is + relative to the upper left corner of the window, which is (0,0). + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + move Y Y Y + wmove Y Y Y + +**man-end****************************************************************/ + +int move(int y, int x) +{ + PDC_LOG(("move() - called: y=%d x=%d\n", y, x)); + + if (!stdscr || x < 0 || y < 0 || x >= stdscr->_maxx || y >= stdscr->_maxy) + return ERR; + + stdscr->_curx = x; + stdscr->_cury = y; + + return OK; +} + +int wmove(WINDOW *win, int y, int x) +{ + PDC_LOG(("wmove() - called: y=%d x=%d\n", y, x)); + + if (!win || x < 0 || y < 0 || x >= win->_maxx || y >= win->_maxy) + return ERR; + + win->_curx = x; + win->_cury = y; + + return OK; +} diff --git a/3rd-party/PDCurses/pdcurses/outopts.c b/3rd-party/PDCurses/pdcurses/outopts.c new file mode 100644 index 0000000..87eafd9 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/outopts.c @@ -0,0 +1,159 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +outopts +------- + +### Synopsis + + int clearok(WINDOW *win, bool bf); + int idlok(WINDOW *win, bool bf); + void idcok(WINDOW *win, bool bf); + void immedok(WINDOW *win, bool bf); + int leaveok(WINDOW *win, bool bf); + int setscrreg(int top, int bot); + int wsetscrreg(WINDOW *win, int top, int bot); + int scrollok(WINDOW *win, bool bf); + + int raw_output(bool bf); + +### Description + + With clearok(), if bf is TRUE, the next call to wrefresh() with + this window will clear the screen completely and redraw the + entire screen. + + immedok(), called with a second argument of TRUE, causes an + automatic wrefresh() every time a change is made to the + specified window. + + Normally, the hardware cursor is left at the location of the + window being refreshed. leaveok() allows the cursor to be + left wherever the update happens to leave it. It's useful + for applications where the cursor is not used, since it reduces + the need for cursor motions. If possible, the cursor is made + invisible when this option is enabled. + + wsetscrreg() sets a scrolling region in a window; "top" and + "bot" are the line numbers for the top and bottom margins. If + this option and scrollok() are enabled, any attempt to move off + the bottom margin will cause all lines in the scrolling region + to scroll up one line. setscrreg() is the stdscr version. + + idlok() and idcok() do nothing in PDCurses, but are provided for + compatibility with other curses implementations. + + raw_output() enables the output of raw characters using the + standard *add* and *ins* curses functions (that is, it disables + translation of control characters). + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + clearok Y Y Y + idlok Y Y Y + idcok Y - 4.0 + immedok Y - 4.0 + leaveok Y Y Y + setscrreg Y Y Y + wsetscrreg Y Y Y + scrollok Y Y Y + raw_output - - - + +**man-end****************************************************************/ + +int clearok(WINDOW *win, bool bf) +{ + PDC_LOG(("clearok() - called\n")); + + if (!win) + return ERR; + + win->_clear = bf; + + return OK; +} + +int idlok(WINDOW *win, bool bf) +{ + PDC_LOG(("idlok() - called\n")); + + return OK; +} + +void idcok(WINDOW *win, bool bf) +{ + PDC_LOG(("idcok() - called\n")); +} + +void immedok(WINDOW *win, bool bf) +{ + PDC_LOG(("immedok() - called\n")); + + if (win) + win->_immed = bf; +} + +int leaveok(WINDOW *win, bool bf) +{ + PDC_LOG(("leaveok() - called\n")); + + if (!win) + return ERR; + + win->_leaveit = bf; + + curs_set(!bf); + + return OK; +} + +int setscrreg(int top, int bottom) +{ + PDC_LOG(("setscrreg() - called: top %d bottom %d\n", top, bottom)); + + return wsetscrreg(stdscr, top, bottom); +} + +int wsetscrreg(WINDOW *win, int top, int bottom) +{ + PDC_LOG(("wsetscrreg() - called: top %d bottom %d\n", top, bottom)); + + if (win && 0 <= top && top <= win->_cury && + win->_cury <= bottom && bottom < win->_maxy) + { + win->_tmarg = top; + win->_bmarg = bottom; + + return OK; + } + else + return ERR; +} + +int scrollok(WINDOW *win, bool bf) +{ + PDC_LOG(("scrollok() - called\n")); + + if (!win) + return ERR; + + win->_scroll = bf; + + return OK; +} + +int raw_output(bool bf) +{ + PDC_LOG(("raw_output() - called\n")); + + SP->raw_out = bf; + + return OK; +} diff --git a/3rd-party/PDCurses/pdcurses/overlay.c b/3rd-party/PDCurses/pdcurses/overlay.c new file mode 100644 index 0000000..038eef9 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/overlay.c @@ -0,0 +1,214 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +overlay +------- + +### Synopsis + + int overlay(const WINDOW *src_w, WINDOW *dst_w) + int overwrite(const WINDOW *src_w, WINDOW *dst_w) + int copywin(const WINDOW *src_w, WINDOW *dst_w, int src_tr, + int src_tc, int dst_tr, int dst_tc, int dst_br, + int dst_bc, bool overlay) + +### Description + + overlay() and overwrite() copy all the text from src_w into + dst_w. The windows need not be the same size. Those characters + in the source window that intersect with the destination window + are copied, so that the characters appear in the same physical + position on the screen. The difference between the two functions + is that overlay() is non-destructive (blanks are not copied) + while overwrite() is destructive (blanks are copied). + + copywin() is similar, but doesn't require that the two windows + overlap. The arguments src_tc and src_tr specify the top left + corner of the region to be copied. dst_tc, dst_tr, dst_br, and + dst_bc specify the region within the destination window to copy + to. The argument "overlay", if TRUE, indicates that the copy is + done non-destructively (as in overlay()); blanks in the source + window are not copied to the destination window. When overlay is + FALSE, blanks are copied. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + overlay Y Y Y + overwrite Y Y Y + copywin Y - 3.0 + +**man-end****************************************************************/ + +/* Thanks to Andreas Otte for the + corrected overlay()/overwrite() behavior. */ + +static int _copy_win(const WINDOW *src_w, WINDOW *dst_w, int src_tr, + int src_tc, int src_br, int src_bc, int dst_tr, + int dst_tc, bool _overlay) +{ + int col, line, y1, fc, *minchng, *maxchng; + chtype *w1ptr, *w2ptr; + + int lc = 0; + int xdiff = src_bc - src_tc; + int ydiff = src_br - src_tr; + + if (!src_w || !dst_w) + return ERR; + + minchng = dst_w->_firstch; + maxchng = dst_w->_lastch; + + for (y1 = 0; y1 < dst_tr; y1++) + { + minchng++; + maxchng++; + } + + for (line = 0; line < ydiff; line++) + { + w1ptr = src_w->_y[line + src_tr] + src_tc; + w2ptr = dst_w->_y[line + dst_tr] + dst_tc; + + fc = _NO_CHANGE; + + for (col = 0; col < xdiff; col++) + { + if ((*w1ptr) != (*w2ptr) && + !((*w1ptr & A_CHARTEXT) == ' ' && _overlay)) + { + *w2ptr = *w1ptr; + + if (fc == _NO_CHANGE) + fc = col + dst_tc; + + lc = col + dst_tc; + } + + w1ptr++; + w2ptr++; + } + + if (*minchng == _NO_CHANGE) + { + *minchng = fc; + *maxchng = lc; + } + else if (fc != _NO_CHANGE) + { + if (fc < *minchng) + *minchng = fc; + if (lc > *maxchng) + *maxchng = lc; + } + + minchng++; + maxchng++; + } + + return OK; +} + +int _copy_overlap(const WINDOW *src_w, WINDOW *dst_w, bool overlay) +{ + int first_line, first_col, last_line, last_col; + int src_start_x, src_start_y, dst_start_x, dst_start_y; + int xdiff, ydiff; + + if (!src_w || !dst_w) + return ERR; + + first_col = max(dst_w->_begx, src_w->_begx); + first_line = max(dst_w->_begy, src_w->_begy); + + last_col = min(src_w->_begx + src_w->_maxx, dst_w->_begx + dst_w->_maxx); + last_line = min(src_w->_begy + src_w->_maxy, dst_w->_begy + dst_w->_maxy); + + /* determine the overlapping region of the two windows in real + coordinates */ + + /* if no overlapping region, do nothing */ + + if ((last_col < first_col) || (last_line < first_line)) + return OK; + + /* size of overlapping region */ + + xdiff = last_col - first_col; + ydiff = last_line - first_line; + + if (src_w->_begx <= dst_w->_begx) + { + src_start_x = dst_w->_begx - src_w->_begx; + dst_start_x = 0; + } + else + { + dst_start_x = src_w->_begx - dst_w->_begx; + src_start_x = 0; + } + + if (src_w->_begy <= dst_w->_begy) + { + src_start_y = dst_w->_begy - src_w->_begy; + dst_start_y = 0; + } + else + { + dst_start_y = src_w->_begy - dst_w->_begy; + src_start_y = 0; + } + + return _copy_win(src_w, dst_w, src_start_y, src_start_x, + src_start_y + ydiff, src_start_x + xdiff, + dst_start_y, dst_start_x, overlay); +} + +int overlay(const WINDOW *src_w, WINDOW *dst_w) +{ + PDC_LOG(("overlay() - called\n")); + + return _copy_overlap(src_w, dst_w, TRUE); +} + +int overwrite(const WINDOW *src_w, WINDOW *dst_w) +{ + PDC_LOG(("overwrite() - called\n")); + + return _copy_overlap(src_w, dst_w, FALSE); +} + +int copywin(const WINDOW *src_w, WINDOW *dst_w, int src_tr, int src_tc, + int dst_tr, int dst_tc, int dst_br, int dst_bc, int _overlay) +{ + int src_end_x, src_end_y; + int src_rows, src_cols, dst_rows, dst_cols; + int min_rows, min_cols; + + PDC_LOG(("copywin() - called\n")); + + if (!src_w || !dst_w || dst_w == curscr || dst_br >= dst_w->_maxy + || dst_bc >= dst_w->_maxx || dst_tr < 0 || dst_tc < 0) + return ERR; + + src_rows = src_w->_maxy - src_tr; + src_cols = src_w->_maxx - src_tc; + dst_rows = dst_br - dst_tr + 1; + dst_cols = dst_bc - dst_tc + 1; + + min_rows = min(src_rows, dst_rows); + min_cols = min(src_cols, dst_cols); + + src_end_y = src_tr + min_rows; + src_end_x = src_tc + min_cols; + + return _copy_win(src_w, dst_w, src_tr, src_tc, src_end_y, src_end_x, + dst_tr, dst_tc, (bool)_overlay); +} diff --git a/3rd-party/PDCurses/pdcurses/pad.c b/3rd-party/PDCurses/pdcurses/pad.c new file mode 100644 index 0000000..178847f --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/pad.c @@ -0,0 +1,260 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +pad +--- + +### Synopsis + + WINDOW *newpad(int nlines, int ncols); + WINDOW *subpad(WINDOW *orig, int nlines, int ncols, + int begy, int begx); + int prefresh(WINDOW *win, int py, int px, int sy1, int sx1, + int sy2, int sx2); + int pnoutrefresh(WINDOW *w, int py, int px, int sy1, int sx1, + int sy2, int sx2); + int pechochar(WINDOW *pad, chtype ch); + int pecho_wchar(WINDOW *pad, const cchar_t *wch); + +### Description + + A pad is a special kind of window, which is not restricted by + the screen size, and is not necessarily associated with a + particular part of the screen. You can use a pad when you need + a large window, and only a part of the window will be on the + screen at one time. Pads are not refreshed automatically (e.g., + from scrolling or echoing of input). You can't call wrefresh() + with a pad as an argument; use prefresh() or pnoutrefresh() + instead. Note that these routines require additional parameters + to specify the part of the pad to be displayed, and the location + to use on the screen. + + newpad() creates a new pad data structure. + + subpad() creates a new sub-pad within a pad, at position (begy, + begx), with dimensions of nlines lines and ncols columns. This + position is relative to the pad, and not to the screen as with + subwin. Changes to either the parent pad or sub-pad will affect + both. When using sub-pads, you may need to call touchwin() + before calling prefresh(). + + pnoutrefresh() copies the specified pad to the virtual screen. + + prefresh() calls pnoutrefresh(), followed by doupdate(). + + These routines are analogous to wnoutrefresh() and wrefresh(). + (py, px) specifies the upper left corner of the part of the pad + to be displayed; (sy1, sx1) and (sy2, sx2) describe the screen + rectangle that will contain the selected part of the pad. + + pechochar() is functionally equivalent to addch() followed by + a call to prefresh(), with the last-used coordinates and + dimensions. pecho_wchar() is the wide-character version. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + newpad Y - Y + subpad Y - Y + prefresh Y - Y + pnoutrefresh Y - Y + pechochar Y - 3.0 + pecho_wchar Y + +**man-end****************************************************************/ + +#include + +/* save values for pechochar() */ + +static int save_pminrow, save_pmincol; +static int save_sminrow, save_smincol, save_smaxrow, save_smaxcol; + +WINDOW *newpad(int nlines, int ncols) +{ + WINDOW *win; + + PDC_LOG(("newpad() - called: lines=%d cols=%d\n", nlines, ncols)); + + if ( !(win = PDC_makenew(nlines, ncols, 0, 0)) + || !(win = PDC_makelines(win)) ) + return (WINDOW *)NULL; + + werase(win); + + win->_flags = _PAD; + + /* save default values in case pechochar() is the first call to + prefresh(). */ + + save_pminrow = 0; + save_pmincol = 0; + save_sminrow = 0; + save_smincol = 0; + save_smaxrow = min(LINES, nlines) - 1; + save_smaxcol = min(COLS, ncols) - 1; + + return win; +} + +WINDOW *subpad(WINDOW *orig, int nlines, int ncols, int begy, int begx) +{ + WINDOW *win; + int i; + + PDC_LOG(("subpad() - called: lines=%d cols=%d begy=%d begx=%d\n", + nlines, ncols, begy, begx)); + + if (!orig || !(orig->_flags & _PAD)) + return (WINDOW *)NULL; + + /* make sure window fits inside the original one */ + + if (begy < 0 || begx < 0 || + (begy + nlines) > orig->_maxy || + (begx + ncols) > orig->_maxx) + return (WINDOW *)NULL; + + if (!nlines) + nlines = orig->_maxy - begy; + + if (!ncols) + ncols = orig->_maxx - begx; + + if ( !(win = PDC_makenew(nlines, ncols, begy, begx)) ) + return (WINDOW *)NULL; + + /* initialize window variables */ + + win->_attrs = orig->_attrs; + win->_leaveit = orig->_leaveit; + win->_scroll = orig->_scroll; + win->_nodelay = orig->_nodelay; + win->_use_keypad = orig->_use_keypad; + win->_parent = orig; + + for (i = 0; i < nlines; i++) + win->_y[i] = orig->_y[begy + i] + begx; + + win->_flags = _SUBPAD; + + /* save default values in case pechochar() is the first call + to prefresh(). */ + + save_pminrow = 0; + save_pmincol = 0; + save_sminrow = 0; + save_smincol = 0; + save_smaxrow = min(LINES, nlines) - 1; + save_smaxcol = min(COLS, ncols) - 1; + + return win; +} + +int prefresh(WINDOW *win, int py, int px, int sy1, int sx1, int sy2, int sx2) +{ + PDC_LOG(("prefresh() - called\n")); + + if (pnoutrefresh(win, py, px, sy1, sx1, sy2, sx2) == ERR) + return ERR; + + doupdate(); + return OK; +} + +int pnoutrefresh(WINDOW *w, int py, int px, int sy1, int sx1, int sy2, int sx2) +{ + int num_cols; + int sline = sy1; + int pline = py; + + PDC_LOG(("pnoutrefresh() - called\n")); + + if (!w || !(w->_flags & (_PAD|_SUBPAD)) || (sy2 >= LINES) || (sx2 >= COLS)) + return ERR; + + if (py < 0) + py = 0; + if (px < 0) + px = 0; + if (sy1 < 0) + sy1 = 0; + if (sx1 < 0) + sx1 = 0; + + if (sy2 < sy1 || sx2 < sx1) + return ERR; + + num_cols = min((sx2 - sx1 + 1), (w->_maxx - px)); + + while (sline <= sy2) + { + if (pline < w->_maxy) + { + memcpy(curscr->_y[sline] + sx1, w->_y[pline] + px, + num_cols * sizeof(chtype)); + + if ((curscr->_firstch[sline] == _NO_CHANGE) + || (curscr->_firstch[sline] > sx1)) + curscr->_firstch[sline] = sx1; + + if (sx2 > curscr->_lastch[sline]) + curscr->_lastch[sline] = sx2; + + w->_firstch[pline] = _NO_CHANGE; /* updated now */ + w->_lastch[pline] = _NO_CHANGE; /* updated now */ + } + + sline++; + pline++; + } + + if (w->_clear) + { + w->_clear = FALSE; + curscr->_clear = TRUE; + } + + /* position the cursor to the pad's current position if possible -- + is the pad current position going to end up displayed? if not, + then don't move the cursor; if so, move it to the correct place */ + + if (!w->_leaveit && w->_cury >= py && w->_curx >= px && + w->_cury <= py + (sy2 - sy1) && w->_curx <= px + (sx2 - sx1)) + { + curscr->_cury = (w->_cury - py) + sy1; + curscr->_curx = (w->_curx - px) + sx1; + } + + return OK; +} + +int pechochar(WINDOW *pad, chtype ch) +{ + PDC_LOG(("pechochar() - called\n")); + + if (waddch(pad, ch) == ERR) + return ERR; + + return prefresh(pad, save_pminrow, save_pmincol, save_sminrow, + save_smincol, save_smaxrow, save_smaxcol); +} + +#ifdef PDC_WIDE +int pecho_wchar(WINDOW *pad, const cchar_t *wch) +{ + PDC_LOG(("pecho_wchar() - called\n")); + + if (!wch || (waddch(pad, *wch) == ERR)) + return ERR; + + return prefresh(pad, save_pminrow, save_pmincol, save_sminrow, + save_smincol, save_smaxrow, save_smaxcol); +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/panel.c b/3rd-party/PDCurses/pdcurses/panel.c new file mode 100644 index 0000000..6a735e9 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/panel.c @@ -0,0 +1,633 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +panel +----- + +### Synopsis + + int bottom_panel(PANEL *pan); + int del_panel(PANEL *pan); + int hide_panel(PANEL *pan); + int move_panel(PANEL *pan, int starty, int startx); + PANEL *new_panel(WINDOW *win); + PANEL *panel_above(const PANEL *pan); + PANEL *panel_below(const PANEL *pan); + int panel_hidden(const PANEL *pan); + const void *panel_userptr(const PANEL *pan); + WINDOW *panel_window(const PANEL *pan); + int replace_panel(PANEL *pan, WINDOW *win); + int set_panel_userptr(PANEL *pan, const void *uptr); + int show_panel(PANEL *pan); + int top_panel(PANEL *pan); + void update_panels(void); + +### Description + + The panel library is built using the curses library, and any + program using panels routines must call one of the curses + initialization routines such as initscr(). A program using these + routines must be linked with the panels and curses libraries. + The header includes the header . + + The panels package gives the applications programmer a way to + have depth relationships between curses windows; a curses window + is associated with every panel. The panels routines allow curses + windows to overlap without making visible the overlapped + portions of underlying windows. The initial curses window, + stdscr, lies beneath all panels. The set of currently visible + panels is the 'deck' of panels. + + The panels package allows the applications programmer to create + panels, fetch and set their associated windows, shuffle panels + in the deck, and manipulate panels in other ways. + + bottom_panel() places pan at the bottom of the deck. The size, + location and contents of the panel are unchanged. + + del_panel() deletes pan, but not its associated winwow. + + hide_panel() removes a panel from the deck and thus hides it + from view. + + move_panel() moves the curses window associated with pan, so + that its upper lefthand corner is at the supplied coordinates. + (Do not use mvwin() on the window.) + + new_panel() creates a new panel associated with win and returns + the panel pointer. The new panel is placed at the top of the + deck. + + panel_above() returns a pointer to the panel in the deck above + pan, or NULL if pan is the top panel. If the value of pan passed + is NULL, this function returns a pointer to the bottom panel in + the deck. + + panel_below() returns a pointer to the panel in the deck below + pan, or NULL if pan is the bottom panel. If the value of pan + passed is NULL, this function returns a pointer to the top panel + in the deck. + + panel_hidden() returns OK if pan is hidden and ERR if it is not. + + panel_userptr() - Each panel has a user pointer available for + maintaining relevant information. This function returns a + pointer to that information previously set up by + set_panel_userptr(). + + panel_window() returns a pointer to the curses window associated + with the panel. + + replace_panel() replaces the current window of pan with win. + + set_panel_userptr() - Each panel has a user pointer available + for maintaining relevant information. This function sets the + value of that information. + + show_panel() makes a previously hidden panel visible and places + it back in the deck on top. + + top_panel() places pan on the top of the deck. The size, + location and contents of the panel are unchanged. + + update_panels() refreshes the virtual screen to reflect the + depth relationships between the panels in the deck. The user + must use doupdate() to refresh the physical screen. + +### Return Value + + Each routine that returns a pointer to an object returns NULL if + an error occurs. Each panel routine that returns an integer, + returns OK if it executes successfully and ERR if it does not. + +### Portability + X/Open BSD SYS V + bottom_panel - - Y + del_panel - - Y + hide_panel - - Y + move_panel - - Y + new_panel - - Y + panel_above - - Y + panel_below - - Y + panel_hidden - - Y + panel_userptr - - Y + panel_window - - Y + replace_panel - - Y + set_panel_userptr - - Y + show_panel - - Y + top_panel - - Y + update_panels - - Y + + Credits: + Original Author - Warren Tucker + +**man-end****************************************************************/ + +#include +#include + +PANEL *_bottom_panel = (PANEL *)0; +PANEL *_top_panel = (PANEL *)0; +PANEL _stdscr_pseudo_panel = { (WINDOW *)0 }; + +#ifdef PANEL_DEBUG + +static void dPanel(char *text, PANEL *pan) +{ + PDC_LOG(("%s id=%s b=%s a=%s y=%d x=%d", text, pan->user, + pan->below ? pan->below->user : "--", + pan->above ? pan->above->user : "--", + pan->wstarty, pan->wstartx)); +} + +static void dStack(char *fmt, int num, PANEL *pan) +{ + char s80[80]; + + sprintf(s80, fmt, num, pan); + PDC_LOG(("%s b=%s t=%s", s80, _bottom_panel ? _bottom_panel->user : "--", + _top_panel ? _top_panel->user : "--")); + + if (pan) + PDC_LOG(("pan id=%s", pan->user)); + + pan = _bottom_panel; + + while (pan) + { + dPanel("stk", pan); + pan = pan->above; + } +} + +/* debugging hook for wnoutrefresh */ + +static void Wnoutrefresh(PANEL *pan) +{ + dPanel("wnoutrefresh", pan); + wnoutrefresh(pan->win); +} + +static void Touchpan(PANEL *pan) +{ + dPanel("Touchpan", pan); + touchwin(pan->win); +} + +static void Touchline(PANEL *pan, int start, int count) +{ + char s80[80]; + + sprintf(s80, "Touchline s=%d c=%d", start, count); + dPanel(s80, pan); + touchline(pan->win, start, count); +} + +#else /* PANEL_DEBUG */ + +#define dPanel(text, pan) +#define dStack(fmt, num, pan) +#define Wnoutrefresh(pan) wnoutrefresh((pan)->win) +#define Touchpan(pan) touchwin((pan)->win) +#define Touchline(pan, start, count) touchline((pan)->win, start, count) + +#endif /* PANEL_DEBUG */ + +static bool _panels_overlapped(PANEL *pan1, PANEL *pan2) +{ + if (!pan1 || !pan2) + return FALSE; + + return ((pan1->wstarty >= pan2->wstarty && pan1->wstarty < pan2->wendy) + || (pan2->wstarty >= pan1->wstarty && pan2->wstarty < pan1->wendy)) + && ((pan1->wstartx >= pan2->wstartx && pan1->wstartx < pan2->wendx) + || (pan2->wstartx >= pan1->wstartx && pan2->wstartx < pan1->wendx)); +} + +static void _free_obscure(PANEL *pan) +{ + PANELOBS *tobs = pan->obscure; /* "this" one */ + PANELOBS *nobs; /* "next" one */ + + while (tobs) + { + nobs = tobs->above; + free((char *)tobs); + tobs = nobs; + } + pan->obscure = (PANELOBS *)0; +} + +static void _override(PANEL *pan, int show) +{ + int y; + PANEL *pan2; + PANELOBS *tobs = pan->obscure; /* "this" one */ + + if (show == 1) + Touchpan(pan); + else if (!show) + { + Touchpan(pan); + Touchpan(&_stdscr_pseudo_panel); + } + else if (show == -1) + while (tobs && (tobs->pan != pan)) + tobs = tobs->above; + + while (tobs) + { + if ((pan2 = tobs->pan) != pan) + for (y = pan->wstarty; y < pan->wendy; y++) + if ((y >= pan2->wstarty) && (y < pan2->wendy) && + ((is_linetouched(pan->win, y - pan->wstarty)) || + (is_linetouched(stdscr, y)))) + Touchline(pan2, y - pan2->wstarty, 1); + + tobs = tobs->above; + } +} + +static void _calculate_obscure(void) +{ + PANEL *pan, *pan2; + PANELOBS *tobs; /* "this" one */ + PANELOBS *lobs; /* last one */ + + pan = _bottom_panel; + + while (pan) + { + if (pan->obscure) + _free_obscure(pan); + + lobs = (PANELOBS *)0; + pan2 = _bottom_panel; + + while (pan2) + { + if (_panels_overlapped(pan, pan2)) + { + if ((tobs = malloc(sizeof(PANELOBS))) == NULL) + return; + + tobs->pan = pan2; + dPanel("obscured", pan2); + tobs->above = (PANELOBS *)0; + + if (lobs) + lobs->above = tobs; + else + pan->obscure = tobs; + + lobs = tobs; + } + + pan2 = pan2->above; + } + + _override(pan, 1); + pan = pan->above; + } +} + +/* check to see if panel is in the stack */ + +static bool _panel_is_linked(const PANEL *pan) +{ + PANEL *pan2 = _bottom_panel; + + while (pan2) + { + if (pan2 == pan) + return TRUE; + + pan2 = pan2->above; + } + + return FALSE; +} + +/* link panel into stack at top */ + +static void _panel_link_top(PANEL *pan) +{ +#ifdef PANEL_DEBUG + dStack("", 1, pan); + if (_panel_is_linked(pan)) + return; +#endif + pan->above = (PANEL *)0; + pan->below = (PANEL *)0; + + if (_top_panel) + { + _top_panel->above = pan; + pan->below = _top_panel; + } + + _top_panel = pan; + + if (!_bottom_panel) + _bottom_panel = pan; + + _calculate_obscure(); + dStack("", 9, pan); +} + +/* link panel into stack at bottom */ + +static void _panel_link_bottom(PANEL *pan) +{ +#ifdef PANEL_DEBUG + dStack("", 1, pan); + if (_panel_is_linked(pan)) + return; +#endif + pan->above = (PANEL *)0; + pan->below = (PANEL *)0; + + if (_bottom_panel) + { + _bottom_panel->below = pan; + pan->above = _bottom_panel; + } + + _bottom_panel = pan; + + if (!_top_panel) + _top_panel = pan; + + _calculate_obscure(); + dStack("", 9, pan); +} + +static void _panel_unlink(PANEL *pan) +{ + PANEL *prev; + PANEL *next; + +#ifdef PANEL_DEBUG + dStack("", 1, pan); + if (!_panel_is_linked(pan)) + return; +#endif + _override(pan, 0); + _free_obscure(pan); + + prev = pan->below; + next = pan->above; + + /* if non-zero, we will not update the list head */ + + if (prev) + { + prev->above = next; + if(next) + next->below = prev; + } + else if (next) + next->below = prev; + + if (pan == _bottom_panel) + _bottom_panel = next; + + if (pan == _top_panel) + _top_panel = prev; + + _calculate_obscure(); + + pan->above = (PANEL *)0; + pan->below = (PANEL *)0; + dStack("", 9, pan); + +} + +/************************************************************************ + * The following are the public functions for the panels library. * + ************************************************************************/ + +int bottom_panel(PANEL *pan) +{ + if (!pan) + return ERR; + + if (pan == _bottom_panel) + return OK; + + if (_panel_is_linked(pan)) + hide_panel(pan); + + _panel_link_bottom(pan); + + return OK; +} + +int del_panel(PANEL *pan) +{ + if (pan) + { + if (_panel_is_linked(pan)) + hide_panel(pan); + + free((char *)pan); + return OK; + } + + return ERR; +} + +int hide_panel(PANEL *pan) +{ + if (!pan) + return ERR; + + if (!_panel_is_linked(pan)) + { + pan->above = (PANEL *)0; + pan->below = (PANEL *)0; + return ERR; + } + + _panel_unlink(pan); + + return OK; +} + +int move_panel(PANEL *pan, int starty, int startx) +{ + WINDOW *win; + int maxy, maxx; + + if (!pan) + return ERR; + + if (_panel_is_linked(pan)) + _override(pan, 0); + + win = pan->win; + + if (mvwin(win, starty, startx) == ERR) + return ERR; + + getbegyx(win, pan->wstarty, pan->wstartx); + getmaxyx(win, maxy, maxx); + pan->wendy = pan->wstarty + maxy; + pan->wendx = pan->wstartx + maxx; + + if (_panel_is_linked(pan)) + _calculate_obscure(); + + return OK; +} + +PANEL *new_panel(WINDOW *win) +{ + PANEL *pan = malloc(sizeof(PANEL)); + + if (!_stdscr_pseudo_panel.win) + { + _stdscr_pseudo_panel.win = stdscr; + _stdscr_pseudo_panel.wstarty = 0; + _stdscr_pseudo_panel.wstartx = 0; + _stdscr_pseudo_panel.wendy = LINES; + _stdscr_pseudo_panel.wendx = COLS; + _stdscr_pseudo_panel.user = "stdscr"; + _stdscr_pseudo_panel.obscure = (PANELOBS *)0; + } + + if (pan) + { + int maxy, maxx; + + pan->win = win; + pan->above = (PANEL *)0; + pan->below = (PANEL *)0; + getbegyx(win, pan->wstarty, pan->wstartx); + getmaxyx(win, maxy, maxx); + pan->wendy = pan->wstarty + maxy; + pan->wendx = pan->wstartx + maxx; +#ifdef PANEL_DEBUG + pan->user = "new"; +#else + pan->user = (char *)0; +#endif + pan->obscure = (PANELOBS *)0; + show_panel(pan); + } + + return pan; +} + +PANEL *panel_above(const PANEL *pan) +{ + return pan ? pan->above : _bottom_panel; +} + +PANEL *panel_below(const PANEL *pan) +{ + return pan ? pan->below : _top_panel; +} + +int panel_hidden(const PANEL *pan) +{ + if (!pan) + return ERR; + + return _panel_is_linked(pan) ? ERR : OK; +} + +const void *panel_userptr(const PANEL *pan) +{ + return pan ? pan->user : NULL; +} + +WINDOW *panel_window(const PANEL *pan) +{ + PDC_LOG(("panel_window() - called\n")); + + return pan->win; +} + +int replace_panel(PANEL *pan, WINDOW *win) +{ + int maxy, maxx; + + if (!pan) + return ERR; + + if (_panel_is_linked(pan)) + _override(pan, 0); + + pan->win = win; + getbegyx(win, pan->wstarty, pan->wstartx); + getmaxyx(win, maxy, maxx); + pan->wendy = pan->wstarty + maxy; + pan->wendx = pan->wstartx + maxx; + + if (_panel_is_linked(pan)) + _calculate_obscure(); + + return OK; +} + +int set_panel_userptr(PANEL *pan, const void *uptr) +{ + if (!pan) + return ERR; + + pan->user = uptr; + return OK; +} + +int show_panel(PANEL *pan) +{ + if (!pan) + return ERR; + + if (pan == _top_panel) + return OK; + + if (_panel_is_linked(pan)) + hide_panel(pan); + + _panel_link_top(pan); + + return OK; +} + +int top_panel(PANEL *pan) +{ + return show_panel(pan); +} + +void update_panels(void) +{ + PANEL *pan; + + PDC_LOG(("update_panels() - called\n")); + + pan = _bottom_panel; + + while (pan) + { + _override(pan, -1); + pan = pan->above; + } + + if (is_wintouched(stdscr)) + Wnoutrefresh(&_stdscr_pseudo_panel); + + pan = _bottom_panel; + + while (pan) + { + if (is_wintouched(pan->win) || !pan->above) + Wnoutrefresh(pan); + + pan = pan->above; + } +} diff --git a/3rd-party/PDCurses/pdcurses/printw.c b/3rd-party/PDCurses/pdcurses/printw.c new file mode 100644 index 0000000..ccdb5ad --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/printw.c @@ -0,0 +1,126 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +printw +------ + +### Synopsis + + int printw(const char *fmt, ...); + int wprintw(WINDOW *win, const char *fmt, ...); + int mvprintw(int y, int x, const char *fmt, ...); + int mvwprintw(WINDOW *win, int y, int x, const char *fmt,...); + int vwprintw(WINDOW *win, const char *fmt, va_list varglist); + int vw_printw(WINDOW *win, const char *fmt, va_list varglist); + +### Description + + The printw() functions add a formatted string to the window at + the current or specified cursor position. The format strings are + the same as used in the standard C library's printf(). (printw() + can be used as a drop-in replacement for printf().) + +### Return Value + + All functions return the number of characters printed, or + ERR on error. + +### Portability + X/Open BSD SYS V + printw Y Y Y + wprintw Y Y Y + mvprintw Y Y Y + mvwprintw Y Y Y + vwprintw Y - 4.0 + vw_printw Y + +**man-end****************************************************************/ + +#include + +int vwprintw(WINDOW *win, const char *fmt, va_list varglist) +{ + char printbuf[513]; + int len; + + PDC_LOG(("vwprintw() - called\n")); + +#ifdef HAVE_VSNPRINTF + len = vsnprintf(printbuf, 512, fmt, varglist); +#else + len = vsprintf(printbuf, fmt, varglist); +#endif + return (waddstr(win, printbuf) == ERR) ? ERR : len; +} + +int printw(const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("printw() - called\n")); + + va_start(args, fmt); + retval = vwprintw(stdscr, fmt, args); + va_end(args); + + return retval; +} + +int wprintw(WINDOW *win, const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("wprintw() - called\n")); + + va_start(args, fmt); + retval = vwprintw(win, fmt, args); + va_end(args); + + return retval; +} + +int mvprintw(int y, int x, const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("mvprintw() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + va_start(args, fmt); + retval = vwprintw(stdscr, fmt, args); + va_end(args); + + return retval; +} + +int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("mvwprintw() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + va_start(args, fmt); + retval = vwprintw(win, fmt, args); + va_end(args); + + return retval; +} + +int vw_printw(WINDOW *win, const char *fmt, va_list varglist) +{ + PDC_LOG(("vw_printw() - called\n")); + + return vwprintw(win, fmt, varglist); +} diff --git a/3rd-party/PDCurses/pdcurses/refresh.c b/3rd-party/PDCurses/pdcurses/refresh.c new file mode 100644 index 0000000..4ff9efd --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/refresh.c @@ -0,0 +1,279 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +refresh +------- + +### Synopsis + + int refresh(void); + int wrefresh(WINDOW *win); + int wnoutrefresh(WINDOW *win); + int doupdate(void); + int redrawwin(WINDOW *win); + int wredrawln(WINDOW *win, int beg_line, int num_lines); + +### Description + + wrefresh() copies the named window to the physical terminal + screen, taking into account what is already there in order to + optimize cursor movement. refresh() does the same, using stdscr. + These routines must be called to get any output on the terminal, + as other routines only manipulate data structures. Unless + leaveok() has been enabled, the physical cursor of the terminal + is left at the location of the window's cursor. + + wnoutrefresh() and doupdate() allow multiple updates with more + efficiency than wrefresh() alone. wrefresh() works by first + calling wnoutrefresh(), which copies the named window to the + virtual screen. It then calls doupdate(), which compares the + virtual screen to the physical screen and does the actual + update. A series of calls to wrefresh() will result in + alternating calls to wnoutrefresh() and doupdate(), causing + several bursts of output to the screen. By first calling + wnoutrefresh() for each window, it is then possible to call + doupdate() only once. + + In PDCurses, redrawwin() is equivalent to touchwin(), and + wredrawln() is the same as touchline(). In some other curses + implementations, there's a subtle distinction, but it has no + meaning in PDCurses. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + refresh Y Y Y + wrefresh Y Y Y + wnoutrefresh Y Y Y + doupdate Y Y Y + redrawwin Y - 4.0 + wredrawln Y - 4.0 + +**man-end****************************************************************/ + +#include + +int wnoutrefresh(WINDOW *win) +{ + int begy, begx; /* window's place on screen */ + int i, j; + + PDC_LOG(("wnoutrefresh() - called: win=%p\n", win)); + + if ( !win || (win->_flags & (_PAD|_SUBPAD)) ) + return ERR; + + begy = win->_begy; + begx = win->_begx; + + for (i = 0, j = begy; i < win->_maxy; i++, j++) + { + if (win->_firstch[i] != _NO_CHANGE) + { + chtype *src = win->_y[i]; + chtype *dest = curscr->_y[j] + begx; + + int first = win->_firstch[i]; /* first changed */ + int last = win->_lastch[i]; /* last changed */ + + /* ignore areas on the outside that are marked as changed, + but really aren't */ + + while (first <= last && src[first] == dest[first]) + first++; + + while (last >= first && src[last] == dest[last]) + last--; + + /* if any have really changed... */ + + if (first <= last) + { + memcpy(dest + first, src + first, + (last - first + 1) * sizeof(chtype)); + + first += begx; + last += begx; + + if (first < curscr->_firstch[j] || + curscr->_firstch[j] == _NO_CHANGE) + curscr->_firstch[j] = first; + + if (last > curscr->_lastch[j]) + curscr->_lastch[j] = last; + } + + win->_firstch[i] = _NO_CHANGE; /* updated now */ + } + + win->_lastch[i] = _NO_CHANGE; /* updated now */ + } + + if (win->_clear) + win->_clear = FALSE; + + if (!win->_leaveit) + { + curscr->_cury = win->_cury + begy; + curscr->_curx = win->_curx + begx; + } + + return OK; +} + +int doupdate(void) +{ + int y; + bool clearall; + + PDC_LOG(("doupdate() - called\n")); + + if (!curscr) + return ERR; + + if (isendwin()) /* coming back after endwin() called */ + { + reset_prog_mode(); + clearall = TRUE; + SP->alive = TRUE; /* so isendwin() result is correct */ + } + else + clearall = curscr->_clear; + + for (y = 0; y < SP->lines; y++) + { + PDC_LOG(("doupdate() - Transforming line %d of %d: %s\n", + y, SP->lines, (curscr->_firstch[y] != _NO_CHANGE) ? + "Yes" : "No")); + + if (clearall || curscr->_firstch[y] != _NO_CHANGE) + { + int first, last; + + chtype *src = curscr->_y[y]; + chtype *dest = pdc_lastscr->_y[y]; + + if (clearall) + { + first = 0; + last = COLS - 1; + } + else + { + first = curscr->_firstch[y]; + last = curscr->_lastch[y]; + } + + while (first <= last) + { + int len = 0; + + /* build up a run of changed cells; if two runs are + separated by a single unchanged cell, ignore the + break */ + + if (clearall) + len = last - first + 1; + else + while (first + len <= last && + (src[first + len] != dest[first + len] || + (len && first + len < last && + src[first + len + 1] != dest[first + len + 1]) + ) + ) + len++; + + /* update the screen, and pdc_lastscr */ + + if (len) + { + PDC_transform_line(y, first, len, src + first); + memcpy(dest + first, src + first, len * sizeof(chtype)); + first += len; + } + + /* skip over runs of unchanged cells */ + + while (first <= last && src[first] == dest[first]) + first++; + } + + curscr->_firstch[y] = _NO_CHANGE; + curscr->_lastch[y] = _NO_CHANGE; + } + } + + curscr->_clear = FALSE; + + if (SP->visibility) + PDC_gotoyx(curscr->_cury, curscr->_curx); + + SP->cursrow = curscr->_cury; + SP->curscol = curscr->_curx; + + return OK; +} + +int wrefresh(WINDOW *win) +{ + bool save_clear; + + PDC_LOG(("wrefresh() - called\n")); + + if ( !win || (win->_flags & (_PAD|_SUBPAD)) ) + return ERR; + + save_clear = win->_clear; + + if (win == curscr) + curscr->_clear = TRUE; + else + wnoutrefresh(win); + + if (save_clear && win->_maxy == SP->lines && win->_maxx == SP->cols) + curscr->_clear = TRUE; + + return doupdate(); +} + +int refresh(void) +{ + PDC_LOG(("refresh() - called\n")); + + return wrefresh(stdscr); +} + +int wredrawln(WINDOW *win, int start, int num) +{ + int i; + + PDC_LOG(("wredrawln() - called: win=%p start=%d num=%d\n", + win, start, num)); + + if (!win || start > win->_maxy || start + num > win->_maxy) + return ERR; + + for (i = start; i < start + num; i++) + { + win->_firstch[i] = 0; + win->_lastch[i] = win->_maxx - 1; + } + + return OK; +} + +int redrawwin(WINDOW *win) +{ + PDC_LOG(("redrawwin() - called: win=%p\n", win)); + + if (!win) + return ERR; + + return wredrawln(win, 0, win->_maxy); +} diff --git a/3rd-party/PDCurses/pdcurses/scanw.c b/3rd-party/PDCurses/pdcurses/scanw.c new file mode 100644 index 0000000..ab6eace --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/scanw.c @@ -0,0 +1,578 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +scanw +----- + +### Synopsis + + int scanw(const char *fmt, ...); + int wscanw(WINDOW *win, const char *fmt, ...); + int mvscanw(int y, int x, const char *fmt, ...); + int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...); + int vwscanw(WINDOW *win, const char *fmt, va_list varglist); + int vw_scanw(WINDOW *win, const char *fmt, va_list varglist); + +### Description + + These routines correspond to the standard C library's scanf() + family. Each gets a string from the window via wgetnstr(), and + uses the resulting line as input for the scan. + +### Return Value + + On successful completion, these functions return the number of + items successfully matched. Otherwise they return ERR. + +### Portability + X/Open BSD SYS V + scanw Y Y Y + wscanw Y Y Y + mvscanw Y Y Y + mvwscanw Y Y Y + vwscanw Y - 4.0 + vw_scanw Y + +**man-end****************************************************************/ + +#include + +#ifndef HAVE_VSSCANF +# include +# include +# include + +static int _pdc_vsscanf(const char *, const char *, va_list); + +# define vsscanf _pdc_vsscanf +#endif + +int vwscanw(WINDOW *win, const char *fmt, va_list varglist) +{ + char scanbuf[256]; + + PDC_LOG(("vwscanw() - called\n")); + + if (wgetnstr(win, scanbuf, 255) == ERR) + return ERR; + + return vsscanf(scanbuf, fmt, varglist); +} + +int scanw(const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("scanw() - called\n")); + + va_start(args, fmt); + retval = vwscanw(stdscr, fmt, args); + va_end(args); + + return retval; +} + +int wscanw(WINDOW *win, const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("wscanw() - called\n")); + + va_start(args, fmt); + retval = vwscanw(win, fmt, args); + va_end(args); + + return retval; +} + +int mvscanw(int y, int x, const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("mvscanw() - called\n")); + + if (move(y, x) == ERR) + return ERR; + + va_start(args, fmt); + retval = vwscanw(stdscr, fmt, args); + va_end(args); + + return retval; +} + +int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...) +{ + va_list args; + int retval; + + PDC_LOG(("mvscanw() - called\n")); + + if (wmove(win, y, x) == ERR) + return ERR; + + va_start(args, fmt); + retval = vwscanw(win, fmt, args); + va_end(args); + + return retval; +} + +int vw_scanw(WINDOW *win, const char *fmt, va_list varglist) +{ + PDC_LOG(("vw_scanw() - called\n")); + + return vwscanw(win, fmt, varglist); +} + +#ifndef HAVE_VSSCANF + +/* _pdc_vsscanf() - Internal routine to parse and format an input + buffer. It scans a series of input fields; each field is formatted + according to a supplied format string and the formatted input is + stored in the variable number of addresses passed. Returns the number + of input fields or EOF on error. + + Don't compile this unless required. Some compilers (at least Borland + C++ 3.0) have to link with math libraries due to the use of floats. + + Based on vsscanf.c and input.c from emx 0.8f library source, + Copyright (c) 1990-1992 by Eberhard Mattes, who has kindly agreed to + its inclusion in PDCurses. */ + +#define WHITE(x) ((x) == ' ' || (x) == '\t' || (x) == '\n') + +#define NEXT(x) \ + do { \ + x = *buf++; \ + if (!x) \ + return (count ? count : EOF); \ + ++chars; \ + } while (0) + +#define UNGETC() \ + do { \ + --buf; --chars; \ + } while (0) + +static int _pdc_vsscanf(const char *buf, const char *fmt, va_list arg_ptr) +{ + int count, chars, c, width, radix, d, i; + int *int_ptr; + long *long_ptr; + short *short_ptr; + char *char_ptr; + unsigned char f; + char neg, assign, ok, size; + long n; + char map[256], end; + double dx, dd, *dbl_ptr; + float *flt_ptr; + int exp; + char eneg; + + count = 0; + chars = 0; + c = 0; + while ((f = *fmt) != 0) + { + if (WHITE(f)) + { + do + { + ++fmt; + f = *fmt; + } + while (WHITE(f)); + do + { + c = *buf++; + if (!c) + { + if (!f || count) + return count; + else + return EOF; + } else + ++chars; + } + while (WHITE(c)); + UNGETC(); + } else if (f != '%') + { + NEXT(c); + if (c != f) + return count; + ++fmt; + } else + { + assign = TRUE; + width = INT_MAX; + char_ptr = NULL; + ++fmt; + if (*fmt == '*') + { + assign = FALSE; + ++fmt; + } + if (isdigit(*fmt)) + { + width = 0; + while (isdigit(*fmt)) + width = width * 10 + (*fmt++ - '0'); + if (!width) + width = INT_MAX; + } + size = 0; + if (*fmt == 'h' || *fmt == 'l') + size = *fmt++; + f = *fmt; + switch (f) + { + case 'c': + if (width == INT_MAX) + width = 1; + if (assign) + char_ptr = va_arg(arg_ptr, char *); + while (width > 0) + { + --width; + NEXT(c); + if (assign) + { + *char_ptr++ = (char) c; + ++count; + } + } + break; + case '[': + memset(map, 0, 256); + end = 0; + ++fmt; + if (*fmt == '^') + { + ++fmt; + end = 1; + } + i = 0; + for (;;) + { + f = (unsigned char) *fmt; + switch (f) + { + case 0: + /* avoid skipping past 0 */ + --fmt; + NEXT(c); + goto string; + case ']': + if (i > 0) + { + NEXT(c); + goto string; + } + /* no break */ + default: + if (fmt[1] == '-' && fmt[2] + && f < (unsigned char)fmt[2]) + { + memset(map + f, 1, (unsigned char)fmt[2] - f); + fmt += 2; + } + else + map[f] = 1; + break; + } + ++fmt; + ++i; + } + case 's': + memset(map, 0, 256); + map[' '] = 1; + map['\n'] = 1; + map['\r'] = 1; + map['\t'] = 1; + end = 1; + do + { + NEXT(c); + } + while (WHITE(c)); + string: + if (assign) + char_ptr = va_arg(arg_ptr, char *); + while (width > 0 && map[(unsigned char) c] != end) + { + --width; + if (assign) + *char_ptr++ = (char) c; + c = *buf++; + if (!c) + break; + else + ++chars; + } + if (assign) + { + *char_ptr = 0; + ++count; + } + if (!c) + return count; + else + UNGETC(); + break; + case 'f': + case 'e': + case 'E': + case 'g': + case 'G': + neg = ok = FALSE; + dx = 0.0; + do + { + NEXT(c); + } + while (WHITE(c)); + if (c == '+') + { + NEXT(c); + --width; + } else if (c == '-') + { + neg = TRUE; + NEXT(c); + --width; + } + while (width > 0 && isdigit(c)) + { + --width; + dx = dx * 10.0 + (double) (c - '0'); + ok = TRUE; + c = *buf++; + if (!c) + break; + else + ++chars; + } + if (width > 0 && c == '.') + { + --width; + dd = 10.0; + NEXT(c); + while (width > 0 && isdigit(c)) + { + --width; + dx += (double) (c - '0') / dd; + dd *= 10.0; + ok = TRUE; + c = *buf++; + if (!c) + break; + else + ++chars; + } + } + if (!ok) + return count; + if (width > 0 && (c == 'e' || c == 'E')) + { + eneg = FALSE; + exp = 0; + NEXT(c); + --width; + if (width > 0 && c == '+') + { + NEXT(c); + --width; + } else if (width > 0 && c == '-') + { + eneg = TRUE; + NEXT(c); + --width; + } + if (!(width > 0 && isdigit(c))) + { + UNGETC(); + return count; + } + while (width > 0 && isdigit(c)) + { + --width; + exp = exp * 10 + (c - '0'); + c = *buf++; + if (!c) + break; + else + ++chars; + } + if (eneg) + exp = -exp; + while (exp > 0) + { + dx *= 10.0; + --exp; + } + while (exp < 0) + { + dx /= 10.0; + ++exp; + } + } + if (assign) + { + if (neg) + dx = -dx; + if (size == 'l') + { + dbl_ptr = va_arg(arg_ptr, double *); + *dbl_ptr = dx; + } + else + { + flt_ptr = va_arg(arg_ptr, float *); + *flt_ptr = (float)dx; + } + ++count; + } + if (!c) + return count; + else + UNGETC(); + break; + case 'i': + neg = FALSE; + radix = 10; + do + { + NEXT(c); + } + while (WHITE(c)); + if (!(width > 0 && c == '0')) + goto scan_complete_number; + NEXT(c); + --width; + if (width > 0 && (c == 'x' || c == 'X')) + { + NEXT(c); + radix = 16; + --width; + } + else if (width > 0 && (c >= '0' && c <= '7')) + radix = 8; + goto scan_unsigned_number; + case 'd': + case 'u': + case 'o': + case 'x': + case 'X': + do + { + NEXT(c); + } + while (WHITE(c)); + switch (f) + { + case 'o': + radix = 8; + break; + case 'x': + case 'X': + radix = 16; + break; + default: + radix = 10; + break; + } + scan_complete_number: + neg = FALSE; + if (width > 0 && c == '+') + { + NEXT(c); + --width; + } + else if (width > 0 && c == '-' && radix == 10) + { + neg = TRUE; + NEXT(c); + --width; + } + scan_unsigned_number: + n = 0; + ok = FALSE; + while (width > 0) + { + --width; + if (isdigit(c)) + d = c - '0'; + else if (isupper(c)) + d = c - 'A' + 10; + else if (islower(c)) + d = c - 'a' + 10; + else + break; + if (d < 0 || d >= radix) + break; + ok = TRUE; + n = n * radix + d; + c = *buf++; + if (!c) + break; + else + ++chars; + } + if (!ok) + return count; + if (assign) + { + if (neg) + n = -n; + switch (size) + { + case 'h': + short_ptr = va_arg(arg_ptr, short *); + *short_ptr = (short) n; + break; + case 'l': + long_ptr = va_arg(arg_ptr, long *); + *long_ptr = (long) n; + break; + default: + int_ptr = va_arg(arg_ptr, int *); + *int_ptr = (int) n; + } + ++count; + } + if (!c) + return count; + else + UNGETC(); + break; + case 'n': + if (assign) + { + int_ptr = va_arg(arg_ptr, int *); + *int_ptr = chars; + ++count; + } + break; + default: + if (!f) /* % at end of string */ + return count; + NEXT(c); + if (c != f) + return count; + break; + } + ++fmt; + } + } + return count; +} +#endif /* HAVE_VSSCANF */ diff --git a/3rd-party/PDCurses/pdcurses/scr_dump.c b/3rd-party/PDCurses/pdcurses/scr_dump.c new file mode 100644 index 0000000..91a004c --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/scr_dump.c @@ -0,0 +1,213 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +scr_dump +-------- + +### Synopsis + + int putwin(WINDOW *win, FILE *filep); + WINDOW *getwin(FILE *filep); + int scr_dump(const char *filename); + int scr_init(const char *filename); + int scr_restore(const char *filename); + int scr_set(const char *filename); + +### Description + + getwin() reads window-related data previously stored in a file + by putwin(). It then creates and initialises a new window using + that data. + + putwin() writes all data associated with a window into a file, + using an unspecified format. This information can be retrieved + later using getwin(). + + scr_dump() writes the current contents of the virtual screen to + the file named by filename in an unspecified format. + + scr_restore() function sets the virtual screen to the contents + of the file named by filename, which must have been written + using scr_dump(). The next refresh operation restores the screen + to the way it looked in the dump file. + + In PDCurses, scr_init() does nothing, and scr_set() is a synonym + for scr_restore(). Also, scr_dump() and scr_restore() save and + load from curscr. This differs from some other implementations, + where scr_init() works with curscr, and scr_restore() works with + newscr; but the effect should be the same. (PDCurses has no + newscr.) + +### Return Value + + On successful completion, getwin() returns a pointer to the + window it created. Otherwise, it returns a null pointer. Other + functions return OK or ERR. + +### Portability + X/Open BSD SYS V + putwin Y + getwin Y + scr_dump Y + scr_init Y + scr_restore Y + scr_set Y + +**man-end****************************************************************/ + +#include +#include + +#define DUMPVER 1 /* Should be updated whenever the WINDOW struct is + changed */ + +int putwin(WINDOW *win, FILE *filep) +{ + static const char *marker = "PDC"; + static const unsigned char version = DUMPVER; + + PDC_LOG(("putwin() - called\n")); + + /* write the marker and the WINDOW struct */ + + if (filep && fwrite(marker, strlen(marker), 1, filep) + && fwrite(&version, 1, 1, filep) + && fwrite(win, sizeof(WINDOW), 1, filep)) + { + int i; + + /* write each line */ + + for (i = 0; i < win->_maxy && win->_y[i]; i++) + if (!fwrite(win->_y[i], win->_maxx * sizeof(chtype), 1, filep)) + return ERR; + + return OK; + } + + return ERR; +} + +WINDOW *getwin(FILE *filep) +{ + WINDOW *win; + char marker[4]; + int i, nlines, ncols; + + PDC_LOG(("getwin() - called\n")); + + if ( !(win = malloc(sizeof(WINDOW))) ) + return (WINDOW *)NULL; + + /* check for the marker, and load the WINDOW struct */ + + if (!filep || !fread(marker, 4, 1, filep) || strncmp(marker, "PDC", 3) + || marker[3] != DUMPVER || !fread(win, sizeof(WINDOW), 1, filep)) + { + free(win); + return (WINDOW *)NULL; + } + + nlines = win->_maxy; + ncols = win->_maxx; + + /* allocate the line pointer array */ + + if ( !(win->_y = malloc(nlines * sizeof(chtype *))) ) + { + free(win); + return (WINDOW *)NULL; + } + + /* allocate the minchng and maxchng arrays */ + + if ( !(win->_firstch = malloc(nlines * sizeof(int))) ) + { + free(win->_y); + free(win); + return (WINDOW *)NULL; + } + + if ( !(win->_lastch = malloc(nlines * sizeof(int))) ) + { + free(win->_firstch); + free(win->_y); + free(win); + return (WINDOW *)NULL; + } + + /* allocate the lines */ + + if ( !(win = PDC_makelines(win)) ) + return (WINDOW *)NULL; + + /* read them */ + + for (i = 0; i < nlines; i++) + { + if (!fread(win->_y[i], ncols * sizeof(chtype), 1, filep)) + { + delwin(win); + return (WINDOW *)NULL; + } + } + + touchwin(win); + + return win; +} + +int scr_dump(const char *filename) +{ + FILE *filep; + + PDC_LOG(("scr_dump() - called: filename %s\n", filename)); + + if (filename && (filep = fopen(filename, "wb")) != NULL) + { + int result = putwin(curscr, filep); + fclose(filep); + return result; + } + + return ERR; +} + +int scr_init(const char *filename) +{ + PDC_LOG(("scr_init() - called: filename %s\n", filename)); + + return OK; +} + +int scr_restore(const char *filename) +{ + FILE *filep; + + PDC_LOG(("scr_restore() - called: filename %s\n", filename)); + + if (filename && (filep = fopen(filename, "rb")) != NULL) + { + WINDOW *replacement = getwin(filep); + fclose(filep); + + if (replacement) + { + int result = overwrite(replacement, curscr); + delwin(replacement); + return result; + } + } + + return ERR; +} + +int scr_set(const char *filename) +{ + PDC_LOG(("scr_set() - called: filename %s\n", filename)); + + return scr_restore(filename); +} diff --git a/3rd-party/PDCurses/pdcurses/scroll.c b/3rd-party/PDCurses/pdcurses/scroll.c new file mode 100644 index 0000000..a829e09 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/scroll.c @@ -0,0 +1,101 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +scroll +------ + +### Synopsis + + int scroll(WINDOW *win); + int scrl(int n); + int wscrl(WINDOW *win, int n); + +### Description + + scroll() causes the window to scroll up one line. This involves + moving the lines in the window data strcture. + + With a positive n, scrl() and wscrl() scroll the window up n + lines (line i + n becomes i); otherwise they scroll the window + down n lines. + + For these functions to work, scrolling must be enabled via + scrollok(). Note also that scrolling is not allowed if the + supplied window is a pad. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + scroll Y Y Y + scrl Y - 4.0 + wscrl Y - 4.0 + +**man-end****************************************************************/ + +int wscrl(WINDOW *win, int n) +{ + int i, l, dir, start, end; + chtype blank, *temp; + + /* Check if window scrolls. Valid for window AND pad */ + + if (!win || !win->_scroll || !n) + return ERR; + + blank = win->_bkgd; + + if (n > 0) + { + start = win->_tmarg; + end = win->_bmarg; + dir = 1; + } + else + { + start = win->_bmarg; + end = win->_tmarg; + dir = -1; + } + + for (l = 0; l < (n * dir); l++) + { + temp = win->_y[start]; + + /* re-arrange line pointers */ + + for (i = start; i != end; i += dir) + win->_y[i] = win->_y[i + dir]; + + win->_y[end] = temp; + + /* make a blank line */ + + for (i = 0; i < win->_maxx; i++) + *temp++ = blank; + } + + touchline(win, win->_tmarg, win->_bmarg - win->_tmarg + 1); + + PDC_sync(win); + return OK; +} + +int scrl(int n) +{ + PDC_LOG(("scrl() - called\n")); + + return wscrl(stdscr, n); +} + +int scroll(WINDOW *win) +{ + PDC_LOG(("scroll() - called\n")); + + return wscrl(win, 1); +} diff --git a/3rd-party/PDCurses/pdcurses/slk.c b/3rd-party/PDCurses/pdcurses/slk.c new file mode 100644 index 0000000..0f06643 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/slk.c @@ -0,0 +1,592 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +slk +--- + +### Synopsis + + int slk_init(int fmt); + int slk_set(int labnum, const char *label, int justify); + int slk_refresh(void); + int slk_noutrefresh(void); + char *slk_label(int labnum); + int slk_clear(void); + int slk_restore(void); + int slk_touch(void); + int slk_attron(const chtype attrs); + int slk_attr_on(const attr_t attrs, void *opts); + int slk_attrset(const chtype attrs); + int slk_attr_set(const attr_t attrs, short color_pair, void *opts); + int slk_attroff(const chtype attrs); + int slk_attr_off(const attr_t attrs, void *opts); + int slk_color(short color_pair); + + int slk_wset(int labnum, const wchar_t *label, int justify); + + int PDC_mouse_in_slk(int y, int x); + void PDC_slk_free(void); + void PDC_slk_initialize(void); + + wchar_t *slk_wlabel(int labnum) + +### Description + + These functions manipulate a window that contain Soft Label Keys + (SLK). To use the SLK functions, a call to slk_init() must be + made BEFORE initscr() or newterm(). slk_init() removes 1 or 2 + lines from the useable screen, depending on the format selected. + + The line(s) removed from the screen are used as a separate + window, in which SLKs are displayed. + + slk_init() requires a single parameter which describes the + format of the SLKs as follows: + + 0 3-2-3 format + 1 4-4 format + 2 4-4-4 format (ncurses extension) + 3 4-4-4 format with index line (ncurses extension) + 2 lines used + 55 5-5 format (pdcurses format) + + In PDCurses, one can alternatively set fmt as a series of hex + digits specifying the format. For example, 0x414 would result + in 4-1-4 format; 0x21b3 would result in 2-1-11-3 format; and + so on. Also, negating fmt results in the index line being added. + + Also, in PDCurses, one can call slk_init() at any time + _after_ initscr(), to reset the label format. If you do this, + you'll need to reset the label text and call slk_refresh(). And + you can't toggle the index line. (Doing so would add/remove a line + from the useable screen, which would be hard to handle correctly.) + + slk_refresh(), slk_noutrefresh() and slk_touch() are analogous + to refresh(), noutrefresh() and touch(). + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + slk_init Y - Y + slk_set Y - Y + slk_refresh Y - Y + slk_noutrefresh Y - Y + slk_label Y - Y + slk_clear Y - Y + slk_restore Y - Y + slk_touch Y - Y + slk_attron Y - Y + slk_attrset Y - Y + slk_attroff Y - Y + slk_attr_on Y + slk_attr_set Y + slk_attr_off Y + slk_wset Y + PDC_mouse_in_slk - - - + PDC_slk_free - - - + PDC_slk_initialize - - - + slk_wlabel - - - + +**man-end****************************************************************/ + +#include + +static int label_length = 0; +static int n_labels = 0; +static int label_fmt = 0; +static int label_line = 0; +static bool hidden = FALSE; + +#define MAX_LABEL_LENGTH 32 + +static struct SLK { + chtype label[MAX_LABEL_LENGTH]; + int len; + int format; + int start_col; +} *slk = (struct SLK *)NULL; + +/* See comments above on this function. */ + +int slk_init(int fmt) +{ + int i; + + PDC_LOG(("slk_init() - called\n")); + + switch (fmt) + { + case 0: /* 3 - 2 - 3 */ + label_fmt = 0x323; + break; + + case 1: /* 4 - 4 */ + label_fmt = 0x44; + break; + + case 2: /* 4 4 4 */ + label_fmt = 0x444; + break; + + case 3: /* 4 4 4 with index */ + label_fmt = -0x444; + break; + + case 55: /* 5 - 5 */ + label_fmt = 0x55; + break; + + default: + label_fmt = fmt; + break; + } + + n_labels = 0; + for( i = abs( label_fmt); i; i /= 16) + n_labels += i % 16; + + PDC_LOG(("slk_init: fmt %d, %d labels, %p\n", + fmt, n_labels, slk)); + if( slk) + free( slk); + slk = calloc(n_labels, sizeof(struct SLK)); + PDC_LOG(( "New slk: %p; SP = %p\n", slk, SP)); + + if (!slk) + n_labels = 0; + if( SP) + { + if( SP->slk_winptr) + wclear( SP->slk_winptr); + PDC_slk_initialize( ); + } + + return slk ? OK : ERR; +} + +/* draw a single button */ + +static void _drawone(int num) +{ + int i, col, slen; + + if (hidden) + return; + + slen = slk[num].len; + + switch (slk[num].format) + { + case 0: /* LEFT */ + col = 0; + break; + + case 1: /* CENTER */ + col = (label_length - slen) / 2; + + if (col + slen > label_length) + --col; + break; + + default: /* RIGHT */ + col = label_length - slen; + } + + if( col < 0) /* Ensure start of label is visible */ + col = 0; + wmove(SP->slk_winptr, label_line, slk[num].start_col); + + for (i = 0; i < label_length; ++i) + waddch(SP->slk_winptr, (i >= col && i < (col + slen)) ? + slk[num].label[i - col] : ' '); +} + +/* redraw each button */ + +static void _redraw(void) +{ + int i; + + if( !hidden) + { + for (i = 0; i < n_labels; ++i) + _drawone(i); + if (label_fmt < 0) + { + const chtype save_attr = SP->slk_winptr->_attrs; + + wattrset(SP->slk_winptr, A_NORMAL); + wmove(SP->slk_winptr, 0, 0); + whline(SP->slk_winptr, 0, COLS); + + for (i = 0; i < n_labels; i++) + mvwprintw(SP->slk_winptr, 0, slk[i].start_col, "F%d", i + 1); + + SP->slk_winptr->_attrs = save_attr; + } + } +} + +/* slk_set() Used to set a slk label to a string. + + labnum = 1 - 8 (or 10) (number of the label) + label = string (8 or 7 bytes total), or NULL + justify = 0 : left, 1 : center, 2 : right */ + +int slk_set(int labnum, const char *label, int justify) +{ +#ifdef PDC_WIDE + wchar_t wlabel[MAX_LABEL_LENGTH]; + + PDC_mbstowcs(wlabel, label, MAX_LABEL_LENGTH - 1); + return slk_wset(labnum, wlabel, justify); +#else + PDC_LOG(("slk_set() - called\n")); + + if (labnum < 1 || labnum > n_labels || justify < 0 || justify > 2) + return ERR; + + labnum--; + + if (!label || !(*label)) + { + /* Clear the label */ + + *slk[labnum].label = 0; + slk[labnum].format = 0; + slk[labnum].len = 0; + } + else + { + int i; + + /* Skip leading spaces */ + + while( *label == ' ') + label++; + + /* Copy it */ + + for (i = 0; label[i] && i < MAX_LABEL_LENGTH - 1; i++) + slk[labnum].label[i] = label[i]; + + /* Drop trailing spaces */ + + while( i && label[i - 1] == ' ') + i--; + + slk[labnum].label[i] = 0; + slk[labnum].format = justify; + slk[labnum].len = i; + } + + _drawone(labnum); + + return OK; +#endif +} + +int slk_refresh(void) +{ + PDC_LOG(("slk_refresh() - called\n")); + + return (slk_noutrefresh() == ERR) ? ERR : doupdate(); +} + +int slk_noutrefresh(void) +{ + PDC_LOG(("slk_noutrefresh() - called\n")); + + return wnoutrefresh(SP->slk_winptr); +} + +char *slk_label(int labnum) +{ + static char temp[MAX_LABEL_LENGTH + 1]; +#ifdef PDC_WIDE + wchar_t *wtemp = slk_wlabel(labnum); + + PDC_wcstombs(temp, wtemp, MAX_LABEL_LENGTH); +#else + chtype *p; + int i; + + PDC_LOG(("slk_label() - called\n")); + + if (labnum < 1 || labnum > n_labels) + return (char *)0; + + for (i = 0, p = slk[labnum - 1].label; *p; i++) + temp[i] = (char)*p++; /* BJG */ + + temp[i] = '\0'; +#endif + return temp; +} + +int slk_clear(void) +{ + PDC_LOG(("slk_clear() - called\n")); + + hidden = TRUE; + werase(SP->slk_winptr); + return wrefresh(SP->slk_winptr); +} + +int slk_restore(void) +{ + PDC_LOG(("slk_restore() - called\n")); + + hidden = FALSE; + _redraw(); + return wrefresh(SP->slk_winptr); +} + +int slk_touch(void) +{ + PDC_LOG(("slk_touch() - called\n")); + + return touchwin(SP->slk_winptr); +} + +int slk_attron(const chtype attrs) +{ + int rc; + + PDC_LOG(("slk_attron() - called\n")); + + rc = wattron(SP->slk_winptr, attrs); + _redraw(); + + return rc; +} + +int slk_attr_on(const attr_t attrs, void *opts) +{ + PDC_LOG(("slk_attr_on() - called\n")); + + return slk_attron(attrs); +} + +int slk_attroff(const chtype attrs) +{ + int rc; + + PDC_LOG(("slk_attroff() - called\n")); + + rc = wattroff(SP->slk_winptr, attrs); + _redraw(); + + return rc; +} + +int slk_attr_off(const attr_t attrs, void *opts) +{ + PDC_LOG(("slk_attr_off() - called\n")); + + return slk_attroff(attrs); +} + +int slk_attrset(const chtype attrs) +{ + int rc; + + PDC_LOG(("slk_attrset() - called\n")); + + rc = wattrset(SP->slk_winptr, attrs); + _redraw(); + + return rc; +} + +int slk_color(short color_pair) +{ + int rc; + + PDC_LOG(("slk_color() - called\n")); + + rc = wcolor_set(SP->slk_winptr, color_pair, NULL); + _redraw(); + + return rc; +} + +int slk_attr_set(const attr_t attrs, short color_pair, void *opts) +{ + PDC_LOG(("slk_attr_set() - called\n")); + + return slk_attrset(attrs | COLOR_PAIR(color_pair)); +} + +static void _slk_calc(void) +{ + int i, j, idx, remaining_space; + int n_groups = 0, group_size[10]; + + label_length = COLS / n_labels; + if (label_length > MAX_LABEL_LENGTH) + label_length = MAX_LABEL_LENGTH; + remaining_space = COLS - label_length * n_labels + 1; + for( i = abs( label_fmt); i; i /= 16) + group_size[n_groups++] = i % 16; + /* We really want at least two spaces between groups: */ + while( label_length > 1 && remaining_space < n_groups - 1) + { + label_length--; + remaining_space += n_labels; + } + + for( i = idx = 0; i < n_groups; i++) + for( j = 0; j < group_size[i]; j++, idx++) + slk[idx].start_col = label_length * idx + + (i ? (i * remaining_space) / (n_groups - 1) : 0); + + if( label_length) + --label_length; + + /* make sure labels are all in window */ + + _redraw(); +} + +void PDC_slk_initialize(void) +{ + if (slk) + { + if( label_fmt < 0) + { + SP->slklines = 2; + label_line = 1; + } + else + SP->slklines = 1; + + if (!SP->slk_winptr) + { + SP->slk_winptr = newwin(SP->slklines, COLS, + LINES - SP->slklines, 0); + if (!SP->slk_winptr) + return; + + wattrset(SP->slk_winptr, A_REVERSE); + } + + _slk_calc(); + + touchwin(SP->slk_winptr); + } +} + +void PDC_slk_free(void) +{ + if (slk) + { + if (SP->slk_winptr) + { + delwin(SP->slk_winptr); + SP->slk_winptr = (WINDOW *)NULL; + } + + free(slk); + slk = (struct SLK *)NULL; + + label_length = 0; + n_labels = 0; + label_fmt = 0; + label_line = 0; + hidden = FALSE; + } +} + +int PDC_mouse_in_slk(int y, int x) +{ + int i; + + PDC_LOG(("PDC_mouse_in_slk() - called: y->%d x->%d\n", y, x)); + + /* If the line on which the mouse was clicked is NOT the last line + of the screen, or the SLKs are hidden, we are not interested in it. */ + + if (!slk || hidden || !SP->slk_winptr + || (y != SP->slk_winptr->_begy + label_line)) + return 0; + + for (i = 0; i < n_labels; i++) + if (x >= slk[i].start_col && x < (slk[i].start_col + label_length)) + return i + 1; + + return 0; +} + +#ifdef PDC_WIDE +int slk_wset(int labnum, const wchar_t *label, int justify) +{ + PDC_LOG(("slk_wset() - called\n")); + + if (labnum < 1 || labnum > n_labels || justify < 0 || justify > 2) + return ERR; + + labnum--; + + if (!label || !(*label)) + { + /* Clear the label */ + + *slk[labnum].label = 0; + slk[labnum].format = 0; + slk[labnum].len = 0; + } + else + { + int i; + + /* Skip leading spaces */ + + while( *label == L' ') + label++; + + /* Copy it */ + + for (i = 0; label[i] && i < MAX_LABEL_LENGTH - 1; i++) + slk[labnum].label[i] = label[i]; + + /* Drop trailing spaces */ + + while( i && label[i - 1] == L' ') + i--; + + slk[labnum].label[i] = 0; + slk[labnum].format = justify; + slk[labnum].len = i; + } + + _drawone(labnum); + + return OK; +} + +wchar_t *slk_wlabel(int labnum) +{ + static wchar_t temp[MAX_LABEL_LENGTH + 1]; + chtype *p; + int i; + + PDC_LOG(("slk_wlabel() - called\n")); + + if (labnum < 1 || labnum > n_labels) + return (wchar_t *)0; + + for (i = 0, p = slk[labnum - 1].label; *p; i++) + temp[i] = (wchar_t)*p++; + + temp[i] = '\0'; + + return temp; +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/termattr.c b/3rd-party/PDCurses/pdcurses/termattr.c new file mode 100644 index 0000000..2ae7a79 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/termattr.c @@ -0,0 +1,182 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +termattr +-------- + +### Synopsis + + int baudrate(void); + char erasechar(void); + bool has_ic(void); + bool has_il(void); + char killchar(void); + char *longname(void); + chtype termattrs(void); + attr_t term_attrs(void); + char *termname(void); + + int erasewchar(wchar_t *ch); + int killwchar(wchar_t *ch); + + char wordchar(void); + +### Description + + baudrate() is supposed to return the output speed of the + terminal. In PDCurses, it simply returns INT_MAX. + + has_ic and has_il() return TRUE. These functions have meaning in + some other implementations of curses. + + erasechar() and killchar() return ^H and ^U, respectively -- the + ERASE and KILL characters. In other curses implementations, + these may vary by terminal type. erasewchar() and killwchar() + are the wide-character versions; they take a pointer to a + location in which to store the character, and return OK or ERR. + + longname() returns a pointer to a static area containing a + verbose description of the current terminal. The maximum length + of the string is 128 characters. It is defined only after the + call to initscr() or newterm(). + + termname() returns a pointer to a static area containing a + short description of the current terminal (14 characters). + + termattrs() returns a logical OR of all video attributes + supported by the terminal. + + wordchar() is a PDCurses extension of the concept behind the + functions erasechar() and killchar(), returning the "delete + word" character, ^W. + +### Portability + X/Open BSD SYS V + baudrate Y Y Y + erasechar Y Y Y + has_ic Y Y Y + has_il Y Y Y + killchar Y Y Y + longname Y Y Y + termattrs Y Y Y + termname Y Y Y + erasewchar Y + killwchar Y + term_attrs Y + wordchar - - - + +**man-end****************************************************************/ + +#include +#include + +int baudrate(void) +{ + PDC_LOG(("baudrate() - called\n")); + + return INT_MAX; +} + +char erasechar(void) +{ + PDC_LOG(("erasechar() - called\n")); + + return _ECHAR; /* character delete char (^H) */ +} + +bool has_ic(void) +{ + PDC_LOG(("has_ic() - called\n")); + + return TRUE; +} + +bool has_il(void) +{ + PDC_LOG(("has_il() - called\n")); + + return TRUE; +} + +char killchar(void) +{ + PDC_LOG(("killchar() - called\n")); + + return _DLCHAR; /* line delete char (^U) */ +} + +char *longname(void) +{ + PDC_LOG(("longname() - called\n")); + + sprintf(ttytype, "pdcurses|PDCurses for %s", PDC_sysname()); + return ttytype + 9; /* skip "pdcurses|" */ +} + +chtype termattrs(void) +{ + chtype temp = A_BLINK | A_BOLD | A_INVIS | A_REVERSE | A_UNDERLINE + | A_LEFTLINE | A_RIGHTLINE | A_ITALIC; + + /* note: blink is bold background on some platforms */ + + PDC_LOG(("termattrs() - called\n")); + + if (!SP->mono) + temp |= A_COLOR; + + return temp; +} + +attr_t term_attrs(void) +{ + PDC_LOG(("term_attrs() - called\n")); + + return WA_BLINK | WA_BOLD | WA_INVIS | WA_LEFT | WA_REVERSE | + WA_RIGHT | WA_UNDERLINE; +} + +char *termname(void) +{ + static char _termname[14] = "pdcurses"; + + PDC_LOG(("termname() - called\n")); + + return _termname; +} + +char wordchar(void) +{ + PDC_LOG(("wordchar() - called\n")); + + return _DWCHAR; /* word delete char */ +} + +#ifdef PDC_WIDE +int erasewchar(wchar_t *ch) +{ + PDC_LOG(("erasewchar() - called\n")); + + if (!ch) + return ERR; + + *ch = (wchar_t)_ECHAR; + + return OK; +} + +int killwchar(wchar_t *ch) +{ + PDC_LOG(("killwchar() - called\n")); + + if (!ch) + return ERR; + + *ch = (wchar_t)_DLCHAR; + + return OK; +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/terminfo.c b/3rd-party/PDCurses/pdcurses/terminfo.c new file mode 100644 index 0000000..befb3d3 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/terminfo.c @@ -0,0 +1,217 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +terminfo +-------- + +### Synopsis + + int mvcur(int oldrow, int oldcol, int newrow, int newcol); + int vidattr(chtype attr); + int vid_attr(attr_t attr, short color_pair, void *opt); + int vidputs(chtype attr, int (*putfunc)(int)); + int vid_puts(attr_t attr, short color_pair, void *opt, + int (*putfunc)(int)); + + int del_curterm(TERMINAL *); + int putp(const char *); + int restartterm(const char *, int, int *); + TERMINAL *set_curterm(TERMINAL *); + int setterm(const char *term); + int setupterm(const char *, int, int *); + int tgetent(char *, const char *); + int tgetflag(const char *); + int tgetnum(const char *); + char *tgetstr(const char *, char **); + char *tgoto(const char *, int, int); + int tigetflag(const char *); + int tigetnum(const char *); + char *tigetstr(const char *); + char *tparm(const char *,long, long, long, long, long, long, + long, long, long); + int tputs(const char *, int, int (*)(int)); + +### Description + + mvcur() lets you move the physical cursor without updating any + window cursor positions. It returns OK or ERR. + + The rest of these functions are currently implemented as stubs, + returning the appropriate errors and doing nothing else. + +### Portability + X/Open BSD SYS V + mvcur Y Y Y + +**man-end****************************************************************/ + +#include + +TERMINAL *cur_term = NULL; + +int mvcur(int oldrow, int oldcol, int newrow, int newcol) +{ + PDC_LOG(("mvcur() - called: oldrow %d oldcol %d newrow %d newcol %d\n", + oldrow, oldcol, newrow, newcol)); + + if ((newrow >= LINES) || (newcol >= COLS) || (newrow < 0) || (newcol < 0)) + return ERR; + + PDC_gotoyx(newrow, newcol); + SP->cursrow = newrow; + SP->curscol = newcol; + + return OK; +} + +int vidattr(chtype attr) +{ + PDC_LOG(("vidattr() - called: attr %d\n", attr)); + + return ERR; +} + +int vid_attr(attr_t attr, short color_pair, void *opt) +{ + PDC_LOG(("vid_attr() - called\n")); + + return ERR; +} + +int vidputs(chtype attr, int (*putfunc)(int)) +{ + PDC_LOG(("vidputs() - called: attr %d\n", attr)); + + return ERR; +} + +int vid_puts(attr_t attr, short color_pair, void *opt, int (*putfunc)(int)) +{ + PDC_LOG(("vid_puts() - called\n")); + + return ERR; +} + +int del_curterm(TERMINAL *oterm) +{ + PDC_LOG(("del_curterm() - called\n")); + + return ERR; +} + +int putp(const char *str) +{ + PDC_LOG(("putp() - called: str %s\n", str)); + + return ERR; +} + +int restartterm(const char *term, int filedes, int *errret) +{ + PDC_LOG(("restartterm() - called\n")); + + if (errret) + *errret = -1; + + return ERR; +} + +TERMINAL *set_curterm(TERMINAL *nterm) +{ + PDC_LOG(("set_curterm() - called\n")); + + return (TERMINAL *)NULL; +} + +int setterm(const char *term) +{ + PDC_LOG(("setterm() - called\n")); + + return ERR; +} + +int setupterm(const char *term, int filedes, int *errret) +{ + PDC_LOG(("setupterm() - called\n")); + + if (errret) + *errret = -1; + else + fprintf(stderr, "There is no terminfo database\n"); + + return ERR; +} + +int tgetent(char *bp, const char *name) +{ + PDC_LOG(("tgetent() - called: name %s\n", name)); + + return ERR; +} + +int tgetflag(const char *id) +{ + PDC_LOG(("tgetflag() - called: id %s\n", id)); + + return ERR; +} + +int tgetnum(const char *id) +{ + PDC_LOG(("tgetnum() - called: id %s\n", id)); + + return ERR; +} + +char *tgetstr(const char *id, char **area) +{ + PDC_LOG(("tgetstr() - called: id %s\n", id)); + + return (char *)NULL; +} + +char *tgoto(const char *cap, int col, int row) +{ + PDC_LOG(("tgoto() - called\n")); + + return (char *)NULL; +} + +int tigetflag(const char *capname) +{ + PDC_LOG(("tigetflag() - called: capname %s\n", capname)); + + return -1; +} + +int tigetnum(const char *capname) +{ + PDC_LOG(("tigetnum() - called: capname %s\n", capname)); + + return -2; +} + +char *tigetstr(const char *capname) +{ + PDC_LOG(("tigetstr() - called: capname %s\n", capname)); + + return (char *)(-1); +} + +char *tparm(const char *cap, long p1, long p2, long p3, long p4, + long p5, long p6, long p7, long p8, long p9) +{ + PDC_LOG(("tparm() - called: cap %s\n", cap)); + + return (char *)NULL; +} + +int tputs(const char *str, int affcnt, int (*putfunc)(int)) +{ + PDC_LOG(("tputs() - called\n")); + + return ERR; +} diff --git a/3rd-party/PDCurses/pdcurses/touch.c b/3rd-party/PDCurses/pdcurses/touch.c new file mode 100644 index 0000000..4f3028d --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/touch.c @@ -0,0 +1,163 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +touch +----- + +### Synopsis + + int touchwin(WINDOW *win); + int touchline(WINDOW *win, int start, int count); + int untouchwin(WINDOW *win); + int wtouchln(WINDOW *win, int y, int n, int changed); + bool is_linetouched(WINDOW *win, int line); + bool is_wintouched(WINDOW *win); + +### Description + + touchwin() and touchline() throw away all information about + which parts of the window have been touched, pretending that the + entire window has been drawn on. This is sometimes necessary + when using overlapping windows, since a change to one window + will affect the other window, but the records of which lines + have been changed in the other window will not reflect the + change. + + untouchwin() marks all lines in the window as unchanged since + the last call to wrefresh(). + + wtouchln() makes n lines in the window, starting at line y, look + as if they have (changed == 1) or have not (changed == 0) been + changed since the last call to wrefresh(). + + is_linetouched() returns TRUE if the specified line in the + specified window has been changed since the last call to + wrefresh(). + + is_wintouched() returns TRUE if the specified window + has been changed since the last call to wrefresh(). + +### Return Value + + All functions return OK on success and ERR on error except + is_wintouched() and is_linetouched(). + +### Portability + X/Open BSD SYS V + touchwin Y Y Y + touchline Y - 3.0 + untouchwin Y - 4.0 + wtouchln Y Y Y + is_linetouched Y - 4.0 + is_wintouched Y - 4.0 + +**man-end****************************************************************/ + +int touchwin(WINDOW *win) +{ + int i; + + PDC_LOG(("touchwin() - called: Win=%x\n", win)); + + if (!win) + return ERR; + + for (i = 0; i < win->_maxy; i++) + { + win->_firstch[i] = 0; + win->_lastch[i] = win->_maxx - 1; + } + + return OK; +} + +int touchline(WINDOW *win, int start, int count) +{ + int i; + + PDC_LOG(("touchline() - called: win=%p start %d count %d\n", + win, start, count)); + + if (!win || start > win->_maxy || start + count > win->_maxy) + return ERR; + + for (i = start; i < start + count; i++) + { + win->_firstch[i] = 0; + win->_lastch[i] = win->_maxx - 1; + } + + return OK; +} + +int untouchwin(WINDOW *win) +{ + int i; + + PDC_LOG(("untouchwin() - called: win=%p", win)); + + if (!win) + return ERR; + + for (i = 0; i < win->_maxy; i++) + { + win->_firstch[i] = _NO_CHANGE; + win->_lastch[i] = _NO_CHANGE; + } + + return OK; +} + +int wtouchln(WINDOW *win, int y, int n, int changed) +{ + int i; + + PDC_LOG(("wtouchln() - called: win=%p y=%d n=%d changed=%d\n", + win, y, n, changed)); + + if (!win || y > win->_maxy || y + n > win->_maxy) + return ERR; + + for (i = y; i < y + n; i++) + { + if (changed) + { + win->_firstch[i] = 0; + win->_lastch[i] = win->_maxx - 1; + } + else + { + win->_firstch[i] = _NO_CHANGE; + win->_lastch[i] = _NO_CHANGE; + } + } + + return OK; +} + +bool is_linetouched(WINDOW *win, int line) +{ + PDC_LOG(("is_linetouched() - called: win=%p line=%d\n", win, line)); + + if (!win || line > win->_maxy || line < 0) + return FALSE; + + return (win->_firstch[line] != _NO_CHANGE) ? TRUE : FALSE; +} + +bool is_wintouched(WINDOW *win) +{ + int i; + + PDC_LOG(("is_wintouched() - called: win=%p\n", win)); + + if (win) + for (i = 0; i < win->_maxy; i++) + if (win->_firstch[i] != _NO_CHANGE) + return TRUE; + + return FALSE; +} diff --git a/3rd-party/PDCurses/pdcurses/util.c b/3rd-party/PDCurses/pdcurses/util.c new file mode 100644 index 0000000..35e60dc --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/util.c @@ -0,0 +1,312 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +util +---- + +### Synopsis + + char *unctrl(chtype c); + void filter(void); + void use_env(bool x); + int delay_output(int ms); + + int getcchar(const cchar_t *wcval, wchar_t *wch, attr_t *attrs, + short *color_pair, void *opts); + int setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs, + short color_pair, const void *opts); + wchar_t *wunctrl(cchar_t *wc); + + int PDC_mbtowc(wchar_t *pwc, const char *s, size_t n); + size_t PDC_mbstowcs(wchar_t *dest, const char *src, size_t n); + size_t PDC_wcstombs(char *dest, const wchar_t *src, size_t n); + +### Description + + unctrl() expands the text portion of the chtype c into a + printable string. Control characters are changed to the "^X" + notation; others are passed through. wunctrl() is the wide- + character version of the function. + + filter() and use_env() are no-ops in PDCurses. + + delay_output() inserts an ms millisecond pause in output. + + getcchar() works in two modes: When wch is not NULL, it reads + the cchar_t pointed to by wcval and stores the attributes in + attrs, the color pair in color_pair, and the text in the + wide-character string wch. When wch is NULL, getcchar() merely + returns the number of wide characters in wcval. In either mode, + the opts argument is unused. + + setcchar constructs a cchar_t at wcval from the wide-character + text at wch, the attributes in attr and the color pair in + color_pair. The opts argument is unused. + + Currently, the length returned by getcchar() is always 1 or 0. + Similarly, setcchar() will only take the first wide character + from wch, and ignore any others that it "should" take (i.e., + combining characters). Nor will it correctly handle any + character outside the basic multilingual plane (UCS-2). + +### Return Value + + unctrl() and wunctrl() return NULL on failure. delay_output() + always returns OK. + + getcchar() returns the number of wide characters wcval points to + when wch is NULL; when it's not, getcchar() returns OK or ERR. + + setcchar() returns OK or ERR. + +### Portability + X/Open BSD SYS V + unctrl Y Y Y + filter Y - 3.0 + use_env Y - 4.0 + delay_output Y Y Y + getcchar Y + setcchar Y + wunctrl Y + PDC_mbtowc - - - + PDC_mbstowcs - - - + PDC_wcstombs - - - + +**man-end****************************************************************/ + +#ifdef PDC_WIDE +# ifdef PDC_FORCE_UTF8 +# include +# else +# include +# endif +#endif + +char *unctrl(chtype c) +{ + static char strbuf[3] = {0, 0, 0}; + + chtype ic; + + PDC_LOG(("unctrl() - called\n")); + + ic = c & A_CHARTEXT; + + if (ic >= 0x20 && ic != 0x7f) /* normal characters */ + { + strbuf[0] = (char)ic; + strbuf[1] = '\0'; + return strbuf; + } + + strbuf[0] = '^'; /* '^' prefix */ + + if (ic == 0x7f) /* 0x7f == DEL */ + strbuf[1] = '?'; + else /* other control */ + strbuf[1] = (char)(ic + '@'); + + return strbuf; +} + +void filter(void) +{ + PDC_LOG(("filter() - called\n")); +} + +void use_env(bool x) +{ + PDC_LOG(("use_env() - called: x %d\n", x)); +} + +int delay_output(int ms) +{ + PDC_LOG(("delay_output() - called: ms %d\n", ms)); + + return napms(ms); +} + +#ifdef PDC_WIDE +int getcchar(const cchar_t *wcval, wchar_t *wch, attr_t *attrs, + short *color_pair, void *opts) +{ + if (!wcval) + return ERR; + + if (wch) + { + if (!attrs || !color_pair) + return ERR; + + *wch = (wchar_t)(*wcval & A_CHARTEXT); + *attrs = (*wcval & (A_ATTRIBUTES & ~A_COLOR)); + *color_pair = (short)( PAIR_NUMBER(*wcval & A_COLOR)); + + if (*wch) + *++wch = L'\0'; + + return OK; + } + else + return ((*wcval & A_CHARTEXT) != L'\0'); +} + +int setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs, + short color_pair, const void *opts) +{ + if (!wcval || !wch) + return ERR; + + *wcval = *wch | attrs | COLOR_PAIR(color_pair); + + return OK; +} + +wchar_t *wunctrl(cchar_t *wc) +{ + static wchar_t strbuf[3] = {0, 0, 0}; + + cchar_t ic; + + PDC_LOG(("wunctrl() - called\n")); + + ic = *wc & A_CHARTEXT; + + if (ic >= 0x20 && ic != 0x7f) /* normal characters */ + { + strbuf[0] = (wchar_t)ic; + strbuf[1] = L'\0'; + return strbuf; + } + + strbuf[0] = '^'; /* '^' prefix */ + + if (ic == 0x7f) /* 0x7f == DEL */ + strbuf[1] = '?'; + else /* other control */ + strbuf[1] = (wchar_t)(ic + '@'); + + return strbuf; +} + +int PDC_mbtowc(wchar_t *pwc, const char *s, size_t n) +{ +# ifdef PDC_FORCE_UTF8 + wchar_t key; + int i = -1; + const unsigned char *string; + + if (!s || (n < 1)) + return -1; + + if (!*s) + return 0; + + string = (const unsigned char *)s; + + key = string[0]; + + /* Simplistic UTF-8 decoder -- only does the BMP, minimal validation */ + + if (key & 0x80) + { + if ((key & 0xe0) == 0xc0) + { + if (1 < n) + { + key = ((key & 0x1f) << 6) | (string[1] & 0x3f); + i = 2; + } + } + else if ((key & 0xe0) == 0xe0) + { + if (2 < n) + { + key = ((key & 0x0f) << 12) | ((string[1] & 0x3f) << 6) | + (string[2] & 0x3f); + i = 3; + } + } + } + else + i = 1; + + if (i) + *pwc = key; + + return i; +# else + return mbtowc(pwc, s, n); +# endif +} + +size_t PDC_mbstowcs(wchar_t *dest, const char *src, size_t n) +{ +# ifdef PDC_FORCE_UTF8 + size_t i = 0, len; + + if (!src || !dest) + return 0; + + len = strlen(src); + + while (*src && i < n) + { + int retval = PDC_mbtowc(dest + i, src, len); + + if (retval < 1) + return -1; + + src += retval; + len -= retval; + i++; + } +# else + size_t i = mbstowcs(dest, src, n); +# endif + dest[i] = 0; + return i; +} + +size_t PDC_wcstombs(char *dest, const wchar_t *src, size_t n) +{ +# ifdef PDC_FORCE_UTF8 + size_t i = 0; + + if (!src || !dest) + return 0; + + while (*src && i < n) + { + chtype code = *src++; + + if (code < 0x80) + { + dest[i] = (char)code; + i++; + } + else + if (code < 0x800) + { + dest[i] = (char)((code & 0x07c0) >> 6) | 0xc0; + dest[i + 1] = (char)( (code & 0x003f) | 0x80); + i += 2; + } + else + { + dest[i] = (char)( ((code & 0xf000) >> 12) | 0xe0); + dest[i + 1] = (char)((code & 0x0fc0) >> 6) | 0x80; + dest[i + 2] = (char)( (code & 0x003f) | 0x80); + i += 3; + } + } +# else + size_t i = wcstombs(dest, src, n); +# endif + dest[i] = '\0'; + return i; +} +#endif diff --git a/3rd-party/PDCurses/pdcurses/window.c b/3rd-party/PDCurses/pdcurses/window.c new file mode 100644 index 0000000..0058252 --- /dev/null +++ b/3rd-party/PDCurses/pdcurses/window.c @@ -0,0 +1,569 @@ +/* PDCurses */ + +#include + +/*man-start************************************************************** + +window +------ + +### Synopsis + + WINDOW *newwin(int nlines, int ncols, int begy, int begx); + WINDOW *derwin(WINDOW* orig, int nlines, int ncols, + int begy, int begx); + WINDOW *subwin(WINDOW* orig, int nlines, int ncols, + int begy, int begx); + WINDOW *dupwin(WINDOW *win); + int delwin(WINDOW *win); + int mvwin(WINDOW *win, int y, int x); + int mvderwin(WINDOW *win, int pary, int parx); + int syncok(WINDOW *win, bool bf); + void wsyncup(WINDOW *win); + void wcursyncup(WINDOW *win); + void wsyncdown(WINDOW *win); + + WINDOW *resize_window(WINDOW *win, int nlines, int ncols); + int wresize(WINDOW *win, int nlines, int ncols); + WINDOW *PDC_makelines(WINDOW *win); + WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx); + void PDC_sync(WINDOW *win); + +### Description + + newwin() creates a new window with the given number of lines, + nlines and columns, ncols. The upper left corner of the window + is at line begy, column begx. If nlines is zero, it defaults to + LINES - begy; ncols to COLS - begx. Create a new full-screen + window by calling newwin(0, 0, 0, 0). + + delwin() deletes the named window, freeing all associated + memory. In the case of overlapping windows, subwindows should be + deleted before the main window. + + mvwin() moves the window so that the upper left-hand corner is + at position (y,x). If the move would cause the window to be off + the screen, it is an error and the window is not moved. Moving + subwindows is allowed. + + subwin() creates a new subwindow within a window. The + dimensions of the subwindow are nlines lines and ncols columns. + The subwindow is at position (begy, begx) on the screen. This + position is relative to the screen, and not to the window orig. + Changes made to either window will affect both. When using this + routine, you will often need to call touchwin() before calling + wrefresh(). + + derwin() is the same as subwin(), except that begy and begx are + relative to the origin of the window orig rather than the + screen. There is no difference between subwindows and derived + windows. + + mvderwin() moves a derived window (or subwindow) inside its + parent window. The screen-relative parameters of the window are + not changed. This routine is used to display different parts of + the parent window at the same physical position on the screen. + + dupwin() creates an exact duplicate of the window win. + + wsyncup() causes a touchwin() of all of the window's parents. + + If wsyncok() is called with a second argument of TRUE, this + causes a wsyncup() to be called every time the window is + changed. + + wcursyncup() causes the current cursor position of all of a + window's ancestors to reflect the current cursor position of the + current window. + + wsyncdown() causes a touchwin() of the current window if any of + its parent's windows have been touched. + + resize_window() allows the user to resize an existing window. It + returns the pointer to the new window, or NULL on failure. + + wresize() is an ncurses-compatible wrapper for resize_window(). + Note that, unlike ncurses, it will NOT process any subwindows of + the window. (However, you still can call it _on_ subwindows.) It + returns OK or ERR. + + PDC_makenew() allocates all data for a new WINDOW * except the + actual lines themselves. If it's unable to allocate memory for + the window structure, it will free all allocated memory and + return a NULL pointer. + + PDC_makelines() allocates the memory for the lines. + + PDC_sync() handles wrefresh() and wsyncup() calls when a window + is changed. + +### Return Value + + newwin(), subwin(), derwin() and dupwin() return a pointer + to the new window, or NULL on failure. delwin(), mvwin(), + mvderwin() and syncok() return OK or ERR. wsyncup(), + wcursyncup() and wsyncdown() return nothing. + +### Errors + + It is an error to call resize_window() before calling initscr(). + Also, an error will be generated if we fail to create a newly + sized replacement window for curscr, or stdscr. This could + happen when increasing the window size. NOTE: If this happens, + the previously successfully allocated windows are left alone; + i.e., the resize is NOT cancelled for those windows. + +### Portability + X/Open BSD SYS V + newwin Y Y Y + delwin Y Y Y + mvwin Y Y Y + subwin Y Y Y + derwin Y - Y + mvderwin Y - Y + dupwin Y - 4.0 + wsyncup Y - 4.0 + syncok Y - 4.0 + wcursyncup Y - 4.0 + wsyncdown Y - 4.0 + resize_window - - - + wresize - - - + PDC_makelines - - - + PDC_makenew - - - + PDC_sync - - - + +**man-end****************************************************************/ + +#include + +WINDOW *PDC_makenew(int nlines, int ncols, int begy, int begx) +{ + WINDOW *win; + + PDC_LOG(("PDC_makenew() - called: lines %d cols %d begy %d begx %d\n", + nlines, ncols, begy, begx)); + + /* allocate the window structure itself */ + + if ((win = calloc(1, sizeof(WINDOW))) == (WINDOW *)NULL) + return win; + + /* allocate the line pointer array */ + + if ((win->_y = malloc(nlines * sizeof(chtype *))) == NULL) + { + free(win); + return (WINDOW *)NULL; + } + + /* allocate the minchng and maxchng arrays */ + + if ((win->_firstch = malloc(nlines * sizeof(int))) == NULL) + { + free(win->_y); + free(win); + return (WINDOW *)NULL; + } + + if ((win->_lastch = malloc(nlines * sizeof(int))) == NULL) + { + free(win->_firstch); + free(win->_y); + free(win); + return (WINDOW *)NULL; + } + + /* initialize window variables */ + + win->_maxy = nlines; /* real max screen size */ + win->_maxx = ncols; /* real max screen size */ + win->_begy = begy; + win->_begx = begx; + win->_bkgd = ' '; /* wrs 4/10/93 -- initialize background to blank */ + win->_clear = (bool) ((nlines == LINES) && (ncols == COLS)); + win->_bmarg = nlines - 1; + win->_parx = win->_pary = -1; + + /* init to say window all changed */ + + touchwin(win); + + return win; +} + +WINDOW *PDC_makelines(WINDOW *win) +{ + int i, j, nlines, ncols; + + PDC_LOG(("PDC_makelines() - called\n")); + + if (!win) + return (WINDOW *)NULL; + + nlines = win->_maxy; + ncols = win->_maxx; + + for (i = 0; i < nlines; i++) + { + if ((win->_y[i] = malloc(ncols * sizeof(chtype))) == NULL) + { + /* if error, free all the data */ + + for (j = 0; j < i; j++) + free(win->_y[j]); + + free(win->_firstch); + free(win->_lastch); + free(win->_y); + free(win); + + return (WINDOW *)NULL; + } + } + + return win; +} + +void PDC_sync(WINDOW *win) +{ + PDC_LOG(("PDC_sync() - called:\n")); + + if (win->_immed) + wrefresh(win); + if (win->_sync) + wsyncup(win); +} + +WINDOW *newwin(int nlines, int ncols, int begy, int begx) +{ + WINDOW *win; + + PDC_LOG(("newwin() - called:lines=%d cols=%d begy=%d begx=%d\n", + nlines, ncols, begy, begx)); + + if (!nlines) + nlines = LINES - begy; + if (!ncols) + ncols = COLS - begx; + + if ( (begy + nlines > SP->lines || begx + ncols > SP->cols) + || !(win = PDC_makenew(nlines, ncols, begy, begx)) + || !(win = PDC_makelines(win)) ) + return (WINDOW *)NULL; + + werase(win); + + return win; +} + +int delwin(WINDOW *win) +{ + int i; + + PDC_LOG(("delwin() - called\n")); + + if (!win) + return ERR; + + /* subwindows use parents' lines */ + + if (!(win->_flags & (_SUBWIN|_SUBPAD))) + for (i = 0; i < win->_maxy && win->_y[i]; i++) + if (win->_y[i]) + free(win->_y[i]); + + free(win->_firstch); + free(win->_lastch); + free(win->_y); + free(win); + + return OK; +} + +int mvwin(WINDOW *win, int y, int x) +{ + PDC_LOG(("mvwin() - called\n")); + + if (!win || (y + win->_maxy > LINES || y < 0) + || (x + win->_maxx > COLS || x < 0)) + return ERR; + + win->_begy = y; + win->_begx = x; + touchwin(win); + + return OK; +} + +WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begy, int begx) +{ + WINDOW *win; + int i; + int j = begy - orig->_begy; + int k = begx - orig->_begx; + + PDC_LOG(("subwin() - called: lines %d cols %d begy %d begx %d\n", + nlines, ncols, begy, begx)); + + /* make sure window fits inside the original one */ + + if (!orig || (begy < orig->_begy) || (begx < orig->_begx) || + (begy + nlines) > (orig->_begy + orig->_maxy) || + (begx + ncols) > (orig->_begx + orig->_maxx)) + return (WINDOW *)NULL; + + if (!nlines) + nlines = orig->_maxy - 1 - j; + if (!ncols) + ncols = orig->_maxx - 1 - k; + + if ( !(win = PDC_makenew(nlines, ncols, begy, begx)) ) + return (WINDOW *)NULL; + + /* initialize window variables */ + + win->_attrs = orig->_attrs; + win->_bkgd = orig->_bkgd; + win->_leaveit = orig->_leaveit; + win->_scroll = orig->_scroll; + win->_nodelay = orig->_nodelay; + win->_delayms = orig->_delayms; + win->_use_keypad = orig->_use_keypad; + win->_immed = orig->_immed; + win->_sync = orig->_sync; + win->_pary = j; + win->_parx = k; + win->_parent = orig; + + for (i = 0; i < nlines; i++, j++) + win->_y[i] = orig->_y[j] + k; + + win->_flags |= _SUBWIN; + + return win; +} + +WINDOW *derwin(WINDOW *orig, int nlines, int ncols, int begy, int begx) +{ + return subwin(orig, nlines, ncols, begy + orig->_begy, begx + orig->_begx); +} + +int mvderwin(WINDOW *win, int pary, int parx) +{ + int i, j; + WINDOW *mypar; + + if (!win || !(win->_parent)) + return ERR; + + mypar = win->_parent; + + if (pary < 0 || parx < 0 || (pary + win->_maxy) > mypar->_maxy || + (parx + win->_maxx) > mypar->_maxx) + return ERR; + + j = pary; + + for (i = 0; i < win->_maxy; i++) + win->_y[i] = (mypar->_y[j++]) + parx; + + win->_pary = pary; + win->_parx = parx; + + return OK; +} + +WINDOW *dupwin(WINDOW *win) +{ + WINDOW *new; + chtype *ptr, *ptr1; + int nlines, ncols, begy, begx, i; + + if (!win) + return (WINDOW *)NULL; + + nlines = win->_maxy; + ncols = win->_maxx; + begy = win->_begy; + begx = win->_begx; + + if ( !(new = PDC_makenew(nlines, ncols, begy, begx)) + || !(new = PDC_makelines(new)) ) + return (WINDOW *)NULL; + + /* copy the contents of win into new */ + + for (i = 0; i < nlines; i++) + { + for (ptr = new->_y[i], ptr1 = win->_y[i]; + ptr < new->_y[i] + ncols; ptr++, ptr1++) + *ptr = *ptr1; + + new->_firstch[i] = 0; + new->_lastch[i] = ncols - 1; + } + + new->_curx = win->_curx; + new->_cury = win->_cury; + new->_maxy = win->_maxy; + new->_maxx = win->_maxx; + new->_begy = win->_begy; + new->_begx = win->_begx; + new->_flags = win->_flags; + new->_attrs = win->_attrs; + new->_clear = win->_clear; + new->_leaveit = win->_leaveit; + new->_scroll = win->_scroll; + new->_nodelay = win->_nodelay; + new->_delayms = win->_delayms; + new->_use_keypad = win->_use_keypad; + new->_tmarg = win->_tmarg; + new->_bmarg = win->_bmarg; + new->_parx = win->_parx; + new->_pary = win->_pary; + new->_parent = win->_parent; + new->_bkgd = win->_bkgd; + new->_flags = win->_flags; + + return new; +} + +WINDOW *resize_window(WINDOW *win, int nlines, int ncols) +{ + WINDOW *new; + int i, save_cury, save_curx, new_begy, new_begx; + + PDC_LOG(("resize_window() - called: nlines %d ncols %d\n", + nlines, ncols)); + + if (!win) + return (WINDOW *)NULL; + + if (win->_flags & _SUBPAD) + { + if ( !(new = subpad(win->_parent, nlines, ncols, + win->_begy, win->_begx)) ) + return (WINDOW *)NULL; + } + else if (win->_flags & _SUBWIN) + { + if ( !(new = subwin(win->_parent, nlines, ncols, + win->_begy, win->_begx)) ) + return (WINDOW *)NULL; + } + else + { + if (win == SP->slk_winptr) + { + new_begy = SP->lines - SP->slklines; + new_begx = 0; + } + else + { + new_begy = win->_begy; + new_begx = win->_begx; + } + + if ( !(new = PDC_makenew(nlines, ncols, new_begy, new_begx)) ) + return (WINDOW *)NULL; + } + + save_curx = min(win->_curx, (new->_maxx - 1)); + save_cury = min(win->_cury, (new->_maxy - 1)); + + if (!(win->_flags & (_SUBPAD|_SUBWIN))) + { + if ( !(new = PDC_makelines(new)) ) + return (WINDOW *)NULL; + + werase(new); + + copywin(win, new, 0, 0, 0, 0, min(win->_maxy, new->_maxy) - 1, + min(win->_maxx, new->_maxx) - 1, FALSE); + + for (i = 0; i < win->_maxy && win->_y[i]; i++) + if (win->_y[i]) + free(win->_y[i]); + } + + new->_flags = win->_flags; + new->_attrs = win->_attrs; + new->_clear = win->_clear; + new->_leaveit = win->_leaveit; + new->_scroll = win->_scroll; + new->_nodelay = win->_nodelay; + new->_delayms = win->_delayms; + new->_use_keypad = win->_use_keypad; + new->_tmarg = (win->_tmarg > new->_maxy - 1) ? 0 : win->_tmarg; + new->_bmarg = (win->_bmarg == win->_maxy - 1) ? + new->_maxy - 1 : min(win->_bmarg, (new->_maxy - 1)); + new->_parent = win->_parent; + new->_immed = win->_immed; + new->_sync = win->_sync; + new->_bkgd = win->_bkgd; + + new->_curx = save_curx; + new->_cury = save_cury; + + free(win->_firstch); + free(win->_lastch); + free(win->_y); + + *win = *new; + free(new); + + return win; +} + +int wresize(WINDOW *win, int nlines, int ncols) +{ + return (resize_window(win, nlines, ncols) ? OK : ERR); +} + +void wsyncup(WINDOW *win) +{ + WINDOW *tmp; + + PDC_LOG(("wsyncup() - called\n")); + + for (tmp = win; tmp; tmp = tmp->_parent) + touchwin(tmp); +} + +int syncok(WINDOW *win, bool bf) +{ + PDC_LOG(("syncok() - called\n")); + + if (!win) + return ERR; + + win->_sync = bf; + + return OK; +} + +void wcursyncup(WINDOW *win) +{ + WINDOW *tmp; + + PDC_LOG(("wcursyncup() - called\n")); + + for (tmp = win; tmp && tmp->_parent; tmp = tmp->_parent) + wmove(tmp->_parent, tmp->_pary + tmp->_cury, tmp->_parx + tmp->_curx); +} + +void wsyncdown(WINDOW *win) +{ + WINDOW *tmp; + + PDC_LOG(("wsyncdown() - called\n")); + + for (tmp = win; tmp; tmp = tmp->_parent) + { + if (is_wintouched(tmp)) + { + touchwin(win); + break; + } + } +} diff --git a/3rd-party/PDCurses/sdl1/Makefile.mng b/3rd-party/PDCurses/sdl1/Makefile.mng new file mode 100644 index 0000000..8bbdf67 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/Makefile.mng @@ -0,0 +1,110 @@ +# Makefile for PDCurses library for SDL for MinGW +# +# Usage: [g]make -f Makefile.mng [DEBUG=Y] [WIDE=Y] [UTF8=Y] [target] +# +# where target can be any of: +# [all|demos|libpdcurses.a|testcurs]... + +O = o +RM = rm + +ifndef PDCURSES_SRCDIR + PDCURSES_SRCDIR = .. +endif + +include $(PDCURSES_SRCDIR)/libobjs.mif + +osdir = $(PDCURSES_SRCDIR)/sdl1 + +PDCURSES_SDL_H = $(osdir)/pdcsdl.h + +SLIBS = -lSDL + +ifeq ($(DEBUG),Y) + CFLAGS = -g -Wall -DPDCDEBUG +else + CFLAGS = -O2 -Wall +endif + +ifeq ($(WIDE),Y) + CFLAGS += -DPDC_WIDE + SLIBS += -lSDL_ttf +endif + +ifeq ($(UTF8),Y) + CFLAGS += -DPDC_FORCE_UTF8 +endif + +ifdef CHTYPE_32 + CFLAGS += -DCHTYPE_32 +endif + +ifdef CHTYPE_16 + CFLAGS += -DCHTYPE_16 +endif + +CC = gcc +BUILD = $(CC) $(CFLAGS) -I$(PDCURSES_SRCDIR) +LDFLAGS = -mwindows $(LIBCURSES) + +ifeq ($(DLL),Y) + BUILD += -DPDC_DLL_BUILD + LIBFLAGS = -Wl,--out-implib,libpdcurses.a -shared -o + LIBCURSES = pdcurses.dll + CLEAN = $(LIBCURSES) *.a + POST = $(SLIBS) +else + LIBEXE = ar + LIBFLAGS = rcv + LIBCURSES = libpdcurses.a + CLEAN = *.a + LDFLAGS += $(SLIBS) +endif + +DEMOS += sdltest.exe + +.PHONY: all libs clean demos + +all: libs demos + +libs: $(LIBCURSES) + +clean: + -$(RM) *.o $(CLEAN) *.exe + +demos: $(DEMOS) +ifneq ($(DEBUG),Y) + strip *.exe +endif + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $(LIBFLAGS) $@ $? $(POST) + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_SDL_H) +$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES) +tui.o tuidemo.o : $(PDCURSES_CURSES_H) +terminfo.o: $(TERM_HEADER) +panel.o ptest.exe: $(PANEL_HEADER) + +$(LIBOBJS) : %.o: $(srcdir)/%.c + $(BUILD) -c $< + +$(PDCOBJS) : %.o: $(osdir)/%.c + $(BUILD) -c $< + +firework.exe ozdemo.exe newtest.exe rain.exe testcurs.exe worm.exe xmas.exe \ +ptest.exe: %.exe: $(demodir)/%.c + $(BUILD) -o $@ $< $(LDFLAGS) + +sdltest.exe: $(osdir)/sdltest.c + $(BUILD) -o $@ $< -mwindows $(LIBCURSES) -lmingw32 -lSDLmain -lSDL + +tuidemo.exe: tuidemo.o tui.o + $(CC) -o $@ tuidemo.o tui.o $(LDFLAGS) + +tui.o: $(demodir)/tui.c $(demodir)/tui.h + $(BUILD) -c $< + +tuidemo.o: $(demodir)/tuidemo.c $(demodir)/tui.h + $(BUILD) -c $< diff --git a/3rd-party/PDCurses/sdl1/README.md b/3rd-party/PDCurses/sdl1/README.md new file mode 100644 index 0000000..a7ab1ed --- /dev/null +++ b/3rd-party/PDCurses/sdl1/README.md @@ -0,0 +1,31 @@ +PDCurses for SDL +================ + +This is a port of PDCurses for SDL. + + +Building +-------- + +- On *nix (including Linux and Mac OS X), run "make" or "make WIDE=Y" + in the sdl1 directory. There is no configure script (yet?) for this + port. This assumes a working sdl-config, and GNU make. It builds the + library libpdcurses.a (dynamic lib not implemented). + +- With MinGW, run "make -f Makefile.mng". This assumes SDL is installed + in the standard directories. The MinGW makefile accepts the optional + parameters "DLL=Y", "DEBUG=Y", and "WIDE=Y", as with the console + version. Both makefiles recognize the optional PDCURSES_SRCDIR + environment variable, as with the console ports. Makefile.mng builds + libpdcurses.a, along with pdcurses.dll, if specified. + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + + +Acknowledgements +---------------- + +SDL port was provided by William McBrine diff --git a/3rd-party/PDCurses/sdl1/deffont.h b/3rd-party/PDCurses/sdl1/deffont.h new file mode 100644 index 0000000..cf9cab1 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/deffont.h @@ -0,0 +1,385 @@ +/* Default font -- this is simply a 256x128x1 BMP, in #include'able form. + The font is 8x16, code page 437, and is based on the pc8x16s.bdf font + from the vgafonts.tar.gz package, by "Myrlin". */ + +unsigned char deffont[] = +{ + 0x42, 0x4d, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x76, 0xf8, 0xc0, 0x6c, 0xfe, 0x70, 0x7c, 0x18, + 0x7e, 0x38, 0xee, 0x3c, 0x00, 0xc0, 0x1c, 0xc6, 0x00, 0x7e, 0x7e, + 0x7e, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0xdc, 0xcc, 0xc0, 0x6c, 0xc6, 0xd8, 0x66, 0x18, 0x18, + 0x6c, 0x6c, 0x66, 0x00, 0x60, 0x30, 0xc6, 0xfe, 0x00, 0x00, 0x00, + 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7e, + 0x00, 0xd8, 0xcc, 0xc0, 0x6c, 0x60, 0xd8, 0x66, 0x18, 0x3c, 0xc6, + 0x6c, 0x66, 0x7e, 0x7e, 0x60, 0xc6, 0x00, 0x00, 0x30, 0x0c, 0x18, + 0xd8, 0x18, 0xdc, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00, + 0xd8, 0xcc, 0xc0, 0x6c, 0x30, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c, + 0x66, 0xdb, 0xf3, 0x60, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x76, 0x00, 0x18, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00, 0xd8, + 0xc8, 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c, 0x66, + 0xdb, 0xdb, 0x60, 0xc6, 0xfe, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x7e, + 0x00, 0x00, 0x18, 0x18, 0xec, 0x00, 0x00, 0x7e, 0x00, 0xdc, 0xdc, + 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xfe, 0xc6, 0x3e, 0xdb, + 0xdb, 0x7c, 0xc6, 0x00, 0x7e, 0x06, 0x60, 0x18, 0x18, 0x00, 0xdc, + 0x00, 0x00, 0x00, 0x0c, 0x36, 0x7e, 0x7e, 0x00, 0x76, 0xce, 0xc0, + 0xfe, 0x30, 0x7e, 0x66, 0xdc, 0x66, 0xc6, 0xc6, 0x0c, 0x7e, 0x7e, + 0x60, 0xc6, 0x00, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x18, 0x76, 0x00, + 0x00, 0x00, 0x0c, 0x36, 0x32, 0x7e, 0x00, 0x00, 0xc6, 0xc6, 0x00, + 0x60, 0x00, 0x00, 0x76, 0x3c, 0xc6, 0xc6, 0x18, 0x00, 0x06, 0x60, + 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x1b, 0x18, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x0c, 0x36, 0x18, 0x7e, 0x00, 0x00, 0xce, 0xc6, 0x00, 0xc6, + 0x00, 0x00, 0x00, 0x18, 0x6c, 0x6c, 0x30, 0x00, 0x03, 0x30, 0x7c, + 0x00, 0x00, 0x30, 0x0c, 0x1b, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00, + 0x0c, 0x36, 0x0c, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0x00, 0xfe, 0x00, + 0x00, 0x00, 0x7e, 0x38, 0x38, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x0c, + 0x36, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0f, 0x6c, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, + 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, + 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, + 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, + 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, + 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, + 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, + 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, + 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, + 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, + 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, + 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18, + 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, + 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, + 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, + 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, + 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, + 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x1f, 0xff, 0xff, 0x1f, 0xff, 0xff, + 0x1f, 0x37, 0x3f, 0x37, 0xff, 0xf7, 0x37, 0xff, 0xf7, 0xff, 0xff, + 0xff, 0xff, 0x3f, 0x1f, 0x1f, 0x3f, 0xff, 0xff, 0xf8, 0x1f, 0xff, + 0xff, 0xf0, 0x0f, 0x00, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, + 0x36, 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, + 0x00, 0x36, 0x18, 0x18, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, + 0xf0, 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x1f, 0x36, + 0x37, 0x3f, 0xf7, 0xff, 0x37, 0xff, 0xf7, 0xff, 0x36, 0xff, 0x00, + 0x36, 0x1f, 0x1f, 0x00, 0x36, 0xff, 0x18, 0x00, 0xff, 0x00, 0xf0, + 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, + 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, + 0x18, 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, + 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, + 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, + 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, + 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, + 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00, + 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18, 0x18, + 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00, 0x36, + 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00, 0x36, + 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, + 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, + 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x06, 0x00, 0x00, 0x00, + 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, + 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x11, + 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, + 0x00, 0x00, 0x00, 0x18, 0x76, 0x18, 0x7c, 0x78, 0x66, 0xc6, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x0c, 0x3f, 0x18, 0x00, 0x00, 0x44, 0xaa, + 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, + 0x00, 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00, + 0xc6, 0xc0, 0x06, 0x86, 0x9a, 0x3c, 0x00, 0x00, 0x11, 0x55, 0xdd, + 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, + 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00, 0xc6, + 0xc0, 0x06, 0xdc, 0xce, 0x3c, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18, + 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, + 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xce, 0x00, 0x00, 0xc0, 0xc0, + 0x06, 0x60, 0x66, 0x3c, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18, + 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, + 0x7c, 0x18, 0xc6, 0xcc, 0x66, 0xde, 0x7e, 0x7c, 0x60, 0xc0, 0x06, + 0x30, 0x30, 0x18, 0xd8, 0x36, 0x44, 0xaa, 0x77, 0x18, 0xf8, 0xf8, + 0xf6, 0xfe, 0xf8, 0xf6, 0x36, 0xf6, 0xfe, 0xfe, 0xf8, 0xf8, 0x0c, + 0x18, 0xc6, 0xcc, 0x66, 0xfe, 0x00, 0x00, 0x30, 0xfe, 0xfe, 0x18, + 0x18, 0x18, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, + 0x00, 0x18, 0x06, 0x36, 0x06, 0x06, 0x36, 0x18, 0x00, 0x78, 0x38, + 0x7c, 0xcc, 0x5c, 0xf6, 0x3e, 0x38, 0x30, 0x00, 0x00, 0x6c, 0x6c, + 0x18, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18, 0x18, 0xf8, 0x36, 0x00, + 0xf8, 0xf6, 0x36, 0xfe, 0xf6, 0x36, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe6, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, + 0x36, 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x60, 0x30, 0x60, 0x60, + 0xdc, 0xc6, 0x6c, 0x6c, 0x30, 0x00, 0x00, 0x62, 0x62, 0x18, 0x00, + 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, + 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x30, 0x18, 0x30, 0x30, 0x76, + 0x00, 0x3c, 0x38, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x18, 0x00, 0x00, + 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, + 0x00, 0x36, 0x36, 0x18, 0x00, 0x18, 0x0c, 0x18, 0x18, 0x00, 0xdc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x44, + 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00, + 0x36, 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x55, + 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00, 0x36, + 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x78, 0x7c, 0x76, 0x76, 0x76, 0x76, 0x7c, 0x7c, 0x7c, 0x7c, 0x18, + 0x18, 0x18, 0xc6, 0xc6, 0xfc, 0x6e, 0xce, 0x7c, 0x7c, 0x7c, 0x78, + 0x78, 0x76, 0x7c, 0x7c, 0x18, 0xfe, 0x18, 0xc6, 0x70, 0x3c, 0xcc, + 0xc2, 0xcc, 0xcc, 0xcc, 0xcc, 0xc6, 0xc2, 0xc2, 0xc2, 0x18, 0x18, + 0x18, 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, + 0xce, 0xc6, 0xc6, 0x18, 0x60, 0x7e, 0xcc, 0xd8, 0x66, 0xcc, 0xc0, + 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18, + 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, + 0xc6, 0xc6, 0x7c, 0x60, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0xc0, 0xcc, + 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18, 0xfe, + 0xc6, 0xc0, 0x7e, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, + 0xc6, 0xc6, 0x60, 0x7e, 0xcc, 0x18, 0xc0, 0xcc, 0xfe, 0x7c, 0x7c, + 0x7c, 0x7c, 0xc0, 0xfe, 0xfe, 0xfe, 0x18, 0x18, 0x18, 0xc6, 0xfe, + 0xf0, 0x36, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, + 0xc0, 0x60, 0x18, 0xde, 0x18, 0xc0, 0xcc, 0xc6, 0x0c, 0x0c, 0x0c, + 0x0c, 0xc6, 0xc6, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0xc6, 0xc6, 0xc0, + 0x36, 0xfe, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0, + 0xf8, 0x3c, 0xcc, 0x7e, 0xc0, 0xcc, 0x7c, 0x78, 0x78, 0x78, 0x78, + 0x7c, 0x7c, 0x7c, 0x7c, 0x38, 0x38, 0x38, 0x6c, 0x6c, 0xc0, 0xec, + 0xcc, 0x7c, 0x7c, 0x7c, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0, 0x60, + 0x66, 0xc4, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0xc0, 0x00, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x60, 0x66, + 0xf8, 0x18, 0x3c, 0xcc, 0x30, 0x6c, 0x00, 0x18, 0x38, 0x00, 0x6c, + 0x00, 0x18, 0x00, 0x66, 0x18, 0x10, 0x10, 0xfc, 0x00, 0x6c, 0x6c, + 0x00, 0x18, 0xcc, 0x18, 0x00, 0x7c, 0xc6, 0x7c, 0x62, 0x66, 0xcc, + 0x18, 0x00, 0xcc, 0x18, 0x38, 0xcc, 0x30, 0x6c, 0x00, 0x38, 0xc6, + 0x30, 0x66, 0x3c, 0x30, 0x00, 0x38, 0x00, 0x00, 0x3e, 0x38, 0xc6, + 0x30, 0x78, 0x30, 0xc6, 0x00, 0x00, 0x18, 0x3c, 0x66, 0xcc, 0x1b, + 0x00, 0x00, 0x0c, 0x10, 0x00, 0x60, 0x38, 0x00, 0x10, 0x00, 0x60, + 0x00, 0x18, 0x60, 0xc6, 0x6c, 0x30, 0x00, 0x00, 0x10, 0x00, 0x60, + 0x30, 0x60, 0x00, 0xc6, 0xc6, 0x18, 0x00, 0x00, 0xf8, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xf8, 0x78, 0x7c, 0x7c, + 0x30, 0x7c, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xc6, 0xcc, 0x78, 0xf8, + 0x7c, 0xc0, 0x7c, 0x30, 0x78, 0x10, 0x6c, 0xc6, 0x76, 0xfe, 0x0e, + 0x18, 0x70, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xc4, 0xcc, 0xc2, 0x30, + 0xcc, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, + 0xc0, 0x86, 0x30, 0xcc, 0x6c, 0xfe, 0x6c, 0xce, 0xc0, 0x18, 0x18, + 0x18, 0x00, 0xfe, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc, + 0xcc, 0x18, 0x0c, 0xd8, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, + 0x06, 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x60, 0x18, 0x18, 0x18, + 0x00, 0xc6, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc, 0xcc, + 0x18, 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0x1c, + 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x30, 0x18, 0x18, 0x18, 0x00, + 0xc6, 0x00, 0x7c, 0xcc, 0xc0, 0xcc, 0xfe, 0x30, 0xcc, 0xcc, 0x18, + 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x70, 0x30, + 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x18, 0x18, 0x18, 0x18, 0x00, 0xc6, + 0x00, 0x0c, 0xcc, 0xc4, 0xcc, 0xc6, 0x78, 0xcc, 0xec, 0x18, 0x0c, + 0xd8, 0x18, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xec, 0xc2, 0x30, 0xcc, + 0xc6, 0xc6, 0x6c, 0xc6, 0x0c, 0x70, 0x18, 0x0e, 0x00, 0x6c, 0x00, + 0x78, 0xf8, 0x78, 0x7c, 0x7c, 0x30, 0x7c, 0xd8, 0x38, 0x0c, 0xcc, + 0x18, 0xec, 0xb8, 0x78, 0xf8, 0x7c, 0xb8, 0x7c, 0xfc, 0xcc, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x00, 0x38, 0x00, 0x00, + 0xc0, 0x00, 0x0c, 0x00, 0x32, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x10, 0x0c, 0x00, 0xc0, + 0x00, 0x0c, 0x00, 0x36, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0xc0, 0x00, + 0x0c, 0x00, 0x1c, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x18, 0x70, 0xdc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0xc6, 0xfc, 0x3c, 0xf8, 0xfc, 0xc0, 0x3e, 0xc6, 0x18, 0x78, + 0xc2, 0xfc, 0xc6, 0xc6, 0x7c, 0xc0, 0x7c, 0xc6, 0x7c, 0x18, 0x7c, + 0x10, 0x6c, 0xc6, 0x18, 0xfe, 0x3c, 0x02, 0x3c, 0x00, 0x00, 0xc0, + 0xc6, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x66, 0xc6, 0x18, 0xcc, 0xc6, + 0xc0, 0xc6, 0xc6, 0xc6, 0xc0, 0xde, 0xc6, 0x86, 0x18, 0xc6, 0x38, + 0xee, 0xc6, 0x18, 0xc0, 0x30, 0x06, 0x0c, 0x00, 0x00, 0xdc, 0xc6, + 0xc6, 0xc2, 0xce, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xcc, 0xc0, + 0xc6, 0xc6, 0xc6, 0xc0, 0xd6, 0xcc, 0x06, 0x18, 0xc6, 0x6c, 0xfe, + 0x6c, 0x18, 0xc0, 0x30, 0x0e, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xc6, + 0xc0, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xd8, 0xc0, 0xc6, + 0xc6, 0xc6, 0xc0, 0xc6, 0xcc, 0x06, 0x18, 0xc6, 0xc6, 0xd6, 0x7c, + 0x18, 0x60, 0x30, 0x1c, 0x0c, 0x00, 0x00, 0xde, 0xfe, 0xc6, 0xc0, + 0xc6, 0xc0, 0xc0, 0xde, 0xc6, 0x18, 0x0c, 0xf0, 0xc0, 0xc6, 0xce, + 0xc6, 0xc0, 0xc6, 0xd8, 0x0c, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x18, + 0x30, 0x30, 0x38, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xfc, 0xc0, 0xc6, + 0xf8, 0xf8, 0xc0, 0xfe, 0x18, 0x0c, 0xf0, 0xc0, 0xd6, 0xde, 0xc6, + 0xfc, 0xc6, 0xfc, 0x38, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x3c, 0x18, + 0x30, 0x70, 0x0c, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc0, 0xc6, 0xc0, + 0xc0, 0xc0, 0xc6, 0x18, 0x0c, 0xd8, 0xc0, 0xfe, 0xfe, 0xc6, 0xc6, + 0xc6, 0xc6, 0x60, 0x18, 0xc6, 0xc6, 0xc6, 0x7c, 0x66, 0x0c, 0x30, + 0xe0, 0x0c, 0x00, 0x00, 0xc6, 0x6c, 0xc6, 0xc2, 0xce, 0xc0, 0xc0, + 0xc0, 0xc6, 0x18, 0x0c, 0xcc, 0xc0, 0xfe, 0xf6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc0, 0x18, 0xc6, 0xc6, 0xc6, 0x6c, 0x66, 0x06, 0x30, 0xc0, + 0x0c, 0x00, 0x00, 0x7c, 0x38, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x62, + 0xc6, 0x18, 0x0c, 0xc6, 0xc0, 0xee, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc2, 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0x06, 0x30, 0x80, 0x0c, + 0xc6, 0x00, 0x00, 0x10, 0xfc, 0x3c, 0xf8, 0xfc, 0xfc, 0x3c, 0xc6, + 0x18, 0x1e, 0xc2, 0xc0, 0xc6, 0xc6, 0x7c, 0xfc, 0x7c, 0xfc, 0x7c, + 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0xfe, 0x3c, 0x00, 0x3c, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x7c, + 0x86, 0x76, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x18, 0x00, 0x18, 0x80, + 0x38, 0x18, 0xfe, 0x7c, 0x0c, 0x7c, 0x7c, 0x30, 0x7c, 0x78, 0x00, + 0x30, 0x06, 0x00, 0x60, 0x18, 0x00, 0x18, 0x00, 0x6c, 0xc6, 0xc6, + 0xcc, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0x18, 0xc0, 0x6c, + 0x18, 0xc0, 0x86, 0x0c, 0x86, 0xc6, 0x30, 0xc6, 0x8c, 0x18, 0x18, + 0x0c, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0xfe, 0x86, 0x60, 0xcc, + 0x00, 0x30, 0x0c, 0x66, 0x18, 0x18, 0x00, 0x00, 0x60, 0xc6, 0x18, + 0xc0, 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x18, 0x18, 0x18, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x30, 0xcc, 0x00, + 0x30, 0x0c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x30, 0xe6, 0x18, 0x60, + 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x00, 0x00, 0x30, 0x7e, + 0x0c, 0x18, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x18, 0xdc, 0x00, 0x30, + 0x0c, 0xff, 0x7e, 0x00, 0xfe, 0x00, 0x18, 0xf6, 0x18, 0x30, 0x06, + 0xfe, 0x06, 0xe6, 0x18, 0xc6, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x18, 0x00, 0x18, 0x00, 0x6c, 0x7c, 0x0c, 0x76, 0x00, 0x30, 0x0c, + 0x3c, 0x18, 0x00, 0x00, 0x00, 0x0c, 0xde, 0x18, 0x18, 0x3c, 0xcc, + 0xfc, 0xdc, 0x0c, 0x7c, 0x7e, 0x00, 0x00, 0x30, 0x00, 0x0c, 0x18, + 0x00, 0x3c, 0x00, 0xfe, 0xc0, 0xc6, 0x38, 0x00, 0x30, 0x0c, 0x66, + 0x18, 0x00, 0x00, 0x00, 0x06, 0xce, 0x18, 0x0c, 0x06, 0x6c, 0xc0, + 0xc0, 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x0c, 0x00, + 0x3c, 0x24, 0x6c, 0xc2, 0xc2, 0x6c, 0x60, 0x30, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0xc6, 0x78, 0x06, 0x06, 0x3c, 0xc0, 0xc0, + 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x0c, 0x00, 0x30, 0xc6, 0x00, 0x3c, + 0x66, 0x6c, 0xc6, 0x00, 0x6c, 0x30, 0x18, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6c, 0x38, 0xc6, 0x86, 0x1c, 0xc0, 0x60, 0x06, + 0xc6, 0xc6, 0x00, 0x00, 0x06, 0x00, 0x60, 0xc6, 0x00, 0x18, 0x66, + 0x00, 0x7c, 0x00, 0x38, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x18, 0x7c, 0x7c, 0x0c, 0xfe, 0x3c, 0xfe, 0x7c, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x66, 0x00, + 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x7e, 0x10, 0x00, 0x3c, 0x3c, 0x00, 0xff, 0x00, + 0xff, 0x78, 0x18, 0xe0, 0xe6, 0x18, 0x80, 0x02, 0x00, 0x66, 0x1b, + 0xc6, 0xfe, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0xff, 0x38, 0x10, 0x18, 0x18, 0x00, 0xff, 0x3c, 0xc3, + 0xcc, 0x18, 0xf0, 0xe7, 0x18, 0xc0, 0x06, 0x18, 0x66, 0x1b, 0x0c, + 0xfe, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x10, 0x00, + 0x81, 0xff, 0x7c, 0x38, 0x18, 0x18, 0x18, 0xe7, 0x66, 0x99, 0xcc, + 0x7e, 0x70, 0x67, 0xdb, 0xe0, 0x0e, 0x3c, 0x00, 0x1b, 0x38, 0xfe, + 0x3c, 0x18, 0x7e, 0x18, 0x30, 0xfe, 0x28, 0xfe, 0x38, 0x00, 0x99, + 0xe7, 0xfe, 0x7c, 0xe7, 0x7e, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x18, + 0x30, 0x63, 0x3c, 0xf0, 0x1e, 0x7e, 0x66, 0x1b, 0x6c, 0xfe, 0x7e, + 0x18, 0x18, 0x0c, 0x60, 0xc0, 0x6c, 0x7c, 0x38, 0x00, 0xbd, 0xc3, + 0xfe, 0xfe, 0xe7, 0xff, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x3c, 0x30, + 0x63, 0xe7, 0xf8, 0x3e, 0x18, 0x66, 0x1b, 0xc6, 0x00, 0x18, 0x18, + 0x18, 0xfe, 0xfe, 0xc0, 0xfe, 0x7c, 0x7c, 0x00, 0x81, 0xff, 0xfe, + 0x7c, 0xe7, 0xff, 0x18, 0xe7, 0x66, 0x99, 0x78, 0x66, 0x30, 0x63, + 0x3c, 0xfe, 0xfe, 0x18, 0x66, 0x7b, 0xc6, 0x00, 0x18, 0x18, 0x18, + 0x0c, 0x60, 0xc0, 0x6c, 0x38, 0x7c, 0x00, 0x81, 0xff, 0xfe, 0x38, + 0x3c, 0x7e, 0x00, 0xff, 0x3c, 0xc3, 0x32, 0x66, 0x30, 0x63, 0xdb, + 0xf8, 0x3e, 0x18, 0x66, 0xdb, 0x6c, 0x00, 0x18, 0x18, 0x18, 0x18, + 0x30, 0x00, 0x28, 0x38, 0xfe, 0x00, 0xa5, 0xdb, 0x6c, 0x10, 0x3c, + 0x3c, 0x00, 0xff, 0x00, 0xff, 0x1a, 0x66, 0x3f, 0x7f, 0x18, 0xf0, + 0x1e, 0x7e, 0x66, 0xdb, 0x38, 0x00, 0x7e, 0x7e, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x10, 0xfe, 0x00, 0x81, 0xff, 0x00, 0x00, 0x18, 0x18, + 0x00, 0xff, 0x00, 0xff, 0x0e, 0x66, 0x33, 0x63, 0x18, 0xe0, 0x0e, + 0x3c, 0x66, 0xdb, 0x60, 0x00, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0xff, 0x1e, 0x3c, 0x3f, 0x7f, 0x00, 0xc0, 0x06, 0x18, + 0x66, 0x7f, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/3rd-party/PDCurses/sdl1/deficon.h b/3rd-party/PDCurses/sdl1/deficon.h new file mode 100644 index 0000000..7248ab5 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/deficon.h @@ -0,0 +1,23 @@ +/* The PDCurses logo as #include'able BMP (from ../x11/little_icon.xbm) */ + +unsigned char deficon[] = +{ + 0x42, 0x4d, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x6f, 0x9c, + 0xe7, 0xb5, 0xaf, 0x6b, 0x5b, 0xbd, 0xaf, 0xeb, 0xfb, 0xbd, 0xaf, + 0x98, 0xe7, 0xbd, 0xaf, 0x7b, 0x5f, 0xb5, 0xa5, 0x6b, 0x5b, 0xcd, + 0xab, 0x9c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xcf, 0x03, 0xff, 0xff, 0xce, 0x03, 0xff, 0xff, 0xcc, 0x73, + 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc, + 0x73, 0xff, 0xff, 0xc6, 0x33, 0xff, 0xff, 0xc3, 0x13, 0xff, 0xff, + 0xc1, 0x83, 0xff, 0xff, 0xc8, 0xc3, 0xff, 0xff, 0xcc, 0x63, 0xff, + 0xff, 0xce, 0x33, 0xff, 0xff, 0xcf, 0x33, 0xff, 0xff, 0xcf, 0x33, + 0xff, 0xff, 0xce, 0x33, 0xff, 0xff, 0xc0, 0x73, 0xff, 0xff, 0xc0, + 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff +}; diff --git a/3rd-party/PDCurses/sdl1/pdcclip.c b/3rd-party/PDCurses/sdl1/pdcclip.c new file mode 100644 index 0000000..8501ceb --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdcclip.c @@ -0,0 +1,131 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +#include + +/*man-start************************************************************** + +clipboard +--------- + +### Synopsis + + int PDC_getclipboard(char **contents, long *length); + int PDC_setclipboard(const char *contents, long length); + int PDC_freeclipboard(char *contents); + int PDC_clearclipboard(void); + +### Description + + PDC_getclipboard() gets the textual contents of the system's + clipboard. This function returns the contents of the clipboard + in the contents argument. It is the responsibilitiy of the + caller to free the memory returned, via PDC_freeclipboard(). + The length of the clipboard contents is returned in the length + argument. + + PDC_setclipboard copies the supplied text into the system's + clipboard, emptying the clipboard prior to the copy. + + PDC_clearclipboard() clears the internal clipboard. + +### Return Values + + indicator of success/failure of call. + PDC_CLIP_SUCCESS the call was successful + PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for + the clipboard contents + PDC_CLIP_EMPTY the clipboard contains no text + PDC_CLIP_ACCESS_ERROR no clipboard support + +### Portability + X/Open BSD SYS V + PDC_getclipboard - - - + PDC_setclipboard - - - + PDC_freeclipboard - - - + PDC_clearclipboard - - - + +**man-end****************************************************************/ + +/* global clipboard contents, should be NULL if none set */ + +static char *pdc_SDL_clipboard = NULL; + +int PDC_getclipboard(char **contents, long *length) +{ + int len; + + PDC_LOG(("PDC_getclipboard() - called\n")); + + if (!pdc_SDL_clipboard) + return PDC_CLIP_EMPTY; + + len = strlen(pdc_SDL_clipboard); + if ((*contents = malloc(len + 1)) == NULL) + return PDC_CLIP_MEMORY_ERROR; + + strcpy(*contents, pdc_SDL_clipboard); + *length = len; + + return PDC_CLIP_SUCCESS; +} + +int PDC_setclipboard(const char *contents, long length) +{ + PDC_LOG(("PDC_setclipboard() - called\n")); + + if (pdc_SDL_clipboard) + { + free(pdc_SDL_clipboard); + pdc_SDL_clipboard = NULL; + } + + if (contents) + { + if ((pdc_SDL_clipboard = malloc(length + 1)) == NULL) + return PDC_CLIP_MEMORY_ERROR; + + strcpy(pdc_SDL_clipboard, contents); + } + + return PDC_CLIP_SUCCESS; +} + +int PDC_freeclipboard(char *contents) +{ + PDC_LOG(("PDC_freeclipboard() - called\n")); + + /* should we also free empty the system clipboard? probably not */ + + if (contents) + { + /* NOTE: We free the memory, but we can not set caller's pointer + to NULL, so if caller calls again then will try to access + free'd memory. We 1st overwrite memory with a string so if + caller tries to use free memory they won't get what they + expect & hopefully notice. */ + + /* memset(contents, 0xFD, strlen(contents)); */ + + if (strlen(contents) >= strlen("PDCURSES")) + strcpy(contents, "PDCURSES"); + + free(contents); + } + + return PDC_CLIP_SUCCESS; +} + +int PDC_clearclipboard(void) +{ + PDC_LOG(("PDC_clearclipboard() - called\n")); + + if (pdc_SDL_clipboard) + { + free(pdc_SDL_clipboard); + pdc_SDL_clipboard = NULL; + } + + return PDC_CLIP_SUCCESS; +} diff --git a/3rd-party/PDCurses/sdl1/pdcdisp.c b/3rd-party/PDCurses/sdl1/pdcdisp.c new file mode 100644 index 0000000..4e2069c --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdcdisp.c @@ -0,0 +1,373 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +#include +#include + +#ifdef CHTYPE_LONG + +#ifdef PDC_WIDE + #define USE_UNICODE_ACS_CHARS 1 +#else + #define USE_UNICODE_ACS_CHARS 0 +#endif + +#include "acs_defs.h" + +#endif + +Uint32 pdc_lastupdate = 0; + +#define MAXRECT 200 /* maximum number of rects to queue up before + an update is forced; the number was chosen + arbitrarily */ + +static SDL_Rect uprect[MAXRECT]; /* table of rects to update */ +static chtype oldch = (chtype)(-1); /* current attribute */ +static int rectcount = 0; /* index into uprect */ +static short foregr = -2, backgr = -2; /* current foreground, background */ + +/* do the real updates on a delay */ + +void PDC_update_rects(void) +{ + if (rectcount) + { + /* if the maximum number of rects has been reached, we're + probably better off doing a full screen update */ + + if (rectcount == MAXRECT) + SDL_Flip(pdc_screen); + else + SDL_UpdateRects(pdc_screen, rectcount, uprect); + + pdc_lastupdate = SDL_GetTicks(); + rectcount = 0; + } +} + +/* set the font colors to match the chtype's attribute */ + +static void _set_attr(chtype ch) +{ + ch &= (A_COLOR|A_BOLD|A_BLINK|A_REVERSE); + + if (oldch != ch) + { + short newfg, newbg; + + if (SP->mono) + return; + + PDC_pair_content(PAIR_NUMBER(ch), &newfg, &newbg); + + newfg |= (ch & A_BOLD) ? 8 : 0; + newbg |= (ch & A_BLINK) ? 8 : 0; + + if (ch & A_REVERSE) + { + short tmp = newfg; + newfg = newbg; + newbg = tmp; + } + + if (newfg != foregr) + { +#ifndef PDC_WIDE + SDL_SetPalette(pdc_font, SDL_LOGPAL, + pdc_color + newfg, pdc_flastc, 1); +#endif + foregr = newfg; + } + + if (newbg != backgr) + { +#ifndef PDC_WIDE + if (newbg == -1) + SDL_SetColorKey(pdc_font, SDL_SRCCOLORKEY, 0); + else + { + if (backgr == -1) + SDL_SetColorKey(pdc_font, 0, 0); + + SDL_SetPalette(pdc_font, SDL_LOGPAL, + pdc_color + newbg, 0, 1); + } +#endif + backgr = newbg; + } + + oldch = ch; + } +} + +/* draw a cursor at (y, x) */ + +void PDC_gotoyx(int row, int col) +{ + SDL_Rect src, dest; + chtype ch; + int oldrow, oldcol; +#ifdef PDC_WIDE + Uint16 chstr[2] = {0, 0}; +#endif + + PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n", + row, col, SP->cursrow, SP->curscol)); + + if (SP->mono) + return; + + oldrow = SP->cursrow; + oldcol = SP->curscol; + + /* clear the old cursor */ + + PDC_transform_line(oldrow, oldcol, 1, curscr->_y[oldrow] + oldcol); + + if (!SP->visibility) + return; + + /* draw a new cursor by overprinting the existing character in + reverse, either the full cell (when visibility == 2) or the + lowest quarter of it (when visibility == 1) */ + + ch = curscr->_y[row][col] ^ A_REVERSE; + + _set_attr(ch); + +#ifdef CHTYPE_LONG + if (ch & A_ALTCHARSET && !(ch & 0xff80)) + ch = acs_map[ch & 0x7f]; +#endif + src.h = (SP->visibility == 1) ? pdc_fheight >> 2 : pdc_fheight; + src.w = pdc_fwidth; + + dest.y = (row + 1) * pdc_fheight - src.h + pdc_yoffset; + dest.x = col * pdc_fwidth + pdc_xoffset; + +#ifdef PDC_WIDE + chstr[0] = ch & A_CHARTEXT; + + pdc_font = TTF_RenderUNICODE_Solid(pdc_ttffont, chstr, pdc_color[foregr]); + if (pdc_font) + { + dest.h = src.h; + dest.w = src.w; + src.x = 0; + src.y = 0; + SDL_SetColorKey(pdc_font, 0, 0); + SDL_SetPalette(pdc_font, SDL_LOGPAL, pdc_color + backgr, 0, 1); + SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest); + SDL_FreeSurface(pdc_font); + pdc_font = NULL; + } +#else + + src.x = (ch & 0xff) % 32 * pdc_fwidth; + src.y = (ch & 0xff) / 32 * pdc_fheight + (pdc_fheight - src.h); + + SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest); +#endif + + if (oldrow != row || oldcol != col) + { + if (rectcount == MAXRECT) + PDC_update_rects(); + + uprect[rectcount++] = dest; + } +} + +/* handle the A_*LINE attributes */ + +static void _highlight(SDL_Rect *src, SDL_Rect *dest, chtype ch) +{ + short col = SP->line_color; +#ifdef PDC_WIDE + Uint16 chstr[2] = {'_', 0}; +#endif + + if (SP->mono) + return; + + if (ch & (A_UNDERLINE | A_OVERLINE | A_STRIKEOUT)) + { +#ifdef PDC_WIDE + if (col == -1) + col = foregr; + + pdc_font = TTF_RenderUNICODE_Solid(pdc_ttffont, chstr, pdc_color[col]); + if (pdc_font) + { + src->x = 0; + src->y = 0; + + if (backgr != -1) + SDL_SetColorKey(pdc_font, SDL_SRCCOLORKEY, 0); + + if( ch & A_UNDERLINE) + SDL_BlitSurface(pdc_font, src, pdc_screen, dest); + if( ch & A_OVERLINE) + { + dest->y -= pdc_fheight - 1; + SDL_BlitSurface(pdc_font, src, pdc_screen, dest); + dest->y += pdc_fheight - 1; + } + if( ch & A_STRIKEOUT) + { + dest->y -= pdc_fheight / 2; + SDL_BlitSurface(pdc_font, src, pdc_screen, dest); + dest->y += pdc_fheight / 2; + } + SDL_FreeSurface(pdc_font); + pdc_font = NULL; + } +#else + if (col != -1) + SDL_SetPalette(pdc_font, SDL_LOGPAL, + pdc_color + col, pdc_flastc, 1); + + src->x = '_' % 32 * pdc_fwidth; + src->y = '_' / 32 * pdc_fheight; + + if (backgr != -1) + SDL_SetColorKey(pdc_font, SDL_SRCCOLORKEY, 0); + + if( ch & A_UNDERLINE) + SDL_BlitSurface(pdc_font, src, pdc_screen, dest); + if( ch & A_OVERLINE) + { + dest->y -= pdc_fheight - 1; + SDL_BlitSurface(pdc_font, src, pdc_screen, dest); + dest->y += pdc_fheight - 1; + } + if( ch & A_STRIKEOUT) + { + dest->y -= pdc_fheight / 2; + SDL_BlitSurface(pdc_font, src, pdc_screen, dest); + dest->y += pdc_fheight / 2; + } + + if (backgr != -1) + SDL_SetColorKey(pdc_font, 0, 0); + + if (col != -1) + SDL_SetPalette(pdc_font, SDL_LOGPAL, + pdc_color + foregr, pdc_flastc, 1); +#endif + } + + if (ch & (A_LEFTLINE|A_RIGHTLINE)) + { + if (col == -1) + col = foregr; + + dest->w = 1; + + if (ch & A_LEFTLINE) + SDL_FillRect(pdc_screen, dest, pdc_mapped[col]); + + if (ch & A_RIGHTLINE) + { + dest->x += pdc_fwidth - 1; + SDL_FillRect(pdc_screen, dest, pdc_mapped[col]); + dest->x -= pdc_fwidth - 1; + } + + dest->w = pdc_fwidth; + } +} + +/* update the given physical line to look like the corresponding line in + curscr */ + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + SDL_Rect src, dest, lastrect; + int j; +#ifdef PDC_WIDE + Uint16 chstr[2] = {0, 0}; +#endif + + PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno)); + + if (rectcount == MAXRECT) + PDC_update_rects(); + + src.h = pdc_fheight; + src.w = pdc_fwidth; + + dest.y = pdc_fheight * lineno + pdc_yoffset; + dest.x = pdc_fwidth * x + pdc_xoffset; + dest.h = pdc_fheight; + dest.w = pdc_fwidth * len; + + /* if the previous rect was just above this one, with the same width + and horizontal position, then merge the new one with it instead + of adding a new entry */ + + if (rectcount) + lastrect = uprect[rectcount - 1]; + + if (rectcount && lastrect.x == dest.x && lastrect.w == dest.w) + { + if (lastrect.y + lastrect.h == dest.y) + uprect[rectcount - 1].h = lastrect.h + pdc_fheight; + else + if (lastrect.y != dest.y) + uprect[rectcount++] = dest; + } + else + uprect[rectcount++] = dest; + + dest.w = pdc_fwidth; + +#ifdef PDC_WIDE + src.x = 0; + src.y = 0; +#endif + + for (j = 0; j < len; j++) + { + chtype ch = srcp[j]; + + _set_attr(ch); +#ifdef CHTYPE_LONG + if (ch & A_ALTCHARSET && !(ch & 0xff80)) + ch = (ch & (A_ATTRIBUTES ^ A_ALTCHARSET)) | acs_map[ch & 0x7f]; +#endif + if (backgr == -1) + SDL_LowerBlit(pdc_tileback, &dest, pdc_screen, &dest); + +#ifdef PDC_WIDE + chstr[0] = ch & A_CHARTEXT; + pdc_font = TTF_RenderUNICODE_Solid(pdc_ttffont, chstr, + pdc_color[foregr]); + + if (pdc_font) + { + if (backgr != -1) + { + SDL_SetColorKey(pdc_font, 0, 0); + SDL_SetPalette(pdc_font, SDL_LOGPAL, + pdc_color + backgr, 0, 1); + } + SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest); + SDL_FreeSurface(pdc_font); + pdc_font = NULL; + } +#else + src.x = (ch & 0xff) % 32 * pdc_fwidth; + src.y = (ch & 0xff) / 32 * pdc_fheight; + + SDL_LowerBlit(pdc_font, &src, pdc_screen, &dest); +#endif + + if (ch & (A_UNDERLINE|A_LEFTLINE|A_RIGHTLINE|A_OVERLINE|A_STRIKEOUT)) + _highlight(&src, &dest, ch); + + dest.x += pdc_fwidth; + } +} diff --git a/3rd-party/PDCurses/sdl1/pdcgetsc.c b/3rd-party/PDCurses/sdl1/pdcgetsc.c new file mode 100644 index 0000000..79d25a4 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdcgetsc.c @@ -0,0 +1,30 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + + return 0; +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ + PDC_LOG(("PDC_get_rows() - called\n")); + + return pdc_sheight / pdc_fheight; +} + +/* return width of screen/viewport */ + +int PDC_get_columns(void) +{ + PDC_LOG(("PDC_get_columns() - called\n")); + + return pdc_swidth / pdc_fwidth; +} diff --git a/3rd-party/PDCurses/sdl1/pdckbd.c b/3rd-party/PDCurses/sdl1/pdckbd.c new file mode 100644 index 0000000..a7a1b06 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdckbd.c @@ -0,0 +1,410 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +/*man-start************************************************************** + +pdckbd +------ + +### Synopsis + + unsigned long PDC_get_input_fd(void); + +### Description + + PDC_get_input_fd() returns the file descriptor that PDCurses + reads its input from. It can be used for select(). + +### Portability + X/Open BSD SYS V + PDC_get_input_fd - - - + +**man-end****************************************************************/ + +#include + +unsigned long pdc_key_modifiers = 0L; + +static SDL_Event event; +static SDLKey oldkey; +static MOUSE_STATUS old_mouse_status; + +static struct +{ + SDLKey keycode; + bool numkeypad; + unsigned short normal; + unsigned short shifted; + unsigned short control; + unsigned short alt; +} key_table[] = +{ +/* keycode keypad normal shifted control alt*/ + {SDLK_LEFT, FALSE, KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT}, + {SDLK_RIGHT, FALSE, KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT}, + {SDLK_UP, FALSE, KEY_UP, KEY_SUP, CTL_UP, ALT_UP}, + {SDLK_DOWN, FALSE, KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN}, + {SDLK_HOME, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME}, + {SDLK_END, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END}, + {SDLK_PAGEUP, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP}, + {SDLK_PAGEDOWN,FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN}, + {SDLK_INSERT, FALSE, KEY_IC, KEY_SIC, CTL_INS, ALT_INS}, + {SDLK_DELETE, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL}, + {SDLK_F1, FALSE, KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37)}, + {SDLK_F2, FALSE, KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38)}, + {SDLK_F3, FALSE, KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39)}, + {SDLK_F4, FALSE, KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40)}, + {SDLK_F5, FALSE, KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41)}, + {SDLK_F6, FALSE, KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42)}, + {SDLK_F7, FALSE, KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43)}, + {SDLK_F8, FALSE, KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44)}, + {SDLK_F9, FALSE, KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45)}, + {SDLK_F10, FALSE, KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46)}, + {SDLK_F11, FALSE, KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47)}, + {SDLK_F12, FALSE, KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48)}, + {SDLK_F13, FALSE, KEY_F(13), KEY_F(25), KEY_F(37), KEY_F(49)}, + {SDLK_F14, FALSE, KEY_F(14), KEY_F(26), KEY_F(38), KEY_F(50)}, + {SDLK_F15, FALSE, KEY_F(15), KEY_F(27), KEY_F(39), KEY_F(51)}, + {SDLK_BACKSPACE,FALSE, 0x08, 0x08, CTL_BKSP, ALT_BKSP}, + {SDLK_TAB, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB}, + {SDLK_PRINT, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT}, + {SDLK_PAUSE, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND}, + {SDLK_CLEAR, FALSE, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR}, + {SDLK_BREAK, FALSE, KEY_BREAK, KEY_BREAK, KEY_BREAK, KEY_BREAK}, + {SDLK_HELP, FALSE, KEY_HELP, KEY_SHELP, KEY_LHELP, KEY_HELP}, + {SDLK_MENU, FALSE, KEY_OPTIONS, KEY_SOPTIONS, KEY_OPTIONS, KEY_OPTIONS}, + {SDLK_ESCAPE, FALSE, 0x1B, 0x1B, 0x1B, ALT_ESC}, + {SDLK_KP_ENTER,TRUE, PADENTER, PADENTER, CTL_PADENTER,ALT_PADENTER}, + {SDLK_KP_PLUS, TRUE, PADPLUS, '+', CTL_PADPLUS, ALT_PADPLUS}, + {SDLK_KP_MINUS,TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS}, + {SDLK_KP_MULTIPLY,TRUE,PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR}, + {SDLK_KP_DIVIDE,TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH}, + {SDLK_KP_PERIOD,TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP}, + {SDLK_KP0, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0}, + {SDLK_KP1, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1}, + {SDLK_KP2, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2}, + {SDLK_KP3, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3}, + {SDLK_KP4, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4}, + {SDLK_KP5, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5}, + {SDLK_KP6, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6}, + {SDLK_KP7, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7}, + {SDLK_KP8, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8}, + {SDLK_KP9, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9}, + {0, 0, 0, 0, 0, 0} +}; + +unsigned long PDC_get_input_fd(void) +{ + PDC_LOG(("PDC_get_input_fd() - called\n")); + + return 0L; /* test this */ +} + +void PDC_set_keyboard_binary(bool on) +{ + PDC_LOG(("PDC_set_keyboard_binary() - called\n")); +} + +/* check if a key or mouse event is waiting */ + +bool PDC_check_key(void) +{ + Uint32 current = SDL_GetTicks(); + int haveevent = SDL_PollEvent(&event); + + /* if we have an event, or 30 ms have passed without a screen + update, or the timer has wrapped, update now */ + + if (haveevent || + current < pdc_lastupdate || ((current - pdc_lastupdate) > 30)) + PDC_update_rects(); + + return haveevent; +} + +static int _process_key_event(void) +{ + int i, key = 0; + + pdc_key_modifiers = 0L; + SP->key_code = FALSE; + + if (event.type == SDL_KEYUP) + { + if (SP->return_key_modifiers && event.key.keysym.sym == oldkey) + { + switch (oldkey) + { + case SDLK_RSHIFT: + return KEY_SHIFT_R; + case SDLK_LSHIFT: + return KEY_SHIFT_L; + case SDLK_RCTRL: + return KEY_CONTROL_R; + case SDLK_LCTRL: + return KEY_CONTROL_L; + case SDLK_RALT: + return KEY_ALT_R; + case SDLK_LALT: + return KEY_ALT_L; + default: + break; + } + } + + return -1; + } + + oldkey = event.key.keysym.sym; + + if (SP->save_key_modifiers) + { + if (event.key.keysym.mod & KMOD_NUM) + pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK; + + if (event.key.keysym.mod & KMOD_SHIFT) + pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT; + + if (event.key.keysym.mod & KMOD_CTRL) + pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL; + + if (event.key.keysym.mod & KMOD_ALT) + pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT; + } + + for (i = 0; key_table[i].keycode; i++) + { + if (key_table[i].keycode == event.key.keysym.sym) + { + if ((event.key.keysym.mod & KMOD_SHIFT) || + (key_table[i].numkeypad && (event.key.keysym.mod & KMOD_NUM))) + { + key = key_table[i].shifted; + } + else if (event.key.keysym.mod & KMOD_CTRL) + { + key = key_table[i].control; + } + else if (event.key.keysym.mod & KMOD_ALT) + { + key = key_table[i].alt; + } + + /* To get here, we ignore all other modifiers */ + + else + key = key_table[i].normal; + + SP->key_code = (key > 0x100); + break; + } + } + + if (!key) + { + key = event.key.keysym.unicode; + + if (key > 0x7f) + key = 0; + } + + /* Handle ALT letters and numbers */ + + if (event.key.keysym.mod & KMOD_ALT) + { + if (key >= 'A' && key <= 'Z') + { + key += ALT_A - 'A'; + SP->key_code = TRUE; + } + + if (key >= 'a' && key <= 'z') + { + key += ALT_A - 'a'; + SP->key_code = TRUE; + } + + if (key >= '0' && key <= '9') + { + key += ALT_0 - '0'; + SP->key_code = TRUE; + } + } + + return key ? key : -1; +} + +static int _process_mouse_event(void) +{ + SDLMod keymods; + short shift_flags = 0; + + memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS)); + + keymods = SDL_GetModState(); + + if (keymods & KMOD_SHIFT) + shift_flags |= BUTTON_SHIFT; + + if (keymods & KMOD_CTRL) + shift_flags |= BUTTON_CONTROL; + + if (keymods & KMOD_ALT) + shift_flags |= BUTTON_ALT; + + if (event.type == SDL_MOUSEMOTION) + { + int i; + + pdc_mouse_status.x = event.motion.x / pdc_fwidth; + pdc_mouse_status.y = event.motion.y / pdc_fheight; + + if (!event.motion.state || + (pdc_mouse_status.x == old_mouse_status.x && + pdc_mouse_status.y == old_mouse_status.y)) + return -1; + + pdc_mouse_status.changes = PDC_MOUSE_MOVED; + + for (i = 0; i < 3; i++) + { + if (event.motion.state & SDL_BUTTON(i + 1)) + { + pdc_mouse_status.button[i] = BUTTON_MOVED | shift_flags; + pdc_mouse_status.changes |= (1 << i); + } + } + } + else + { + short action = (event.button.state == SDL_PRESSED) ? + BUTTON_PRESSED : BUTTON_RELEASED; + Uint8 btn = event.button.button; + + /* handle scroll wheel */ + + if ((btn >= 4 && btn <= 7) && action == BUTTON_RELEASED) + { + pdc_mouse_status.x = pdc_mouse_status.y = -1; + + switch (btn) + { + case 4: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_UP; + break; + case 5: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_DOWN; + break; + case 6: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_LEFT; + break; + case 7: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_RIGHT; + } + + SP->key_code = TRUE; + return KEY_MOUSE; + } + + if (btn < 1 || btn > 3) + return -1; + + /* check for a click -- a press followed immediately by a release */ + + if (action == BUTTON_PRESSED && SP->mouse_wait) + { + SDL_Event rel; + + napms(SP->mouse_wait); + + if (SDL_PollEvent(&rel)) + { + if (rel.type == SDL_MOUSEBUTTONUP && rel.button.button == btn) + action = BUTTON_CLICKED; + else + SDL_PushEvent(&rel); + } + } + + pdc_mouse_status.x = event.button.x / pdc_fwidth; + pdc_mouse_status.y = event.button.y / pdc_fheight; + + btn--; + + pdc_mouse_status.button[btn] = action | shift_flags; + pdc_mouse_status.changes = (1 << btn); + } + + old_mouse_status = pdc_mouse_status; + + SP->key_code = TRUE; + return KEY_MOUSE; +} + +/* return the next available key or mouse event */ + +int PDC_get_key(void) +{ + switch (event.type) + { + case SDL_QUIT: + exit(1); + case SDL_VIDEORESIZE: + if (pdc_own_screen && + (event.resize.h / pdc_fheight != LINES || + event.resize.w / pdc_fwidth != COLS)) + { + pdc_sheight = event.resize.h; + pdc_swidth = event.resize.w; + + if (!SP->resized) + { + SP->resized = TRUE; + return KEY_RESIZE; + } + } + break; + case SDL_MOUSEMOTION: + SDL_ShowCursor(SDL_ENABLE); + case SDL_MOUSEBUTTONUP: + case SDL_MOUSEBUTTONDOWN: + oldkey = SDLK_SPACE; + if (SP->_trap_mbe) + return _process_mouse_event(); + break; + case SDL_KEYUP: + case SDL_KEYDOWN: + PDC_mouse_set(); + return _process_key_event(); + } + + return -1; +} + +/* discard any pending keyboard or mouse input -- this is the core + routine for flushinp() */ + +void PDC_flushinp(void) +{ + PDC_LOG(("PDC_flushinp() - called\n")); + + while (PDC_check_key()); +} + +bool PDC_has_mouse(void) +{ + return TRUE; +} + +int PDC_mouse_set(void) +{ + SDL_ShowCursor(SP->_trap_mbe ? SDL_ENABLE : SDL_DISABLE); + + return OK; +} + +int PDC_modifiers_set(void) +{ + return OK; +} diff --git a/3rd-party/PDCurses/sdl1/pdcscrn.c b/3rd-party/PDCurses/sdl1/pdcscrn.c new file mode 100644 index 0000000..3ab7b1e --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdcscrn.c @@ -0,0 +1,414 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +#include +#ifndef PDC_WIDE +#include "deffont.h" +#endif +#include "deficon.h" + +#ifdef PDC_WIDE +# ifndef PDC_FONT_PATH +# ifdef _WIN32 +#define PDC_FONT_PATH "C:/Windows/Fonts/lucon.ttf" +# elif defined(__APPLE__) +#define PDC_FONT_PATH "/Library/Fonts/Courier New.ttf" +# else +#define PDC_FONT_PATH "/usr/share/fonts/truetype/freefont/FreeMono.ttf" +# endif +# endif +TTF_Font *pdc_ttffont = NULL; +int pdc_font_size = 18; +#endif + +SDL_Surface *pdc_screen = NULL, *pdc_font = NULL, *pdc_icon = NULL, + *pdc_back = NULL, *pdc_tileback = NULL; +int pdc_sheight = 0, pdc_swidth = 0, pdc_yoffset = 0, pdc_xoffset = 0; + +SDL_Color pdc_color[256]; +Uint32 pdc_mapped[256]; +int pdc_fheight, pdc_fwidth, pdc_flastc; +bool pdc_own_screen; + +/* special purpose function keys */ +static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 0, 0, 0, 0 }; + +/* COLOR_PAIR to attribute encoding table. */ + +static struct {short f, b;} atrtab[PDC_COLOR_PAIRS]; + +static void _clean(void) +{ +#ifdef PDC_WIDE + if (pdc_ttffont) + { + TTF_CloseFont(pdc_ttffont); + TTF_Quit(); + } +#endif + SDL_FreeSurface(pdc_tileback); + SDL_FreeSurface(pdc_back); + SDL_FreeSurface(pdc_icon); + SDL_FreeSurface(pdc_font); + + SDL_Quit(); +} + +void PDC_retile(void) +{ + if (pdc_tileback) + SDL_FreeSurface(pdc_tileback); + + pdc_tileback = SDL_DisplayFormat(pdc_screen); + if (pdc_tileback == NULL) + return; + + if (pdc_back) + { + SDL_Rect dest; + + dest.y = 0; + + while (dest.y < pdc_tileback->h) + { + dest.x = 0; + + while (dest.x < pdc_tileback->w) + { + SDL_BlitSurface(pdc_back, 0, pdc_tileback, &dest); + dest.x += pdc_back->w; + } + + dest.y += pdc_back->h; + } + + SDL_BlitSurface(pdc_tileback, 0, pdc_screen, 0); + } +} + +void PDC_scr_close(void) +{ + PDC_LOG(("PDC_scr_close() - called\n")); +} + +void PDC_scr_free(void) +{ + if (SP) + free(SP); +} + +static int default_pdc_swidth = 80, default_pdc_sheight = 25; + +/* open the physical screen -- allocate SP, miscellaneous intialization */ + +int PDC_scr_open(int argc, char **argv) +{ + int i, r, g, b; + + PDC_LOG(("PDC_scr_open() - called\n")); + + SP = calloc(1, sizeof(SCREEN)); + + if (!SP) + return ERR; + + pdc_own_screen = !pdc_screen; + + if (pdc_own_screen) + { + if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) < 0) + { + fprintf(stderr, "Could not start SDL: %s\n", SDL_GetError()); + return ERR; + } + + atexit(_clean); + } + +#ifdef PDC_WIDE + if (!pdc_ttffont) + { + const char *ptsz, *fname; + + if (TTF_Init() == -1) + { + fprintf(stderr, "Could not start SDL_TTF: %s\n", SDL_GetError()); + return ERR; + } + + ptsz = getenv("PDC_FONT_SIZE"); + if (ptsz != NULL) + pdc_font_size = atoi(ptsz); + if (pdc_font_size <= 0) + pdc_font_size = 18; + + fname = getenv("PDC_FONT"); + pdc_ttffont = TTF_OpenFont(fname ? fname : PDC_FONT_PATH, + pdc_font_size); + } + + if (!pdc_ttffont) + { + fprintf(stderr, "Could not load font\n"); + return ERR; + } + + TTF_SetFontKerning(pdc_ttffont, 0); + TTF_SetFontHinting(pdc_ttffont, TTF_HINTING_MONO); + + SP->mono = FALSE; +#else + if (!pdc_font) + { + const char *fname = getenv("PDC_FONT"); + pdc_font = SDL_LoadBMP(fname ? fname : "pdcfont.bmp"); + } + + if (!pdc_font) + pdc_font = SDL_LoadBMP_RW(SDL_RWFromMem(deffont, sizeof(deffont)), 0); + + if (!pdc_font) + { + fprintf(stderr, "Could not load font\n"); + return ERR; + } + + SP->mono = !pdc_font->format->palette; +#endif + + if (!SP->mono && !pdc_back) + { + const char *bname = getenv("PDC_BACKGROUND"); + pdc_back = SDL_LoadBMP(bname ? bname : "pdcback.bmp"); + } + + if (!SP->mono && (pdc_back || !pdc_own_screen)) + { + SP->orig_attr = TRUE; + SP->orig_fore = COLOR_WHITE; + SP->orig_back = -1; + } + else + SP->orig_attr = FALSE; + +#ifdef PDC_WIDE + TTF_SizeText(pdc_ttffont, "W", &pdc_fwidth, &pdc_fheight); +#else + pdc_fheight = pdc_font->h / 8; + pdc_fwidth = pdc_font->w / 32; + + if (!SP->mono) + pdc_flastc = pdc_font->format->palette->ncolors - 1; +#endif + + if (pdc_own_screen && !pdc_icon) + { + const char *iname = getenv("PDC_ICON"); + pdc_icon = SDL_LoadBMP(iname ? iname : "pdcicon.bmp"); + + if (!pdc_icon) + pdc_icon = SDL_LoadBMP_RW(SDL_RWFromMem(deficon, + sizeof(deficon)), 0); + + if (pdc_icon) + SDL_WM_SetIcon(pdc_icon, NULL); + } + + if (pdc_own_screen) + { + const char *env = getenv("PDC_LINES"); + pdc_sheight = (env ? atoi(env) : default_pdc_sheight) * pdc_fheight; + + env = getenv("PDC_COLS"); + pdc_swidth = (env ? atoi(env) : default_pdc_swidth) * pdc_fwidth; + + pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0, + SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE); + } + else + { + if (!pdc_sheight) + pdc_sheight = pdc_screen->h - pdc_yoffset; + + if (!pdc_swidth) + pdc_swidth = pdc_screen->w - pdc_xoffset; + } + + if (!pdc_screen) + { + fprintf(stderr, "Couldn't create a surface: %s\n", SDL_GetError()); + return ERR; + } + + if (SP->orig_attr) + PDC_retile(); + + COLORS = 256; /* we have 256 colors in this flavor of PDCurses */ + for (i = 0; i < 8; i++) + { + pdc_color[i].r = (i & COLOR_RED) ? 0xc0 : 0; + pdc_color[i].g = (i & COLOR_GREEN) ? 0xc0 : 0; + pdc_color[i].b = (i & COLOR_BLUE) ? 0xc0 : 0; + + pdc_color[i + 8].r = (i & COLOR_RED) ? 0xff : 0x40; + pdc_color[i + 8].g = (i & COLOR_GREEN) ? 0xff : 0x40; + pdc_color[i + 8].b = (i & COLOR_BLUE) ? 0xff : 0x40; + } + + /* 256-color xterm extended palette: 216 colors in a + 6x6x6 color cube, plus 24 (not 50) shades of gray */ + i = 16; + for( r = 0; r < 6; r++) + for( g = 0; g < 6; g++) + for( b = 0; b < 6; b++, i++) + { + pdc_color[i].r = ( r ? r * 40 + 55 : 0); + pdc_color[i].g = ( g ? g * 40 + 55 : 0); + pdc_color[i].b = ( b ? b * 40 + 55 : 0); + } + for( i = 232; i < 256; i++) + pdc_color[i].r = pdc_color[i].g = pdc_color[i].b = (i - 232) * 10 + 8; + for (i = 0; i < 256; i++) + pdc_mapped[i] = SDL_MapRGB(pdc_screen->format, pdc_color[i].r, + pdc_color[i].g, pdc_color[i].b); + + SDL_EnableUNICODE(1); + + PDC_mouse_set(); + + if (pdc_own_screen) + PDC_set_title(argc ? argv[0] : "PDCurses"); + + SP->lines = PDC_get_rows(); + SP->cols = PDC_get_columns(); + + SP->mouse_wait = PDC_CLICK_PERIOD; + SP->audible = FALSE; + + PDC_reset_prog_mode(); + + return OK; +} + +/* the core of resize_term() */ + +int PDC_resize_screen(int nlines, int ncols) +{ + if( !stdscr) /* window hasn't been created yet; we're */ + { /* specifying its size before doing so */ + default_pdc_swidth = ncols; + default_pdc_sheight = nlines; + return OK; + } + + if (!pdc_own_screen) + return ERR; + + if (nlines && ncols) + { + pdc_sheight = nlines * pdc_fheight; + pdc_swidth = ncols * pdc_fwidth; + } + + SDL_FreeSurface(pdc_screen); + + pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0, + SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE); + + if (pdc_tileback) + PDC_retile(); + + SP->resized = FALSE; + SP->cursrow = SP->curscol = 0; + + return OK; +} + +void PDC_reset_prog_mode(void) +{ + PDC_LOG(("PDC_reset_prog_mode() - called.\n")); + + PDC_flushinp(); + SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); +} + +void PDC_reset_shell_mode(void) +{ + PDC_LOG(("PDC_reset_shell_mode() - called.\n")); + + SDL_EnableKeyRepeat(0, 0); + PDC_flushinp(); +} + +void PDC_restore_screen_mode(int i) +{ +} + +void PDC_save_screen_mode(int i) +{ +} + +void PDC_init_pair(short pair, short fg, short bg) +{ + atrtab[pair].f = fg; + atrtab[pair].b = bg; +} + +int PDC_pair_content(short pair, short *fg, short *bg) +{ + *fg = atrtab[pair].f; + *bg = atrtab[pair].b; + + return OK; +} + +bool PDC_can_change_color(void) +{ + return TRUE; +} + +int PDC_color_content(short color, short *red, short *green, short *blue) +{ + *red = DIVROUND(pdc_color[color].r * 1000, 255); + *green = DIVROUND(pdc_color[color].g * 1000, 255); + *blue = DIVROUND(pdc_color[color].b * 1000, 255); + + return OK; +} + +int PDC_init_color(short color, short red, short green, short blue) +{ + pdc_color[color].r = DIVROUND(red * 255, 1000); + pdc_color[color].g = DIVROUND(green * 255, 1000); + pdc_color[color].b = DIVROUND(blue * 255, 1000); + + pdc_mapped[color] = SDL_MapRGB(pdc_screen->format, pdc_color[color].r, + pdc_color[color].g, pdc_color[color].b); + + wrefresh(curscr); + + return OK; +} + +/* Does nothing in the SDL flavors of PDCurses. That may change, eventually, +allowing one to limit the range of user-resizable windows. See X11 or Win32a +versions of this function for details. */ + +void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines, + const int new_min_cols, const int new_max_cols) +{ +} + +/* PDC_set_function_key() does nothing on this platform */ +int PDC_set_function_key( const unsigned function, const int new_key) +{ + int old_key = -1; + + if( function < PDC_MAX_FUNCTION_KEYS) + { + old_key = PDC_shutdown_key[function]; + PDC_shutdown_key[function] = new_key; + } + return( old_key); +} diff --git a/3rd-party/PDCurses/sdl1/pdcsdl.h b/3rd-party/PDCurses/sdl1/pdcsdl.h new file mode 100644 index 0000000..c330a41 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdcsdl.h @@ -0,0 +1,31 @@ +/* Public Domain Curses */ + +#include + +#include +#ifdef PDC_WIDE +#include +#endif + +#ifdef PDC_WIDE +PDCEX TTF_Font *pdc_ttffont; +PDCEX int pdc_font_size; +#endif +PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back; +PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset; + +extern SDL_Surface *pdc_tileback; /* used to regenerate the background + of "transparent" cells */ +extern SDL_Color pdc_color[256]; /* colors for font palette */ +extern Uint32 pdc_mapped[256]; /* colors for FillRect(), as + used in _highlight() */ +extern int pdc_fheight, pdc_fwidth; /* font height and width */ +extern int pdc_flastc; /* font palette's last color + (treated as the foreground) */ +extern bool pdc_own_screen; /* if pdc_screen was not set + before initscr(), PDCurses is + responsible for (owns) it */ +extern Uint32 pdc_lastupdate; /* time of last update, in ticks */ + +void PDC_update_rects(void); +void PDC_retile(void); diff --git a/3rd-party/PDCurses/sdl1/pdcsetsc.c b/3rd-party/PDCurses/sdl1/pdcsetsc.c new file mode 100644 index 0000000..ac2de59 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdcsetsc.c @@ -0,0 +1,64 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +/*man-start************************************************************** + +pdcsetsc +-------- + +### Synopsis + + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + +### Description + + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + +### Portability + X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + +int PDC_curs_set(int visibility) +{ + int ret_vis; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + + SP->visibility = visibility; + + PDC_gotoyx(SP->cursrow, SP->curscol); + + return ret_vis; +} + +void PDC_set_title(const char *title) +{ + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); + + SDL_WM_SetCaption(title, title); +} + +int PDC_set_blink(bool blinkon) +{ +// if (pdc_color_started) /* We've got 256 colors in this version */ +// COLORS = 16; + + return blinkon ? ERR : OK; +} diff --git a/3rd-party/PDCurses/sdl1/pdcutil.c b/3rd-party/PDCurses/sdl1/pdcutil.c new file mode 100644 index 0000000..59a5f14 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/pdcutil.c @@ -0,0 +1,40 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +void PDC_beep(void) +{ + PDC_LOG(("PDC_beep() - called\n")); +} + +void PDC_napms(int ms) +{ + PDC_LOG(("PDC_napms() - called: ms=%d\n", ms)); + + PDC_update_rects(); + SDL_PumpEvents(); + SDL_Delay(ms); +} + +const char *PDC_sysname(void) +{ + return "SDL"; +} + +PDCEX PDC_version_info PDC_version = { PDC_PORT_SDL1, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), + /* note that thus far, 'wide' and 'UTF8' versions exist */ + /* only for SDL2, X11, Win32, and Win32a; elsewhere, */ + /* these will be FALSE */ +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; diff --git a/3rd-party/PDCurses/sdl1/sdltest.c b/3rd-party/PDCurses/sdl1/sdltest.c new file mode 100644 index 0000000..6b1e7b9 --- /dev/null +++ b/3rd-party/PDCurses/sdl1/sdltest.c @@ -0,0 +1,79 @@ +/* Here's a simple example of combining SDL and PDCurses functionality. + The top portion of the window is devoted to SDL, with a four-line + (assuming the default 8x16 font) stdscr at the bottom. +*/ + +#include +#include +#include +#include + +/* You could #include pdcsdl.h, or just add the relevant declarations + here: */ + +PDCEX SDL_Surface *pdc_screen; +PDCEX int pdc_yoffset; + +int main(int argc, char **argv) +{ + char inp[60]; + int i, j, seed; + + seed = time((time_t *)0); + srand(seed); + + /* Initialize SDL */ + + if (SDL_Init(SDL_INIT_VIDEO) < 0) + exit(1); + + atexit(SDL_Quit); + + pdc_screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE|SDL_ANYFORMAT); + + /* Initialize PDCurses */ + + pdc_yoffset = 416; /* 480 - 4 * 16 */ + + initscr(); + start_color(); + scrollok(stdscr, TRUE); + + PDC_set_title("PDCurses for SDL"); + + /* Do some SDL stuff */ + + for (i = 640, j = 416; j; i -= 2, j -= 2) + { + SDL_Rect dest; + + dest.x = (640 - i) / 2; + dest.y = (416 - j) / 2; + dest.w = i; + dest.h = j; + + SDL_FillRect(pdc_screen, &dest, + SDL_MapRGB(pdc_screen->format, rand() % 256, + rand() % 256, rand() % 256)); + } + + SDL_UpdateRect(pdc_screen, 0, 0, 640, 416); + + /* Do some curses stuff */ + + init_pair(1, COLOR_WHITE + 8, COLOR_BLUE); + bkgd(COLOR_PAIR(1)); + + addstr("This is a demo of "); + attron(A_UNDERLINE); + addstr("PDCurses for SDL"); + attroff(A_UNDERLINE); + addstr(".\nYour comments here: "); + getnstr(inp, 59); + addstr("Press any key to exit."); + + getch(); + endwin(); + + return 0; +} diff --git a/3rd-party/PDCurses/sdl2/CMakeLists.txt b/3rd-party/PDCurses/sdl2/CMakeLists.txt new file mode 100644 index 0000000..465e3f0 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/CMakeLists.txt @@ -0,0 +1,76 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "No build type specified, defaulting to MinSizeRel.") +endif() + +project(sdl2 VERSION "${PROJECT_VERSION}" LANGUAGES C) +message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}") + +message(STATUS "SDL2_LIBRARIES = ${SDL2_LIBRARIES}") +message(STATUS "SDL2_INCLUDE_DIR = ${SDL2_INCLUDE_DIR}") +message(STATUS "SDL2_LIBRARY_DIR = ${SDL2_LIBRARY_DIR}") +if(PDC_WIDE) + message(STATUS "SDL2_TTF_LIBRARY = ${SDL2_TTF_LIBRARY}") + message(STATUS "SDL2_TTF_INCLUDE_DIR = ${SDL2_TTF_INCLUDE_DIR}") + message(STATUS "SDL2_TTF_LIBRARY_DIR = ${SDL2_TTF_LIBRARY_DIR}") +endif() + +include_directories(${SDL2_INCLUDE_DIR} ${SDL2_TTF_INCLUDE_DIR}) +link_directories(${SDL2_LIBRARY_DIR} ${SDL2_TTF_LIBRARY_DIR}) + +include(project_common) + +macro (sdl2_app dir targ) + + set(bin_name "${PROJECT_NAME}_${targ}") + + if(${targ} STREQUAL "tuidemo") + set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tuidemo.c ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tui.c) + else() + set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${targ}.c) + endif() + + add_executable(${bin_name} ${src_files}) + + if(PDC_WIDE) + target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS} + "${SDL2_LIBRARIES};${SDL2_TTF_LIBRARY};${FT2_LIBRARY};${ZLIB_LIBRARY};${SDL2_DEP_LIBRARIES}") + else() + target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS} + "${SDL2_LIBRARIES};${SDL2_TTF_DEP_LIBRARIES};${SDL2_DEP_LIBRARIES}") + endif() + + add_dependencies(${bin_name} ${PDCURSE_PROJ}) + set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ}) + + install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications) + +endmacro () + +sdl2_app(../demos version) +sdl2_app(../demos firework) +sdl2_app(../demos ozdemo) +sdl2_app(../demos newtest) +sdl2_app(../demos ptest) +sdl2_app(../demos rain) +sdl2_app(../demos testcurs) +sdl2_app(../demos tuidemo) +sdl2_app(../demos worm) +sdl2_app(../demos xmas) +sdl2_app(./ sdltest) + +if(WIN32) + set_target_properties(${PROJECT_NAME}_newtest PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS") +endif(WIN32) + +if(PDC_SDL2_DEPS_BUILD) + if(PDC_WIDE) + add_dependencies(${PDCURSE_PROJ} sdl2_ext sdl2_ttf_ext) + else() + add_dependencies(${PDCURSE_PROJ} sdl2_ext) + endif() +endif() + +set(CPACK_COMPONENTS_ALL applications) diff --git a/3rd-party/PDCurses/sdl2/Makefile.vc b/3rd-party/PDCurses/sdl2/Makefile.vc new file mode 100644 index 0000000..0abb5a1 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/Makefile.vc @@ -0,0 +1,164 @@ +# Visual C++ & Intel(R) NMakefile for PDCurses library - Win32 VC++ 2.0+ +# +# Note: currently NOT working (at least not with VC 2015) +# +# Usage: nmake -f [path\]Makefile.vc [DEBUG=] [DLL=] [WIDE=] [UTF8=] +# [ICC=] [CHTYPE_32=] [IX86=] [CHTYPE_16=] [target] +# [SDL_INCLUDE_DIR=path\to\SDL\includes] [SDL_LIB_DIR=path\to\SDL\libs] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +# CHTYPE_## is used to override the default 64-bit chtypes in favor +# of "traditional" 32- or 16-bit chtypes. +# IX86 is used to build 32-bit code instead of 64-bit +# ICC is used to invoke Intel (R) tools icl.exe and xilink.exe, instead of +# MS tools cl.exe and link.exe + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +INCLUDES = + +!ifdef SDL_INCLUDE_DIR +INCLUDES = $(INCLUDES) -I $(SDL_INCLUDE_DIR) +!endif + +!ifndef SDL_LIB_DIR +SDL_LIB_DIR = . +!endif + + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\sdl2 + +PDCURSES_WIN_H = $(osdir)\pdcsdl.h + +!ifdef ICC +CC = icl.exe -nologo +LINK = xilink.exe -nologo +!else +CC = cl.exe -nologo +LINK = link.exe -nologo +!endif + +!ifdef DEBUG +CFLAGS = $(INCLUDES) -Dmain=SDL_main -Z7 -DPDCDEBUG -MT -D_CRT_SECURE_NO_WARNINGS +LDFLAGS = -debug -pdb:none +!else +CFLAGS = $(INCLUDES) -Dmain=SDL_main -Ox -MT -W3 -D_CRT_SECURE_NO_WARNINGS +LDFLAGS = +!endif + +LDFLAGS = $(LDFLAGS) /LIBPATH:$(SDL_LIB_DIR) SDL2.lib SDL2main.lib /ENTRY:SDL_main /SUBSYSTEM:Console + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +LDFLAGS = $(LDFLAGS) SDL2_ttf.lib +!endif + +!ifdef UTF8 +UTF8OPT = -DPDC_FORCE_UTF8 +!endif + +!ifdef CHTYPE_32 +CHTYPE_FLAGS= -DCHTYPE_32 +!endif + +!ifdef CHTYPE_16 +CHTYPE_FLAGS= -DCHTYPE_16 +!endif + +SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /OUT:pdcurses.dll + +CCLIBS = user32.lib gdi32.lib advapi32.lib shell32.lib comdlg32.lib +# may need to add msvcrt.lib for VC 2.x, VC 5.0 doesn't want it +#CCLIBS = msvcrt.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +!endif + +LIBEXE = lib -nologo + +LIBCURSES = pdcurses.lib +CURSESDLL = pdcurses.dll + +!ifdef DLL +DLLOPT = -DPDC_DLL_BUILD +PDCLIBS = $(CURSESDLL) +!else +PDCLIBS = $(LIBCURSES) +!endif + +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c $(CFLAGS) $(CHTYPE_FLAGS) $(DLLOPT) \ +$(WIDEOPT) $(UTF8OPT) + +all: $(PDCLIBS) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.dll + -del *.exp + -del *.res + +DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) +panel.obj : $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +!ifndef DLL +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib +!endif + +$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) pdcurses.obj + $(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(CCLIBS) + -copy $(LIBCURSES) panel.lib + +pdcurses.res pdcurses.obj: $(osdir)\pdcurses.rc $(osdir)\pdcurses.ico + rc /r /fopdcurses.res $(osdir)\pdcurses.rc +!ifdef IX86 + cvtres /MACHINE:IX86 /NOLOGO /OUT:pdcurses.obj pdcurses.res +!else + cvtres /MACHINE:X64 /NOLOGO /OUT:pdcurses.obj pdcurses.res +!endif + +{$(srcdir)\}.c{}.obj:: + $(BUILD) $< + +{$(osdir)\}.c{}.obj:: + $(BUILD) $< + +{$(demodir)\}.c{}.obj:: + $(BUILD) $< + +.obj.exe: + $(LINK) $< $(LDFLAGS) $(LIBCURSES) $(CCLIBS) + +tuidemo.exe: tuidemo.obj tui.obj + $(LINK) $*.obj tui.obj $(LDFLAGS) $(LIBCURSES) $(CCLIBS) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Visual C++ +PLATFORM2 = Microsoft Visual C/C++ for Win32 +ARCNAME = pdc$(VER)_vc_w32 + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/sdl2/README.md b/3rd-party/PDCurses/sdl2/README.md new file mode 100644 index 0000000..13a0390 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/README.md @@ -0,0 +1,34 @@ +PDCurses for SDL2 +================= + +This is a port of PDCurses for SDL2. + + +Building +-------- + +- Choose the appropriate makefile for your compiler: + + Makefile - General Makefile, tested with GCC + Makefile.vc - Microsoft Visual C++ 2.0+ or later & Intel(R) compiler + +- On *nix (including Linux and Mac OS X), run `make` in the sdl2 + directory. It builds the library libpdcurses.a (dynamic lib not implemented). + The makefile accepts the optional parameters `DEBUG=Y`, `WIDE=Y` and `UTF8=Y`. + It also recognizes the optional `PDCURSES_SRCDIR` environment variable. + + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + + +Acknowledgements +---------------- + +The original SDL port was provided by William McBrine. + +The initial SDL2 support patch was created by Laura Michaels. + +The SDL2 port was put together and further developed by Robin Gustafsson. diff --git a/3rd-party/PDCurses/sdl2/deffont.h b/3rd-party/PDCurses/sdl2/deffont.h new file mode 100644 index 0000000..cf9cab1 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/deffont.h @@ -0,0 +1,385 @@ +/* Default font -- this is simply a 256x128x1 BMP, in #include'able form. + The font is 8x16, code page 437, and is based on the pc8x16s.bdf font + from the vgafonts.tar.gz package, by "Myrlin". */ + +unsigned char deffont[] = +{ + 0x42, 0x4d, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x76, 0xf8, 0xc0, 0x6c, 0xfe, 0x70, 0x7c, 0x18, + 0x7e, 0x38, 0xee, 0x3c, 0x00, 0xc0, 0x1c, 0xc6, 0x00, 0x7e, 0x7e, + 0x7e, 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0xdc, 0xcc, 0xc0, 0x6c, 0xc6, 0xd8, 0x66, 0x18, 0x18, + 0x6c, 0x6c, 0x66, 0x00, 0x60, 0x30, 0xc6, 0xfe, 0x00, 0x00, 0x00, + 0x18, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x7e, + 0x00, 0xd8, 0xcc, 0xc0, 0x6c, 0x60, 0xd8, 0x66, 0x18, 0x3c, 0xc6, + 0x6c, 0x66, 0x7e, 0x7e, 0x60, 0xc6, 0x00, 0x00, 0x30, 0x0c, 0x18, + 0xd8, 0x18, 0xdc, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00, + 0xd8, 0xcc, 0xc0, 0x6c, 0x30, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c, + 0x66, 0xdb, 0xf3, 0x60, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x76, 0x00, 0x18, 0x00, 0x6c, 0x00, 0x00, 0x7e, 0x00, 0xd8, + 0xc8, 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xc6, 0x6c, 0x66, + 0xdb, 0xdb, 0x60, 0xc6, 0xfe, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x7e, + 0x00, 0x00, 0x18, 0x18, 0xec, 0x00, 0x00, 0x7e, 0x00, 0xdc, 0xdc, + 0xc0, 0x6c, 0x18, 0xd8, 0x66, 0x18, 0x66, 0xfe, 0xc6, 0x3e, 0xdb, + 0xdb, 0x7c, 0xc6, 0x00, 0x7e, 0x06, 0x60, 0x18, 0x18, 0x00, 0xdc, + 0x00, 0x00, 0x00, 0x0c, 0x36, 0x7e, 0x7e, 0x00, 0x76, 0xce, 0xc0, + 0xfe, 0x30, 0x7e, 0x66, 0xdc, 0x66, 0xc6, 0xc6, 0x0c, 0x7e, 0x7e, + 0x60, 0xc6, 0x00, 0x18, 0x0c, 0x30, 0x18, 0x18, 0x18, 0x76, 0x00, + 0x00, 0x00, 0x0c, 0x36, 0x32, 0x7e, 0x00, 0x00, 0xc6, 0xc6, 0x00, + 0x60, 0x00, 0x00, 0x76, 0x3c, 0xc6, 0xc6, 0x18, 0x00, 0x06, 0x60, + 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x1b, 0x18, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x0c, 0x36, 0x18, 0x7e, 0x00, 0x00, 0xce, 0xc6, 0x00, 0xc6, + 0x00, 0x00, 0x00, 0x18, 0x6c, 0x6c, 0x30, 0x00, 0x03, 0x30, 0x7c, + 0x00, 0x00, 0x30, 0x0c, 0x1b, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00, + 0x0c, 0x36, 0x0c, 0x00, 0x00, 0x00, 0x7c, 0xfe, 0x00, 0xfe, 0x00, + 0x00, 0x00, 0x7e, 0x38, 0x38, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x0c, + 0x36, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0f, 0x6c, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, + 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, + 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, + 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, + 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, + 0x36, 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, + 0x36, 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, + 0x36, 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, + 0x00, 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, + 0x18, 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, + 0x36, 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, + 0x00, 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18, + 0x00, 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, + 0x00, 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, + 0x18, 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, + 0x18, 0x18, 0x36, 0x00, 0x36, 0x00, 0x36, 0x36, 0x00, 0x36, 0x00, + 0x00, 0x18, 0x36, 0x00, 0x00, 0x18, 0x36, 0x36, 0x18, 0x00, 0x18, + 0xff, 0xff, 0xf0, 0x0f, 0x00, 0x1f, 0xff, 0xff, 0x1f, 0xff, 0xff, + 0x1f, 0x37, 0x3f, 0x37, 0xff, 0xf7, 0x37, 0xff, 0xf7, 0xff, 0xff, + 0xff, 0xff, 0x3f, 0x1f, 0x1f, 0x3f, 0xff, 0xff, 0xf8, 0x1f, 0xff, + 0xff, 0xf0, 0x0f, 0x00, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, + 0x36, 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, + 0x00, 0x36, 0x18, 0x18, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, + 0xf0, 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x1f, 0x36, + 0x37, 0x3f, 0xf7, 0xff, 0x37, 0xff, 0xf7, 0xff, 0x36, 0xff, 0x00, + 0x36, 0x1f, 0x1f, 0x00, 0x36, 0xff, 0x18, 0x00, 0xff, 0x00, 0xf0, + 0x0f, 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, + 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, + 0x18, 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, + 0xff, 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, + 0x00, 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, + 0x18, 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, + 0x00, 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, + 0x00, 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00, + 0x36, 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x18, 0x18, + 0x00, 0x18, 0x00, 0x18, 0x18, 0x36, 0x36, 0x00, 0x36, 0x00, 0x36, + 0x00, 0x36, 0x18, 0x36, 0x00, 0x00, 0x36, 0x18, 0x00, 0x00, 0x36, + 0x18, 0x18, 0x00, 0xff, 0x00, 0xf0, 0x0f, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, + 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, + 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x06, 0x00, 0x00, 0x00, + 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, + 0x36, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x11, + 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, + 0x00, 0x00, 0x00, 0x18, 0x76, 0x18, 0x7c, 0x78, 0x66, 0xc6, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x0c, 0x3f, 0x18, 0x00, 0x00, 0x44, 0xaa, + 0x77, 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, + 0x00, 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00, + 0xc6, 0xc0, 0x06, 0x86, 0x9a, 0x3c, 0x00, 0x00, 0x11, 0x55, 0xdd, + 0x18, 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, + 0x00, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xc6, 0x00, 0x00, 0xc6, + 0xc0, 0x06, 0xdc, 0xce, 0x3c, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18, + 0x18, 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, + 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0x66, 0xce, 0x00, 0x00, 0xc0, 0xc0, + 0x06, 0x60, 0x66, 0x3c, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18, + 0x18, 0x36, 0x36, 0x18, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x18, + 0x7c, 0x18, 0xc6, 0xcc, 0x66, 0xde, 0x7e, 0x7c, 0x60, 0xc0, 0x06, + 0x30, 0x30, 0x18, 0xd8, 0x36, 0x44, 0xaa, 0x77, 0x18, 0xf8, 0xf8, + 0xf6, 0xfe, 0xf8, 0xf6, 0x36, 0xf6, 0xfe, 0xfe, 0xf8, 0xf8, 0x0c, + 0x18, 0xc6, 0xcc, 0x66, 0xfe, 0x00, 0x00, 0x30, 0xfe, 0xfe, 0x18, + 0x18, 0x18, 0x6c, 0x6c, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, + 0x00, 0x18, 0x06, 0x36, 0x06, 0x06, 0x36, 0x18, 0x00, 0x78, 0x38, + 0x7c, 0xcc, 0x5c, 0xf6, 0x3e, 0x38, 0x30, 0x00, 0x00, 0x6c, 0x6c, + 0x18, 0x36, 0xd8, 0x44, 0xaa, 0x77, 0x18, 0x18, 0xf8, 0x36, 0x00, + 0xf8, 0xf6, 0x36, 0xfe, 0xf6, 0x36, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe6, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, + 0x36, 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x60, 0x30, 0x60, 0x60, + 0xdc, 0xc6, 0x6c, 0x6c, 0x30, 0x00, 0x00, 0x62, 0x62, 0x18, 0x00, + 0x00, 0x44, 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, + 0x36, 0x00, 0x36, 0x36, 0x18, 0x00, 0x30, 0x18, 0x30, 0x30, 0x76, + 0x00, 0x3c, 0x38, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x18, 0x00, 0x00, + 0x11, 0x55, 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, + 0x00, 0x36, 0x36, 0x18, 0x00, 0x18, 0x0c, 0x18, 0x18, 0x00, 0xdc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x44, + 0xaa, 0x77, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00, + 0x36, 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x55, + 0xdd, 0x18, 0x18, 0x18, 0x36, 0x00, 0x00, 0x36, 0x36, 0x00, 0x36, + 0x36, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x78, 0x7c, 0x76, 0x76, 0x76, 0x76, 0x7c, 0x7c, 0x7c, 0x7c, 0x18, + 0x18, 0x18, 0xc6, 0xc6, 0xfc, 0x6e, 0xce, 0x7c, 0x7c, 0x7c, 0x78, + 0x78, 0x76, 0x7c, 0x7c, 0x18, 0xfe, 0x18, 0xc6, 0x70, 0x3c, 0xcc, + 0xc2, 0xcc, 0xcc, 0xcc, 0xcc, 0xc6, 0xc2, 0xc2, 0xc2, 0x18, 0x18, + 0x18, 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, + 0xce, 0xc6, 0xc6, 0x18, 0x60, 0x7e, 0xcc, 0xd8, 0x66, 0xcc, 0xc0, + 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18, + 0xc6, 0xc6, 0xc0, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, + 0xc6, 0xc6, 0x7c, 0x60, 0x18, 0xcc, 0x18, 0xc6, 0xcc, 0xc0, 0xcc, + 0xcc, 0xcc, 0xcc, 0xc0, 0xc0, 0xc0, 0xc0, 0x18, 0x18, 0x18, 0xfe, + 0xc6, 0xc0, 0x7e, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, + 0xc6, 0xc6, 0x60, 0x7e, 0xcc, 0x18, 0xc0, 0xcc, 0xfe, 0x7c, 0x7c, + 0x7c, 0x7c, 0xc0, 0xfe, 0xfe, 0xfe, 0x18, 0x18, 0x18, 0xc6, 0xfe, + 0xf0, 0x36, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, + 0xc0, 0x60, 0x18, 0xde, 0x18, 0xc0, 0xcc, 0xc6, 0x0c, 0x0c, 0x0c, + 0x0c, 0xc6, 0xc6, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0xc6, 0xc6, 0xc0, + 0x36, 0xfe, 0xc6, 0xc6, 0xc6, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0, + 0xf8, 0x3c, 0xcc, 0x7e, 0xc0, 0xcc, 0x7c, 0x78, 0x78, 0x78, 0x78, + 0x7c, 0x7c, 0x7c, 0x7c, 0x38, 0x38, 0x38, 0x6c, 0x6c, 0xc0, 0xec, + 0xcc, 0x7c, 0x7c, 0x7c, 0xcc, 0xcc, 0xc6, 0xc6, 0xc6, 0xc0, 0x60, + 0x66, 0xc4, 0x18, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0xc0, 0x00, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x60, 0x66, + 0xf8, 0x18, 0x3c, 0xcc, 0x30, 0x6c, 0x00, 0x18, 0x38, 0x00, 0x6c, + 0x00, 0x18, 0x00, 0x66, 0x18, 0x10, 0x10, 0xfc, 0x00, 0x6c, 0x6c, + 0x00, 0x18, 0xcc, 0x18, 0x00, 0x7c, 0xc6, 0x7c, 0x62, 0x66, 0xcc, + 0x18, 0x00, 0xcc, 0x18, 0x38, 0xcc, 0x30, 0x6c, 0x00, 0x38, 0xc6, + 0x30, 0x66, 0x3c, 0x30, 0x00, 0x38, 0x00, 0x00, 0x3e, 0x38, 0xc6, + 0x30, 0x78, 0x30, 0xc6, 0x00, 0x00, 0x18, 0x3c, 0x66, 0xcc, 0x1b, + 0x00, 0x00, 0x0c, 0x10, 0x00, 0x60, 0x38, 0x00, 0x10, 0x00, 0x60, + 0x00, 0x18, 0x60, 0xc6, 0x6c, 0x30, 0x00, 0x00, 0x10, 0x00, 0x60, + 0x30, 0x60, 0x00, 0xc6, 0xc6, 0x18, 0x00, 0x00, 0xf8, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xf8, 0x78, 0x7c, 0x7c, + 0x30, 0x7c, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xc6, 0xcc, 0x78, 0xf8, + 0x7c, 0xc0, 0x7c, 0x30, 0x78, 0x10, 0x6c, 0xc6, 0x76, 0xfe, 0x0e, + 0x18, 0x70, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xc4, 0xcc, 0xc2, 0x30, + 0xcc, 0xcc, 0x18, 0x0c, 0xcc, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, + 0xc0, 0x86, 0x30, 0xcc, 0x6c, 0xfe, 0x6c, 0xce, 0xc0, 0x18, 0x18, + 0x18, 0x00, 0xfe, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc, + 0xcc, 0x18, 0x0c, 0xd8, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, + 0x06, 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x60, 0x18, 0x18, 0x18, + 0x00, 0xc6, 0x00, 0xcc, 0xcc, 0xc0, 0xcc, 0xc0, 0x30, 0xcc, 0xcc, + 0x18, 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xc0, 0x1c, + 0x30, 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x30, 0x18, 0x18, 0x18, 0x00, + 0xc6, 0x00, 0x7c, 0xcc, 0xc0, 0xcc, 0xfe, 0x30, 0xcc, 0xcc, 0x18, + 0x0c, 0xf0, 0x18, 0xd6, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x70, 0x30, + 0xcc, 0xc6, 0xd6, 0x38, 0xc6, 0x18, 0x18, 0x18, 0x18, 0x00, 0xc6, + 0x00, 0x0c, 0xcc, 0xc4, 0xcc, 0xc6, 0x78, 0xcc, 0xec, 0x18, 0x0c, + 0xd8, 0x18, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xec, 0xc2, 0x30, 0xcc, + 0xc6, 0xc6, 0x6c, 0xc6, 0x0c, 0x70, 0x18, 0x0e, 0x00, 0x6c, 0x00, + 0x78, 0xf8, 0x78, 0x7c, 0x7c, 0x30, 0x7c, 0xd8, 0x38, 0x0c, 0xcc, + 0x18, 0xec, 0xb8, 0x78, 0xf8, 0x7c, 0xb8, 0x7c, 0xfc, 0xcc, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfe, 0x18, 0x18, 0x18, 0x00, 0x38, 0x00, 0x00, + 0xc0, 0x00, 0x0c, 0x00, 0x32, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x10, 0x0c, 0x00, 0xc0, + 0x00, 0x0c, 0x00, 0x36, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0xc0, 0x00, + 0x0c, 0x00, 0x1c, 0x00, 0xc0, 0x18, 0x0c, 0xc0, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x18, 0x70, 0xdc, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0xc6, 0xfc, 0x3c, 0xf8, 0xfc, 0xc0, 0x3e, 0xc6, 0x18, 0x78, + 0xc2, 0xfc, 0xc6, 0xc6, 0x7c, 0xc0, 0x7c, 0xc6, 0x7c, 0x18, 0x7c, + 0x10, 0x6c, 0xc6, 0x18, 0xfe, 0x3c, 0x02, 0x3c, 0x00, 0x00, 0xc0, + 0xc6, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x66, 0xc6, 0x18, 0xcc, 0xc6, + 0xc0, 0xc6, 0xc6, 0xc6, 0xc0, 0xde, 0xc6, 0x86, 0x18, 0xc6, 0x38, + 0xee, 0xc6, 0x18, 0xc0, 0x30, 0x06, 0x0c, 0x00, 0x00, 0xdc, 0xc6, + 0xc6, 0xc2, 0xce, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xcc, 0xc0, + 0xc6, 0xc6, 0xc6, 0xc0, 0xd6, 0xcc, 0x06, 0x18, 0xc6, 0x6c, 0xfe, + 0x6c, 0x18, 0xc0, 0x30, 0x0e, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xc6, + 0xc0, 0xc6, 0xc0, 0xc0, 0xc6, 0xc6, 0x18, 0xcc, 0xd8, 0xc0, 0xc6, + 0xc6, 0xc6, 0xc0, 0xc6, 0xcc, 0x06, 0x18, 0xc6, 0xc6, 0xd6, 0x7c, + 0x18, 0x60, 0x30, 0x1c, 0x0c, 0x00, 0x00, 0xde, 0xfe, 0xc6, 0xc0, + 0xc6, 0xc0, 0xc0, 0xde, 0xc6, 0x18, 0x0c, 0xf0, 0xc0, 0xc6, 0xce, + 0xc6, 0xc0, 0xc6, 0xd8, 0x0c, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x18, + 0x30, 0x30, 0x38, 0x0c, 0x00, 0x00, 0xde, 0xc6, 0xfc, 0xc0, 0xc6, + 0xf8, 0xf8, 0xc0, 0xfe, 0x18, 0x0c, 0xf0, 0xc0, 0xd6, 0xde, 0xc6, + 0xfc, 0xc6, 0xfc, 0x38, 0x18, 0xc6, 0xc6, 0xd6, 0x38, 0x3c, 0x18, + 0x30, 0x70, 0x0c, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc0, 0xc6, 0xc0, + 0xc0, 0xc0, 0xc6, 0x18, 0x0c, 0xd8, 0xc0, 0xfe, 0xfe, 0xc6, 0xc6, + 0xc6, 0xc6, 0x60, 0x18, 0xc6, 0xc6, 0xc6, 0x7c, 0x66, 0x0c, 0x30, + 0xe0, 0x0c, 0x00, 0x00, 0xc6, 0x6c, 0xc6, 0xc2, 0xce, 0xc0, 0xc0, + 0xc0, 0xc6, 0x18, 0x0c, 0xcc, 0xc0, 0xfe, 0xf6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc0, 0x18, 0xc6, 0xc6, 0xc6, 0x6c, 0x66, 0x06, 0x30, 0xc0, + 0x0c, 0x00, 0x00, 0x7c, 0x38, 0xc6, 0x66, 0xdc, 0xc0, 0xc0, 0x62, + 0xc6, 0x18, 0x0c, 0xc6, 0xc0, 0xee, 0xe6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc2, 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0x06, 0x30, 0x80, 0x0c, + 0xc6, 0x00, 0x00, 0x10, 0xfc, 0x3c, 0xf8, 0xfc, 0xfc, 0x3c, 0xc6, + 0x18, 0x1e, 0xc2, 0xc0, 0xc6, 0xc6, 0x7c, 0xfc, 0x7c, 0xfc, 0x7c, + 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0x66, 0xfe, 0x3c, 0x00, 0x3c, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x7c, + 0x86, 0x76, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x18, 0x00, 0x18, 0x80, + 0x38, 0x18, 0xfe, 0x7c, 0x0c, 0x7c, 0x7c, 0x30, 0x7c, 0x78, 0x00, + 0x30, 0x06, 0x00, 0x60, 0x18, 0x00, 0x18, 0x00, 0x6c, 0xc6, 0xc6, + 0xcc, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00, 0x18, 0xc0, 0x6c, + 0x18, 0xc0, 0x86, 0x0c, 0x86, 0xc6, 0x30, 0xc6, 0x8c, 0x18, 0x18, + 0x0c, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0xfe, 0x86, 0x60, 0xcc, + 0x00, 0x30, 0x0c, 0x66, 0x18, 0x18, 0x00, 0x00, 0x60, 0xc6, 0x18, + 0xc0, 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x18, 0x18, 0x18, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x30, 0xcc, 0x00, + 0x30, 0x0c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x30, 0xe6, 0x18, 0x60, + 0x06, 0x0c, 0x06, 0xc6, 0x30, 0xc6, 0x06, 0x00, 0x00, 0x30, 0x7e, + 0x0c, 0x18, 0x00, 0x18, 0x00, 0x6c, 0x06, 0x18, 0xdc, 0x00, 0x30, + 0x0c, 0xff, 0x7e, 0x00, 0xfe, 0x00, 0x18, 0xf6, 0x18, 0x30, 0x06, + 0xfe, 0x06, 0xe6, 0x18, 0xc6, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x18, 0x00, 0x18, 0x00, 0x6c, 0x7c, 0x0c, 0x76, 0x00, 0x30, 0x0c, + 0x3c, 0x18, 0x00, 0x00, 0x00, 0x0c, 0xde, 0x18, 0x18, 0x3c, 0xcc, + 0xfc, 0xdc, 0x0c, 0x7c, 0x7e, 0x00, 0x00, 0x30, 0x00, 0x0c, 0x18, + 0x00, 0x3c, 0x00, 0xfe, 0xc0, 0xc6, 0x38, 0x00, 0x30, 0x0c, 0x66, + 0x18, 0x00, 0x00, 0x00, 0x06, 0xce, 0x18, 0x0c, 0x06, 0x6c, 0xc0, + 0xc0, 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x0c, 0x00, + 0x3c, 0x24, 0x6c, 0xc2, 0xc2, 0x6c, 0x60, 0x30, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0xc6, 0x78, 0x06, 0x06, 0x3c, 0xc0, 0xc0, + 0x06, 0xc6, 0xc6, 0x18, 0x18, 0x0c, 0x00, 0x30, 0xc6, 0x00, 0x3c, + 0x66, 0x6c, 0xc6, 0x00, 0x6c, 0x30, 0x18, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6c, 0x38, 0xc6, 0x86, 0x1c, 0xc0, 0x60, 0x06, + 0xc6, 0xc6, 0x00, 0x00, 0x06, 0x00, 0x60, 0xc6, 0x00, 0x18, 0x66, + 0x00, 0x7c, 0x00, 0x38, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x18, 0x7c, 0x7c, 0x0c, 0xfe, 0x3c, 0xfe, 0x7c, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x66, 0x00, + 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x7e, 0x10, 0x00, 0x3c, 0x3c, 0x00, 0xff, 0x00, + 0xff, 0x78, 0x18, 0xe0, 0xe6, 0x18, 0x80, 0x02, 0x00, 0x66, 0x1b, + 0xc6, 0xfe, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x81, 0xff, 0x38, 0x10, 0x18, 0x18, 0x00, 0xff, 0x3c, 0xc3, + 0xcc, 0x18, 0xf0, 0xe7, 0x18, 0xc0, 0x06, 0x18, 0x66, 0x1b, 0x0c, + 0xfe, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x10, 0x00, + 0x81, 0xff, 0x7c, 0x38, 0x18, 0x18, 0x18, 0xe7, 0x66, 0x99, 0xcc, + 0x7e, 0x70, 0x67, 0xdb, 0xe0, 0x0e, 0x3c, 0x00, 0x1b, 0x38, 0xfe, + 0x3c, 0x18, 0x7e, 0x18, 0x30, 0xfe, 0x28, 0xfe, 0x38, 0x00, 0x99, + 0xe7, 0xfe, 0x7c, 0xe7, 0x7e, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x18, + 0x30, 0x63, 0x3c, 0xf0, 0x1e, 0x7e, 0x66, 0x1b, 0x6c, 0xfe, 0x7e, + 0x18, 0x18, 0x0c, 0x60, 0xc0, 0x6c, 0x7c, 0x38, 0x00, 0xbd, 0xc3, + 0xfe, 0xfe, 0xe7, 0xff, 0x3c, 0xc3, 0x42, 0xbd, 0xcc, 0x3c, 0x30, + 0x63, 0xe7, 0xf8, 0x3e, 0x18, 0x66, 0x1b, 0xc6, 0x00, 0x18, 0x18, + 0x18, 0xfe, 0xfe, 0xc0, 0xfe, 0x7c, 0x7c, 0x00, 0x81, 0xff, 0xfe, + 0x7c, 0xe7, 0xff, 0x18, 0xe7, 0x66, 0x99, 0x78, 0x66, 0x30, 0x63, + 0x3c, 0xfe, 0xfe, 0x18, 0x66, 0x7b, 0xc6, 0x00, 0x18, 0x18, 0x18, + 0x0c, 0x60, 0xc0, 0x6c, 0x38, 0x7c, 0x00, 0x81, 0xff, 0xfe, 0x38, + 0x3c, 0x7e, 0x00, 0xff, 0x3c, 0xc3, 0x32, 0x66, 0x30, 0x63, 0xdb, + 0xf8, 0x3e, 0x18, 0x66, 0xdb, 0x6c, 0x00, 0x18, 0x18, 0x18, 0x18, + 0x30, 0x00, 0x28, 0x38, 0xfe, 0x00, 0xa5, 0xdb, 0x6c, 0x10, 0x3c, + 0x3c, 0x00, 0xff, 0x00, 0xff, 0x1a, 0x66, 0x3f, 0x7f, 0x18, 0xf0, + 0x1e, 0x7e, 0x66, 0xdb, 0x38, 0x00, 0x7e, 0x7e, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x10, 0xfe, 0x00, 0x81, 0xff, 0x00, 0x00, 0x18, 0x18, + 0x00, 0xff, 0x00, 0xff, 0x0e, 0x66, 0x33, 0x63, 0x18, 0xe0, 0x0e, + 0x3c, 0x66, 0xdb, 0x60, 0x00, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0xff, 0x1e, 0x3c, 0x3f, 0x7f, 0x00, 0xc0, 0x06, 0x18, + 0x66, 0x7f, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/3rd-party/PDCurses/sdl2/deficon.h b/3rd-party/PDCurses/sdl2/deficon.h new file mode 100644 index 0000000..7248ab5 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/deficon.h @@ -0,0 +1,23 @@ +/* The PDCurses logo as #include'able BMP (from ../x11/little_icon.xbm) */ + +unsigned char deficon[] = +{ + 0x42, 0x4d, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0x6f, 0x9c, + 0xe7, 0xb5, 0xaf, 0x6b, 0x5b, 0xbd, 0xaf, 0xeb, 0xfb, 0xbd, 0xaf, + 0x98, 0xe7, 0xbd, 0xaf, 0x7b, 0x5f, 0xb5, 0xa5, 0x6b, 0x5b, 0xcd, + 0xab, 0x9c, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xcf, 0x03, 0xff, 0xff, 0xce, 0x03, 0xff, 0xff, 0xcc, 0x73, + 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc, 0xf3, 0xff, 0xff, 0xcc, + 0x73, 0xff, 0xff, 0xc6, 0x33, 0xff, 0xff, 0xc3, 0x13, 0xff, 0xff, + 0xc1, 0x83, 0xff, 0xff, 0xc8, 0xc3, 0xff, 0xff, 0xcc, 0x63, 0xff, + 0xff, 0xce, 0x33, 0xff, 0xff, 0xcf, 0x33, 0xff, 0xff, 0xcf, 0x33, + 0xff, 0xff, 0xce, 0x33, 0xff, 0xff, 0xc0, 0x73, 0xff, 0xff, 0xc0, + 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff +}; diff --git a/3rd-party/PDCurses/sdl2/pdcclip.c b/3rd-party/PDCurses/sdl2/pdcclip.c new file mode 100644 index 0000000..5617167 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdcclip.c @@ -0,0 +1,93 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +#include +#include + +/*man-start************************************************************** + +clipboard +--------- + +### Synopsis + + int PDC_getclipboard(char **contents, long *length); + int PDC_setclipboard(const char *contents, long length); + int PDC_freeclipboard(char *contents); + int PDC_clearclipboard(void); + +### Description + + PDC_getclipboard() gets the textual contents of the system's + clipboard. This function returns the contents of the clipboard + in the contents argument. It is the responsibilitiy of the + caller to free the memory returned, via PDC_freeclipboard(). + The length of the clipboard contents is returned in the length + argument. + + PDC_setclipboard copies the supplied text into the system's + clipboard, emptying the clipboard prior to the copy. + + PDC_clearclipboard() clears the internal clipboard. + +### Return Values + + indicator of success/failure of call. + PDC_CLIP_SUCCESS the call was successful + PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for + the clipboard contents + PDC_CLIP_EMPTY the clipboard contains no text + PDC_CLIP_ACCESS_ERROR no clipboard support + +### Portability + X/Open BSD SYS V + PDC_getclipboard - - - + PDC_setclipboard - - - + PDC_freeclipboard - - - + PDC_clearclipboard - - - + +**man-end****************************************************************/ + +int PDC_getclipboard(char **contents, long *length) +{ + PDC_LOG(("PDC_getclipboard() - called\n")); + + if (SDL_HasClipboardText() == SDL_FALSE) + return PDC_CLIP_EMPTY; + *contents = SDL_GetClipboardText(); + *length = strlen(*contents); + + return PDC_CLIP_SUCCESS; +} + +int PDC_setclipboard(const char *contents, long length) +{ + PDC_LOG(("PDC_setclipboard() - called\n")); + + if (SDL_SetClipboardText(contents) != 0) + return PDC_CLIP_ACCESS_ERROR; + + return PDC_CLIP_SUCCESS; +} + +int PDC_freeclipboard(char *contents) +{ + PDC_LOG(("PDC_freeclipboard() - called\n")); + + SDL_free(contents); + + return PDC_CLIP_SUCCESS; +} + +int PDC_clearclipboard(void) +{ + PDC_LOG(("PDC_clearclipboard() - called\n")); + + if (SDL_HasClipboardText() == SDL_TRUE) + { + SDL_SetClipboardText(NULL); + } + + return PDC_CLIP_SUCCESS; +} diff --git a/3rd-party/PDCurses/sdl2/pdcdisp.c b/3rd-party/PDCurses/sdl2/pdcdisp.c new file mode 100644 index 0000000..b497f75 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdcdisp.c @@ -0,0 +1,534 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +#include +#include +#include + +#ifdef CHTYPE_LONG +# ifdef PDC_WIDE +# define USE_UNICODE_ACS_CHARS 1 +# else +# define USE_UNICODE_ACS_CHARS 0 +# endif +# include "acs_defs.h" +#endif + +/* see 'addch.c' for an explanation of how combining chars are handled. */ + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 && defined( PDC_WIDE) + #define USING_COMBINING_CHARACTER_SCHEME + #define MAX_UNICODE 0x10ffff + #define DUMMY_CHAR_NEXT_TO_FULLWIDTH (MAX_UNICODE + 1) + int PDC_expand_combined_characters( const cchar_t c, cchar_t *added); /* addch.c */ +#endif + +Uint32 pdc_lastupdate = 0; +int PDC_really_blinking = FALSE; +static bool PDC_blink_state = FALSE; + +#define MAXRECT 200 /* maximum number of rects to queue up before + an update is forced; the number was chosen + arbitrarily */ + +static SDL_Rect uprect[MAXRECT]; /* table of rects to update */ +static int rectcount = 0; /* index into uprect */ +static SDL_Color foreground_rgb, background_rgb; /* current foreground, background */ + +/* do the real updates on a delay */ + +void PDC_update_rects(void) +{ + if (rectcount) + { + /* if the maximum number of rects has been reached, we're + probably better off doing a full screen update */ + + if (rectcount == MAXRECT) + SDL_UpdateWindowSurface(pdc_window); + else + SDL_UpdateWindowSurfaceRects(pdc_window, uprect, rectcount); + + pdc_lastupdate = SDL_GetTicks(); + rectcount = 0; + } +} + + /* PDC_get_rgb_values(), extract_packed_rgb(), intensified_component(), */ + /* intensified_color(), and dimmed_color() each exist in x11/x11.c, */ + /* win32a/pdcdisp.c, and sdl2/pdcdisp.c in forms slightly modified for */ + /* each platform. But they all look pretty much alike. */ + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + /* PDCurses stores RGBs in fifteen bits, five bits each */ + /* for red, green, blue. A Pixel uses eight bits per */ + /* channel. Hence the following. */ +static SDL_Color extract_packed_rgb( const chtype color) +{ + SDL_Color rval; + + rval.r = (Uint8)( (color << 3) & 0xf8); + rval.g = (Uint8)( (color >> 2) & 0xf8); + rval.b = (Uint8)( (color >> 7) & 0xf8); + rval.a = (Uint8)255; + return rval; +} +#endif + + /* This function 'intensifies' a color by shifting it toward white. */ + /* It used to average the input color with white. Then it did a */ + /* weighted average: 2/3 of the input color, 1/3 white, for a */ + /* lower "intensification" level. */ + /* Then Mark Hessling suggested that the output level should */ + /* remap zero to 85 (= 255 / 3, so one-third intensity), and input */ + /* of 192 or greater should be remapped to 255 (full intensity). */ + /* Assuming we want a linear response between zero and 192, that */ + /* leads to output = 85 + input * (255-85)/192. */ + /* This should lead to proper handling of bold text in legacy */ + /* apps, where "bold" means "high intensity". */ + +static Uint8 intensified_component( Uint8 component) +{ + if( component >= 192) + component = 255; + else + component = 85 + component * (255 - 85) / 192; + return( component); +} + +static SDL_Color intensified_color( SDL_Color ival) +{ + SDL_Color oval; + + oval.r = intensified_component( ival.r); + oval.g = intensified_component( ival.g); + oval.b = intensified_component( ival.b); + return( oval); +} + + /* For use in adjusting colors for A_DIMmed characters. Just */ + /* knocks down the intensity of R, G, and B by 1/3. */ + +static SDL_Color dimmed_color( SDL_Color ival) +{ + ival.r -= ival.r / 3; + ival.g -= ival.g / 3; + ival.b -= ival.b / 3; + return( ival); +} + +void PDC_get_rgb_values( const chtype srcp, + SDL_Color *fore_rgb, SDL_Color *back_rgb) +{ + bool reverse_colors = ((srcp & A_REVERSE) ? TRUE : FALSE); + bool intensify_backgnd = FALSE; + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + if( srcp & A_RGB_COLOR) + { + /* Extract RGB from 30 bits of the color field */ + *back_rgb = extract_packed_rgb( srcp >> PDC_COLOR_SHIFT); + *fore_rgb = extract_packed_rgb( srcp >> (PDC_COLOR_SHIFT + 15)); + } + else +#endif + { + short foreground_index, background_index; + + PDC_pair_content( PAIR_NUMBER( srcp), &foreground_index, &background_index); + *fore_rgb = pdc_color[foreground_index]; + if( background_index >= 0) + *back_rgb = pdc_color[background_index]; + } + + if( srcp & A_BLINK) + { + if( !PDC_really_blinking) /* convert 'blinking' to 'bold' */ + intensify_backgnd = TRUE; + else if( PDC_blink_state) + reverse_colors = !reverse_colors; + } + if( reverse_colors) + { + const SDL_Color temp = *fore_rgb; + + *fore_rgb = *back_rgb; + *back_rgb = temp; + } + + if( srcp & A_BOLD) + *fore_rgb = intensified_color( *fore_rgb); + if( intensify_backgnd) + *back_rgb = intensified_color( *back_rgb); + if( srcp & A_DIM) + { + *fore_rgb = dimmed_color( *fore_rgb); + *back_rgb = dimmed_color( *back_rgb); + } +} + +#define same_colors( A, B) ((A).r==(B).r && (A).g==(B).g && (A).b==(B).b) + +/* set the font colors to match the chtype's attribute */ + +static void _set_attr(chtype ch) +{ + static chtype oldch = (chtype)(-1); /* current attribute */ + ch &= (A_COLOR|A_BOLD|A_BLINK|A_REVERSE | A_DIM | A_RGB_COLOR); + + if (oldch != ch) + { + SDL_Color fore_rgb, back_rgb; + + if (SP->mono) + return; + PDC_get_rgb_values( ch, &fore_rgb, &back_rgb); + + if( !same_colors( fore_rgb, foreground_rgb)) + { +#ifndef PDC_WIDE + SDL_SetPaletteColors(pdc_font->format->palette, + &fore_rgb, pdc_flastc, 1); +#endif + foreground_rgb = fore_rgb; + } + + if( !same_colors( back_rgb, background_rgb)) + { +#ifndef PDC_WIDE + SDL_SetPaletteColors(pdc_font->format->palette, + &back_rgb, 0, 1); +#endif + background_rgb = back_rgb; + } + + oldch = ch; + } +} + +#ifdef PDC_WIDE +static void set_font_style( const chtype ch) +{ + static int old_font_style = -1; + int font_style = ((ch & A_BOLD) ? TTF_STYLE_BOLD : 0); + + if( ch & A_ITALIC) + font_style |= TTF_STYLE_ITALIC; + if( font_style != old_font_style) + { + TTF_SetFontStyle( pdc_ttffont, font_style); + old_font_style = font_style; + } +} +#endif + +/* draw a cursor at (y, x) */ + +void PDC_gotoyx(int row, int col) +{ + SDL_Rect src, dest; + chtype ch; + int oldrow, oldcol; + const int cursor_style = + (SP->visibility >> (PDC_blink_state ? 8 : 0)) & 0xff; +#ifdef PDC_WIDE + Uint16 chstr[2] = {0, 0}; +#endif + + + PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n", + row, col, SP->cursrow, SP->curscol)); + + if (SP->mono) + return; + + oldrow = SP->cursrow; + oldcol = SP->curscol; + + /* clear the old cursor */ + + PDC_transform_line(oldrow, oldcol, 1, curscr->_y[oldrow] + oldcol); + + if (!cursor_style) + return; + + /* draw a new cursor by overprinting the existing character in + reverse, either the full cell (when cursor_style == 2) or the + lowest quarter of it (when cursor_style == 1) */ + + ch = curscr->_y[row][col] ^ A_REVERSE; + + _set_attr(ch); + +#ifdef CHTYPE_LONG + if (ch & A_ALTCHARSET && !(ch & 0xff80)) + ch = acs_map[ch & 0x7f]; +#endif + src.h = (cursor_style == 1) ? pdc_fheight >> 2 : pdc_fheight; + src.w = pdc_fwidth; + + dest.y = (row + 1) * pdc_fheight - src.h + pdc_yoffset; + dest.x = col * pdc_fwidth + pdc_xoffset; + +#ifdef PDC_WIDE + chstr[0] = ch & A_CHARTEXT; + set_font_style( ch); + + pdc_font = TTF_RenderUNICODE_Solid( pdc_ttffont, chstr, foreground_rgb); + if (pdc_font) + { + dest.h = src.h; + dest.w = src.w; + src.x = 0; + src.y = 0; + SDL_SetColorKey( pdc_font, SDL_FALSE, 0); + SDL_SetPaletteColors(pdc_font->format->palette, &background_rgb, 0, 1); + SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest); + SDL_FreeSurface(pdc_font); + pdc_font = NULL; + } +#else + + src.x = (ch & 0xff) % 32 * pdc_fwidth; + src.y = (ch & 0xff) / 32 * pdc_fheight + (pdc_fheight - src.h); + + SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest); +#endif + + if (oldrow != row || oldcol != col) + { + if (rectcount == MAXRECT) + PDC_update_rects(); + + uprect[rectcount++] = dest; + } +} + +/* handle the A_*LINE attributes */ + +static void _highlight( SDL_Rect *dest, chtype ch) +{ + SDL_Color col; + Uint32 pixel_value; + + if (SP->mono) + return; + + if (SP->line_color == -1) + col = foreground_rgb; + else + col = pdc_color[SP->line_color]; + pixel_value = SDL_MapRGB( pdc_screen->format, col.r, col.g, col.b); + if (ch & (A_UNDERLINE | A_OVERLINE | A_STRIKEOUT)) + { + dest->h = 1; + + if (ch & A_OVERLINE) + SDL_FillRect(pdc_screen, dest, pixel_value); + + if (ch & A_UNDERLINE) + { + dest->y += pdc_fheight - 1; + SDL_FillRect(pdc_screen, dest, pixel_value); + dest->y -= pdc_fheight - 1; + } + + if (ch & A_STRIKEOUT) + { + dest->y += pdc_fheight / 2; + SDL_FillRect(pdc_screen, dest, pixel_value); + dest->y -= pdc_fheight / 2; + } + + dest->h = pdc_fheight; + } + + if (ch & (A_LEFTLINE|A_RIGHTLINE)) + { + + dest->w = 1; + + if (ch & A_LEFTLINE) + SDL_FillRect(pdc_screen, dest, pixel_value); + + if (ch & A_RIGHTLINE) + { + dest->x += pdc_fwidth - 1; + SDL_FillRect(pdc_screen, dest, pixel_value); + dest->x -= pdc_fwidth - 1; + } + + dest->w = pdc_fwidth; + } +} + +/* update the given physical line to look like the corresponding line in + curscr */ + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + SDL_Rect src, dest, lastrect; + int j; +#ifdef PDC_WIDE + Uint16 chstr[2] = {0, 0}; +#endif + + PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno)); + + if (rectcount == MAXRECT) + PDC_update_rects(); + + src.h = pdc_fheight; + src.w = pdc_fwidth; + + dest.y = pdc_fheight * lineno + pdc_yoffset; + dest.x = pdc_fwidth * x + pdc_xoffset; + dest.h = pdc_fheight; + dest.w = pdc_fwidth * len; + + /* if the previous rect was just above this one, with the same width + and horizontal position, then merge the new one with it instead + of adding a new entry */ + + if (rectcount) + lastrect = uprect[rectcount - 1]; + + if (rectcount && lastrect.x == dest.x && lastrect.w == dest.w) + { + if (lastrect.y + lastrect.h == dest.y) + uprect[rectcount - 1].h = lastrect.h + pdc_fheight; + else + if (lastrect.y != dest.y) + uprect[rectcount++] = dest; + } + else + uprect[rectcount++] = dest; + + dest.w = pdc_fwidth; + +#ifdef PDC_WIDE + src.x = 0; + src.y = 0; +#endif + + for (j = 0; j < len; j++) + { + chtype ch = srcp[j]; +#ifdef PDC_WIDE + chtype ch1; +#endif + + _set_attr(ch); + +#ifdef CHTYPE_LONG + if (ch & A_ALTCHARSET && !(ch & 0xff80)) + ch = (ch & (A_ATTRIBUTES ^ A_ALTCHARSET)) | acs_map[ch & 0x7f]; +#endif + +#ifdef PDC_WIDE + ch1 = ch & A_CHARTEXT; +#ifdef USING_COMBINING_CHARACTER_SCHEME + /* We can't actually display combining characters in cmd.exe. So + show the 'base' character and throw away the modifying marks. */ + if( ch1 == DUMMY_CHAR_NEXT_TO_FULLWIDTH) + ch1 = ' '; + else if( ch1 > MAX_UNICODE) + { + cchar_t added; + int n_combined = 0; + + while( (ch1 = PDC_expand_combined_characters( ch1, + &added)) > MAX_UNICODE) + { + n_combined++; + } + } +#ifdef USE_FOR_SUPPLEMENTAL_MULTILINGUAL_PLANE + /* At present, SDL does not (I think) support SMP Unicode */ + /* (Unicode past 64K). If it ever does, we'll need the */ + /* following breakup of SMP into Unicode surrogates (q.v.) */ + if( ch1 > 0xffff) + { + ch1 -= 0x10000; + chstr[0] = (Uint16)( 0xdc00 | (ch1 & 0x3ff)); /* lower 10 bits */ + ch1 = (0xd800 | (ch1 >> 10)); /* upper 10 bits */ + } +#endif +#endif + chstr[0] = (Uint16)ch1; + set_font_style( ch); + pdc_font = TTF_RenderUNICODE_Solid(pdc_ttffont, chstr, + foreground_rgb); + + if (pdc_font) + { + SDL_SetColorKey( pdc_font, SDL_FALSE, 0); + SDL_SetPaletteColors(pdc_font->format->palette, + &background_rgb, 0, 1); + SDL_BlitSurface(pdc_font, &src, pdc_screen, &dest); + SDL_FreeSurface(pdc_font); + pdc_font = NULL; + } +#else + src.x = (ch & 0xff) % 32 * pdc_fwidth; + src.y = (ch & 0xff) / 32 * pdc_fheight; + + SDL_LowerBlit(pdc_font, &src, pdc_screen, &dest); +#endif + + if (ch & (A_UNDERLINE|A_LEFTLINE|A_RIGHTLINE|A_OVERLINE|A_STRIKEOUT)) + _highlight( &dest, ch); + + dest.x += pdc_fwidth; + } +} + + +/* If PDC_really_blinking is 'true', we need to redraw all text with +the A_BLINK attribute set every 500 milliseconds. (We also need to redraw +it when blinking is turned off.) If the line-drawing color changes, we +need to redraw all under/over/left/right-lined text, and strikeout text. +This function, therefore, redraws all text of a specified attribute. */ + +static void redraw_text_with_attribute( const chtype attribute) +{ + int i, j, k; + + for( i = 0; i < SP->lines; i++) + { + const chtype *srcp = curscr->_y[i]; + + for( j = 0; j < SP->cols; j++) + if( srcp[j] & attribute) + { + k = j + 1; + while( k < SP->cols && (srcp[k] & attribute)) + k++; + PDC_transform_line( i, j, k - j, srcp + j); + j = k; + } + } +} + +/* Twice a second, we blink the cursor, blink text if it's "really" +blinking (or draw it as 'standout' if it was previously blinking), and +if the line color has changed, we redraw all the lined text. */ + +void PDC_twice_a_second( void) +{ + static int previously_really_blinking; + static int prev_line_color = -1; + + PDC_blink_state = !PDC_blink_state; + PDC_gotoyx(SP->cursrow, SP->curscol); + if( PDC_really_blinking || previously_really_blinking) + redraw_text_with_attribute( A_BLINK); + previously_really_blinking = PDC_really_blinking; + if( prev_line_color != SP->line_color) + { + redraw_text_with_attribute( A_UNDERLINE | A_OVERLINE | A_STRIKEOUT + | A_LEFTLINE | A_RIGHTLINE); + prev_line_color = SP->line_color; + } +} diff --git a/3rd-party/PDCurses/sdl2/pdcgetsc.c b/3rd-party/PDCurses/sdl2/pdcgetsc.c new file mode 100644 index 0000000..79d25a4 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdcgetsc.c @@ -0,0 +1,30 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + + return 0; +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ + PDC_LOG(("PDC_get_rows() - called\n")); + + return pdc_sheight / pdc_fheight; +} + +/* return width of screen/viewport */ + +int PDC_get_columns(void) +{ + PDC_LOG(("PDC_get_columns() - called\n")); + + return pdc_swidth / pdc_fwidth; +} diff --git a/3rd-party/PDCurses/sdl2/pdckbd.c b/3rd-party/PDCurses/sdl2/pdckbd.c new file mode 100644 index 0000000..a58aa71 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdckbd.c @@ -0,0 +1,485 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" +#include +#include + +/*man-start************************************************************** + +pdckbd +------ + +### Synopsis + + unsigned long PDC_get_input_fd(void); + +### Description + + PDC_get_input_fd() returns the file descriptor that PDCurses + reads its input from. It can be used for select(). + +### Portability + X/Open BSD SYS V + PDC_get_input_fd - - - + +**man-end****************************************************************/ + +#include + +unsigned long pdc_key_modifiers = 0L; + +static SDL_Event event; +static SDL_Keycode oldkey; +static MOUSE_STATUS old_mouse_status; + +static struct +{ + SDL_Keycode keycode; + bool numkeypad; + unsigned short normal; + unsigned short shifted; + unsigned short control; + unsigned short alt; +} key_table[] = +{ +/* keycode keypad normal shifted control alt*/ + {SDLK_LEFT, FALSE, KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT}, + {SDLK_RIGHT, FALSE, KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT}, + {SDLK_UP, FALSE, KEY_UP, KEY_SUP, CTL_UP, ALT_UP}, + {SDLK_DOWN, FALSE, KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN}, + {SDLK_HOME, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME}, + {SDLK_END, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END}, + {SDLK_PAGEUP, FALSE, KEY_PPAGE, KEY_SPREVIOUS, CTL_PGUP, ALT_PGUP}, + {SDLK_PAGEDOWN, FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN}, + {SDLK_INSERT, FALSE, KEY_IC, KEY_SIC, CTL_INS, ALT_INS}, + {SDLK_DELETE, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL}, + {SDLK_F1, FALSE, KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37)}, + {SDLK_F2, FALSE, KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38)}, + {SDLK_F3, FALSE, KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39)}, + {SDLK_F4, FALSE, KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40)}, + {SDLK_F5, FALSE, KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41)}, + {SDLK_F6, FALSE, KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42)}, + {SDLK_F7, FALSE, KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43)}, + {SDLK_F8, FALSE, KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44)}, + {SDLK_F9, FALSE, KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45)}, + {SDLK_F10, FALSE, KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46)}, + {SDLK_F11, FALSE, KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47)}, + {SDLK_F12, FALSE, KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48)}, + {SDLK_F13, FALSE, KEY_F(13), KEY_F(25), KEY_F(37), KEY_F(49)}, + {SDLK_F14, FALSE, KEY_F(14), KEY_F(26), KEY_F(38), KEY_F(50)}, + {SDLK_F15, FALSE, KEY_F(15), KEY_F(27), KEY_F(39), KEY_F(51)}, + {SDLK_BACKSPACE, FALSE, 0x08, 0x08, CTL_BKSP, ALT_BKSP}, + {SDLK_TAB, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB}, + {SDLK_PRINTSCREEN, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT}, + {SDLK_PAUSE, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND}, + {SDLK_CLEAR, FALSE, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR}, + {SDLK_PAUSE, FALSE, KEY_BREAK, KEY_BREAK, KEY_BREAK, KEY_BREAK}, + {SDLK_HELP, FALSE, KEY_HELP, KEY_SHELP, KEY_LHELP, KEY_HELP}, + {SDLK_MENU, FALSE, KEY_OPTIONS, KEY_SOPTIONS, KEY_OPTIONS, KEY_OPTIONS}, + {SDLK_ESCAPE, FALSE, 0x1B, 0x1B, 0x1B, ALT_ESC}, + {SDLK_KP_ENTER, TRUE, PADENTER, PADENTER, CTL_PADENTER, ALT_PADENTER}, + {SDLK_KP_PLUS, TRUE, PADPLUS, '+', CTL_PADPLUS, ALT_PADPLUS}, + {SDLK_KP_MINUS, TRUE, PADMINUS, '-', CTL_PADMINUS, ALT_PADMINUS}, + {SDLK_KP_MULTIPLY, TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR}, + {SDLK_KP_DIVIDE, TRUE, PADSLASH, '/', CTL_PADSLASH, ALT_PADSLASH}, + {SDLK_KP_PERIOD, TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP}, + {SDLK_KP_0, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0}, + {SDLK_KP_1, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1}, + {SDLK_KP_2, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2}, + {SDLK_KP_3, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3}, + {SDLK_KP_4, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4}, + {SDLK_KP_5, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5}, + {SDLK_KP_6, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6}, + {SDLK_KP_7, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7}, + {SDLK_KP_8, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8}, + {SDLK_KP_9, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9}, + {0, 0, 0, 0, 0, 0} +}; + +unsigned long PDC_get_input_fd(void) +{ + PDC_LOG(("PDC_get_input_fd() - called\n")); + + return 0L; /* test this */ +} + +void PDC_set_keyboard_binary(bool on) +{ + PDC_LOG(("PDC_set_keyboard_binary() - called\n")); +} + +/* check if a key or mouse event is waiting */ + +bool PDC_check_key(void) +{ + Uint32 current = SDL_GetTicks(); + int haveevent = SDL_PollEvent(&event); + + /* if we have an event, or 30 ms have passed without a screen + update, or the timer has wrapped, update now */ + + if (haveevent || + current < pdc_lastupdate || ((current - pdc_lastupdate) > 30)) + PDC_update_rects(); + + return haveevent; +} + +#ifdef PDC_WIDE +static int _utf8_to_unicode(char *chstr) +{ + int i, bytes, unicode; + unsigned char byte = chstr[0]; + + if (byte > 0xf0) + { + bytes = 4; + unicode = byte & 0x7; + } + else if (byte > 0xe0) + { + bytes = 3; + unicode = byte & 0xf; + } + else if (byte > 0xc0) + { + bytes = 2; + unicode = byte & 0x1f; + } + else if (byte > 0x80) { + /* starts with a continuation byte; invalid character */ + return -1; + } + else + { + bytes = 1; + unicode = byte; + } + + for (i = 1; i < bytes; i++) + unicode = (unicode << 6) + (chstr[i] & 0x3f); + + return unicode; +} +#endif + +static int _process_key_event(void) +{ + int i, key = 0; + unsigned long old_modifiers = pdc_key_modifiers; + static int repeat_count; + + pdc_key_modifiers = 0L; + SP->key_code = FALSE; + + if( event.key.repeat && event.type == SDL_KEYDOWN) + repeat_count++; + else + repeat_count = 0; + if (event.type == SDL_KEYUP) + { + if (SP->return_key_modifiers && event.key.keysym.sym == oldkey) + { + switch (oldkey) + { + case SDLK_RSHIFT: + return KEY_SHIFT_R; + case SDLK_LSHIFT: + return KEY_SHIFT_L; + case SDLK_RCTRL: + return KEY_CONTROL_R; + case SDLK_LCTRL: + return KEY_CONTROL_L; + case SDLK_RALT: + return KEY_ALT_R; + case SDLK_LALT: + return KEY_ALT_L; + default: + break; + } + } + + return -1; + } + else if (event.type == SDL_TEXTINPUT) + { + pdc_key_modifiers = old_modifiers; +#ifdef PDC_WIDE + return _utf8_to_unicode(event.text.text); +#else + key = (unsigned char)event.text.text[0]; + return key > 0x7f ? -1 : key; +#endif + } + + oldkey = event.key.keysym.sym; + + if (SP->save_key_modifiers) + { + if (event.key.keysym.mod & KMOD_NUM) + pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK; + + if (event.key.keysym.mod & KMOD_SHIFT) + pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT; + + if (event.key.keysym.mod & KMOD_CTRL) + pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL; + + if (event.key.keysym.mod & KMOD_ALT) + pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT; + + if( repeat_count) + pdc_key_modifiers |= PDC_KEY_MODIFIER_REPEAT; + } + + for (i = 0; key_table[i].keycode; i++) + { + if (key_table[i].keycode == event.key.keysym.sym) + { + if ((event.key.keysym.mod & KMOD_SHIFT) || + (key_table[i].numkeypad && (event.key.keysym.mod & KMOD_NUM))) + { + key = key_table[i].shifted; + } + else if (event.key.keysym.mod & KMOD_CTRL) + { + key = key_table[i].control; + } + else if (event.key.keysym.mod & KMOD_ALT) + { + key = key_table[i].alt; + } + else + { + /* To get here, we ignore all other modifiers */ + key = key_table[i].normal; + } + + SP->key_code = (key > 0x100); + break; + } + } + + if (!key) + { + key = (int) event.key.keysym.sym; + if (key >= 'a' && key <= 'z') + if (event.key.keysym.mod & KMOD_SHIFT) + key = toupper(key); + + if (key > 0x7f) + key = 0; + } + + /* Handle ALT letters and numbers */ + + if (event.key.keysym.mod & KMOD_ALT) + { + if (key >= 'A' && key <= 'Z') + { + key += ALT_A - 'A'; + SP->key_code = TRUE; + } + + if (key >= 'a' && key <= 'z') + { + key += ALT_A - 'a'; + SP->key_code = TRUE; + } + + if (key >= '0' && key <= '9') + { + key += ALT_0 - '0'; + SP->key_code = TRUE; + } + } + + /* Textual input is handled by the SDL_TEXTINPUT event */ + if (' ' <= key && key <= '~') { + return -1; + } + + return key ? key : -1; +} + +static int _process_mouse_event(void) +{ + SDL_Keymod keymods; + short shift_flags = 0; + + memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS)); + + keymods = SDL_GetModState(); + + if (keymods & KMOD_SHIFT) + shift_flags |= BUTTON_SHIFT; + + if (keymods & KMOD_CTRL) + shift_flags |= BUTTON_CONTROL; + + if (keymods & KMOD_ALT) + shift_flags |= BUTTON_ALT; + + if (event.type == SDL_MOUSEMOTION) + { + int i; + + pdc_mouse_status.x = event.motion.x / pdc_fwidth; + pdc_mouse_status.y = event.motion.y / pdc_fheight; + + if (!event.motion.state || + (pdc_mouse_status.x == old_mouse_status.x && + pdc_mouse_status.y == old_mouse_status.y)) + return -1; + + pdc_mouse_status.changes = PDC_MOUSE_MOVED; + + for (i = 0; i < 3; i++) + { + if (event.motion.state & SDL_BUTTON(i + 1)) + { + pdc_mouse_status.button[i] = BUTTON_MOVED | shift_flags; + pdc_mouse_status.changes |= (1 << i); + } + } + } + else if (event.type == SDL_MOUSEWHEEL) + { + pdc_mouse_status.x = pdc_mouse_status.y = -1; + + if (event.wheel.y > 0) + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_UP; + else if (event.wheel.y < 0) + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_DOWN; + else if (event.wheel.x > 0) + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_RIGHT; + else if (event.wheel.x < 0) + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_LEFT; + else + return -1; + + return KEY_MOUSE; + } + else + { + short action = (event.button.state == SDL_PRESSED) ? + BUTTON_PRESSED : BUTTON_RELEASED; + Uint8 btn = event.button.button; + + if (btn < 1 || btn > 3) + return -1; + + /* check for a click -- a press followed immediately by a release */ + + if (action == BUTTON_PRESSED && SP->mouse_wait) + { + SDL_Event rel; + + napms(SP->mouse_wait); + + if (SDL_PollEvent(&rel)) + { + if (rel.type == SDL_MOUSEBUTTONUP && rel.button.button == btn) + action = BUTTON_CLICKED; + else + SDL_PushEvent(&rel); + } + } + + pdc_mouse_status.x = event.button.x / pdc_fwidth; + pdc_mouse_status.y = event.button.y / pdc_fheight; + + btn--; + + pdc_mouse_status.button[btn] = action | shift_flags; + pdc_mouse_status.changes = (1 << btn); + } + + old_mouse_status = pdc_mouse_status; + + SP->key_code = TRUE; + return KEY_MOUSE; +} + +void PDC_twice_a_second( void); /* pdcdisp.c */ + +/* return the next available key or mouse event */ + +int PDC_get_key(void) +{ + switch (event.type) + { + case SDL_QUIT: + exit(1); + case SDL_WINDOWEVENT: + switch (event.window.event) + { + case SDL_WINDOWEVENT_SIZE_CHANGED: + case SDL_WINDOWEVENT_RESIZED: + if (pdc_own_window && + (pdc_sheight != event.window.data2 + || pdc_swidth != event.window.data1)) + { + pdc_sheight = event.window.data2; + pdc_swidth = event.window.data1; + if (!SP->resized) + { + SP->resized = TRUE; + return KEY_RESIZE; + } + } + break; + case SDL_WINDOWEVENT_RESTORED: + case SDL_WINDOWEVENT_EXPOSED: + SDL_UpdateWindowSurface(pdc_window); + break; + } + break; + case SDL_MOUSEMOTION: + SDL_ShowCursor(SDL_ENABLE); + case SDL_MOUSEBUTTONUP: + case SDL_MOUSEBUTTONDOWN: + case SDL_MOUSEWHEEL: + oldkey = SDLK_SPACE; + if (SP->_trap_mbe) + return _process_mouse_event(); + break; + case SDL_KEYUP: + case SDL_KEYDOWN: + case SDL_TEXTINPUT: + PDC_mouse_set(); + return _process_key_event(); + case SDL_USEREVENT: /* timer event, every 500 millisec */ + PDC_twice_a_second( ); + break; + } + + return -1; +} + +/* discard any pending keyboard or mouse input -- this is the core + routine for flushinp() */ + +void PDC_flushinp(void) +{ + PDC_LOG(("PDC_flushinp() - called\n")); + + while (PDC_check_key()); +} + +bool PDC_has_mouse( void) +{ + return TRUE; +} + +int PDC_mouse_set(void) +{ + SDL_ShowCursor(SP->_trap_mbe ? SDL_ENABLE : SDL_DISABLE); + + return OK; +} + +int PDC_modifiers_set(void) +{ + return OK; +} diff --git a/3rd-party/PDCurses/sdl2/pdcscrn.c b/3rd-party/PDCurses/sdl2/pdcscrn.c new file mode 100644 index 0000000..675a628 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdcscrn.c @@ -0,0 +1,443 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +#include +#ifndef PDC_WIDE +# include "deffont.h" +#endif +#include "deficon.h" + +#ifdef PDC_WIDE +# ifndef PDC_FONT_PATH +# ifdef _WIN32 +# define PDC_FONT_PATH "C:/Windows/Fonts/lucon.ttf" +# elif defined(__APPLE__) +# define PDC_FONT_PATH "/Library/Fonts/Courier New.ttf" +# else +# define PDC_FONT_PATH "/usr/share/fonts/truetype/freefont/FreeMono.ttf" +# endif +# endif +TTF_Font *pdc_ttffont = NULL; +int pdc_font_size = 18; +#endif + +SDL_Window *pdc_window = NULL; +SDL_Surface *pdc_screen = NULL, *pdc_font = NULL, *pdc_icon = NULL, + *pdc_back = NULL, *pdc_tileback = NULL; +int pdc_sheight = 0, pdc_swidth = 0, pdc_yoffset = 0, pdc_xoffset = 0; + +SDL_Color pdc_color[256]; +Uint32 pdc_mapped[256]; +int pdc_fheight, pdc_fwidth, pdc_flastc; +bool pdc_own_window; + +/* special purpose function keys */ +static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 0, 0, 0, 0 }; + +/* COLOR_PAIR to attribute encoding table. */ + +static struct {short f, b;} atrtab[PDC_COLOR_PAIRS]; + +static void _clean(void) +{ +#ifdef PDC_WIDE + if (pdc_ttffont) + { + TTF_CloseFont(pdc_ttffont); + TTF_Quit(); + } +#endif + SDL_FreeSurface(pdc_tileback); + SDL_FreeSurface(pdc_back); + SDL_FreeSurface(pdc_icon); + SDL_FreeSurface(pdc_font); + SDL_DestroyWindow(pdc_window); + SDL_Quit(); +} + +void PDC_retile(void) +{ + if (pdc_tileback) + SDL_FreeSurface(pdc_tileback); + + pdc_tileback = SDL_ConvertSurface(pdc_screen, pdc_screen->format, 0); + if (pdc_tileback == NULL) + return; + + if (pdc_back) + { + SDL_Rect dest; + + dest.y = 0; + + while (dest.y < pdc_tileback->h) + { + dest.x = 0; + + while (dest.x < pdc_tileback->w) + { + SDL_BlitSurface(pdc_back, 0, pdc_tileback, &dest); + dest.x += pdc_back->w; + } + + dest.y += pdc_back->h; + } + + SDL_BlitSurface(pdc_tileback, 0, pdc_screen, 0); + } +} + +void PDC_scr_close(void) +{ + PDC_LOG(("PDC_scr_close() - called\n")); +} + +void PDC_scr_free(void) +{ + if (SP) + free(SP); +} + +/* This is called twice a second, in a separate thread, and 'pushes' an +event to the main thread. See https://wiki.libsdl.org/SDL_AddTimer for +more info. The result redraws cursor and blinking text every 500 ms. */ + +Uint32 timer_callback( Uint32 interval, void *param) +{ + SDL_Event event; + + event.type = SDL_USEREVENT; + SDL_PushEvent( &event); + return( interval); +} + +static int default_pdc_swidth = 80, default_pdc_sheight = 25; + +/* open the physical screen -- allocate SP, miscellaneous intialization */ + +int PDC_scr_open(int argc, char **argv) +{ + int i, r, g, b; + + PDC_LOG(("PDC_scr_open() - called\n")); + + SP = calloc(1, sizeof(SCREEN)); + + if (!SP) + return ERR; + + pdc_own_window = !pdc_window; + + if (pdc_own_window) + { + if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_EVENTS) < 0) + { + fprintf(stderr, "Could not start SDL: %s\n", SDL_GetError()); + return ERR; + } + SDL_AddTimer( 500, timer_callback, NULL); /* 500 millisec blink */ + + atexit(_clean); + } + +#ifdef PDC_WIDE + if (!pdc_ttffont) + { + const char *ptsz, *fname; + + if (TTF_Init() == -1) + { + fprintf(stderr, "Could not start SDL_TTF: %s\n", SDL_GetError()); + return ERR; + } + + ptsz = getenv("PDC_FONT_SIZE"); + if (ptsz != NULL) + pdc_font_size = atoi(ptsz); + if (pdc_font_size <= 0) + pdc_font_size = 18; + + fname = getenv("PDC_FONT"); + pdc_ttffont = TTF_OpenFont(fname ? fname : PDC_FONT_PATH, + pdc_font_size); + } + + if (!pdc_ttffont) + { + fprintf(stderr, "Could not load font\n"); + return ERR; + } + + TTF_SetFontKerning(pdc_ttffont, 0); + TTF_SetFontHinting(pdc_ttffont, TTF_HINTING_MONO); + + SP->mono = FALSE; +#else + if (!pdc_font) + { + const char *fname = getenv("PDC_FONT"); + pdc_font = SDL_LoadBMP(fname ? fname : "pdcfont.bmp"); + } + + if (!pdc_font) + pdc_font = SDL_LoadBMP_RW(SDL_RWFromMem(deffont, sizeof(deffont)), 0); + + if (!pdc_font) + { + fprintf(stderr, "Could not load font\n"); + return ERR; + } + + SP->mono = !pdc_font->format->palette; +#endif + + if (!SP->mono && !pdc_back) + { + const char *bname = getenv("PDC_BACKGROUND"); + pdc_back = SDL_LoadBMP(bname ? bname : "pdcback.bmp"); + } + + if (!SP->mono && (pdc_back || !pdc_own_window)) + { + SP->orig_attr = TRUE; + SP->orig_fore = COLOR_WHITE; + SP->orig_back = -1; + } + else + SP->orig_attr = FALSE; + +#ifdef PDC_WIDE + TTF_SizeText(pdc_ttffont, "W", &pdc_fwidth, &pdc_fheight); +#else + pdc_fheight = pdc_font->h / 8; + pdc_fwidth = pdc_font->w / 32; + + if (!SP->mono) + pdc_flastc = pdc_font->format->palette->ncolors - 1; +#endif + + if (pdc_own_window && !pdc_icon) + { + const char *iname = getenv("PDC_ICON"); + pdc_icon = SDL_LoadBMP(iname ? iname : "pdcicon.bmp"); + + if (!pdc_icon) + pdc_icon = SDL_LoadBMP_RW(SDL_RWFromMem(deficon, + sizeof(deficon)), 0); + } + + if (pdc_own_window) + { + const char *env = getenv("PDC_LINES"); + pdc_sheight = (env ? atoi(env) : default_pdc_sheight) * pdc_fheight; + + env = getenv("PDC_COLS"); + pdc_swidth = (env ? atoi(env) : default_pdc_swidth) * pdc_fwidth; + + pdc_window = SDL_CreateWindow((argc ? argv[0] : "PDCurses"), SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, pdc_swidth, pdc_sheight, + SDL_WINDOW_RESIZABLE); + if (pdc_window == NULL) + { + fprintf(stderr, "Could not open SDL window: %s\n", SDL_GetError()); + return ERR; + } + SDL_SetWindowIcon(pdc_window, pdc_icon); + + /* Events must be pumped before calling SDL_GetWindowSurface, or + initial modifiers (e.g. numlock) will be ignored and out-of-sync. */ + SDL_PumpEvents(); + + pdc_screen = SDL_GetWindowSurface(pdc_window); + if (pdc_screen == NULL) + { + fprintf(stderr, "Could not open SDL window surface: %s\n", SDL_GetError()); + return ERR; + } + } + else + { + if (!pdc_screen) + pdc_screen = SDL_GetWindowSurface(pdc_window); + + if (!pdc_sheight) + pdc_sheight = pdc_screen->h - pdc_yoffset; + + if (!pdc_swidth) + pdc_swidth = pdc_screen->w - pdc_xoffset; + } + + if (!pdc_screen) + { + fprintf(stderr, "Couldn't create a surface: %s\n", SDL_GetError()); + return ERR; + } + + if (SP->orig_attr) + PDC_retile(); + + COLORS = 256; /* we have 256 colors in this flavor of PDCurses */ + for (i = 0; i < 8; i++) + { + pdc_color[i].r = (i & COLOR_RED) ? 0xc0 : 0; + pdc_color[i].g = (i & COLOR_GREEN) ? 0xc0 : 0; + pdc_color[i].b = (i & COLOR_BLUE) ? 0xc0 : 0; + + pdc_color[i + 8].r = (i & COLOR_RED) ? 0xff : 0x40; + pdc_color[i + 8].g = (i & COLOR_GREEN) ? 0xff : 0x40; + pdc_color[i + 8].b = (i & COLOR_BLUE) ? 0xff : 0x40; + } + + /* 256-color xterm extended palette: 216 colors in a + 6x6x6 color cube, plus 24 (not 50) shades of gray */ + i = 16; + for( r = 0; r < 6; r++) + for( g = 0; g < 6; g++) + for( b = 0; b < 6; b++, i++) + { + pdc_color[i].r = ( r ? r * 40 + 55 : 0); + pdc_color[i].g = ( g ? g * 40 + 55 : 0); + pdc_color[i].b = ( b ? b * 40 + 55 : 0); + } + for( i = 232; i < 256; i++) + pdc_color[i].r = pdc_color[i].g = pdc_color[i].b = (i - 232) * 10 + 8; + for (i = 0; i < 256; i++) + pdc_mapped[i] = SDL_MapRGB(pdc_screen->format, pdc_color[i].r, + pdc_color[i].g, pdc_color[i].b); + + SDL_StartTextInput(); + + PDC_mouse_set(); + + if (pdc_own_window) + PDC_set_title(argc ? argv[0] : "PDCurses"); + + SP->lines = PDC_get_rows(); + SP->cols = PDC_get_columns(); + + SP->mouse_wait = PDC_CLICK_PERIOD; + SP->audible = FALSE; + + PDC_reset_prog_mode(); + + return OK; +} + +/* the core of resize_term() */ + +int PDC_resize_screen(int nlines, int ncols) +{ + if (!stdscr) /* window hasn't been created yet; we're */ + { /* specifying its size before doing so */ + default_pdc_swidth = ncols; + default_pdc_sheight = nlines; + return OK; + } + + if (!pdc_own_window) + return ERR; + + if (nlines && ncols) + { + pdc_sheight = nlines * pdc_fheight; + pdc_swidth = ncols * pdc_fwidth; + } + + SDL_SetWindowSize(pdc_window, pdc_swidth, pdc_sheight); + pdc_screen = SDL_GetWindowSurface(pdc_window); + + if (pdc_tileback) + PDC_retile(); + + SP->resized = FALSE; + SP->cursrow = SP->curscol = 0; + + return OK; +} + +void PDC_reset_prog_mode(void) +{ + PDC_LOG(("PDC_reset_prog_mode() - called.\n")); + + PDC_flushinp(); +} + +void PDC_reset_shell_mode(void) +{ + PDC_LOG(("PDC_reset_shell_mode() - called.\n")); + + PDC_flushinp(); +} + +void PDC_restore_screen_mode(int i) +{ +} + +void PDC_save_screen_mode(int i) +{ +} + +void PDC_init_pair(short pair, short fg, short bg) +{ + atrtab[pair].f = fg; + atrtab[pair].b = bg; +} + +int PDC_pair_content(short pair, short *fg, short *bg) +{ + *fg = atrtab[pair].f; + *bg = atrtab[pair].b; + + return OK; +} + +bool PDC_can_change_color(void) +{ + return TRUE; +} + +int PDC_color_content(short color, short *red, short *green, short *blue) +{ + *red = DIVROUND(pdc_color[color].r * 1000, 255); + *green = DIVROUND(pdc_color[color].g * 1000, 255); + *blue = DIVROUND(pdc_color[color].b * 1000, 255); + + return OK; +} + +int PDC_init_color(short color, short red, short green, short blue) +{ + pdc_color[color].r = DIVROUND(red * 255, 1000); + pdc_color[color].g = DIVROUND(green * 255, 1000); + pdc_color[color].b = DIVROUND(blue * 255, 1000); + + pdc_mapped[color] = SDL_MapRGB(pdc_screen->format, pdc_color[color].r, + pdc_color[color].g, pdc_color[color].b); + + wrefresh(curscr); + + return OK; +} + +/* Does nothing in the SDL flavors of PDCurses. That may change, eventually, +allowing one to limit the range of user-resizable windows. See X11 or Win32a +versions of this function for details. */ + +void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines, + const int new_min_cols, const int new_max_cols) +{ +} + +/* PDC_set_function_key() does nothing on this platform */ +int PDC_set_function_key( const unsigned function, const int new_key) +{ + int old_key = -1; + + if( function < PDC_MAX_FUNCTION_KEYS) + { + old_key = PDC_shutdown_key[function]; + PDC_shutdown_key[function] = new_key; + } + return( old_key); +} diff --git a/3rd-party/PDCurses/sdl2/pdcsdl.h b/3rd-party/PDCurses/sdl2/pdcsdl.h new file mode 100644 index 0000000..5631192 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdcsdl.h @@ -0,0 +1,33 @@ +/* Public Domain Curses */ + +#include + +#include +#ifdef PDC_WIDE +# include +#endif + +#ifdef PDC_WIDE +PDCEX TTF_Font *pdc_ttffont; +PDCEX int pdc_font_size; +#endif +PDCEX SDL_Window *pdc_window; +PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back; +PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset; + + +extern SDL_Surface *pdc_tileback; /* used to regenerate the background + of "transparent" cells */ +extern SDL_Color pdc_color[256]; /* colors for font palette */ +extern Uint32 pdc_mapped[256]; /* colors for FillRect(), as + used in _highlight() */ +extern int pdc_fheight, pdc_fwidth; /* font height and width */ +extern int pdc_flastc; /* font palette's last color + (treated as the foreground) */ +extern bool pdc_own_window; /* if pdc_window was not set + before initscr(), PDCurses is + responsible for (owns) it */ +extern Uint32 pdc_lastupdate; /* time of last update, in ticks */ + +void PDC_update_rects(void); +void PDC_retile(void); diff --git a/3rd-party/PDCurses/sdl2/pdcsetsc.c b/3rd-party/PDCurses/sdl2/pdcsetsc.c new file mode 100644 index 0000000..5f3f596 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdcsetsc.c @@ -0,0 +1,67 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +/*man-start************************************************************** + +pdcsetsc +-------- + +### Synopsis + + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + +### Description + + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + +### Portability + X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + +int PDC_curs_set(int visibility) +{ + int ret_vis; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + + SP->visibility = visibility; + + PDC_gotoyx(SP->cursrow, SP->curscol); + + return ret_vis; +} + +void PDC_set_title(const char *title) +{ + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); + + SDL_SetWindowTitle(pdc_window, title); +} + +/* See comments in win32a/pdcsetsc.c or x11/pdcsetsc.c. This does +essentially the same thing. */ + +int PDC_set_blink(bool blinkon) +{ + extern int PDC_really_blinking; + + PDC_really_blinking = blinkon; + return OK; +} diff --git a/3rd-party/PDCurses/sdl2/pdcutil.c b/3rd-party/PDCurses/sdl2/pdcutil.c new file mode 100644 index 0000000..1098476 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/pdcutil.c @@ -0,0 +1,39 @@ +/* Public Domain Curses */ + +#include "pdcsdl.h" + +void PDC_beep(void) +{ + PDC_LOG(("PDC_beep() - called\n")); +} + +void PDC_napms(int ms) +{ + PDC_LOG(("PDC_napms() - called: ms=%d\n", ms)); + + PDC_update_rects(); + SDL_Delay(ms); +} + +const char *PDC_sysname(void) +{ + return "SDL2"; +} + +PDC_version_info PDC_version = { PDC_PORT_SDL2, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), + /* note that thus far, 'wide' and 'UTF8' versions exist */ + /* only for SDL2, X11, Win32, and Win32a; elsewhere, */ + /* these will be FALSE */ +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; diff --git a/3rd-party/PDCurses/sdl2/sdltest.c b/3rd-party/PDCurses/sdl2/sdltest.c new file mode 100644 index 0000000..ebc9d90 --- /dev/null +++ b/3rd-party/PDCurses/sdl2/sdltest.c @@ -0,0 +1,81 @@ +/* Here's a simple example of combining SDL and PDCurses functionality. + The top portion of the window is devoted to SDL, with a four-line + (assuming the default 8x16 font) stdscr at the bottom. +*/ + +#include +#include +#include +#include + +/* You could #include pdcsdl.h, or just add the relevant declarations + here: */ + +PDCEX SDL_Window *pdc_window; +PDCEX SDL_Surface *pdc_screen; +PDCEX int pdc_yoffset; + +int main(int argc, char **argv) +{ + char inp[60]; + int i, j, seed; + + seed = time((time_t *)0); + srand(seed); + + /* Initialize SDL */ + + if (SDL_Init(SDL_INIT_VIDEO) < 0) + exit(1); + + atexit(SDL_Quit); + + pdc_window = SDL_CreateWindow("PDCurses for SDL", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0); + pdc_screen = SDL_GetWindowSurface(pdc_window); + + /* Initialize PDCurses */ + + pdc_yoffset = 416; /* 480 - 4 * 16 */ + + initscr(); + start_color(); + scrollok(stdscr, TRUE); + + PDC_set_title("PDCurses for SDL"); + + /* Do some SDL stuff */ + + for (i = 640, j = 416; j; i -= 2, j -= 2) + { + SDL_Rect dest; + + dest.x = (640 - i) / 2; + dest.y = (416 - j) / 2; + dest.w = i; + dest.h = j; + + SDL_FillRect(pdc_screen, &dest, + SDL_MapRGB(pdc_screen->format, rand() % 256, + rand() % 256, rand() % 256)); + } + + SDL_UpdateWindowSurface(pdc_window); + + /* Do some curses stuff */ + + init_pair(1, COLOR_WHITE + 8, COLOR_BLUE); + bkgd(COLOR_PAIR(1)); + + addstr("This is a demo of "); + attron(A_UNDERLINE); + addstr("PDCurses for SDL"); + attroff(A_UNDERLINE); + addstr(".\nYour comments here: "); + getnstr(inp, 59); + addstr("Press any key to exit."); + + getch(); + endwin(); + + return 0; +} diff --git a/3rd-party/PDCurses/term.h b/3rd-party/PDCurses/term.h new file mode 100644 index 0000000..0ba0b7a --- /dev/null +++ b/3rd-party/PDCurses/term.h @@ -0,0 +1,48 @@ +/* Public Domain Curses */ + +/* PDCurses doesn't operate with terminfo, but we need these functions for + compatibility, to allow some things (notably, interface libraries for + other languages) to be compiled. Anyone who tries to actually _use_ + them will be disappointed, since they only return ERR. */ + +#ifndef __PDCURSES_TERM_H__ +#define __PDCURSES_TERM_H__ 1 + +#include + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +extern "C" +{ +#endif + +typedef struct +{ + const char *_termname; +} TERMINAL; + +/* PDCEX is defined in curses.h */ +PDCEX TERMINAL *cur_term; + +int del_curterm(TERMINAL *); +int putp(const char *); +int restartterm(const char *, int, int *); +TERMINAL *set_curterm(TERMINAL *); +int setterm(const char *); +int setupterm(const char *, int, int *); +int tgetent(char *, const char *); +int tgetflag(const char *); +int tgetnum(const char *); +char *tgetstr(const char *, char **); +char *tgoto(const char *, int, int); +int tigetflag(const char *); +int tigetnum(const char *); +char *tigetstr(const char *); +char *tparm(const char *, long, long, long, long, long, + long, long, long, long); +int tputs(const char *, int, int (*)(int)); + +#if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) +} +#endif + +#endif /* __PDCURSES_TERM_H__ */ diff --git a/3rd-party/PDCurses/version.mif b/3rd-party/PDCurses/version.mif new file mode 100644 index 0000000..5fa8d56 --- /dev/null +++ b/3rd-party/PDCurses/version.mif @@ -0,0 +1,7 @@ +# Version number macros for inclusion from makefiles + +VER = 40 +VERDOT = 4.0 +ABI_MAJOR = 4 +ABI_MINOR = 0 +ABI = $(ABI_MAJOR).$(ABI_MINOR) diff --git a/3rd-party/PDCurses/vt/CMakeLists.txt b/3rd-party/PDCurses/vt/CMakeLists.txt new file mode 100644 index 0000000..8d896d1 --- /dev/null +++ b/3rd-party/PDCurses/vt/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "No build type specified, defaulting to MinSizeRel.") +endif() + +PROJECT(vt VERSION "${PROJECT_VERSION}" LANGUAGES C) + +INCLUDE(project_common) + + +demo_app(../demos firework) +demo_app(../demos ozdemo) +demo_app(../demos newtest) +demo_app(../demos ptest) +demo_app(../demos rain) +demo_app(../demos testcurs) +demo_app(../demos tuidemo) +demo_app(../demos worm) +demo_app(../demos xmas) + + +IF(WIN32) + SET_TARGET_PROPERTIES(${PROJECT_NAME}_newtest PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS") +ENDIF(WIN32) + +SET(CPACK_COMPONENTS_ALL applications) diff --git a/3rd-party/PDCurses/vt/Makefile.bcc b/3rd-party/PDCurses/vt/Makefile.bcc new file mode 100644 index 0000000..c3226fd --- /dev/null +++ b/3rd-party/PDCurses/vt/Makefile.bcc @@ -0,0 +1,111 @@ +# Borland MAKE Makefile for PDCurses library - Windows console BC++ 7.0+ +# +# Usage: make -f [path\]Makefile.bcc [DEBUG=] [WIDE=] [UTF8=] +# [INFOEX=N] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +O = obj +E = .exe +RM = del + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\vt + +!ifdef OLD_BCC +CC = bcc32 -q -DNO_STDINT_H +!else +CC = bcc32c -q -Xdriver -Wno-deprecated-declarations +!endif + +!ifdef DEBUG +CFLAGS = -N -v -y -DPDCDEBUG +!else +CFLAGS = -O -DCHTYPE_32 +!endif + +!ifdef CHTYPE_32 +CFLAGS = $(CFLAGS) -DCHTYPE_32 +!endif + +!ifdef CHTYPE_16 +CFLAGS = $(CFLAGS) -DCHTYPE_16 +!endif + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +!endif + +!ifdef UTF8 +UTF8OPT = -DPDC_FORCE_UTF8 +!endif + +!ifdef INFOEX +INFOPT = -DHAVE_NO_INFOEX +!endif + +!ifdef OLD_BCC +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c -Tpe $(CFLAGS) \ +-w32 -w-par \ +$(WIDEOPT) $(UTF8OPT) $(INFOPT) +!else +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c -Tpe $(CFLAGS) \ +$(WIDEOPT) $(UTF8OPT) +!endif + +LIBEXE = tlib /C /E /0 /a + +LIBCURSES = pdcurses.lib + +all: $(LIBCURSES) + +clean: + -$(RM) *.obj + -$(RM) *.lib + -$(RM) *.tds + -$(RM) *.exe + +demos: $(DEMOS) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + -$(RM) $@ + $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS) + +.autodepend + +{$(srcdir)\}.c.obj: + $(BUILD) $< + +{$(osdir)\}.c.obj: + $(BUILD) $< + +{$(demodir)\}.c.obj: + $(BUILD) $< + +.c.obj: + $(BUILD) $< + +.obj.exe: + $(CC) -e$@ $** $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES) + $(CC) -e$@ $** + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Borland C++ Wincon +PLATFORM2 = Borland C/C++ 7.2 for Windows console +ARCNAME = pdc$(VER)_bcc_vt + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/vt/Makefile.dmc b/3rd-party/PDCurses/vt/Makefile.dmc new file mode 100644 index 0000000..c7ab899 --- /dev/null +++ b/3rd-party/PDCurses/vt/Makefile.dmc @@ -0,0 +1,258 @@ +# Makefile for PDCurses library - DOS Digital Mars +# +# Usage: make -f Makefile.dmc [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +PDCURSES_SRCDIR = .. + +PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) + +PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h +TERM_HEADER = $(PDCURSES_SRCDIR)\term.h + +srcdir = $(PDCURSES_SRCDIR)\pdcurses +osdir = $(PDCURSES_SRCDIR)\vt +demodir = $(PDCURSES_SRCDIR)\demos + +PDCURSES_VT_H = $(osdir)\pdcvt.h + +CC = dmc + +CHTYPE = -DCHTYPE_32 + +CFLAGS = -c -o+space -Nc -mx -DDOS +# CFLAGS = -c -o+space -Nc -mld -DDOS + +CPPFLAGS = -I$(PDCURSES_SRCDIR) -msd $(CHTYPE) + +LINK = dmc +LIBEXE = lib + +LIBCURSES = pdcurses.lib + +BUILD = $(CC) $(CFLAGS) $(CPPFLAGS) + +DEMOS = testcurs.exe ozdemo.exe newtest.exe xmas.exe \ +tuidemo.exe firework.exe ptest.exe rain.exe worm.exe + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.map + -del advapi32.def + +LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \ +border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \ +getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \ +insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \ +outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \ +scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \ +touch.obj util.obj window.obj debug.obj + +PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \ +pdcsetsc.obj pdcutil.obj + +DEMOOBJS = testcurs.obj ozdemo.obj newtest.obj xmas.obj tuidemo.obj \ +tui.obj firework.obj ptest.obj rain.obj worm.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_VT_H) +panel.obj ptest.obj: $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -c $@ $(LIBOBJS) $(PDCOBJS) + +SRCBUILD = $(BUILD) $(srcdir)\$*.c +OSBUILD = $(BUILD) $(osdir)\$*.c +DEMOBUILD = $(LINK) $(CPPFLAGS) -o+space $@ $** + +addch.obj: $(srcdir)\addch.c + $(SRCBUILD) + +addchstr.obj: $(srcdir)\addchstr.c + $(SRCBUILD) + +addstr.obj: $(srcdir)\addstr.c + $(SRCBUILD) + +attr.obj: $(srcdir)\attr.c + $(SRCBUILD) + +beep.obj: $(srcdir)\beep.c + $(SRCBUILD) + +bkgd.obj: $(srcdir)\bkgd.c + $(SRCBUILD) + +border.obj: $(srcdir)\border.c + $(SRCBUILD) + +clear.obj: $(srcdir)\clear.c + $(SRCBUILD) + +color.obj: $(srcdir)\color.c + $(SRCBUILD) + +delch.obj: $(srcdir)\delch.c + $(SRCBUILD) + +deleteln.obj: $(srcdir)\deleteln.c + $(SRCBUILD) + +deprec.obj: $(srcdir)\deprec.c + $(SRCBUILD) + +getch.obj: $(srcdir)\getch.c + $(SRCBUILD) + +getstr.obj: $(srcdir)\getstr.c + $(SRCBUILD) + +getyx.obj: $(srcdir)\getyx.c + $(SRCBUILD) + +inch.obj: $(srcdir)\inch.c + $(SRCBUILD) + +inchstr.obj: $(srcdir)\inchstr.c + $(SRCBUILD) + +initscr.obj: $(srcdir)\initscr.c + $(SRCBUILD) + +inopts.obj: $(srcdir)\inopts.c + $(SRCBUILD) + +insch.obj: $(srcdir)\insch.c + $(SRCBUILD) + +insstr.obj: $(srcdir)\insstr.c + $(SRCBUILD) + +instr.obj: $(srcdir)\instr.c + $(SRCBUILD) + +kernel.obj: $(srcdir)\kernel.c + $(SRCBUILD) + +keyname.obj: $(srcdir)\keyname.c + $(SRCBUILD) + +mouse.obj: $(srcdir)\mouse.c + $(SRCBUILD) + +move.obj: $(srcdir)\move.c + $(SRCBUILD) + +outopts.obj: $(srcdir)\outopts.c + $(SRCBUILD) + +overlay.obj: $(srcdir)\overlay.c + $(SRCBUILD) + +pad.obj: $(srcdir)\pad.c + $(SRCBUILD) + +panel.obj: $(srcdir)\panel.c + $(SRCBUILD) + +printw.obj: $(srcdir)\printw.c + $(SRCBUILD) + +refresh.obj: $(srcdir)\refresh.c + $(SRCBUILD) + +scanw.obj: $(srcdir)\scanw.c + $(SRCBUILD) + +scr_dump.obj: $(srcdir)\scr_dump.c + $(SRCBUILD) + +scroll.obj: $(srcdir)\scroll.c + $(SRCBUILD) + +slk.obj: $(srcdir)\slk.c + $(SRCBUILD) + +termattr.obj: $(srcdir)\termattr.c + $(SRCBUILD) + +terminfo.obj: $(srcdir)\terminfo.c + $(SRCBUILD) + +touch.obj: $(srcdir)\touch.c + $(SRCBUILD) + +util.obj: $(srcdir)\util.c + $(SRCBUILD) + +window.obj: $(srcdir)\window.c + $(SRCBUILD) + +debug.obj: $(srcdir)\debug.c + $(SRCBUILD) + +pdcclip.obj: $(osdir)\pdcclip.c + $(OSBUILD) + +pdcdisp.obj: $(osdir)\pdcdisp.c + $(OSBUILD) + +pdcgetsc.obj: $(osdir)\pdcgetsc.c + $(OSBUILD) + +pdckbd.obj: $(osdir)\pdckbd.c + $(OSBUILD) + +pdcscrn.obj: $(osdir)\pdcscrn.c + $(OSBUILD) + +pdcsetsc.obj: $(osdir)\pdcsetsc.c + $(OSBUILD) + +pdcutil.obj: $(osdir)\pdcutil.c + $(OSBUILD) + +firework.exe: $(demodir)\firework.c + $(DEMOBUILD) + +ozdemo.exe: $(demodir)\ozdemo.c + $(DEMOBUILD) + +newtest.exe: $(demodir)\newtest.c + $(DEMOBUILD) + +ptest.exe: $(demodir)\ptest.c + $(DEMOBUILD) + +rain.exe: $(demodir)\rain.c + $(DEMOBUILD) + +testcurs.exe: $(demodir)\testcurs.c + $(DEMOBUILD) advapi32.lib + +tuidemo.exe: tuidemo.obj tui.obj + $(DEMOBUILD) + +worm.exe: $(demodir)\worm.c + $(DEMOBUILD) + +xmas.exe: $(demodir)\xmas.c + $(DEMOBUILD) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\$*.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\$*.c diff --git a/3rd-party/PDCurses/vt/Makefile.vc b/3rd-party/PDCurses/vt/Makefile.vc new file mode 100644 index 0000000..aeedb2c --- /dev/null +++ b/3rd-party/PDCurses/vt/Makefile.vc @@ -0,0 +1,144 @@ +# Visual C++ & Intel(R) NMakefile for PDCurses library - Windows VT-like VC++ 2.0+ +# +# Usage: nmake -f [path\]Makefile.vc [DEBUG=] [DLL=] [WIDE=] [UTF8=] +# [ICC=] [CHTYPE_32=] [IX86=] [CHTYPE_16=] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] +# CHTYPE_## is used to override the default 64-bit chtypes in favor +# of "traditional" 32- or 16-bit chtypes. (Untested for VT) +# IX86 is used to build 32-bit code instead of 64-bit +# ICC is used to invoke Intel (R) tools icl.exe and xilink.exe, instead of +# MS tools cl.exe and link.exe + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!ifdef IX86 +PLATFORM=IX86 +!else +PLATFORM=X64 +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\vt + +PDCURSES_WIN_H = $(osdir)\pdcvt.h + +!ifdef ICC +CC = icl.exe -nologo +LINK = xilink.exe -nologo +!else +CC = cl.exe -nologo +LINK = link.exe -nologo +!endif + +!ifdef DEBUG +CFLAGS = -Z7 -DPDCDEBUG +LDFLAGS = -debug -pdb:none +!else +CFLAGS = -O1 +LDFLAGS = +!endif + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +!endif + +!ifdef UTF8 +UTF8OPT = -DPDC_FORCE_UTF8 +!endif + +!ifdef CHTYPE_32 +CHTYPE_FLAGS= -DCHTYPE_32 +!endif + +!ifdef CHTYPE_16 +CHTYPE_FLAGS= -DCHTYPE_16 +!endif + +SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /MACHINE:$(PLATFORM) /OUT:pdcurses.dll + +CCLIBS = user32.lib advapi32.lib +# may need to add msvcrt.lib for VC 2.x, VC 5.0 doesn't want it +#CCLIBS = msvcrt.lib user32.lib advapi32.lib + +LIBEXE = lib -nologo + +LIBCURSES = pdcurses.lib +CURSESDLL = pdcurses.dll + +!ifdef DLL +DLLOPT = -DPDC_DLL_BUILD +PDCLIBS = $(CURSESDLL) +!else +PDCLIBS = $(LIBCURSES) +!endif + +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c $(CFLAGS) $(CHTYPE_FLAGS) $(DLLOPT) \ +$(WIDEOPT) $(UTF8OPT) + +all: $(PDCLIBS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.dll + -del *.exp + -del *.res + +demos: $(DEMOS) + +DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) +panel.obj : $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +!ifndef DLL +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS) +!endif + +$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) pdcurses.obj + $(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(CCLIBS) + +pdcurses.res pdcurses.obj: $(osdir)\pdcurses.rc $(osdir)\pdcurses.ico + rc /r /fopdcurses.res $(osdir)\pdcurses.rc + cvtres /MACHINE:$(PLATFORM) /NOLOGO /OUT:pdcurses.obj pdcurses.res + +{$(srcdir)\}.c{}.obj:: + $(BUILD) $< + +{$(osdir)\}.c{}.obj:: + $(BUILD) $< + +{$(demodir)\}.c{}.obj:: + $(BUILD) $< + +.obj.exe: + $(LINK) $(LDFLAGS) $< $(LIBCURSES) $(CCLIBS) + +tuidemo.exe: tuidemo.obj tui.obj + $(LINK) $(LDFLAGS) $*.obj tui.obj $(LIBCURSES) $(CCLIBS) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Visual C++ +PLATFORM2 = Microsoft Visual C/C++ for Windows VT +ARCNAME = pdc$(VER)_vc_vt + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/vt/Makefile.wcc b/3rd-party/PDCurses/vt/Makefile.wcc new file mode 100644 index 0000000..7385f7a --- /dev/null +++ b/3rd-party/PDCurses/vt/Makefile.wcc @@ -0,0 +1,107 @@ +# Watcom WMAKE Makefile for PDCurses library - DOS (16 bit) or DOS/4GW Watcom C/C++ 10.6+ +# +# Usage: wmake -f [path/]Makefile.wcc [DEBUG=Y] [MODEL=c|h|l|m|s|f] +# [CROSS=Y|N] [CHTYPE=[-DCHTYPE_16|-DCHTYPE_32]] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] +# +# and MODEL specifies the memory model (16-bit compact/huge/large/medium/ +# small, or 32-bit flat) +# +# and CROSS=Y (CROSS=N) means to assume we are (are not) cross-compiling +# (default is to auto-detect) +# +# and CHTYPE is an optional compiler flag to set the size of chtype (default +# is 64 bits) + +# Change the memory MODEL here, if desired +!ifndef MODEL +MODEL = l +!endif + +!ifdef %PDCURSES_SRCDIR +PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR) +!else +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)/version.mif + +!ifndef CROSS +!ifeq %SHELL /bin/bash +# assume we are cross-compiling +CROSS = Y +!endif +!ifeq %SHELL /bin/sh +CROSS = Y +!endif +!ifeq %SHELL /bin/csh +CROSS = Y +!endif +!ifeq %SHELL /bin/dash +CROSS = Y +!endif +!endif + +osdir = $(PDCURSES_SRCDIR)/vt +# Open Watcom README strongly recommends setting WATCOM environment variable... +!ifeq CROSS Y +!ifdef %WATCOM +watcomdir = $(%WATCOM) +!else +watcomdir = "`which wcc | xargs realpath | xargs dirname`"/.. +!endif +!endif + +!ifneq MODEL f +CC = wcc +TARGET = dos +!else +CC = wcc386 +TARGET = dos4g +!endif + +CFLAGS = -bt=$(TARGET) -zq -wx -m$(MODEL) -i=$(PDCURSES_SRCDIR) +CFLAGS += $(CHTYPE) -DDOS +# the README also recommends setting INCLUDE; if absent, we need an extra -i= +!ifndef %INCLUDE +CFLAGS += -i=$(watcomdir)/h +!endif + +!ifeq DEBUG Y +CFLAGS += -d2 -DPDCDEBUG +LDFLAGS = D W A op q sys $(TARGET) +!else +CFLAGS += -oneatx +LDFLAGS = op q sys $(TARGET) +!ifeq CROSS Y +!ifneq MODEL f +LDFLAGS += libp $(watcomdir)/lib286/dos\;$(watcomdir)/lib286 +!else +LDFLAGS += libp $(watcomdir)/lib386/dos\;$(watcomdir)/lib386 +!endif +!endif +!endif + +LIBEXE = wlib -q -n -t + +!include $(PDCURSES_SRCDIR)/watcom.mif + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + %write wccvt.lrf $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $@ @wccvt.lrf + -$(DEL) wccvt.lrf + -$(COPY) $(LIBCURSES) panel.lib + +!ifneq MODEL f +PLATFORM1 = Watcom C++ 16-bit DOS/VT +PLATFORM2 = Open Watcom 1.6 for 16-bit DOS/VT +ARCNAME = pdc$(VER)16w +!else +PLATFORM1 = Watcom C++ 32-bit DOS/VT +PLATFORM2 = Open Watcom 1.6 for 32-bit DOS/VT +ARCNAME = pdc$(VER)32w +!endif + +!include $(PDCURSES_SRCDIR)/makedist.mif diff --git a/3rd-party/PDCurses/vt/README.md b/3rd-party/PDCurses/vt/README.md new file mode 100644 index 0000000..4a2922d --- /dev/null +++ b/3rd-party/PDCurses/vt/README.md @@ -0,0 +1,72 @@ +PDCurses for VT +================ + +This directory contains source code to support PDCurses using a mix of +xterm, VT-100, VT-200, and ANSI escape sequences to set colors, position +the cursor, etc. Note that the name is misleading; it uses an olio of +control sequences from + +https://www.gnu.org/software/screen/manual/html_node/Control-Sequences.html + +which may, or may not, work on your terminal. I've tested it in urxvt, +xterm, and QTerminal on Linux and FreeBSD, and in `cmd` on Win10 and (with +NANSI.COM or NANSI.SYS) on Windows ME. MS-DOS (again with NANSI) and +Linux console modes 'sort of' work (no mouse and the colors need work). + +It assumes that 256 colors are available (16 in NANSI mode), but it can use +full RGB on terminals that support it. + +Building +-------- + +In GNU/Linux, run `make` or `make WIDE=Y`. You can add `-w64` or `-w32` +to cross-compile 64-bit or 32-bit Windows executables, using MinGW64. + +In *BSD, use `gmake` or `gmake WIDE=Y`. Cross-compiling to Windows +should be possible there as well. + +For DOS/Windows, makefiles for Borland, Digital Mars, MSVC, and +OpenWATCOM are provided, but are at the 'it works on my machine' stage, +and haven't really been thoroughly vetted by others yet. + +Caveats +------- + +As currently set up, this is a bare-bones implementation. It relies on a +terminal that supports at least 256 colors. RGB colors get remapped to the +6x6x6 color cube. If the `COLORTERM` environment variable is set to +`truecolor`, you'll get true color. If not, you can tell PDCurses you +really do have true color by setting + +`PDC_VT=RGB` + +`export PDC_VT` + +Note that you can explain to PDCurses more capabilities of the terminal, e.g., + +`PDC_VT=RGB UNDERLINE BLINK DIM STANDOUT` + +to say that the underlying terminal supports true-color, underlined, +blinking, dimmed, and 'standout' text. (The Right Thing to Do here +would be to dig around in the terminfo database, as ncurses does, both +to know the control sequences to use and the actual capabilities of +the terminal.) + +Arrow keys and some function keys are recognized (see the `tbl` array +in `pdckey.c`). Some mouse input is recognized. Shift, Ctrl, and Alt +function keys and arrows are (mostly) not correctly identified; I've +not figured out how those keys are supposed to be detected yet. Or if +they can be. None of the 'extended' keys found on some keyboards, such +as Browser Back/Forward, Search, Refresh, Stop, etc., are detected, +on any platform. + +Clipboard functions are currently completely absent on this platform. I +expect to be able to add clipboard functions for Windows by recycling +code from the Windows GUI and console flavors, and have clipboard +access code for X11 that is not yet included here. + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + diff --git a/3rd-party/PDCurses/vt/pdcclip.c b/3rd-party/PDCurses/vt/pdcclip.c new file mode 100644 index 0000000..afbea7f --- /dev/null +++ b/3rd-party/PDCurses/vt/pdcclip.c @@ -0,0 +1,20 @@ +int PDC_clearclipboard( void) +{ + return( 0); +} + +int PDC_freeclipboard( char *contents) +{ + return( 0); +} + +int PDC_getclipboard( char **contents, long *length) +{ + return( 0); +} + +int PDC_setclipboard( const char *contents, long length) +{ + return( 0); +} + diff --git a/3rd-party/PDCurses/vt/pdcdisp.c b/3rd-party/PDCurses/vt/pdcdisp.c new file mode 100644 index 0000000..ec38252 --- /dev/null +++ b/3rd-party/PDCurses/vt/pdcdisp.c @@ -0,0 +1,284 @@ +#define USE_UNICODE_ACS_CHARS 1 + +#include +#include + +#define USE_UNICODE_ACS_CHARS 1 + +#include "curses.h" +#include "pdcvt.h" +#include "acs_defs.h" + +void PDC_gotoyx(int y, int x) +{ + printf( "\033[%d;%dH", y + 1, x + 1); +} + +#define STANDOUT_ON "\033[3m" +#define STANDOUT_OFF "\033[23m" +#define UNDERLINE_ON "\033[4m" +#define UNDERLINE_OFF "\033[24m" +#define BLINK_ON "\033[5m" +#define BLINK_OFF "\033[25m" +#define BOLD_ON "\033[1m" +#define BOLD_OFF "\033[22m" +#define DIM_ON "\033[2m" +#define DIM_OFF "\033[22m" +#define STDOUT 0 + +const chtype MAX_UNICODE = 0x110000; + +/* see 'addch.c' for an explanation of how combining chars are handled. */ + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 && defined( PDC_WIDE) + #define USING_COMBINING_CHARACTER_SCHEME + int PDC_expand_combined_characters( const cchar_t c, cchar_t *added); /* addch.c */ +#endif + + +extern int PDC_really_blinking; +extern chtype PDC_capabilities; + + /* This function 'intensifies' a color by shifting it toward white. */ + /* It used to average the input color with white. Then it did a */ + /* weighted average: 2/3 of the input color, 1/3 white, for a */ + /* lower "intensification" level. */ + /* Then Mark Hessling suggested that the output level should */ + /* remap zero to 85 (= 255 / 3, so one-third intensity), and input */ + /* of 192 or greater should be remapped to 255 (full intensity). */ + /* Assuming we want a linear response between zero and 192, that */ + /* leads to output = 85 + input * (255-85)/192. */ + /* This should lead to proper handling of bold text in legacy */ + /* apps, where "bold" means "high intensity". */ + +static PACKED_RGB intensified_color( PACKED_RGB ival) +{ + int rgb, i; + PACKED_RGB oval = 0; + + for( i = 0; i < 3; i++, ival >>= 8) + { + rgb = (int)( ival & 0xff); + if( rgb >= 192) + rgb = 255; + else + rgb = 85 + rgb * (255 - 85) / 192; + oval |= ((PACKED_RGB)rgb << (i * 8)); + } + return( oval); +} + + /* For use in adjusting colors for A_DIMmed characters. Just */ + /* knocks down the intensity of R, G, and B by 1/3. */ + +static PACKED_RGB dimmed_color( PACKED_RGB ival) +{ + unsigned i; + PACKED_RGB oval = 0; + + for( i = 0; i < 3; i++, ival >>= 8) + { + unsigned rgb = (unsigned)( ival & 0xff); + + rgb -= (rgb / 3); + oval |= ((PACKED_RGB)rgb << (i * 8)); + } + return( oval); +} + + + /* PDC_get_rgb_values(), extract_packed_rgb(), intensified_component(), */ + /* intensified_color(), and dimmed_color() each exist in x11/x11.c, */ + /* win32a/pdcdisp.c, and sdl2/pdcdisp.c in forms slightly modified for */ + /* each platform. But they all look pretty much alike. */ + + /* PDCurses stores RGBs in fifteen bits, five bits each */ + /* for red, green, blue. A PACKED_RGB uses eight bits per */ + /* channel. Hence the following. */ +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 +static PACKED_RGB extract_packed_rgb( const chtype color) +{ + const int red = (int)( (color << 3) & 0xf8); + const int green = (int)( (color >> 2) & 0xf8); + const int blue = (int)( (color >> 7) & 0xf8); + + return( PACK_RGB( red, green, blue)); +} +#endif + +void PDC_get_rgb_values( const chtype srcp, + PACKED_RGB *foreground_rgb, PACKED_RGB *background_rgb) +{ + const int color = (int)(( srcp & A_COLOR) >> PDC_COLOR_SHIFT); + bool reverse_colors = ((srcp & A_REVERSE) ? TRUE : FALSE); + bool intensify_backgnd = FALSE; + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + if( srcp & A_RGB_COLOR) + { + /* Extract RGB from 30 bits of the color field */ + *background_rgb = extract_packed_rgb( srcp >> PDC_COLOR_SHIFT); + *foreground_rgb = extract_packed_rgb( srcp >> (PDC_COLOR_SHIFT + 15)); + } + else +#endif + { + extern PACKED_RGB *pdc_rgbs; + short foreground_index, background_index; + + PDC_pair_content( (short)color, &foreground_index, &background_index); + *foreground_rgb = pdc_rgbs[foreground_index]; + *background_rgb = pdc_rgbs[background_index]; + } + + if( srcp & A_BLINK) + { + extern int PDC_really_blinking; /* see 'pdcsetsc.c' */ + + if( !PDC_really_blinking) /* convert 'blinking' to 'bold' */ + intensify_backgnd = TRUE; + } + if( reverse_colors) + { + const PACKED_RGB temp = *foreground_rgb; + + *foreground_rgb = *background_rgb; + *background_rgb = temp; + } + + if( srcp & A_BOLD) + *foreground_rgb = intensified_color( *foreground_rgb); + if( intensify_backgnd) + *background_rgb = intensified_color( *background_rgb); + if( srcp & A_DIM) + *foreground_rgb = dimmed_color( *foreground_rgb); + if( srcp & A_DIM) + *background_rgb = dimmed_color( *background_rgb); +} + +static char *color_string( char *otext, const PACKED_RGB rgb) +{ + if( PDC_capabilities & A_RGB_COLOR) + sprintf( otext, "2;%d;%d;%dm", Get_RValue( rgb), + Get_GValue( rgb), Get_BValue( rgb)); + else + { + const int red = Get_RValue( rgb); + const int green = Get_GValue( rgb); + const int blue = Get_BValue( rgb); + int idx; + + if( red == green && red == blue) /* gray scale: indices from */ + { + if( red < 27) /* this would underflow; remap to black */ + idx = COLOR_BLACK; + else if( red >= 243) /* this would overflow */ + idx = COLOR_WHITE; + else + idx = (red - 3) / 10 + 232; /* 232 to 255 */ + } + else + idx = ((blue - 35) / 40) + ((green - 35) / 40) * 6 + + ((red - 35) / 40) * 36 + 16; + + sprintf( otext, "5;%dm", idx); + } + return( otext); +} + +static int get_sixteen_color_idx( const PACKED_RGB rgb) +{ + int rval = 0; + + if( rgb & 0x800000) /* red value >= 128 */ + rval = 1; + if( rgb & 0x8000) /* green value >= 128 */ + rval |= 2; + if( rgb & 0x80) /* blue value >= 128 */ + rval |= 4; + return( rval); +} + +static void reset_color( const chtype ch) +{ + static PACKED_RGB prev_bg = (PACKED_RGB)-1; + static PACKED_RGB prev_fg = (PACKED_RGB)-1; + PACKED_RGB bg, fg; + char txt[20]; + + PDC_get_rgb_values( ch, &fg, &bg); + if( bg != prev_bg) + { + if( COLORS == 16) + printf( "\033[4%dm", get_sixteen_color_idx( bg)); + else + printf( "\033[48;%s", color_string( txt, bg)); + prev_bg = bg; + } + if( fg != prev_fg) + { + if( COLORS == 16) + printf( "\033[3%dm", get_sixteen_color_idx( fg)); + else + printf( "\033[38;%s", color_string( txt, fg)); + prev_fg = fg; + } +} + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + static chtype prev_ch = 0; + + assert( x >= 0); + assert( len <= SP->cols - x); + assert( lineno >= 0); + assert( lineno < SP->lines); + assert( len > 0); + PDC_gotoyx( lineno, x); + while( len--) + { + int ch = (int)( *srcp & A_CHARTEXT); + chtype changes = *srcp ^ prev_ch; + + if( (*srcp & A_ALTCHARSET) && ch < 0x80) + ch = acs_map[ch & 0x7f]; + if( ch < (int)' ' || (ch >= 0x80 && ch <= 0x9f)) + ch = ' '; + if( changes & A_BOLD) + printf( (*srcp & A_BOLD) ? BOLD_ON : BOLD_OFF); + if( changes & A_UNDERLINE) + printf( (*srcp & A_UNDERLINE) ? UNDERLINE_ON : UNDERLINE_OFF); + if( changes & A_STANDOUT) + printf( (*srcp & A_STANDOUT) ? STANDOUT_ON : STANDOUT_OFF); + if( PDC_really_blinking && ( changes & A_BLINK)) + printf( (*srcp & A_BLINK) ? BLINK_ON : BLINK_OFF); + if( changes & (A_COLOR | A_STANDOUT | A_BLINK)) + reset_color( *srcp); +#ifdef PDC_WIDE + if( ch < 128) + printf( "%c", (char)ch); + else if( ch < (int)MAX_UNICODE) + printf( "%lc", (wchar_t)ch); +#else + printf( "%c", (char)ch); +#endif +#ifdef USING_COMBINING_CHARACTER_SCHEME + else if( ch > (int)MAX_UNICODE) /* chars & fullwidth supported */ + { + cchar_t root, newchar; + + root = ch; + while( (root = PDC_expand_combined_characters( root, + &newchar)) > MAX_UNICODE) + ; + printf( "%lc", (wchar_t)root); + root = ch; + while( (root = PDC_expand_combined_characters( root, + &newchar)) > MAX_UNICODE) + printf( "%lc", (wchar_t)newchar); + printf( "%lc", (wchar_t)newchar); + } +#endif + prev_ch = *srcp++; + } +} diff --git a/3rd-party/PDCurses/vt/pdcgetsc.c b/3rd-party/PDCurses/vt/pdcgetsc.c new file mode 100644 index 0000000..664728d --- /dev/null +++ b/3rd-party/PDCurses/vt/pdcgetsc.c @@ -0,0 +1,27 @@ +/* Public Domain Curses */ + +#include + +int PDC_get_cursor_mode(void) +{ + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + + return SP->visibility; +} + + +int PDC_get_columns(void) +{ + extern int PDC_cols; + + PDC_LOG(("PDC_get_columns() - called\n")); + return( PDC_cols); +} + +int PDC_get_rows(void) +{ + extern int PDC_rows; + + PDC_LOG(("PDC_get_rows() - called\n")); + return( PDC_rows); +} diff --git a/3rd-party/PDCurses/vt/pdckbd.c b/3rd-party/PDCurses/vt/pdckbd.c new file mode 100644 index 0000000..d326698 --- /dev/null +++ b/3rd-party/PDCurses/vt/pdckbd.c @@ -0,0 +1,434 @@ +#include +#include +#include +#if defined( _WIN32) || defined( DOS) + #include + #define USE_CONIO +#else + #include + #include +#endif +#include "curspriv.h" + +#if defined( __BORLANDC__) || defined( DOS) + #define WINDOWS_VERSION_OF_KBHIT kbhit +#else + #define WINDOWS_VERSION_OF_KBHIT _kbhit +#endif + +/* Modified from the accepted answer at + +https://stackoverflow.com/questions/33025599/move-the-cursor-in-a-c-program + +_kbhit( ) returns -1 if no key has been hit, and the keycode if one +has been hit. You can just loop on it until the return value is >= 0. +Hitting a function or arrow or similar key will cause 27 (escape) to +be returned, followed by cryptic codes that depend on what terminal +emulation is in place. + + Further info on VT100/ANSI control sequences is at + +https://www.gnu.org/software/screen/manual/html_node/Control-Sequences.html +*/ + +extern bool PDC_resize_occurred; + +static bool check_key( int *c) +{ + bool rval; +#ifndef USE_CONIO + const int STDIN = 0; + struct timeval timeout; + fd_set rdset; + + if( PDC_resize_occurred) + return( TRUE); + FD_ZERO( &rdset); + FD_SET( STDIN, &rdset); + timeout.tv_sec = 0; + timeout.tv_usec = 0; + if( select( STDIN + 1, &rdset, NULL, NULL, &timeout) > 0) + { + rval = TRUE; + if( c) + *c = getchar( ); + } + else + rval = FALSE; +#else + if( WINDOWS_VERSION_OF_KBHIT( )) + { + rval = TRUE; + if( c) + *c = _getch( ); + } + else + rval = FALSE; +#endif + return( rval); +} + +bool PDC_check_key( void) +{ + return( check_key( NULL)); +} + +void PDC_flushinp( void) +{ + int thrown_away_char; + + while( check_key( &thrown_away_char)) + ; +} + +#ifdef USE_CONIO +static int xlate_vt_codes_for_dos( const int key1, const int key2) +{ + static const int tbl[] = { + KEY_UP, 72, + KEY_DOWN, 80, + KEY_LEFT, 75, + KEY_RIGHT, 77, + KEY_F(11), 133, + KEY_F(12), 134, + KEY_IC, 82, + KEY_DC, 83, + KEY_PPAGE, 73, + KEY_NPAGE, 81, + KEY_HOME, 2, '[', 'H', + KEY_END, 2, 'O', 'F', + + KEY_F(1), 59, + KEY_F(2), 60, + KEY_F(3), 61, + KEY_F(4), 62, + KEY_F(5), 63, + KEY_F(6), 64, + KEY_F(7), 65, + KEY_F(8), 66, + KEY_F(9), 67, + KEY_F(10), 68, + 0, 0 }; + int i, rval = 0; + + for( i = 0; tbl[i] && !rval; i += 2) + if( key2 == tbl[i + 1]) + rval = tbl[i]; + return( rval); +} + +#endif +/* Mouse events include six bytes. First three are + +ESC [ M + + Next byte is 96 for mouse wheel up, 97 for down, or (for more +"traditional" mouse events) 32 plus : + + 0 for button 1 + 1 for button 2 + 2 for button 3 + 3 for release + 4 if Shift is pressed + 8 if Alt (Meta) is pressed + 16 if Ctrl is pressed + + Note that 'release' doesn't tell you _which_ is released. If only +one has been pressed (the usual case), it's presumably the one you +released. If two or more buttons are pressed simultaneously, the +"releases" are reported in the numerical order of the buttons, not +the order in which they're actually released (which we don't know). + + My tilt mouse reports 'tilt left' as a left button (1) and 'tilt right' +as a middle button press. Wheel events get shift, alt, ctrl added in +(but that doesn't seem to be getting through in PDCurses... to be fixed). +Button events only get Ctrl (though I think you might get the other events +on some terminals). + + "Correct" mouse handling will require that we detect a button-down, +then hold off for SP->mouse_wait to see if we get a release event. */ + +static int xlate_vt_codes( const int *c, const int count) +{ + static const int tbl[] = { + KEY_UP, 2, '[', 'A', + KEY_DOWN, 2, '[', 'B', + KEY_LEFT, 2, '[', 'D', + KEY_RIGHT,2, '[', 'C', + KEY_HOME, 2, 'O', 'H', + KEY_HOME, 2, '[', 'H', + KEY_END, 2, 'O', 'F', + KEY_END, 2, '[', 'F', + KEY_B2, 2, '[', 'E', + KEY_IC, 3, '[', '2', '~', + KEY_DC, 3, '[', '3', '~', + KEY_PPAGE, 3, '[', '5', '~', + KEY_NPAGE, 3, '[', '6', '~', + + CTL_LEFT, 5, '[', '1', ';', '5', 'D', + CTL_RIGHT, 5, '[', '1', ';', '5', 'C', + CTL_UP, 5, '[', '1', ';', '5', 'A', + CTL_DOWN, 5, '[', '1', ';', '5', 'B', + + ALT_PGUP, 5, '[', '5', ';', '3', '~', + ALT_PGDN, 5, '[', '6', ';', '3', '~', + + KEY_F(1), 3, '[', '[', 'A', /* Linux console */ + KEY_F(2), 3, '[', '[', 'B', + KEY_F(3), 3, '[', '[', 'C', + KEY_F(4), 3, '[', '[', 'D', + KEY_F(5), 3, '[', '[', 'E', + KEY_END, 3, '[', '4', '~', + KEY_HOME, 3, '[', '1', '~', + + KEY_F(1), 2, 'O', 'P', + KEY_F(1), 4, '[', '1', '1', '~', + KEY_F(2), 2, 'O', 'Q', + KEY_F(2), 4, '[', '1', '2', '~', + KEY_F(3), 2, 'O', 'R', + KEY_F(3), 4, '[', '1', '3', '~', + KEY_F(4), 2, 'O', 'S', + KEY_F(4), 4, '[', '1', '4', '~', + KEY_F(5), 4, '[', '1', '5', '~', + KEY_F(6), 4, '[', '1', '7', '~', + KEY_F(7), 4, '[', '1', '8', '~', + KEY_F(8), 4, '[', '1', '9', '~', + KEY_F(9), 4, '[', '2', '0', '~', + KEY_F(10), 4, '[', '2', '1', '~', + KEY_F(11), 4, '[', '2', '3', '~', + KEY_F(12), 4, '[', '2', '4', '~', + KEY_F(13), 5, '[', '1', ';', '2', 'P', /* shift-f1 */ + KEY_F(14), 5, '[', '1', ';', '2', 'Q', + KEY_F(15), 5, '[', '1', ';', '2', 'R', + KEY_F(16), 5, '[', '1', ';', '2', 'S', + KEY_F(17), 6, '[', '1', '5', ';', '2', '~', /* shift-f5 */ + KEY_F(18), 6, '[', '1', '7', ';', '2', '~', + KEY_F(19), 6, '[', '1', '8', ';', '2', '~', + KEY_F(20), 6, '[', '1', '9', ';', '2', '~', + KEY_F(21), 6, '[', '2', '0', ';', '2', '~', + KEY_F(22), 6, '[', '2', '1', ';', '2', '~', + KEY_F(23), 6, '[', '2', '3', ';', '2', '~', /* shift-f11 */ + KEY_F(24), 6, '[', '2', '4', ';', '2', '~', + 27, 0, + 0 }; + int i, rval = -1; + const int *tptr; + + if( count == 1) + { + if( c[0] >= 'a' && c[0] <= 'z') + rval = ALT_A + c[0] - 'a'; + if( c[0] >= '0' && c[0] <= '9') + rval = ALT_0 + c[0] - '0'; + } + else if( count == 5 && c[0] == '[' && c[1] == 'M') + rval = KEY_MOUSE; + for( tptr = tbl; rval == -1 && *tptr; tptr += 2 + tptr[1]) + if( count == tptr[1]) + { + i = 0; + while( tptr[i + 2] == c[i] && i < count) + i++; + if( i == count) + rval = tptr[0]; + } + return( rval); +} + +int PDC_get_key( void) +{ + int rval = -1; + + if( PDC_resize_occurred) + { + PDC_resize_occurred = FALSE; + return( KEY_RESIZE); + } + if( check_key( &rval)) + { + int c[13]; + +#ifdef USE_CONIO + SP->key_code = (rval == 0 || rval == 224); + if( SP->key_code) + { + int key2; + + while( !check_key( &key2)) + ; + rval = xlate_vt_codes_for_dos( rval, key2); + return( rval); + } + +#endif + SP->key_code = (rval == 27); + if( rval == 27) + { + int count = 0; + + while( count < 6 && check_key( &c[count]) + && (rval = xlate_vt_codes( c, count + 1)) == -1) + count++; + if( rval == KEY_MOUSE) + { + int idx = (c[2] & 3), flags = 0, i; + const bool release = (idx == 3); + static int held = 0; + + if( c[2] & 4) + flags |= PDC_BUTTON_SHIFT; + if( c[2] & 8) + flags |= PDC_BUTTON_ALT; + if( c[2] & 16) + flags |= PDC_BUTTON_CONTROL; + if( (c[2] & 0x60) == 0x40) /* mouse move */ + { + int report_event = 0; + + if( idx == 0 && (SP->_trap_mbe & BUTTON1_MOVED)) + report_event |= 1; + if( idx == 1 && (SP->_trap_mbe & BUTTON2_MOVED)) + report_event |= 2; + if( idx == 2 && (SP->_trap_mbe & BUTTON3_MOVED)) + report_event |= 4; + if( report_event) + report_event |= PDC_MOUSE_MOVED; + else if( SP->_trap_mbe & REPORT_MOUSE_POSITION) + report_event = PDC_MOUSE_POSITION; + pdc_mouse_status.changes = report_event; + for( i = 0; i < 3; i++) + pdc_mouse_status.button[i] = (i == idx ? BUTTON_MOVED : 0); + idx = 3; + } + else if( idx == 3) /* it's a release */ + { + idx = 0; + while( idx < 3 && !((held >> idx) & 1)) + idx++; + held ^= (1 << idx); + } + if( idx < 3) + { + memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS)); + pdc_mouse_status.button[idx] = + (release ? BUTTON_RELEASED : BUTTON_PRESSED); + if( (c[2] & 0x60) == 0x60) /* actually mouse wheel event */ + pdc_mouse_status.changes = + (idx ? PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP); + else /* "normal" mouse button */ + pdc_mouse_status.changes = (1 << idx); + if( !release && !(c[2] & 64)) /* wait for a possible release */ + { + int n_events = 0; + + while( n_events < 5) + { + PDC_napms( SP->mouse_wait); + if( check_key( c)) + { + count = 0; + while( count < 5 && check_key( &c[count])) + count++; + n_events++; + } + else + break; + } + if( !n_events) /* just a click, no release(s) */ + held ^= (1 << idx); + else if( n_events == 1) + pdc_mouse_status.button[idx] = BUTTON_CLICKED; + else if( n_events <= 3) + pdc_mouse_status.button[idx] = BUTTON_DOUBLE_CLICKED; + else if( n_events <= 5) + pdc_mouse_status.button[idx] = BUTTON_TRIPLE_CLICKED; + } + } + for( i = 0; i < 3; i++) + pdc_mouse_status.button[i] |= flags; + pdc_mouse_status.x = (unsigned char)( c[3] - ' ' - 1); + pdc_mouse_status.y = (unsigned char)( c[4] - ' ' - 1); + } + } + else if( (rval & 0xc0) == 0xc0) /* start of UTF-8 */ + { + check_key( &c[0]); + assert( (c[0] & 0xc0) == 0x80); + c[0] &= 0x3f; + if( !(rval & 0x20)) /* two-byte : U+0080 to U+07ff */ + rval = c[0] | ((rval & 0x1f) << 6); + else if( !(rval & 0x10)) /* three-byte : U+0800 - U+ffff */ + { + check_key( &c[1]); + assert( (c[1] & 0xc0) == 0x80); + c[1] &= 0x3f; + rval = (c[1] | (c[0] << 6) | ((rval & 0xf) << 12)); + } + /* Else... four-byte SMP char */ + } + else if( rval == 127) + rval = 8; + } + return( rval); +} + +int PDC_modifiers_set( void) +{ + return( OK); +} + +bool PDC_has_mouse( void) +{ + return TRUE; +} + +/* Xterm defaults to reporting no mouse events. If you request mouse movement +events even with no button pressed, state 1003 is set ("report everything"). +If you don't request such movements, but _do_ want to know about movements +with one of the first three buttons down, state 1002 is set. If you just +want certain mouse events (clicks and doubleclicks, say), state 1000 is +set. And if the mouse mask is zero ("don't tell me anything about the +mouse"), mouse events are shut off. + +At first, this code just set state 1003. Xterm reported bazillions of +events (which were filtered out according to SP->_trap_mbe). I don't think +this really mattered much on my machine, but I assume Xterm supports this +sort of filtering at a higher level for a reason. */ + +int PDC_mouse_set( void) +{ + extern bool PDC_is_ansi; + + if( !PDC_is_ansi) + { + static int curr_tracking_state = 0; + int tracking_state; + + if( SP->_trap_mbe & REPORT_MOUSE_POSITION) + tracking_state = 1003; + else if( SP->_trap_mbe & (BUTTON1_MOVED | BUTTON2_MOVED | BUTTON3_MOVED)) + tracking_state = 1002; + else + tracking_state = (SP->_trap_mbe ? 1000 : 0); + if( curr_tracking_state != tracking_state) + { + if( curr_tracking_state) + printf( "\033[?%dl", curr_tracking_state); + if( tracking_state) + printf( "\033[?%dh", tracking_state); + curr_tracking_state = tracking_state; + } + } + return( OK); +} + +void PDC_set_keyboard_binary( bool on) +{ + return; +} + +unsigned long PDC_get_input_fd( void) +{ + return( 0); +} + diff --git a/3rd-party/PDCurses/vt/pdcscrn.c b/3rd-party/PDCurses/vt/pdcscrn.c new file mode 100644 index 0000000..a25265e --- /dev/null +++ b/3rd-party/PDCurses/vt/pdcscrn.c @@ -0,0 +1,433 @@ +#include +#include +#include +#include +#if !defined( _WIN32) && !defined( DOS) +#define USE_TERMIOS +#include +#include +#include + +static struct termios orig_term; +#endif +#include +#include "curspriv.h" +#include "pdcvt.h" + +#ifdef DOS +bool PDC_is_ansi = TRUE; +#else +bool PDC_is_ansi = FALSE; +#endif + +#ifdef _WIN32 +#include + +#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING +#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 +#endif +#ifndef ENABLE_VIRTUAL_TERMINAL_INPUT +#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 +#endif +#ifndef DISABLE_NEWLINE_AUTO_RETURN +#define DISABLE_NEWLINE_AUTO_RETURN 0x0008 +#endif + +/* In DOS/Windows, we have two possible modes of operation. If we can +successfully use SetConsoleMode to ENABLE_VIRTUAL_TERMINAL_INPUT, +we have access to most of what we'd use on xterm. If not, we can only +use what ANSI.SYS or ANSI.COM (or their NANSI or NNANSI variants) support. +We'll get sixteen colors, no mouse events, no resizable windows, etc. + + So we check the return value from SetConsoleMode and set PDC_is_ansi +accordingly. (In DOS, PDC_is_ansi is always true -- there's no xterm-like +support there. On non-MS platforms, PDC_is_ansi is always false... +though that should be revisited for the Linux console, and probably +elsewhere.) */ + +static int set_win10_for_vt_codes( const bool setting_mode) +{ + const HANDLE hIn = GetStdHandle( STD_INPUT_HANDLE); + HANDLE hOut; + DWORD dwMode = 0; + static DWORD old_input_mode; + const DWORD out_mask = ENABLE_VIRTUAL_TERMINAL_PROCESSING + | DISABLE_NEWLINE_AUTO_RETURN; + + if( hIn == INVALID_HANDLE_VALUE) + return GetLastError( ); + PDC_is_ansi = TRUE; + if( setting_mode) + { + GetConsoleMode( hIn, &old_input_mode); + dwMode = ENABLE_VIRTUAL_TERMINAL_INPUT; + } + else /* restoring initial mode */ + dwMode = old_input_mode; + if( !SetConsoleMode( hIn, dwMode)) + return GetLastError( ); + /* Set output mode to handle virtual terminal sequences */ + hOut = GetStdHandle( STD_OUTPUT_HANDLE); + if( hOut == INVALID_HANDLE_VALUE) + return GetLastError( ); + + if( !GetConsoleMode( hOut, &dwMode)) + return GetLastError( ); + if( setting_mode) + dwMode |= out_mask; + else /* clearing VT mode, not setting it */ + dwMode &= ~out_mask; + if( !SetConsoleMode( hOut, dwMode)) + return GetLastError( ); + /* If we've gotten this far, the terminal has been */ + /* set up to process xterm-like sequences : */ + PDC_is_ansi = FALSE; + return( 0); +} +#endif + +int PDC_rows = -1, PDC_cols = -1; +bool PDC_resize_occurred = FALSE; +const int STDIN = 0; +chtype PDC_capabilities = 0; + +/* COLOR_PAIR to attribute encoding table. */ + +static short *color_pair_indices = (short *)NULL; +PACKED_RGB *pdc_rgbs = (PACKED_RGB *)NULL; + +unsigned long pdc_key_modifiers = 0L; + +void PDC_reset_prog_mode( void) +{ +} + +void PDC_reset_shell_mode( void) +{ +} + +static int initial_PDC_rows, initial_PDC_cols; + +int PDC_resize_screen(int nlines, int ncols) +{ + if( PDC_rows == -1) /* initscr( ) hasn't been called; we're just */ + { /* setting desired size at startup */ + initial_PDC_rows = nlines; + initial_PDC_cols = ncols; + } + else if( nlines > 1 && ncols > 1 && !PDC_is_ansi) + { + printf( "\033[8;%d;%dt", nlines, ncols); + PDC_rows = nlines; + PDC_cols = ncols; + } + return( 0); +} + +void PDC_restore_screen_mode(int i) +{ +} + +void PDC_save_screen_mode(int i) +{ +} + +void PDC_scr_close( void) +{ + printf( "\0338"); /* restore cursor & attribs (VT100) */ + printf( "\033[m"); /* set default screen attributes */ + printf( "\033[?47l"); /* restore screen */ + PDC_curs_set( 2); /* blinking block cursor */ + PDC_gotoyx( PDC_cols - 1, 0); + SP->_trap_mbe = 0; + PDC_mouse_set( ); /* clear any mouse event captures */ +#ifdef _WIN32 + set_win10_for_vt_codes( FALSE); +#else + #if !defined( DOS) + tcsetattr( STDIN, TCSANOW, &orig_term); + #endif +#endif + return; +} + +void PDC_scr_free( void) +{ + if (SP) + free(SP); + SP = (SCREEN *)NULL; + + if (color_pair_indices) + free(color_pair_indices); + color_pair_indices = (short *)NULL; + + if (pdc_rgbs) + free(pdc_rgbs); + pdc_rgbs = (PACKED_RGB *)NULL; +} + +#ifdef USE_TERMIOS +static void sigwinchHandler( int sig) +{ + struct winsize ws; + + if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) != -1) + if( PDC_rows != ws.ws_row || PDC_cols != ws.ws_col) + { + PDC_rows = ws.ws_row; + PDC_cols = ws.ws_col; + PDC_resize_occurred = TRUE; + } +} +#endif + +#define MAX_LINES 1000 +#define MAX_COLUMNS 1000 + +int PDC_scr_open(int argc, char **argv) +{ + int i, r, g, b, n_colors; + char *capabilities = getenv( "PDC_VT"); + const char *colorterm = getenv( "COLORTERM"); +#ifdef USE_TERMIOS + struct sigaction sa; + struct termios term; +#endif +#ifdef _WIN32 + set_win10_for_vt_codes( TRUE); +#endif + + PDC_LOG(("PDC_scr_open called\n")); + if( colorterm && !strcmp( colorterm, "truecolor")) + PDC_capabilities |= A_RGB_COLOR; + if( capabilities) /* these should really come from terminfo! */ + { + if( strstr( capabilities, "RGB")) + PDC_capabilities |= A_RGB_COLOR; + if( strstr( capabilities, "UND")) + PDC_capabilities |= A_UNDERLINE; + if( strstr( capabilities, "BLI")) + PDC_capabilities |= A_BLINK; + if( strstr( capabilities, "DIM")) + PDC_capabilities |= A_DIM; + if( strstr( capabilities, "STA")) + PDC_capabilities |= A_STANDOUT; + } + SP = calloc(1, sizeof(SCREEN)); + color_pair_indices = (short *)calloc( PDC_COLOR_PAIRS * 2, sizeof( short)); + n_colors = (PDC_is_ansi ? 16 : 256); + pdc_rgbs = (PACKED_RGB *)calloc( n_colors, sizeof( PACKED_RGB)); + assert( SP && color_pair_indices && pdc_rgbs); + if (!SP || !color_pair_indices || !pdc_rgbs) + return ERR; + + COLORS = n_colors; /* should give this a try and see if it works! */ + for( i = 0; i < 16 && i < n_colors; i++) + { + const int intensity = ((i & 8) ? 0xff : 0xc0); + + pdc_rgbs[i] = PACK_RGB( ((i & COLOR_RED) ? intensity : 0), + ((i & COLOR_GREEN) ? intensity : 0), + ((i & COLOR_BLUE) ? intensity : 0)); + } + /* 256-color xterm extended palette: 216 colors in a + 6x6x6 color cube, plus 24 (not 50) shades of gray */ + for( r = 0; r < 6; r++) + for( g = 0; g < 6; g++) + for( b = 0; b < 6; b++) + if( i < n_colors) + pdc_rgbs[i++] = PACK_RGB( r ? r * 40 + 55 : 0, + g ? g * 40 + 55 : 0, + b ? b * 40 + 55 : 0); + for( i = 0; i < 24; i++) + if( i + 232 < n_colors) + pdc_rgbs[i + 232] = PACK_RGB( i * 10 + 8, i * 10 + 8, i * 10 + 8); + setbuf( stdin, NULL); + setbuf( stdout, NULL); +#ifdef USE_TERMIOS + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sa.sa_handler = sigwinchHandler; + if (sigaction(SIGWINCH, &sa, NULL) == -1) + { + fprintf( stderr, "Sigaction failed\n"); + return( -1); + } + sigwinchHandler( 0); +#else + { + const char *env = getenv("PDC_LINES"); + + PDC_rows = (env ? atoi( env) : 25); + env = getenv( "PDC_COLS"); + PDC_cols = (env ? atoi( env) : 80); + } +#endif + SP->mouse_wait = PDC_CLICK_PERIOD; + SP->visibility = 0; /* no cursor, by default */ + SP->curscol = SP->cursrow = 0; + SP->audible = TRUE; + SP->mono = FALSE; + + while( PDC_get_rows( ) < 1 && PDC_get_columns( ) < 1) + ; /* wait for screen to be drawn and size determined */ + if( initial_PDC_rows > 1 && initial_PDC_cols > 1) + { + PDC_resize_screen( initial_PDC_rows, initial_PDC_cols); + while( PDC_get_rows( ) != initial_PDC_rows + && PDC_get_columns( ) != initial_PDC_rows) + ; + } + + SP->lines = PDC_get_rows(); + SP->cols = PDC_get_columns(); + + if (SP->lines < 2 || SP->lines > MAX_LINES + || SP->cols < 2 || SP->cols > MAX_COLUMNS) + { + fprintf(stderr, "LINES value must be >= 2 and <= %d: got %d\n", + MAX_LINES, SP->lines); + fprintf(stderr, "COLS value must be >= 2 and <= %d: got %d\n", + MAX_COLUMNS, SP->cols); + + return ERR; + } + +#ifdef USE_TERMIOS + tcgetattr( STDIN, &orig_term); + memcpy( &term, &orig_term, sizeof( term)); + term.c_lflag &= ~(ICANON | ECHO); + tcsetattr( STDIN, TCSANOW, &term); +#endif + printf( "\033[?47h"); /* Save screen */ + printf( "\0337"); /* save cursor & attribs (VT100) */ + PDC_resize_occurred = FALSE; + PDC_LOG(("PDC_scr_open exit\n")); +/* PDC_reset_prog_mode(); doesn't do anything anyway */ + return( 0); +} + +int PDC_set_function_key( const unsigned function, const int new_key) +{ + return( 0); +} + +void PDC_set_resize_limits( const int new_min_lines, + const int new_max_lines, + const int new_min_cols, + const int new_max_cols) +{ + return; +} + +/* PDC_init_color(), PDC_init_pair(), and PDC_set_blink() all share a common +issue : after adjusting the display characteristic in question, all relevant +text should be redrawn. Call PDC_init_pair( 3, ...), and all text using +color pair 3 should be redrawn; call PDC_init_color( 5, ...) and all text +using color index 5 for either foreground or background should be redrawn; +turn "real blinking" on/off, and all blinking text should be redrawn. +(On platforms where blinking text is controlled by a timer and redrawn every +half second or so, such as X11, SDLx, and Win32a, this function can be +used for that purpose as well.) + + PDC_show_changes( ) will look for relevant chains of text and redraw them. +For speed/simplicity, the code looks for the first and last character in +each line that would be affected, then draws those in between. Often -- +perhaps usually -- this will be zero characters, i.e., no text on that +particular line happens to have an attribute requiring redrawing. */ + +static short get_pair( const chtype ch) + +{ + return( (short)( (ch & A_COLOR) >> PDC_COLOR_SHIFT) & (COLOR_PAIRS - 1)); +} + +static int color_used_for_this_char( const chtype c, const int idx) +{ + const int color = get_pair( c); + const int rval = (color_pair_indices[color] == idx || + color_pair_indices[color + PDC_COLOR_PAIRS] == idx); + + return( rval); +} + +void PDC_show_changes( const short pair, const short idx, const chtype attr) +{ + if( curscr && curscr->_y) + { + int i; + + for( i = 0; i < SP->lines - 1; i++) + if( curscr->_y[i]) + { + int j = 0, n_chars; + chtype *line = curscr->_y[i]; + + /* skip over starting text that isn't changed : */ + while( j < SP->cols && get_pair( *line) != pair + && !color_used_for_this_char( *line, idx) + && !(attr & *line)) + { + j++; + line++; + } + n_chars = SP->cols - j; + /* then skip over text at the end that's not the right color: */ + while( n_chars && get_pair( line[n_chars - 1]) != pair + && !color_used_for_this_char( line[n_chars - 1], idx) + && !(attr & line[n_chars - 1])) + n_chars--; + assert( n_chars >= 0); + if( n_chars) + PDC_transform_line( i, j, n_chars, line); + } + } +} + +void PDC_init_pair( short pair, short fg, short bg) +{ + if( color_pair_indices[pair] != fg || + color_pair_indices[pair + PDC_COLOR_PAIRS] != bg) + { + color_pair_indices[pair] = fg; + color_pair_indices[pair + PDC_COLOR_PAIRS] = bg; + PDC_show_changes( pair, -1, 0); + } +} + +int PDC_pair_content( short pair, short *fg, short *bg) +{ + *fg = color_pair_indices[pair]; + *bg = color_pair_indices[pair + PDC_COLOR_PAIRS]; + return OK; +} + +bool PDC_can_change_color(void) +{ + return TRUE; +} + +int PDC_color_content( short color, short *red, short *green, short *blue) +{ + PACKED_RGB col = pdc_rgbs[color]; + + *red = DIVROUND( Get_RValue(col) * 1000, 255); + *green = DIVROUND( Get_GValue(col) * 1000, 255); + *blue = DIVROUND( Get_BValue(col) * 1000, 255); + + return OK; +} + +int PDC_init_color( short color, short red, short green, short blue) +{ + const PACKED_RGB new_rgb = PACK_RGB(DIVROUND(red * 255, 1000), + DIVROUND(green * 255, 1000), + DIVROUND(blue * 255, 1000)); + + if( pdc_rgbs[color] != new_rgb) + { + pdc_rgbs[color] = new_rgb; + PDC_show_changes( -1, color, 0); + } + return OK; +} diff --git a/3rd-party/PDCurses/vt/pdcsetsc.c b/3rd-party/PDCurses/vt/pdcsetsc.c new file mode 100644 index 0000000..58b9f1e --- /dev/null +++ b/3rd-party/PDCurses/vt/pdcsetsc.c @@ -0,0 +1,87 @@ +#include +#include +#include "pdcvt.h" + +// #define BLINKING_CURSOR "\033[?12h" +#define BLINKING_BLOCK "\033[1 q" +#define STEADY_BLOCK "\033[2 q" +#define BLINKING_UNDERLINE "\033[3 q" +#define STEADY_UNDERLINE "\033[4 q" + /* "bar" = "vertical line". xterm only. */ +#define BLINKING_BAR "\033[5 q" +#define STEADY_BAR "\033[6 q" +#define CURSOR_ON "\033[?25h" +#define CURSOR_OFF "\033[?25l" + +int PDC_curs_set( int visibility) +{ + int ret_vis; + int vis1 = visibility & 0xff, vis2 = (visibility >> 8) & 0xff; + const char *command = CURSOR_ON; /* our default */ + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + + if( !SP->visibility && visibility) /* turn cursor back on */ + printf( CURSOR_ON); + SP->visibility = visibility; + if( vis1 && vis2) /* show solid */ + switch( vis1) + { + case 1: /* "normal" four lines at bottom */ + command = STEADY_BAR; + break; + case 2: /* full block */ + command = STEADY_BLOCK; + break; + case 5: /* bottom half block */ + command = STEADY_UNDERLINE; + break; + } + else switch( vis1 + vis2) + { + case 0: /* just turning it off */ + command = CURSOR_OFF; + break; + case 1: /* "normal" four lines at bottom */ + command = BLINKING_BAR; + break; + case 2: /* full block */ + command = BLINKING_BLOCK; + break; + case 5: /* bottom half block */ + command = BLINKING_UNDERLINE; + break; + } + + printf( "%s", command); + + return ret_vis; +} + + +void PDC_show_changes( const short pair, const short idx, const chtype attr); + +int PDC_really_blinking; + +int PDC_set_blink(bool blinkon) +{ + + if( PDC_really_blinking != blinkon) + { + PDC_really_blinking = blinkon; + PDC_show_changes( -1, -1, A_BLINK); + } + return OK; +} + +void PDC_set_title( const char *title) +{ + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); + +#ifndef DOS + if( !PDC_is_ansi) + printf( "\033]2;%s\a", title); +#endif +} diff --git a/3rd-party/PDCurses/vt/pdcutil.c b/3rd-party/PDCurses/vt/pdcutil.c new file mode 100644 index 0000000..7aef217 --- /dev/null +++ b/3rd-party/PDCurses/vt/pdcutil.c @@ -0,0 +1,43 @@ +#ifdef _WIN32 + #include + #undef MOUSE_MOVED +#else + #include +#endif +#include "curspriv.h" + +void PDC_beep(void) +{ +} + +void PDC_napms(int ms) +{ +#ifdef _WIN32 + Sleep(ms); +#else +#ifndef DOS + usleep(1000 * ms); +#endif +#endif +} + + +const char *PDC_sysname(void) +{ + return( "VTx00"); +} + +PDC_version_info PDC_version = { PDC_PORT_VT, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; diff --git a/3rd-party/PDCurses/vt/pdcvt.h b/3rd-party/PDCurses/vt/pdcvt.h new file mode 100644 index 0000000..f065c10 --- /dev/null +++ b/3rd-party/PDCurses/vt/pdcvt.h @@ -0,0 +1,16 @@ +#define PACKED_RGB uint32_t +#ifndef DIVROUND +#define DIVROUND( A, B) ((A + B / 2) / B) +#endif +#define PACK_RGB( R, G, B) (((uint32_t)(R) << 16) | ((uint32_t)(G) << 8) \ + | (uint32_t)(B)) + +#define Get_RValue( rgb) ((int)( (rgb) >> 16)) +#define Get_GValue( rgb) ((int)( (rgb) >> 8) & 0xff) +#define Get_BValue( rgb) ((int)((rgb) & 0xff)) + +int PDC_pair_content( short pair, short *fg, short *bg); + + /* If the following is TRUE, only a limited subset of control + codes will actually work. Happens in older Windows and DOS. */ +extern bool PDC_is_ansi; diff --git a/3rd-party/PDCurses/watcom.mif b/3rd-party/PDCurses/watcom.mif new file mode 100644 index 0000000..f8c4b28 --- /dev/null +++ b/3rd-party/PDCurses/watcom.mif @@ -0,0 +1,68 @@ +# Common elements for the Watcom makefiles + +!ifeq CROSS Y +DEL = rm -f +COPY = cp +!else +DEL = del +COPY = copy +!endif + +srcdir = $(PDCURSES_SRCDIR)/pdcurses +demodir = $(PDCURSES_SRCDIR)/demos + +LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj & +border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj & +getch.obj getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj & +insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj & +outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj & +scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj & +touch.obj util.obj window.obj debug.obj + +PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj & +pdcsetsc.obj pdcutil.obj + +DEMOS = testcurs.exe ozdemo.exe xmas.exe tuidemo.exe firework.exe & +newtest.exe ptest.exe rain.exe worm.exe + +LIBCURSES = pdcurses.lib + +LINK = wlink + +!ifdef __LOADDLL__ +! loaddll wcc wccd +! loaddll wcc386 wccd386 +! loaddll wlink wlinkd +! loaddll wlib wlibd +!endif + +all: $(LIBCURSES) $(DEMOS) + +clean + -$(DEL) *.obj + -$(DEL) *.lib + -$(DEL) *.exe + -$(DEL) *.err + +demos: $(DEMOS) + +.c: $(srcdir);$(osdir);$(demodir) +.c.obj: .autodepend + $(CC) $(CFLAGS) -fo=$@ $< + +.obj.exe: + $(LINK) $(LDFLAGS) n $@ f $*.obj l $(LIBCURSES) + +testcurs.exe: testcurs.obj $(LIBCURSES) +ozdemo.exe: ozdemo.obj $(LIBCURSES) +newtest.exe: newtest.obj $(LIBCURSES) +xmas.exe: xmas.obj $(LIBCURSES) +firework.exe: firework.obj $(LIBCURSES) +rain.exe: rain.obj $(LIBCURSES) +worm.exe: worm.obj $(LIBCURSES) +ptest.exe: ptest.obj $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES) + $(LINK) $(LDFLAGS) n $@ f tuidemo.obj f tui.obj l $(LIBCURSES) + +dist: .symbolic diff --git a/3rd-party/PDCurses/wincon/CMakeLists.txt b/3rd-party/PDCurses/wincon/CMakeLists.txt new file mode 100644 index 0000000..7796414 --- /dev/null +++ b/3rd-party/PDCurses/wincon/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "No build type specified, defaulting to MinSizeRel.") +endif() + +PROJECT(wincon VERSION "${PROJECT_VERSION}" LANGUAGES C) + +INCLUDE(project_common) + +demo_app(../demos version) +demo_app(../demos firework) +demo_app(../demos ozdemo) +demo_app(../demos newtest) +demo_app(../demos ptest) +demo_app(../demos rain) +demo_app(../demos testcurs) +demo_app(../demos tuidemo) +demo_app(../demos worm) +demo_app(../demos xmas) + +IF(WIN32) + SET_TARGET_PROPERTIES(${PROJECT_NAME}_newtest PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS") +ENDIF(WIN32) + +SET(CPACK_COMPONENTS_ALL applications) diff --git a/3rd-party/PDCurses/wincon/Makefile.bcc b/3rd-party/PDCurses/wincon/Makefile.bcc new file mode 100644 index 0000000..958719d --- /dev/null +++ b/3rd-party/PDCurses/wincon/Makefile.bcc @@ -0,0 +1,111 @@ +# Borland MAKE Makefile for PDCurses library - Windows console BC++ 7.0+ +# +# Usage: make -f [path\]Makefile.bcc [DEBUG=] [WIDE=] [UTF8=] +# [INFOEX=N] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +O = obj +E = .exe +RM = del + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\wincon + +!ifdef OLD_BCC +CC = bcc32 -q -DNO_STDINT_H +!else +CC = bcc32c -q -Xdriver -Wno-deprecated-declarations +!endif + +!ifdef DEBUG +CFLAGS = -N -v -y -DPDCDEBUG +!else +CFLAGS = -O -DCHTYPE_32 +!endif + +!ifdef CHTYPE_32 +CFLAGS = $(CFLAGS) -DCHTYPE_32 +!endif + +!ifdef CHTYPE_16 +CFLAGS = $(CFLAGS) -DCHTYPE_16 +!endif + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +!endif + +!ifdef UTF8 +UTF8OPT = -DPDC_FORCE_UTF8 +!endif + +!ifdef INFOEX +INFOPT = -DHAVE_NO_INFOEX +!endif + +!ifdef OLD_BCC +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c -Tpe $(CFLAGS) \ +-w32 -w-par \ +$(WIDEOPT) $(UTF8OPT) $(INFOPT) +!else +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c -Tpe $(CFLAGS) \ +$(WIDEOPT) $(UTF8OPT) +!endif + +LIBEXE = tlib /C /E /0 /a + +LIBCURSES = pdcurses.lib + +all: $(LIBCURSES) + +clean: + -$(RM) *.obj + -$(RM) *.lib + -$(RM) *.tds + -$(RM) *.exe + +demos: $(DEMOS) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + -$(RM) $@ + $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS) + +.autodepend + +{$(srcdir)\}.c.obj: + $(BUILD) $< + +{$(osdir)\}.c.obj: + $(BUILD) $< + +{$(demodir)\}.c.obj: + $(BUILD) $< + +.c.obj: + $(BUILD) $< + +.obj.exe: + $(CC) -e$@ $** $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES) + $(CC) -e$@ $** + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Borland C++ Wincon +PLATFORM2 = Borland C/C++ 7.2 for Windows console +ARCNAME = pdc$(VER)_bcc_wincon + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/wincon/Makefile.dmc b/3rd-party/PDCurses/wincon/Makefile.dmc new file mode 100644 index 0000000..c9c5b6e --- /dev/null +++ b/3rd-party/PDCurses/wincon/Makefile.dmc @@ -0,0 +1,256 @@ +# Makefile for PDCurses library - WIN32 Digital Mars +# +# Usage: make -f Makefile.dmc [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +PDCURSES_SRCDIR = .. + +PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) + +PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h +TERM_HEADER = $(PDCURSES_SRCDIR)\term.h + +srcdir = $(PDCURSES_SRCDIR)\pdcurses +osdir = $(PDCURSES_SRCDIR)\wincon +demodir = $(PDCURSES_SRCDIR)\demos + +PDCURSES_WIN_H = $(osdir)\pdcwin.h + +CC = dmc + +CFLAGS = -c -o+space -Nc + +CPPFLAGS = -I$(PDCURSES_SRCDIR) -DPDC_WIDE -DPDC_FORCE_UTF8 -DHAVE_NO_INFOEX + +LINK = dmc +LIBEXE = lib + +LIBCURSES = pdcurses.lib + +BUILD = $(CC) $(CFLAGS) $(CPPFLAGS) + +DEMOS = testcurs.exe ozdemo.exe newtest.exe xmas.exe tuidemo.exe \ +firework.exe ptest.exe rain.exe worm.exe + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.map + -del advapi32.def + +LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \ +border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \ +getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \ +insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \ +outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \ +scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \ +touch.obj util.obj window.obj debug.obj + +PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \ +pdcsetsc.obj pdcutil.obj + +DEMOOBJS = testcurs.obj ozdemo.obj newtest.obj xmas.obj tuidemo.obj tui.obj \ +firework.obj ptest.obj rain.obj worm.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +panel.obj ptest.obj: $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -c $@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib + +SRCBUILD = $(BUILD) $(srcdir)\$*.c +OSBUILD = $(BUILD) $(osdir)\$*.c +DEMOBUILD = $(LINK) $(CPPFLAGS) -o+space $@ $** + +addch.obj: $(srcdir)\addch.c + $(SRCBUILD) + +addchstr.obj: $(srcdir)\addchstr.c + $(SRCBUILD) + +addstr.obj: $(srcdir)\addstr.c + $(SRCBUILD) + +attr.obj: $(srcdir)\attr.c + $(SRCBUILD) + +beep.obj: $(srcdir)\beep.c + $(SRCBUILD) + +bkgd.obj: $(srcdir)\bkgd.c + $(SRCBUILD) + +border.obj: $(srcdir)\border.c + $(SRCBUILD) + +clear.obj: $(srcdir)\clear.c + $(SRCBUILD) + +color.obj: $(srcdir)\color.c + $(SRCBUILD) + +delch.obj: $(srcdir)\delch.c + $(SRCBUILD) + +deleteln.obj: $(srcdir)\deleteln.c + $(SRCBUILD) + +deprec.obj: $(srcdir)\deprec.c + $(SRCBUILD) + +getch.obj: $(srcdir)\getch.c + $(SRCBUILD) + +getstr.obj: $(srcdir)\getstr.c + $(SRCBUILD) + +getyx.obj: $(srcdir)\getyx.c + $(SRCBUILD) + +inch.obj: $(srcdir)\inch.c + $(SRCBUILD) + +inchstr.obj: $(srcdir)\inchstr.c + $(SRCBUILD) + +initscr.obj: $(srcdir)\initscr.c + $(SRCBUILD) + +inopts.obj: $(srcdir)\inopts.c + $(SRCBUILD) + +insch.obj: $(srcdir)\insch.c + $(SRCBUILD) + +insstr.obj: $(srcdir)\insstr.c + $(SRCBUILD) + +instr.obj: $(srcdir)\instr.c + $(SRCBUILD) + +kernel.obj: $(srcdir)\kernel.c + $(SRCBUILD) + +keyname.obj: $(srcdir)\keyname.c + $(SRCBUILD) + +mouse.obj: $(srcdir)\mouse.c + $(SRCBUILD) + +move.obj: $(srcdir)\move.c + $(SRCBUILD) + +outopts.obj: $(srcdir)\outopts.c + $(SRCBUILD) + +overlay.obj: $(srcdir)\overlay.c + $(SRCBUILD) + +pad.obj: $(srcdir)\pad.c + $(SRCBUILD) + +panel.obj: $(srcdir)\panel.c + $(SRCBUILD) + +printw.obj: $(srcdir)\printw.c + $(SRCBUILD) + +refresh.obj: $(srcdir)\refresh.c + $(SRCBUILD) + +scanw.obj: $(srcdir)\scanw.c + $(SRCBUILD) + +scr_dump.obj: $(srcdir)\scr_dump.c + $(SRCBUILD) + +scroll.obj: $(srcdir)\scroll.c + $(SRCBUILD) + +slk.obj: $(srcdir)\slk.c + $(SRCBUILD) + +termattr.obj: $(srcdir)\termattr.c + $(SRCBUILD) + +terminfo.obj: $(srcdir)\terminfo.c + $(SRCBUILD) + +touch.obj: $(srcdir)\touch.c + $(SRCBUILD) + +util.obj: $(srcdir)\util.c + $(SRCBUILD) + +window.obj: $(srcdir)\window.c + $(SRCBUILD) + +debug.obj: $(srcdir)\debug.c + $(SRCBUILD) + +pdcclip.obj: $(osdir)\pdcclip.c + $(OSBUILD) + +pdcdisp.obj: $(osdir)\pdcdisp.c + $(OSBUILD) + +pdcgetsc.obj: $(osdir)\pdcgetsc.c + $(OSBUILD) + +pdckbd.obj: $(osdir)\pdckbd.c + $(OSBUILD) + +pdcscrn.obj: $(osdir)\pdcscrn.c + $(OSBUILD) + +pdcsetsc.obj: $(osdir)\pdcsetsc.c + $(OSBUILD) + +pdcutil.obj: $(osdir)\pdcutil.c + $(OSBUILD) + +firework.exe: $(demodir)\firework.c + $(DEMOBUILD) + +ozdemo.exe: $(demodir)\ozdemo.c + $(DEMOBUILD) + +newtest.exe: $(demodir)\newtest.c + $(DEMOBUILD) + +ptest.exe: $(demodir)\ptest.c + $(DEMOBUILD) + +rain.exe: $(demodir)\rain.c + $(DEMOBUILD) + +testcurs.exe: $(demodir)\testcurs.c + $(DEMOBUILD) advapi32.lib + +tuidemo.exe: tuidemo.obj tui.obj + $(DEMOBUILD) + +worm.exe: $(demodir)\worm.c + $(DEMOBUILD) + +xmas.exe: $(demodir)\xmas.c + $(DEMOBUILD) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\$*.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\$*.c diff --git a/3rd-party/PDCurses/wincon/Makefile.lcc b/3rd-party/PDCurses/wincon/Makefile.lcc new file mode 100644 index 0000000..00f360e --- /dev/null +++ b/3rd-party/PDCurses/wincon/Makefile.lcc @@ -0,0 +1,273 @@ +# Makefile for PDCurses library - WIN32 LCC-Win32 +# +# Usage: make -f Makefile.lcc [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +PDCURSES_SRCDIR = .. + +PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) + +PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h +TERM_HEADER = $(PDCURSES_SRCDIR)\term.h + +srcdir = $(PDCURSES_SRCDIR)\pdcurses +osdir = $(PDCURSES_SRCDIR)\win32 +demodir = $(PDCURSES_SRCDIR)\demos + +PDCURSES_WIN_H = $(osdir)\pdcwin.h + +CC = lcc + +#CFLAGS = -c -g3 -A -ansic +CFLAGS = -c -O -A -ansic + +CPPFLAGS = -I$(PDCURSES_SRCDIR) #-DPDC_WIDE -DPDC_FORCE_UTF8 + +LINK = lcclnk +LIBEXE = lcclib + +LIBCURSES = pdcurses.lib + +BUILD = $(CC) $(CFLAGS) $(CPPFLAGS) +PDCLIBS = $(LIBCURSES) + +DEMOS = testcurs.exe ozdemo.exe xmas.exe tuidemo.exe \ +firework.exe ptest.exe rain.exe worm.exe + +all: $(PDCLIBS) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + +LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \ +border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \ +getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \ +insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \ +outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \ +scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \ +touch.obj util.obj window.obj debug.obj + +PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \ +pdcsetsc.obj pdcutil.obj + +DEMOOBJS = testcurs.obj ozdemo.obj xmas.obj tuidemo.obj tui.obj \ +firework.obj ptest.obj rain.obj worm.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +panel.obj ptest.obj: $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) /out:$@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib + +SRCBUILD = $(BUILD) $(srcdir)\$*.c +OSBUILD = $(BUILD) $(osdir)\$*.c + +addch.obj: $(srcdir)\addch.c + $(SRCBUILD) + +addchstr.obj: $(srcdir)\addchstr.c + $(SRCBUILD) + +addstr.obj: $(srcdir)\addstr.c + $(SRCBUILD) + +attr.obj: $(srcdir)\attr.c + $(SRCBUILD) + +beep.obj: $(srcdir)\beep.c + $(SRCBUILD) + +bkgd.obj: $(srcdir)\bkgd.c + $(SRCBUILD) + +border.obj: $(srcdir)\border.c + $(SRCBUILD) + +clear.obj: $(srcdir)\clear.c + $(SRCBUILD) + +color.obj: $(srcdir)\color.c + $(SRCBUILD) + +delch.obj: $(srcdir)\delch.c + $(SRCBUILD) + +deleteln.obj: $(srcdir)\deleteln.c + $(SRCBUILD) + +deprec.obj: $(srcdir)\deprec.c + $(SRCBUILD) + +getch.obj: $(srcdir)\getch.c + $(SRCBUILD) + +getstr.obj: $(srcdir)\getstr.c + $(SRCBUILD) + +getyx.obj: $(srcdir)\getyx.c + $(SRCBUILD) + +inch.obj: $(srcdir)\inch.c + $(SRCBUILD) + +inchstr.obj: $(srcdir)\inchstr.c + $(SRCBUILD) + +initscr.obj: $(srcdir)\initscr.c + $(SRCBUILD) + +inopts.obj: $(srcdir)\inopts.c + $(SRCBUILD) + +insch.obj: $(srcdir)\insch.c + $(SRCBUILD) + +insstr.obj: $(srcdir)\insstr.c + $(SRCBUILD) + +instr.obj: $(srcdir)\instr.c + $(SRCBUILD) + +kernel.obj: $(srcdir)\kernel.c + $(SRCBUILD) + +keyname.obj: $(srcdir)\keyname.c + $(SRCBUILD) + +mouse.obj: $(srcdir)\mouse.c + $(SRCBUILD) + +move.obj: $(srcdir)\move.c + $(SRCBUILD) + +outopts.obj: $(srcdir)\outopts.c + $(SRCBUILD) + +overlay.obj: $(srcdir)\overlay.c + $(SRCBUILD) + +pad.obj: $(srcdir)\pad.c + $(SRCBUILD) + +panel.obj: $(srcdir)\panel.c + $(SRCBUILD) + +printw.obj: $(srcdir)\printw.c + $(SRCBUILD) + +refresh.obj: $(srcdir)\refresh.c + $(SRCBUILD) + +scanw.obj: $(srcdir)\scanw.c + $(SRCBUILD) + +scr_dump.obj: $(srcdir)\scr_dump.c + $(SRCBUILD) + +scroll.obj: $(srcdir)\scroll.c + $(SRCBUILD) + +slk.obj: $(srcdir)\slk.c + $(SRCBUILD) + +termattr.obj: $(srcdir)\termattr.c + $(SRCBUILD) + +terminfo.obj: $(srcdir)\terminfo.c + $(SRCBUILD) + +touch.obj: $(srcdir)\touch.c + $(SRCBUILD) + +util.obj: $(srcdir)\util.c + $(SRCBUILD) + +window.obj: $(srcdir)\window.c + $(SRCBUILD) + +debug.obj: $(srcdir)\debug.c + $(SRCBUILD) + +pdcclip.obj: $(osdir)\pdcclip.c + $(OSBUILD) + +pdcdisp.obj: $(osdir)\pdcdisp.c + $(OSBUILD) + +pdcgetsc.obj: $(osdir)\pdcgetsc.c + $(OSBUILD) + +pdckbd.obj: $(osdir)\pdckbd.c + $(OSBUILD) + +pdcscrn.obj: $(osdir)\pdcscrn.c + $(OSBUILD) + +pdcsetsc.obj: $(osdir)\pdcsetsc.c + $(OSBUILD) + +pdcutil.obj: $(osdir)\pdcutil.c + $(OSBUILD) + +firework.exe: firework.obj + $(LINK) -o $@ firework.obj $(LIBCURSES) + +ozdemo.exe: ozdemo.obj + $(LINK) -o $@ ozdemo.obj $(LIBCURSES) + +ptest.exe: ptest.obj + $(LINK) -o $@ ptest.obj $(LIBCURSES) + +rain.exe: rain.obj + $(LINK) -o $@ rain.obj $(LIBCURSES) + +testcurs.exe: testcurs.obj + $(LINK) -o $@ testcurs.obj $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj + $(LINK) -o $@ tuidemo.obj tui.obj $(LIBCURSES) + +worm.exe: worm.obj + $(LINK) -o $@ worm.obj $(LIBCURSES) + +xmas.exe: xmas.obj + $(LINK) -o $@ xmas.obj $(LIBCURSES) + +firework.obj: $(demodir)\firework.c + $(BUILD) $(demodir)\$*.c + +ozdemo.obj: $(demodir)\ozdemo.c + $(BUILD) $(demodir)\$*.c + +ptest.obj: $(demodir)\ptest.c + $(BUILD) $(demodir)\$*.c + +rain.obj: $(demodir)\rain.c + $(BUILD) $(demodir)\$*.c + +testcurs.obj: $(demodir)\testcurs.c + $(BUILD) $(demodir)\$*.c + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\$*.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\$*.c + +worm.obj: $(demodir)\worm.c + $(BUILD) $(demodir)\$*.c + +xmas.obj: $(demodir)\xmas.c + $(BUILD) $(demodir)\$*.c diff --git a/3rd-party/PDCurses/wincon/Makefile.mng b/3rd-party/PDCurses/wincon/Makefile.mng new file mode 100644 index 0000000..bb96638 --- /dev/null +++ b/3rd-party/PDCurses/wincon/Makefile.mng @@ -0,0 +1,173 @@ +# GNU MAKE Makefile for PDCurses library - Windows console MinGW GCC +# +# Usage: make -f [path\]Makefile.mng [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] +# [INFOEX=N] [tgt] +# +# where tgt can be any of: +# [all|demos|pdcurses.a|testcurs.exe...] + +O = o + +ifndef PDCURSES_SRCDIR + PDCURSES_SRCDIR = .. +endif + +include $(PDCURSES_SRCDIR)/version.mif +include $(PDCURSES_SRCDIR)/libobjs.mif + +uname_S := $(shell uname -s 2>/dev/null) + +CAT = cat +PREFIX = +PATH_SEP = / +CP = cp +DELETE = rm -f + +# It appears we have three cases: we're running in Cygwin/MSYS; or we're +# running in command.com on Windows with MinGW; or we're on Linux or BSD +# or similar system, cross-compiling with MinGW. + +ifneq (,$(findstring CYGWIN,$(uname_S))) + # Insert Cygwin-specific changes here + ON_WINDOWS = 1 +endif +ifneq (,$(findstring MINGW32_NT,$(uname_S))) + # Insert MINGW32-specific changes here + ON_WINDOWS = 1 +endif +ifneq (,$(findstring MINGW64_NT,$(uname_S))) + # Insert MINGW64-specific changes here + ON_WINDOWS = 1 +endif + +ifeq ($(uname_S),) + CAT = type + PATH_SEP = \\ + CP = -copy + DELETE = -del + ON_WINDOWS = 1 +endif + +# If we aren't on Windows, assume MinGW on a Linux-like host +# Only decision is: are we doing a 64-bit compile (_w64 defined)? + +ifndef ON_WINDOWS + ifdef _w64 + PREFIX = x86_64-w64-mingw32- + else + PREFIX = i686-w64-mingw32- + endif +endif + +osdir = $(PDCURSES_SRCDIR)/wincon + +PDCURSES_WIN_H = $(osdir)/pdcwin.h + +CC = $(PREFIX)gcc + +ifeq ($(DEBUG),Y) + CFLAGS = -g -Wall -DPDCDEBUG + LDFLAGS = -g +else + CFLAGS = -O4 -Wall -pedantic + LDFLAGS = +endif + +CFLAGS += -I$(PDCURSES_SRCDIR) + +ifdef CHTYPE_32 + CFLAGS += -DCHTYPE_32 +endif + +ifdef CHTYPE_16 + CFLAGS += -DCHTYPE_16 +endif + +ifeq ($(WIDE),Y) + CFLAGS += -DPDC_WIDE +endif + +ifeq ($(UTF8),Y) + CFLAGS += -DPDC_FORCE_UTF8 +endif + +ifeq ($(INFOEX),N) + PDCCFLAGS += -DHAVE_NO_INFOEX +endif + +LINK = $(PREFIX)gcc + +ifeq ($(DLL),Y) + CFLAGS += -DPDC_DLL_BUILD + LIBEXE = $(PREFIX)gcc + LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o + LIBCURSES = pdcurses.dll + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = + EXELIBS = + CLEAN = $(LIBCURSES) *.a +else + LIBEXE = $(PREFIX)ar +ifeq ($(PREFIX),) + LIBFLAGS = rcv +else + LIBFLAGS = rv +endif + LIBCURSES = pdcurses.a + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = + EXELIBS = + CLEAN = *.a +endif + +.PHONY: all libs clean demos dist + +all: libs demos + +libs: $(LIBCURSES) + +clean: + $(DELETE) *.o + $(DELETE) *.exe + $(DELETE) *.dll + $(DELETE) $(CLEAN) + +demos: $(DEMOS) +ifneq ($(DEBUG),Y) + strip *.exe +endif + +$(LIBCURSES) : $(LIBDEPS) + $(LIBEXE) $(LIBFLAGS) $@ $? $(LIBSADDED) + $(CP) pdcurses.a panel.a + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES) +panel.o : $(PANEL_HEADER) +terminfo.o: $(TERM_HEADER) + +$(LIBOBJS) : %.o: $(srcdir)/%.c + $(CC) -c $(CFLAGS) $< + +$(PDCOBJS) : %.o: $(osdir)/%.c + $(CC) -c $(CFLAGS) $(PDCCFLAGS) $< + +firework.exe ozdemo.exe newtest.exe ptest.exe rain.exe testcurs.exe \ +version.exe worm.exe xmas.exe: %.exe: $(demodir)/%.c + $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES) $(EXELIBS) + +tuidemo.exe: tuidemo.o tui.o + $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES) $(EXELIBS) + +tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H) + $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< + +tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H) + $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< + +PLATFORM1 = MinGW WinCon +PLATFORM2 = MinGW for WinCon +ARCNAME = pdc$(VER)_ming_wcon + +include $(PDCURSES_SRCDIR)/makedist.mif diff --git a/3rd-party/PDCurses/wincon/Makefile.vc b/3rd-party/PDCurses/wincon/Makefile.vc new file mode 100644 index 0000000..01d287c --- /dev/null +++ b/3rd-party/PDCurses/wincon/Makefile.vc @@ -0,0 +1,148 @@ +# Visual C++ & Intel(R) NMakefile for PDCurses library - Windows console VC++ 2.0+ +# +# Usage: nmake -f [path\]Makefile.vc [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] +# [ICC=] [CHTYPE_32=] [IX86=] [CHTYPE_16=] [INFOEX=N] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] +# CHTYPE_## is used to override the default 64-bit chtypes in favor +# of "traditional" 32- or 16-bit chtypes. (Untested for Windows console) +# IX86 is used to build 32-bit code instead of 64-bit +# ICC is used to invoke Intel (R) tools icl.exe and xilink.exe, instead of +# MS tools cl.exe and link.exe + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!ifdef IX86 +PLATFORM=IX86 +!else +PLATFORM=X64 +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\wincon + +PDCURSES_WIN_H = $(osdir)\pdcwin.h + +!ifdef ICC +CC = icl.exe -nologo +LINK = xilink.exe -nologo +!else +CC = cl.exe -nologo +LINK = link.exe -nologo +!endif + +!ifdef DEBUG +CFLAGS = -Z7 -DPDCDEBUG +LDFLAGS = -debug -pdb:none +!else +CFLAGS = -O1 +LDFLAGS = +!endif + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +!endif + +!ifdef UTF8 +UTF8OPT = -DPDC_FORCE_UTF8 +!endif + +!ifdef INFOEX +INFOPT = -DHAVE_NO_INFOEX +!endif + +!ifdef CHTYPE_32 +CHTYPE_FLAGS= -DCHTYPE_32 +!endif + +!ifdef CHTYPE_16 +CHTYPE_FLAGS= -DCHTYPE_16 +!endif + +SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /MACHINE:$(PLATFORM) /OUT:pdcurses.dll + +CCLIBS = user32.lib advapi32.lib +# may need to add msvcrt.lib for VC 2.x, VC 5.0 doesn't want it +#CCLIBS = msvcrt.lib user32.lib advapi32.lib + +LIBEXE = lib -nologo + +LIBCURSES = pdcurses.lib +CURSESDLL = pdcurses.dll + +!ifdef DLL +DLLOPT = -DPDC_DLL_BUILD +PDCLIBS = $(CURSESDLL) +!else +PDCLIBS = $(LIBCURSES) +!endif + +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c $(CFLAGS) $(CHTYPE_FLAGS) $(DLLOPT) \ +$(WIDEOPT) $(UTF8OPT) + +all: $(PDCLIBS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.dll + -del *.exp + -del *.res + +demos: $(DEMOS) + +DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) +panel.obj : $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +!ifndef DLL +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS) +!endif + +$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) pdcurses.obj + $(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(CCLIBS) + +pdcurses.res pdcurses.obj: $(osdir)\pdcurses.rc $(osdir)\pdcurses.ico + rc /r /fopdcurses.res $(osdir)\pdcurses.rc + cvtres /MACHINE:$(PLATFORM) /NOLOGO /OUT:pdcurses.obj pdcurses.res + +{$(srcdir)\}.c{}.obj:: + $(BUILD) $< + +{$(osdir)\}.c{}.obj:: + $(BUILD) $< + +{$(demodir)\}.c{}.obj:: + $(BUILD) $< + +.obj.exe: + $(LINK) $(LDFLAGS) $< $(LIBCURSES) $(CCLIBS) + +tuidemo.exe: tuidemo.obj tui.obj + $(LINK) $(LDFLAGS) $*.obj tui.obj $(LIBCURSES) $(CCLIBS) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Visual C++ +PLATFORM2 = Microsoft Visual C/C++ for Windows console +ARCNAME = pdc$(VER)_vc_wincon + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/wincon/Makefile.wcc b/3rd-party/PDCurses/wincon/Makefile.wcc new file mode 100644 index 0000000..5fd8a61 --- /dev/null +++ b/3rd-party/PDCurses/wincon/Makefile.wcc @@ -0,0 +1,56 @@ +# Watcom WMAKE Makefile for PDCurses library - Windows console Watcom C/C++ 10.6+ +# +# Usage: wmake -f [wincon\]Makefile.wcc [DEBUG=Y] [WIDE=Y] [UTF8=Y] +# [INFOEX=N] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +!ifdef %PDCURSES_SRCDIR +PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR) +!else +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif + +osdir = $(PDCURSES_SRCDIR)\wincon + +CC = wcc386 +TARGET = nt + +CFLAGS = /ei /zq /wx /i=$(PDCURSES_SRCDIR) + +!ifeq DEBUG Y +CFLAGS += /d2 /DPDCDEBUG +LDFLAGS = D W A op q sys $(TARGET) +!else +CFLAGS += /oneatx +LDFLAGS = op q sys $(TARGET) +!endif + +!ifeq WIDE Y +CFLAGS += /DPDC_WIDE +!endif + +!ifeq UTF8 Y +CFLAGS += /DPDC_FORCE_UTF8 +!endif + +!ifeq INFOEX N +CFLAGS += -DHAVE_NO_INFOEX +!endif + +LIBEXE = wlib /q /n /t + +!include $(PDCURSES_SRCDIR)\watcom.mif + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib + +PLATFORM1 = Watcom C++ WinCon +PLATFORM2 = Open Watcom 1.6 for Windows console +ARCNAME = pdc$(VER)_wcc_w32 + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/wincon/README.md b/3rd-party/PDCurses/wincon/README.md new file mode 100644 index 0000000..0224e84 --- /dev/null +++ b/3rd-party/PDCurses/wincon/README.md @@ -0,0 +1,89 @@ +PDCurses for Win32 +================== + +This directory contains PDCurses source code files specific to Win32 +console mode (Win95 and all subsequent forks of Windows). + +Building +-------- + + (Note that the following is almost identical to the instructions + for the Win32a GUI flavor of PDCurses.) + +- Choose the appropriate makefile for your compiler: + + Makefile.bcc - Borland C++ 4.0.2+ + Makefile.dmc - Digital Mars + Makefile.lcc - LCC-Win32 + Makefile.mng - MinGW, Cygnus GNU Compiler + Makefile.vc - Microsoft Visual C++ 2.0+ or later & Intel(R) compiler + Makefile.wcc - Open Watcom 1.8+ + +- Optionally, you can build in a different directory than the platform + directory by setting PDCURSES_SRCDIR to point to the directory where + you unpacked PDCurses, and changing to your target directory: + + set PDCURSES_SRCDIR=c:\pdcurses + + This won't work with the LCC or Digital Mars makefiles, nor will the + options described below. + +- Build it: + + make -f makefilename + + (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll + get the libraries (pdcurses.lib or .a, depending on your compiler; and + panel.lib or .a), the demos (*.exe), and a lot of object files. Note + that the panel library is just a copy of the main library, provided + for convenience; both panel and curses functions are in the main + library. + + You can also give the optional parameter "WIDE=Y", to build the + library with wide-character (Unicode) support: + + make -f Makefile.mng WIDE=Y + + When built this way, the library is not compatible with Windows 9x, + unless you also link with the Microsoft Layer for Unicode (not + tested). + + For the Intel(R) compiler, use Makefile.vc and add ICC=Y. + + By default, Makefile.vc results in 64-bit code for both VC and Intel(R). + Add IX86=Y to generate 32-bit code. (Other builds are 32-bit only.) + + Another option, "UTF8=Y", makes PDCurses ignore the system locale, and + treat all narrow-character strings as UTF-8. This option has no effect + unless WIDE=Y is also set. Use it to get around the poor support for + UTF-8 in the Win32 console: + + make -f Makefile.mng WIDE=Y UTF8=Y + + You can also use the optional parameter "DLL=Y" with Visual C++, + MinGW or Cygwin, to build the library as a DLL: + + nmake -f Makefile.vc WIDE=Y DLL=Y + + When you build the library as a Windows DLL, you must always define + PDC_DLL_BUILD when linking against it. (Or, if you only want to use + the DLL, you could add this definition to your curses.h.) + + If your build stops with errors about PCONSOLE_SCREEN_BUFFER_INFOEX, + add the parameter "INFOEX=N" to your make command line and try again. + (This will happen with older compile environments.) + + If cross-compiling from Linux, add the parameter `_w64=1` to get + 64-bit code (default will be 32-bit). + + make -f Makefile.mng _w64=1 [WIDE=Y UTF8=Y DLL=Y] + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + +Acknowledgements +---------------- + +Generic Win32 port was provided by Chris Szurgot diff --git a/3rd-party/PDCurses/wincon/pdcclip.c b/3rd-party/PDCurses/wincon/pdcclip.c new file mode 100644 index 0000000..0b86951 --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcclip.c @@ -0,0 +1,174 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +/*man-start************************************************************** + +clipboard +--------- + +### Synopsis + + int PDC_getclipboard(char **contents, long *length); + int PDC_setclipboard(const char *contents, long length); + int PDC_freeclipboard(char *contents); + int PDC_clearclipboard(void); + +### Description + + PDC_getclipboard() gets the textual contents of the system's + clipboard. This function returns the contents of the clipboard + in the contents argument. It is the responsibility of the + caller to free the memory returned, via PDC_freeclipboard(). + The length of the clipboard contents is returned in the length + argument. + + PDC_setclipboard copies the supplied text into the system's + clipboard, emptying the clipboard prior to the copy. + + PDC_clearclipboard() clears the internal clipboard. + +### Return Values + + indicator of success/failure of call. + PDC_CLIP_SUCCESS the call was successful + PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for + the clipboard contents + PDC_CLIP_EMPTY the clipboard contains no text + PDC_CLIP_ACCESS_ERROR no clipboard support + +### Portability + X/Open BSD SYS V + PDC_getclipboard - - - + PDC_setclipboard - - - + PDC_freeclipboard - - - + PDC_clearclipboard - - - + +**man-end****************************************************************/ + +#ifdef PDC_WIDE +# define PDC_TEXT CF_UNICODETEXT +#else +# define PDC_TEXT CF_OEMTEXT +#endif + +int PDC_getclipboard_handle( HANDLE *handle) +{ + PDC_LOG(("PDC_getclipboard() - called\n")); + + if (!OpenClipboard(NULL)) + { + return PDC_CLIP_ACCESS_ERROR; + } + + if ((*handle = GetClipboardData(PDC_TEXT)) == NULL) + { + CloseClipboard(); + return PDC_CLIP_EMPTY; + } + + return PDC_CLIP_SUCCESS; +} + +int PDC_getclipboard(char **contents, long *length) +{ + HANDLE handle; + int rval = PDC_getclipboard_handle( &handle); + + if( rval == PDC_CLIP_SUCCESS) + { + void *tptr = GlobalLock( handle); + + if( tptr) + { +#ifdef PDC_WIDE + size_t len = wcslen((wchar_t *)tptr) * 3; +#else + size_t len = strlen( tptr); +#endif + + *contents = (char *)GlobalAlloc( GMEM_FIXED, len + 1); + + if( !*contents) + rval = PDC_CLIP_MEMORY_ERROR; + else + { +#ifdef PDC_WIDE + len = PDC_wcstombs( (char *)*contents, tptr, len); +#else + strcpy((char *)*contents, tptr); +#endif + } + *length = (long)len; + GlobalUnlock( handle); + } + else + rval = PDC_CLIP_MEMORY_ERROR; + CloseClipboard(); + } + return rval; +} + +int PDC_setclipboard_raw( const char *contents, long length, + const bool translate_multibyte_to_wide_char) +{ + HGLOBAL handle; + LPTSTR buff; + + PDC_LOG(("PDC_setclipboard() - called\n")); + + if (!OpenClipboard(NULL)) + return PDC_CLIP_ACCESS_ERROR; + + handle = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, + (length + 1) * sizeof(TCHAR)); + + if (!handle) + return PDC_CLIP_MEMORY_ERROR; + + buff = GlobalLock(handle); + +#ifdef PDC_WIDE + if( translate_multibyte_to_wide_char) + PDC_mbstowcs((wchar_t *)buff, contents, length); + else + memcpy((char *)buff, contents, (length + 1) * sizeof( wchar_t)); +#else + memcpy((char *)buff, contents, length); + buff[length] = 0; /* ensure null termination */ +#endif + GlobalUnlock(handle); + EmptyClipboard(); + + if( !SetClipboardData(PDC_TEXT, handle)) + { + GlobalFree(handle); + return PDC_CLIP_ACCESS_ERROR; + } + + CloseClipboard(); + + return PDC_CLIP_SUCCESS; +} + +int PDC_setclipboard(const char *contents, long length) +{ + return( PDC_setclipboard_raw( contents, length, TRUE)); +} + +int PDC_freeclipboard(char *contents) +{ + PDC_LOG(("PDC_freeclipboard() - called\n")); + + GlobalFree(contents); + return PDC_CLIP_SUCCESS; +} + +int PDC_clearclipboard(void) +{ + PDC_LOG(("PDC_clearclipboard() - called\n")); + + EmptyClipboard(); + + return PDC_CLIP_SUCCESS; +} diff --git a/3rd-party/PDCurses/wincon/pdcdisp.c b/3rd-party/PDCurses/wincon/pdcdisp.c new file mode 100644 index 0000000..59bc698 --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcdisp.c @@ -0,0 +1,120 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +#include +#include + +#ifdef CHTYPE_LONG + +#ifdef PDC_WIDE + #define USE_UNICODE_ACS_CHARS 1 +#else + #define USE_UNICODE_ACS_CHARS 0 +#endif + +#include "acs_defs.h" + +#endif + +/* position hardware cursor at (y, x) */ + +void PDC_gotoyx(int row, int col) +{ + COORD coord; + + PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n", + row, col, SP->cursrow, SP->curscol)); + + coord.X = col; + coord.Y = row; + + SetConsoleCursorPosition(pdc_con_out, coord); +} + +/* update the given physical line to look like the corresponding line in + curscr */ + +/* NOTE: the original indexing into pdc_atrtab[] relied on three or five + attribute bits in 'chtype' being adjacent to the color bits. Such is + not the case for 64-bit chtypes (CHTYPE_LONG == 2), so we have to do + additional bit-fiddling for that situation. Code is similar in Win32 + and DOS flavors. (BJG) */ +#define MAX_UNICODE 0x10ffff +#define DUMMY_CHAR_NEXT_TO_FULLWIDTH (MAX_UNICODE + 1) + +/* see 'addch.c' for an explanation of how combining chars are handled. */ + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 && defined( PDC_WIDE) + #define USING_COMBINING_CHARACTER_SCHEME + int PDC_expand_combined_characters( const cchar_t c, cchar_t *added); /* addch.c */ +#endif + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + CHAR_INFO ci[512]; + int src, dst; + COORD bufSize, bufPos; + SMALL_RECT sr; + + PDC_LOG(("PDC_transform_line() - called: lineno=%d\n", lineno)); + + bufPos.X = bufPos.Y = 0; + + sr.Top = lineno; + sr.Bottom = lineno; + sr.Left = x; + sr.Right = x + len - 1; + + for (src = dst = 0; src < len; src++) +// if( (srcp[src] & A_CHARTEXT) != DUMMY_CHAR_NEXT_TO_FULLWIDTH) + { + const chtype ch = srcp[src]; + chtype char_out = ch & A_CHARTEXT; + +#if defined( CHTYPE_LONG) && (CHTYPE_LONG >= 2) + ci[dst].Attributes = pdc_atrtab[((ch >> PDC_ATTR_SHIFT) & 0x1f) + | (((ch >> PDC_COLOR_SHIFT) & 0xff) << 5)]; +#else + ci[dst].Attributes = pdc_atrtab[ch >> PDC_ATTR_SHIFT]; +#endif + +#ifdef CHTYPE_LONG + if( char_out == DUMMY_CHAR_NEXT_TO_FULLWIDTH) + char_out = ' '; + else if (ch & A_ALTCHARSET && !(ch & 0xff80)) + char_out = acs_map[ch & 0x7f]; + +#ifdef USING_COMBINING_CHARACTER_SCHEME + /* We can't actually display combining characters in cmd.exe. So + show the 'base' character and throw away the modifying marks. */ + if( char_out > MAX_UNICODE) + { + cchar_t added; + int n_combined = 0; + + while( (char_out = PDC_expand_combined_characters( char_out, + &added)) > MAX_UNICODE) + { + n_combined++; + } + } +#endif + if( char_out > 0xffff) /* SMP chars: use surrogates */ + { + ci[dst].Char.UnicodeChar = (WCHAR)( 0xd800 | (char_out>>10)); + ci[dst + 1] = ci[dst]; + dst++; + char_out = (chtype)( 0xdc00 | (char_out & 0x3ff)); + } +#endif + ci[dst].Char.UnicodeChar = (WCHAR)char_out; + + dst++; + } + + bufSize.X = dst; + bufSize.Y = 1; + + WriteConsoleOutput(pdc_con_out, ci, bufSize, bufPos, &sr); +} diff --git a/3rd-party/PDCurses/wincon/pdcgetsc.c b/3rd-party/PDCurses/wincon/pdcgetsc.c new file mode 100644 index 0000000..3e9d868 --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcgetsc.c @@ -0,0 +1,55 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ + CONSOLE_CURSOR_INFO ci; + + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + + GetConsoleCursorInfo(pdc_con_out, &ci); + + return ci.dwSize; +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ + CONSOLE_SCREEN_BUFFER_INFO scr; + + PDC_LOG(("PDC_get_rows() - called\n")); + + GetConsoleScreenBufferInfo(pdc_con_out, &scr); + + return scr.srWindow.Bottom - scr.srWindow.Top + 1; +} + +/* return number of buffer rows */ + +int PDC_get_buffer_rows(void) +{ + CONSOLE_SCREEN_BUFFER_INFO scr; + + PDC_LOG(("PDC_get_buffer_rows() - called\n")); + + GetConsoleScreenBufferInfo(pdc_con_out, &scr); + + return scr.dwSize.Y; +} + +/* return width of screen/viewport */ + +int PDC_get_columns(void) +{ + CONSOLE_SCREEN_BUFFER_INFO scr; + + PDC_LOG(("PDC_get_columns() - called\n")); + + GetConsoleScreenBufferInfo(pdc_con_out, &scr); + + return scr.srWindow.Right - scr.srWindow.Left + 1; +} diff --git a/3rd-party/PDCurses/wincon/pdckbd.c b/3rd-party/PDCurses/wincon/pdckbd.c new file mode 100644 index 0000000..125a9ae --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdckbd.c @@ -0,0 +1,791 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +/*man-start************************************************************** + +pdckbd +------ + +### Synopsis + + unsigned long PDC_get_input_fd(void); + +### Description + + PDC_get_input_fd() returns the file descriptor that PDCurses + reads its input from. It can be used for select(). + +### Portability + X/Open BSD SYS V + PDC_get_input_fd - - - + +**man-end****************************************************************/ + +unsigned long pdc_key_modifiers = 0L; + +/* These variables are used to store information about the next + Input Event. */ + +static INPUT_RECORD save_ip; +static MOUSE_STATUS old_mouse_status; +static DWORD event_count = 0; +static SHORT left_key; +static int key_count = 0; +static int save_press = 0; + +#define KEV save_ip.Event.KeyEvent +#define MEV save_ip.Event.MouseEvent +#define REV save_ip.Event.WindowBufferSizeEvent + +/************************************************************************ + * Table for key code translation of function keys in keypad mode * + * These values are for strict IBM keyboard compatibles only * + ************************************************************************/ + +typedef struct +{ + unsigned short normal; + unsigned short shift; + unsigned short control; + unsigned short alt; + unsigned short extended; +} KPTAB; + +static KPTAB kptab[] = +{ + {0, 0, 0, 0, 0 }, /* 0 */ + {0, 0, 0, 0, 0 }, /* 1 VK_LBUTTON */ + {0, 0, 0, 0, 0 }, /* 2 VK_RBUTTON */ + {CTL_PAUSE, 0, 0, 0, 0 }, /* 3 VK_CANCEL */ + {0, 0, 0, 0, 0 }, /* 4 VK_MBUTTON */ + {0, 0, 0, 0, 0 }, /* 5 */ + {0, 0, 0, 0, 0 }, /* 6 */ + {0, 0, 0, 0, 0 }, /* 7 */ + {0x08, 0x08, 0x7F, ALT_BKSP, 0 }, /* 8 VK_BACK */ + {0x09, KEY_BTAB, CTL_TAB, ALT_TAB, 999 }, /* 9 VK_TAB */ + {0, 0, 0, 0, 0 }, /* 10 */ + {0, 0, 0, 0, 0 }, /* 11 */ + {KEY_B2, 0x35, CTL_PAD5, ALT_PAD5, 0 }, /* 12 VK_CLEAR */ + {0x0D, 0x0D, CTL_ENTER, ALT_ENTER, 1 }, /* 13 VK_RETURN */ + {0, 0, 0, 0, 0 }, /* 14 */ + {0, 0, 0, 0, 0 }, /* 15 */ + {0, 0, 0, 0, 0 }, /* 16 VK_SHIFT HANDLED SEPARATELY */ + {0, 0, 0, 0, 0 }, /* 17 VK_CONTROL HANDLED SEPARATELY */ + {0, 0, 0, 0, 0 }, /* 18 VK_MENU HANDLED SEPARATELY */ + {KEY_PAUSE, KEY_SPAUSE,CTL_PAUSE, 0, 0 }, /* 19 VK_PAUSE */ + {0, 0, 0, 0, 0 }, /* 20 VK_CAPITAL HANDLED SEPARATELY */ + {0, 0, 0, 0, 0 }, /* 21 VK_HANGUL */ + {0, 0, 0, 0, 0 }, /* 22 */ + {0, 0, 0, 0, 0 }, /* 23 VK_JUNJA */ + {0, 0, 0, 0, 0 }, /* 24 VK_FINAL */ + {0, 0, 0, 0, 0 }, /* 25 VK_HANJA */ + {0, 0, 0, 0, 0 }, /* 26 */ + {0x1B, 0x1B, 0x1B, ALT_ESC, 0 }, /* 27 VK_ESCAPE */ + {0, 0, 0, 0, 0 }, /* 28 VK_CONVERT */ + {0, 0, 0, 0, 0 }, /* 29 VK_NONCONVERT */ + {0, 0, 0, 0, 0 }, /* 30 VK_ACCEPT */ + {0, 0, 0, 0, 0 }, /* 31 VK_MODECHANGE */ + {0x20, 0x20, 0x20, 0x20, 0 }, /* 32 VK_SPACE */ + {KEY_A3, 0x39, CTL_PAD9, ALT_PAD9, 3 }, /* 33 VK_PRIOR */ + {KEY_C3, 0x33, CTL_PAD3, ALT_PAD3, 4 }, /* 34 VK_NEXT */ + {KEY_C1, 0x31, CTL_PAD1, ALT_PAD1, 5 }, /* 35 VK_END */ + {KEY_A1, 0x37, CTL_PAD7, ALT_PAD7, 6 }, /* 36 VK_HOME */ + {KEY_B1, 0x34, CTL_PAD4, ALT_PAD4, 7 }, /* 37 VK_LEFT */ + {KEY_A2, 0x38, CTL_PAD8, ALT_PAD8, 8 }, /* 38 VK_UP */ + {KEY_B3, 0x36, CTL_PAD6, ALT_PAD6, 9 }, /* 39 VK_RIGHT */ + {KEY_C2, 0x32, CTL_PAD2, ALT_PAD2, 10 }, /* 40 VK_DOWN */ + {0, 0, 0, 0, 0 }, /* 41 VK_SELECT */ + {0, 0, 0, 0, 0 }, /* 42 VK_PRINT */ + {0, 0, 0, 0, 0 }, /* 43 VK_EXECUTE */ + {KEY_PRINTSCREEN, 0, 0, ALT_PRINTSCREEN, 0 }, /* 44 VK_SNAPSHOT*/ + {PAD0, 0x30, CTL_PAD0, ALT_PAD0, 11 }, /* 45 VK_INSERT */ + {PADSTOP, 0x2E, CTL_PADSTOP, ALT_PADSTOP,12 }, /* 46 VK_DELETE */ + {0, 0, 0, 0, 0 }, /* 47 VK_HELP */ + {0x30, 0x29, CTL_0, ALT_0, 0 }, /* 48 */ + {0x31, 0x21, CTL_1, ALT_1, 0 }, /* 49 */ + {0x32, 0x40, CTL_2, ALT_2, 0 }, /* 50 */ + {0x33, 0x23, CTL_3, ALT_3, 0 }, /* 51 */ + {0x34, 0x24, CTL_4, ALT_4, 0 }, /* 52 */ + {0x35, 0x25, CTL_5, ALT_5, 0 }, /* 53 */ + {0x36, 0x5E, CTL_6, ALT_6, 0 }, /* 54 */ + {0x37, 0x26, CTL_7, ALT_7, 0 }, /* 55 */ + {0x38, 0x2A, CTL_8, ALT_8, 0 }, /* 56 */ + {0x39, 0x28, CTL_9, ALT_9, 0 }, /* 57 */ + {0, 0, 0, 0, 0 }, /* 58 */ + {0, 0, 0, 0, 0 }, /* 59 */ + {0, 0, 0, 0, 0 }, /* 60 */ + {0, 0, 0, 0, 0 }, /* 61 */ + {0, 0, 0, 0, 0 }, /* 62 */ + {0, 0, 0, 0, 0 }, /* 63 */ + {0, 0, 0, 0, 0 }, /* 64 */ + {0x61, 0x41, 0x01, ALT_A, 0 }, /* 65 */ + {0x62, 0x42, 0x02, ALT_B, 0 }, /* 66 */ + {0x63, 0x43, 0x03, ALT_C, 0 }, /* 67 */ + {0x64, 0x44, 0x04, ALT_D, 0 }, /* 68 */ + {0x65, 0x45, 0x05, ALT_E, 0 }, /* 69 */ + {0x66, 0x46, 0x06, ALT_F, 0 }, /* 70 */ + {0x67, 0x47, 0x07, ALT_G, 0 }, /* 71 */ + {0x68, 0x48, 0x08, ALT_H, 0 }, /* 72 */ + {0x69, 0x49, 0x09, ALT_I, 0 }, /* 73 */ + {0x6A, 0x4A, 0x0A, ALT_J, 0 }, /* 74 */ + {0x6B, 0x4B, 0x0B, ALT_K, 0 }, /* 75 */ + {0x6C, 0x4C, 0x0C, ALT_L, 0 }, /* 76 */ + {0x6D, 0x4D, 0x0D, ALT_M, 0 }, /* 77 */ + {0x6E, 0x4E, 0x0E, ALT_N, 0 }, /* 78 */ + {0x6F, 0x4F, 0x0F, ALT_O, 0 }, /* 79 */ + {0x70, 0x50, 0x10, ALT_P, 0 }, /* 80 */ + {0x71, 0x51, 0x11, ALT_Q, 0 }, /* 81 */ + {0x72, 0x52, 0x12, ALT_R, 0 }, /* 82 */ + {0x73, 0x53, 0x13, ALT_S, 0 }, /* 83 */ + {0x74, 0x54, 0x14, ALT_T, 0 }, /* 84 */ + {0x75, 0x55, 0x15, ALT_U, 0 }, /* 85 */ + {0x76, 0x56, 0x16, ALT_V, 0 }, /* 86 */ + {0x77, 0x57, 0x17, ALT_W, 0 }, /* 87 */ + {0x78, 0x58, 0x18, ALT_X, 0 }, /* 88 */ + {0x79, 0x59, 0x19, ALT_Y, 0 }, /* 89 */ + {0x7A, 0x5A, 0x1A, ALT_Z, 0 }, /* 90 */ + {0, 0, 0, 0, 0 }, /* 91 VK_LWIN */ + {0, 0, 0, 0, 0 }, /* 92 VK_RWIN */ + {KEY_APPS, KEY_SAPPS, CTL_APPS, ALT_APPS, 13 }, /* 93 VK_APPS */ + {0, 0, 0, 0, 0 }, /* 94 */ + {0, 0, 0, 0, 0 }, /* 95 */ + {0x30, 0, CTL_PAD0, ALT_PAD0, 0 }, /* 96 VK_NUMPAD0 */ + {0x31, 0, CTL_PAD1, ALT_PAD1, 0 }, /* 97 VK_NUMPAD1 */ + {0x32, 0, CTL_PAD2, ALT_PAD2, 0 }, /* 98 VK_NUMPAD2 */ + {0x33, 0, CTL_PAD3, ALT_PAD3, 0 }, /* 99 VK_NUMPAD3 */ + {0x34, 0, CTL_PAD4, ALT_PAD4, 0 }, /* 100 VK_NUMPAD4 */ + {0x35, 0, CTL_PAD5, ALT_PAD5, 0 }, /* 101 VK_NUMPAD5 */ + {0x36, 0, CTL_PAD6, ALT_PAD6, 0 }, /* 102 VK_NUMPAD6 */ + {0x37, 0, CTL_PAD7, ALT_PAD7, 0 }, /* 103 VK_NUMPAD7 */ + {0x38, 0, CTL_PAD8, ALT_PAD8, 0 }, /* 104 VK_NUMPAD8 */ + {0x39, 0, CTL_PAD9, ALT_PAD9, 0 }, /* 105 VK_NUMPAD9 */ + {PADSTAR, SHF_PADSTAR,CTL_PADSTAR, ALT_PADSTAR,999 }, /* 106 VK_MULTIPLY*/ + {PADPLUS, SHF_PADPLUS,CTL_PADPLUS, ALT_PADPLUS,999 }, /* 107 VK_ADD */ + {0, 0, 0, 0, 0 }, /* 108 VK_SEPARATOR */ + {PADMINUS, SHF_PADMINUS,CTL_PADMINUS,ALT_PADMINUS,999}, /* 109 VK_SUBTRACT*/ + {0x2E, 0, CTL_PADSTOP, ALT_PADSTOP,0 }, /* 110 VK_DECIMAL */ + {PADSLASH, SHF_PADSLASH,CTL_PADSLASH,ALT_PADSLASH,2 }, /* 111 VK_DIVIDE */ + {KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37), 0 }, /* 112 VK_F1 */ + {KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38), 0 }, /* 113 VK_F2 */ + {KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39), 0 }, /* 114 VK_F3 */ + {KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40), 0 }, /* 115 VK_F4 */ + {KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41), 0 }, /* 116 VK_F5 */ + {KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42), 0 }, /* 117 VK_F6 */ + {KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43), 0 }, /* 118 VK_F7 */ + {KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44), 0 }, /* 119 VK_F8 */ + {KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45), 0 }, /* 120 VK_F9 */ + {KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46), 0 }, /* 121 VK_F10 */ + {KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47), 0 }, /* 122 VK_F11 */ + {KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48), 0 }, /* 123 VK_F12 */ + + /* 124 through 218 */ + + {0, 0, 0, 0, 0}, /* 124 VK_F13 */ + {0, 0, 0, 0, 0}, /* 125 VK_F14 */ + {0, 0, 0, 0, 0}, /* 126 VK_F15 */ + {0, 0, 0, 0, 0}, /* 127 VK_F16 */ + {0, 0, 0, 0, 0}, /* 128 VK_F17 */ + {0, 0, 0, 0, 0}, /* 129 VK_F18 */ + {0, 0, 0, 0, 0}, /* 130 VK_F19 */ + {0, 0, 0, 0, 0}, /* 131 VK_F20 */ + {0, 0, 0, 0, 0}, /* 132 VK_F21 */ + {0, 0, 0, 0, 0}, /* 133 VK_F22 */ + {0, 0, 0, 0, 0}, /* 134 VK_F23 */ + {0, 0, 0, 0, 0}, /* 135 VK_F24 */ + {0, 0, 0, 0, 0}, /* 136 unassigned */ + {0, 0, 0, 0, 0}, /* 137 unassigned */ + {0, 0, 0, 0, 0}, /* 138 unassigned */ + {0, 0, 0, 0, 0}, /* 139 unassigned */ + {0, 0, 0, 0, 0}, /* 140 unassigned */ + {0, 0, 0, 0, 0}, /* 141 unassigned */ + {0, 0, 0, 0, 0}, /* 142 unassigned */ + {0, 0, 0, 0, 0}, /* 143 unassigned */ + {0, 0, 0, 0, 0}, /* 144 VK_NUMLOCK */ + {KEY_SCROLLLOCK, 0, 0, ALT_SCROLLLOCK, 0}, /* 145 VKSCROLL */ + {0, 0, 0, 0, 0}, /* 146 OEM specific */ + {0, 0, 0, 0, 0}, /* 147 OEM specific */ + {0, 0, 0, 0, 0}, /* 148 OEM specific */ + {0, 0, 0, 0, 0}, /* 149 OEM specific */ + {0, 0, 0, 0, 0}, /* 150 OEM specific */ + {0, 0, 0, 0, 0}, /* 151 Unassigned */ + {0, 0, 0, 0, 0}, /* 152 Unassigned */ + {0, 0, 0, 0, 0}, /* 153 Unassigned */ + {0, 0, 0, 0, 0}, /* 154 Unassigned */ + {0, 0, 0, 0, 0}, /* 155 Unassigned */ + {0, 0, 0, 0, 0}, /* 156 Unassigned */ + {0, 0, 0, 0, 0}, /* 157 Unassigned */ + {0, 0, 0, 0, 0}, /* 158 Unassigned */ + {0, 0, 0, 0, 0}, /* 159 Unassigned */ + {0, 0, 0, 0, 0}, /* 160 VK_LSHIFT */ + {0, 0, 0, 0, 0}, /* 161 VK_RSHIFT */ + {0, 0, 0, 0, 0}, /* 162 VK_LCONTROL */ + {0, 0, 0, 0, 0}, /* 163 VK_RCONTROL */ + {0, 0, 0, 0, 0}, /* 164 VK_LMENU */ + {0, 0, 0, 0, 0}, /* 165 VK_RMENU */ + {0, 0, 0, 0, 14}, /* 166 VK_BROWSER_BACK */ + {0, 0, 0, 0, 15}, /* 167 VK_BROWSER_FORWARD */ + {0, 0, 0, 0, 16}, /* 168 VK_BROWSER_REFRESH */ + {0, 0, 0, 0, 17}, /* 169 VK_BROWSER_STOP */ + {0, 0, 0, 0, 18}, /* 170 VK_BROWSER_SEARCH */ + {0, 0, 0, 0, 19}, /* 171 VK_BROWSER_FAVORITES */ + {0, 0, 0, 0, 20}, /* 172 VK_BROWSER_HOME */ + {0, 0, 0, 0, 21}, /* 173 VK_VOLUME_MUTE */ + {0, 0, 0, 0, 22}, /* 174 VK_VOLUME_DOWN */ + {0, 0, 0, 0, 23}, /* 175 VK_VOLUME_UP */ + {0, 0, 0, 0, 24}, /* 176 VK_MEDIA_NEXT_TRACK */ + {0, 0, 0, 0, 25}, /* 177 VK_MEDIA_PREV_TRACK */ + {0, 0, 0, 0, 26}, /* 178 VK_MEDIA_STOP */ + {0, 0, 0, 0, 27}, /* 179 VK_MEDIA_PLAY_PAUSE */ + {0, 0, 0, 0, 28}, /* 180 VK_LAUNCH_MAIL */ + {0, 0, 0, 0, 29}, /* 181 VK_LAUNCH_MEDIA_SELECT */ + {0, 0, 0, 0, 30}, /* 182 VK_LAUNCH_APP1 */ + {0, 0, 0, 0, 31}, /* 183 VK_LAUNCH_APP2 */ + {0, 0, 0, 0, 0}, /* 184 Reserved */ + {0, 0, 0, 0, 0}, /* 185 Reserved */ + {';', ':', CTL_SEMICOLON, ALT_SEMICOLON, 0}, /* 186 VK_OEM_1 */ + {'=', '+', CTL_EQUAL, ALT_EQUAL, 0}, /* 187 VK_OEM_PLUS */ + {',', '<', CTL_COMMA, ALT_COMMA, 0}, /* 188 VK_OEM_COMMA */ + {'-', '_', CTL_MINUS, ALT_MINUS, 0}, /* 189 VK_OEM_MINUS */ + {'.', '>', CTL_STOP, ALT_STOP, 0}, /* 190 VK_OEM_PERIOD */ + {'/', '?', CTL_FSLASH, ALT_FSLASH, 0}, /* 191 VK_OEM_2 */ + {'`', '~', CTL_BQUOTE, ALT_BQUOTE, 0}, /* 192 VK_OEM_3 */ + {0, 0, 0, 0, 0}, /* 193 */ + {0, 0, 0, 0, 0}, /* 194 */ + {0, 0, 0, 0, 0}, /* 195 */ + {0, 0, 0, 0, 0}, /* 196 */ + {0, 0, 0, 0, 0}, /* 197 */ + {0, 0, 0, 0, 0}, /* 198 */ + {0, 0, 0, 0, 0}, /* 199 */ + {0, 0, 0, 0, 0}, /* 200 */ + {0, 0, 0, 0, 0}, /* 201 */ + {0, 0, 0, 0, 0}, /* 202 */ + {0, 0, 0, 0, 0}, /* 203 */ + {0, 0, 0, 0, 0}, /* 204 */ + {0, 0, 0, 0, 0}, /* 205 */ + {0, 0, 0, 0, 0}, /* 206 */ + {0, 0, 0, 0, 0}, /* 207 */ + {0, 0, 0, 0, 0}, /* 208 */ + {0, 0, 0, 0, 0}, /* 209 */ + {0, 0, 0, 0, 0}, /* 210 */ + {0, 0, 0, 0, 0}, /* 211 */ + {0, 0, 0, 0, 0}, /* 212 */ + {0, 0, 0, 0, 0}, /* 213 */ + {0, 0, 0, 0, 0}, /* 214 */ + {0, 0, 0, 0, 0}, /* 215 */ + {0, 0, 0, 0, 0}, /* 216 */ + {0, 0, 0, 0, 0}, /* 217 */ + {0, 0, 0, 0, 0}, /* 218 */ + {0x5B, 0x7B, 0x1B, ALT_LBRACKET,0 }, /* 219 VK_OEM_4 */ + {0x5C, 0x7C, 0x1C, ALT_BSLASH, 0 }, /* 220 VK_OEM_5 */ + {0x5D, 0x7D, 0x1D, ALT_RBRACKET,0 }, /* 221 VK_OEM_6 */ + {'\'', '"', 0x27, ALT_FQUOTE, 0 }, /* 222 VK_OEM_7 */ + {0, 0, 0, 0, 0 }, /* 223 VK_OEM_8 */ + {0, 0, 0, 0, 0 }, /* 224 */ + {0, 0, 0, 0, 0 } /* 225 */ +}; + +static const KPTAB ext_kptab[] = +{ + {0, 0, 0, 0, }, /* 0 MUST BE EMPTY */ + {PADENTER, SHF_PADENTER, CTL_PADENTER, ALT_PADENTER}, /* 1 13 */ + {PADSLASH, SHF_PADSLASH, CTL_PADSLASH, ALT_PADSLASH}, /* 2 111 */ + {KEY_PPAGE, KEY_SPREVIOUS, CTL_PGUP, ALT_PGUP }, /* 3 33 */ + {KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN }, /* 4 34 */ + {KEY_END, KEY_SEND, CTL_END, ALT_END }, /* 5 35 */ + {KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME }, /* 6 36 */ + {KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT }, /* 7 37 */ + {KEY_UP, KEY_SUP, CTL_UP, ALT_UP }, /* 8 38 */ + {KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT }, /* 9 39 */ + {KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN }, /* 10 40 */ + {KEY_IC, KEY_SIC, CTL_INS, ALT_INS }, /* 11 45 */ + {KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL }, /* 12 46 */ + {KEY_APPS, KEY_SAPPS , CTL_APPS, ALT_APPS }, /* 13 93 VK_APPS */ + {KEY_BROWSER_BACK, KEY_SBROWSER_BACK, KEY_CBROWSER_BACK, KEY_ABROWSER_BACK, }, /* 14 166 VK_BROWSER_BACK */ + {KEY_BROWSER_FWD, KEY_SBROWSER_FWD, KEY_CBROWSER_FWD, KEY_ABROWSER_FWD, }, /* 15 167 VK_BROWSER_FORWARD */ + {KEY_BROWSER_REF, KEY_SBROWSER_REF, KEY_CBROWSER_REF, KEY_ABROWSER_REF, }, /* 16 168 VK_BROWSER_REFRESH */ + {KEY_BROWSER_STOP, KEY_SBROWSER_STOP, KEY_CBROWSER_STOP, KEY_ABROWSER_STOP, }, /* 17 169 VK_BROWSER_STOP */ + {KEY_SEARCH, KEY_SSEARCH, KEY_CSEARCH, KEY_ASEARCH, }, /* 18 170 VK_BROWSER_SEARCH */ + {KEY_FAVORITES, KEY_SFAVORITES, KEY_CFAVORITES, KEY_AFAVORITES, }, /* 19 171 VK_BROWSER_FAVORITES */ + {KEY_BROWSER_HOME, KEY_SBROWSER_HOME, KEY_CBROWSER_HOME, KEY_ABROWSER_HOME, }, /* 20 172 VK_BROWSER_HOME */ + {KEY_VOLUME_MUTE, KEY_SVOLUME_MUTE, KEY_CVOLUME_MUTE, KEY_AVOLUME_MUTE, }, /* 21 173 VK_VOLUME_MUTE */ + {KEY_VOLUME_DOWN, KEY_SVOLUME_DOWN, KEY_CVOLUME_DOWN, KEY_AVOLUME_DOWN, }, /* 22 174 VK_VOLUME_DOWN */ + {KEY_VOLUME_UP, KEY_SVOLUME_UP, KEY_CVOLUME_UP, KEY_AVOLUME_UP, }, /* 23 175 VK_VOLUME_UP */ + {KEY_NEXT_TRACK, KEY_SNEXT_TRACK, KEY_CNEXT_TRACK, KEY_ANEXT_TRACK, }, /* 24 176 VK_MEDIA_NEXT_TRACK */ + {KEY_PREV_TRACK, KEY_SPREV_TRACK, KEY_CPREV_TRACK, KEY_APREV_TRACK, }, /* 25 177 VK_MEDIA_PREV_TRACK */ + {KEY_MEDIA_STOP, KEY_SMEDIA_STOP, KEY_CMEDIA_STOP, KEY_AMEDIA_STOP, }, /* 26 178 VK_MEDIA_STOP */ + {KEY_PLAY_PAUSE, KEY_SPLAY_PAUSE, KEY_CPLAY_PAUSE, KEY_APLAY_PAUSE, }, /* 27 179 VK_MEDIA_PLAY_PAUSE */ + {KEY_LAUNCH_MAIL, KEY_SLAUNCH_MAIL, KEY_CLAUNCH_MAIL, KEY_ALAUNCH_MAIL, }, /* 28 180 VK_LAUNCH_MAIL */ + {KEY_MEDIA_SELECT, KEY_SMEDIA_SELECT, KEY_CMEDIA_SELECT, KEY_AMEDIA_SELECT, }, /* 29 181 VK_LAUNCH_MEDIA_SELECT */ + {KEY_LAUNCH_APP1, KEY_SLAUNCH_APP1, KEY_CLAUNCH_APP1, KEY_ALAUNCH_APP1, }, /* 30 182 VK_LAUNCH_APP1 */ + {KEY_LAUNCH_APP2, KEY_SLAUNCH_APP2, KEY_CLAUNCH_APP2, KEY_ALAUNCH_APP2, }, /* 31 183 VK_LAUNCH_APP2 */ +}; + +/* End of kptab[] */ + +unsigned long PDC_get_input_fd(void) +{ + PDC_LOG(("PDC_get_input_fd() - called\n")); + + return 0L; +} + +void PDC_set_keyboard_binary(bool on) +{ + PDC_LOG(("PDC_set_keyboard_binary() - called\n")); +} + +/* check if a key or mouse event is waiting */ + +bool PDC_check_key(void) +{ + if (key_count > 0) + return TRUE; + + GetNumberOfConsoleInputEvents(pdc_con_in, &event_count); + + return (event_count != 0); +} + +/* _get_key_count returns 0 if save_ip doesn't contain an event which + should be passed back to the user. This function filters "useless" + events. + + The function returns the number of keys waiting. This may be > 1 + if the repetition of real keys pressed so far are > 1. + + Returns 0 on NUMLOCK, CAPSLOCK, SCROLLLOCK. + + Returns 1 for SHIFT, ALT, CTRL only if no other key has been pressed + in between, and SP->return_key_modifiers is set; these are returned + on keyup. + + Normal keys are returned on keydown only. The number of repetitions + are returned. Dead keys (diacritics) are omitted. See below for a + description. +*/ + +static int repeat_count = 0; + +static int _get_key_count(void) +{ + int num_keys = 0, vk; + static int prev_vk = 0; + + PDC_LOG(("_get_key_count() - called\n")); + + vk = KEV.wVirtualKeyCode; + + if (KEV.bKeyDown) + { + /* key down */ + + save_press = 0; + + if (vk == VK_CAPITAL || vk == VK_NUMLOCK || vk == VK_SCROLL) + { + /* throw away these modifiers */ + } + else if (vk == VK_SHIFT || vk == VK_CONTROL || vk == VK_MENU) + { + /* These keys are returned on keyup only. */ + + save_press = vk; + switch (vk) + { + case VK_SHIFT: + left_key = GetKeyState(VK_LSHIFT); + break; + case VK_CONTROL: + left_key = GetKeyState(VK_LCONTROL); + break; + case VK_MENU: + left_key = GetKeyState(VK_LMENU); + } + } + else + { + /* Check for diacritics. These are dead keys. Some locales + have modified characters like umlaut-a, which is an "a" + with two dots on it. In some locales you have to press a + special key (the dead key) immediately followed by the + "a" to get a composed umlaut-a. The special key may have + a normal meaning with different modifiers. */ + + if (KEV.uChar.UnicodeChar || !(MapVirtualKey(vk, 2) & 0x80000000)) + num_keys = KEV.wRepeatCount; + } + if( vk == prev_vk) + repeat_count++; + else + repeat_count = 0; + prev_vk = vk; + } + else + { + /* key up */ + + /* Only modifier keys or the results of ALT-numpad entry are + returned on keyup */ + + if ((vk == VK_MENU && KEV.uChar.UnicodeChar) || + ((vk == VK_SHIFT || vk == VK_CONTROL || vk == VK_MENU) && + vk == save_press)) + { + save_press = 0; + num_keys = 1; + } + repeat_count = prev_vk = 0; + } + + PDC_LOG(("_get_key_count() - returning: num_keys %d\n", num_keys)); + + return num_keys; +} + +/* _process_key_event returns -1 if the key in save_ip should be + ignored. Otherwise it returns the keycode which should be returned + by PDC_get_key(). save_ip must be a key event. + + CTRL-ALT support has been disabled, when is it emitted plainly? */ + +static int _process_key_event(void) +{ + int key = (unsigned short)KEV.uChar.UnicodeChar; + WORD vk = KEV.wVirtualKeyCode; + DWORD state = KEV.dwControlKeyState; + + int idx; + BOOL enhanced; + + SP->key_code = TRUE; + + /* Save the key modifiers if required. Do this first to allow to + detect e.g. a pressed CTRL key after a hit of NUMLOCK. */ + + if (SP->save_key_modifiers) + { + if (state & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)) + pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT; + + if (state & SHIFT_PRESSED) + pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT; + + if (state & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED)) + pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL; + + if (state & NUMLOCK_ON) + pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK; + + if( repeat_count) + pdc_key_modifiers |= PDC_KEY_MODIFIER_REPEAT; + } + + /* Handle modifier keys hit by themselves */ + + switch (vk) + { + case VK_SHIFT: /* shift */ + if (!SP->return_key_modifiers) + return -1; + + return (left_key & 0x8000) ? KEY_SHIFT_L : KEY_SHIFT_R; + + case VK_CONTROL: /* control */ + if (!SP->return_key_modifiers) + return -1; + + return (left_key & 0x8000) ? KEY_CONTROL_L : KEY_CONTROL_R; + + case VK_MENU: /* alt */ + if (!key) + { + if (!SP->return_key_modifiers) + return -1; + + return (left_key & 0x8000) ? KEY_ALT_L : KEY_ALT_R; + } + } + + /* The system may emit Ascii or Unicode characters depending on + whether ReadConsoleInputA or ReadConsoleInputW is used. + + Normally, if key != 0 then the system did the translation + successfully. But this is not true for LEFT_ALT (different to + RIGHT_ALT). In case of LEFT_ALT we can get key != 0. So + check for this first. */ + + if (key && ( !(state & LEFT_ALT_PRESSED) || + (state & RIGHT_ALT_PRESSED) )) + { + /* This code should catch all keys returning a printable + character. Characters above 0x7F should be returned as + positive codes. */ + + if (kptab[vk].extended == 0) + { + SP->key_code = FALSE; + return key; + } + } + + /* This case happens if a functional key has been entered. */ + + if ((state & ENHANCED_KEY) && (kptab[vk].extended != 999)) + { + enhanced = TRUE; + idx = kptab[vk].extended; + } + else + { + enhanced = FALSE; + idx = vk; + } + + if (state & SHIFT_PRESSED) + key = enhanced ? ext_kptab[idx].shift : kptab[idx].shift; + + else if (state & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED)) + key = enhanced ? ext_kptab[idx].control : kptab[idx].control; + + else if (state & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)) + key = enhanced ? ext_kptab[idx].alt : kptab[idx].alt; + + else + key = enhanced ? ext_kptab[idx].normal : kptab[idx].normal; + + if (key < KEY_CODE_YES) + SP->key_code = FALSE; + + return key; +} + +static int _process_mouse_event(void) +{ + static const DWORD button_mask[] = {1, 4, 2}; + short action, shift_flags = 0; + int i; + + save_press = 0; + SP->key_code = TRUE; + + memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS)); + + /* Handle scroll wheel */ + + if (MEV.dwEventFlags == 4) + { + pdc_mouse_status.changes = (MEV.dwButtonState & 0xFF000000) ? + PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP; + + pdc_mouse_status.x = -1; + pdc_mouse_status.y = -1; + + memset(&old_mouse_status, 0, sizeof(old_mouse_status)); + + return KEY_MOUSE; + } + + if (MEV.dwEventFlags == 8) + { + pdc_mouse_status.changes = (MEV.dwButtonState & 0xFF000000) ? + PDC_MOUSE_WHEEL_RIGHT : PDC_MOUSE_WHEEL_LEFT; + + pdc_mouse_status.x = -1; + pdc_mouse_status.y = -1; + + memset(&old_mouse_status, 0, sizeof(old_mouse_status)); + + return KEY_MOUSE; + } + + action = (MEV.dwEventFlags == 2) ? BUTTON_DOUBLE_CLICKED : + ((MEV.dwEventFlags == 1) ? BUTTON_MOVED : BUTTON_PRESSED); + + for (i = 0; i < 3; i++) + pdc_mouse_status.button[i] = + (MEV.dwButtonState & button_mask[i]) ? action : 0; + + if (action == BUTTON_PRESSED && MEV.dwButtonState & 7 && SP->mouse_wait) + { + /* Check for a click -- a PRESS followed immediately by a release */ + + if (!event_count) + { + napms(SP->mouse_wait); + + GetNumberOfConsoleInputEvents(pdc_con_in, &event_count); + } + + if (event_count) + { + INPUT_RECORD ip; + DWORD count; + bool have_click = FALSE; + + PeekConsoleInput(pdc_con_in, &ip, 1, &count); + + for (i = 0; i < 3; i++) + { + if (pdc_mouse_status.button[i] == BUTTON_PRESSED && + !(ip.Event.MouseEvent.dwButtonState & button_mask[i])) + { + pdc_mouse_status.button[i] = BUTTON_CLICKED; + have_click = TRUE; + } + } + + /* If a click was found, throw out the event */ + + if (have_click) + ReadConsoleInput(pdc_con_in, &ip, 1, &count); + } + } + + pdc_mouse_status.x = MEV.dwMousePosition.X; + pdc_mouse_status.y = MEV.dwMousePosition.Y; + + pdc_mouse_status.changes = 0; + + for (i = 0; i < 3; i++) + { + if (old_mouse_status.button[i] != pdc_mouse_status.button[i]) + pdc_mouse_status.changes |= (1 << i); + + if (pdc_mouse_status.button[i] == BUTTON_MOVED) + { + /* Discard non-moved "moves" */ + + if (pdc_mouse_status.x == old_mouse_status.x && + pdc_mouse_status.y == old_mouse_status.y) + return -1; + + /* Motion events always flag the button as changed */ + + pdc_mouse_status.changes |= (1 << i); + pdc_mouse_status.changes |= PDC_MOUSE_MOVED; + break; + } + } + + old_mouse_status = pdc_mouse_status; + + /* Treat click events as release events for comparison purposes */ + + for (i = 0; i < 3; i++) + { + if (old_mouse_status.button[i] == BUTTON_CLICKED || + old_mouse_status.button[i] == BUTTON_DOUBLE_CLICKED) + old_mouse_status.button[i] = BUTTON_RELEASED; + } + + /* Check for SHIFT/CONTROL/ALT */ + + if (MEV.dwControlKeyState & (LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)) + shift_flags |= BUTTON_ALT; + + if (MEV.dwControlKeyState & (LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED)) + shift_flags |= BUTTON_CONTROL; + + if (MEV.dwControlKeyState & SHIFT_PRESSED) + shift_flags |= BUTTON_SHIFT; + + if (shift_flags) + { + for (i = 0; i < 3; i++) + { + if (pdc_mouse_status.changes & (1 << i)) + pdc_mouse_status.button[i] |= shift_flags; + } + } + + return KEY_MOUSE; +} + +int pdc_resizeX, pdc_resizeY; + +/* return the next available key or mouse event */ + +int PDC_get_key(void) +{ + pdc_key_modifiers = 0L; + + if (!key_count) + { + DWORD count; + + ReadConsoleInput(pdc_con_in, &save_ip, 1, &count); + event_count--; + + if (save_ip.EventType == MOUSE_EVENT || + save_ip.EventType == WINDOW_BUFFER_SIZE_EVENT) + key_count = 1; + else if (save_ip.EventType == KEY_EVENT) + key_count = _get_key_count(); + else if (save_ip.EventType == WINDOW_BUFFER_SIZE_EVENT) + key_count = 1; + } + + if (key_count) + { + key_count--; + + switch (save_ip.EventType) + { + case KEY_EVENT: + return _process_key_event(); + + case MOUSE_EVENT: + return _process_mouse_event(); + + case WINDOW_BUFFER_SIZE_EVENT: + if (REV.dwSize.Y != LINES || REV.dwSize.X != COLS) + { + if (!SP->resized) + { + SP->resized = TRUE; + SP->key_code = TRUE; + return KEY_RESIZE; + } + } + } + } + + return -1; +} + +/* discard any pending keyboard or mouse input -- this is the core + routine for flushinp() */ + +void PDC_flushinp(void) +{ + PDC_LOG(("PDC_flushinp() - called\n")); + + FlushConsoleInputBuffer(pdc_con_in); +} + +bool PDC_has_mouse( void) +{ + return TRUE; +} + +int PDC_mouse_set(void) +{ + /* If turning on mouse input: Set ENABLE_MOUSE_INPUT, and clear + all other flags, including the extended flags; + If turning off the mouse: Set QuickEdit Mode to the status it + had on startup, and clear all other flags */ + + SetConsoleMode(pdc_con_in, SP->_trap_mbe ? + (ENABLE_MOUSE_INPUT|0x0088) : (pdc_quick_edit|0x0088)); + + memset(&old_mouse_status, 0, sizeof(old_mouse_status)); + + return OK; +} + +int PDC_modifiers_set(void) +{ + return OK; +} + diff --git a/3rd-party/PDCurses/wincon/pdcscrn.c b/3rd-party/PDCurses/wincon/pdcscrn.c new file mode 100644 index 0000000..17dcd4d --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcscrn.c @@ -0,0 +1,717 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +#ifdef CHTYPE_LONG +# define PDC_OFFSET 32 +#else +# define PDC_OFFSET 8 +#endif + +#ifndef ENABLE_EXTENDED_FLAGS +# define ENABLE_EXTENDED_FLAGS 0x80 +#endif + +/* special purpose function keys */ +static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 0, 0, 0, 0 }; + +/* COLOR_PAIR to attribute encoding table. */ + +unsigned char *pdc_atrtab = (unsigned char *)NULL; + +HANDLE std_con_out = INVALID_HANDLE_VALUE; +HANDLE pdc_con_out = INVALID_HANDLE_VALUE; +HANDLE pdc_con_in = INVALID_HANDLE_VALUE; + +DWORD pdc_quick_edit; + +static short curstoreal[16], realtocurs[16] = +{ + COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED, + COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE, COLOR_BLACK + 8, + COLOR_BLUE + 8, COLOR_GREEN + 8, COLOR_CYAN + 8, COLOR_RED + 8, + COLOR_MAGENTA + 8, COLOR_YELLOW + 8, COLOR_WHITE + 8 +}; + +enum { PDC_RESTORE_NONE, PDC_RESTORE_BUFFER }; + +/* Struct for storing console registry keys, and for use with the + undocumented WM_SETCONSOLEINFO message. Originally by James Brown, + www.catch22.net. */ + +static struct +{ + ULONG Length; + COORD ScreenBufferSize; + COORD WindowSize; + ULONG WindowPosX; + ULONG WindowPosY; + + COORD FontSize; + ULONG FontFamily; + ULONG FontWeight; + WCHAR FaceName[32]; + + ULONG CursorSize; + ULONG FullScreen; + ULONG QuickEdit; + ULONG AutoPosition; + ULONG InsertMode; + + USHORT ScreenColors; + USHORT PopupColors; + ULONG HistoryNoDup; + ULONG HistoryBufferSize; + ULONG NumberOfHistoryBuffers; + + COLORREF ColorTable[16]; + + ULONG CodePage; + HWND Hwnd; + + WCHAR ConsoleTitle[0x100]; +} console_info; + +#ifndef HAVE_INFOEX +/* Console screen buffer information (extended version) */ +typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX { + ULONG cbSize; + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; + WORD wPopupAttributes; + BOOL bFullscreenSupported; + COLORREF ColorTable[16]; +} CONSOLE_SCREEN_BUFFER_INFOEX; +typedef CONSOLE_SCREEN_BUFFER_INFOEX *PCONSOLE_SCREEN_BUFFER_INFOEX; +#endif + +typedef BOOL (WINAPI *SetConsoleScreenBufferInfoExFn)(HANDLE hConsoleOutput, + PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx); +typedef BOOL (WINAPI *GetConsoleScreenBufferInfoExFn)(HANDLE hConsoleOutput, + PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx); + +static SetConsoleScreenBufferInfoExFn pSetConsoleScreenBufferInfoEx = NULL; +static GetConsoleScreenBufferInfoExFn pGetConsoleScreenBufferInfoEx = NULL; + +static CONSOLE_SCREEN_BUFFER_INFO orig_scr; +static CONSOLE_SCREEN_BUFFER_INFOEX console_infoex; + +static LPTOP_LEVEL_EXCEPTION_FILTER xcpt_filter; + +static DWORD old_console_mode = 0; + +static bool is_nt; + +static HWND _find_console_handle(void) +{ + TCHAR orgtitle[1024], temptitle[1024]; + HWND wnd; + + GetConsoleTitle(orgtitle, 1024); + + wsprintf(temptitle, TEXT("%d/%d"), GetTickCount(), GetCurrentProcessId()); + SetConsoleTitle(temptitle); + + Sleep(40); + + wnd = FindWindow(NULL, temptitle); + + SetConsoleTitle(orgtitle); + + return wnd; +} + +/* Undocumented console message */ + +#define WM_SETCONSOLEINFO (WM_USER + 201) + +/* Wrapper around WM_SETCONSOLEINFO. We need to create the necessary + section (file-mapping) object in the context of the process which + owns the console, before posting the message. Originally by JB. */ + +static void _set_console_info(void) +{ + CONSOLE_SCREEN_BUFFER_INFO csbi; + CONSOLE_CURSOR_INFO cci; + DWORD dwConsoleOwnerPid; + HANDLE hProcess; + HANDLE hSection, hDupSection; + PVOID ptrView; + + /* Each-time initialization for console_info */ + + GetConsoleCursorInfo(pdc_con_out, &cci); + console_info.CursorSize = cci.dwSize; + + GetConsoleScreenBufferInfo(pdc_con_out, &csbi); + console_info.ScreenBufferSize = csbi.dwSize; + + console_info.WindowSize.X = csbi.srWindow.Right - csbi.srWindow.Left + 1; + console_info.WindowSize.Y = csbi.srWindow.Bottom - csbi.srWindow.Top + 1; + + console_info.WindowPosX = csbi.srWindow.Left; + console_info.WindowPosY = csbi.srWindow.Top; + + /* Open the process which "owns" the console */ + + GetWindowThreadProcessId(console_info.Hwnd, &dwConsoleOwnerPid); + + hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwConsoleOwnerPid); + + /* Create a SECTION object backed by page-file, then map a view of + this section into the owner process so we can write the contents + of the CONSOLE_INFO buffer into it */ + + hSection = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, + 0, sizeof(console_info), 0); + + /* Copy our console structure into the section-object */ + + ptrView = MapViewOfFile(hSection, FILE_MAP_WRITE|FILE_MAP_READ, + 0, 0, sizeof(console_info)); + + memcpy(ptrView, &console_info, sizeof(console_info)); + + UnmapViewOfFile(ptrView); + + /* Map the memory into owner process */ + + DuplicateHandle(GetCurrentProcess(), hSection, hProcess, &hDupSection, + 0, FALSE, DUPLICATE_SAME_ACCESS); + + /* Send console window the "update" message */ + + SendMessage(console_info.Hwnd, WM_SETCONSOLEINFO, (WPARAM)hDupSection, 0); + + CloseHandle(hSection); + CloseHandle(hProcess); +} + +static int _set_console_infoex(void) +{ + if (!pSetConsoleScreenBufferInfoEx(pdc_con_out, &console_infoex)) + return ERR; + + return OK; +} + +static int _set_colors(void) +{ + if (pSetConsoleScreenBufferInfoEx) + return _set_console_infoex(); + else + { + _set_console_info(); + return OK; + } +} + +/* One-time initialization for console_info -- color table and font info + from the registry; other values from functions. */ + +static void _init_console_info(void) +{ + DWORD scrnmode, len; + HKEY reghnd; + int i; + + console_info.Hwnd = _find_console_handle(); + console_info.Length = sizeof(console_info); + + GetConsoleMode(pdc_con_in, &scrnmode); + console_info.QuickEdit = !!(scrnmode & 0x0040); + console_info.InsertMode = !!(scrnmode & 0x0020); + + console_info.FullScreen = FALSE; + console_info.AutoPosition = 0x10000; + console_info.ScreenColors = SP->orig_back << 4 | SP->orig_fore; + console_info.PopupColors = 0xf5; + + console_info.HistoryNoDup = FALSE; + console_info.HistoryBufferSize = 50; + console_info.NumberOfHistoryBuffers = 4; + + console_info.CodePage = GetConsoleOutputCP(); + + RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Console"), 0, + KEY_QUERY_VALUE, ®hnd); + + len = sizeof(DWORD); + + /* Default color table */ + + for (i = 0; i < 16; i++) + { + char tname[13]; + + sprintf(tname, "ColorTable%02d", i); + RegQueryValueExA(reghnd, tname, NULL, NULL, + (LPBYTE)(&(console_info.ColorTable[i])), &len); + } + + /* Font info */ + + RegQueryValueEx(reghnd, TEXT("FontSize"), NULL, NULL, + (LPBYTE)(&console_info.FontSize), &len); + RegQueryValueEx(reghnd, TEXT("FontFamily"), NULL, NULL, + (LPBYTE)(&console_info.FontFamily), &len); + RegQueryValueEx(reghnd, TEXT("FontWeight"), NULL, NULL, + (LPBYTE)(&console_info.FontWeight), &len); + + len = sizeof(WCHAR) * 32; + RegQueryValueExW(reghnd, L"FaceName", NULL, NULL, + (LPBYTE)(console_info.FaceName), &len); + + RegCloseKey(reghnd); +} + +static int _init_console_infoex(void) +{ + console_infoex.cbSize = sizeof(console_infoex); + + if (!pGetConsoleScreenBufferInfoEx(pdc_con_out, &console_infoex)) + return ERR; + + console_infoex.srWindow.Right++; + console_infoex.srWindow.Bottom++; + + return OK; +} + +static COLORREF *_get_colors(void) +{ + if (pGetConsoleScreenBufferInfoEx) + { + int status = OK; + if (!console_infoex.cbSize) + status = _init_console_infoex(); + return (status == ERR) ? NULL : + (COLORREF *)(&(console_infoex.ColorTable)); + } + else + { + if (!console_info.Hwnd) + _init_console_info(); + return (COLORREF *)(&(console_info.ColorTable)); + } +} + +/* restore the original console buffer in the event of a crash */ + +static LONG WINAPI _restore_console(LPEXCEPTION_POINTERS ep) +{ + PDC_scr_close(); + + return EXCEPTION_CONTINUE_SEARCH; +} + +/* restore the original console buffer on Ctrl+Break (or Ctrl+C, + if it gets re-enabled) */ + +static BOOL WINAPI _ctrl_break(DWORD dwCtrlType) +{ + if (dwCtrlType == CTRL_BREAK_EVENT || dwCtrlType == CTRL_C_EVENT) + PDC_scr_close(); + + return FALSE; +} + +/* close the physical screen -- may restore the screen to its state + before PDC_scr_open(); miscellaneous cleanup */ + +void PDC_scr_close(void) +{ + PDC_LOG(("PDC_scr_close() - called\n")); + + if (SP->visibility != 1) + curs_set(1); + + PDC_reset_shell_mode(); + + /* Position cursor to the bottom left of the screen. */ + + if (SP->_restore == PDC_RESTORE_NONE) + { + SMALL_RECT win; + + win.Left = orig_scr.srWindow.Left; + win.Right = orig_scr.srWindow.Right; + win.Top = 0; + win.Bottom = orig_scr.srWindow.Bottom - orig_scr.srWindow.Top; + SetConsoleWindowInfo(pdc_con_out, TRUE, &win); + PDC_gotoyx(win.Bottom, 0); + } +} + +void PDC_scr_free(void) +{ + if (SP) + free(SP); + if (pdc_atrtab) + free(pdc_atrtab); + + pdc_atrtab = (unsigned char *)NULL; + + if (pdc_con_out != std_con_out) + { + CloseHandle(pdc_con_out); + pdc_con_out = std_con_out; + } + + SetUnhandledExceptionFilter(xcpt_filter); + SetConsoleCtrlHandler(_ctrl_break, FALSE); +} + +/* open the physical screen -- allocate SP, miscellaneous intialization, + and may save the existing screen for later restoration */ + +int PDC_scr_open(int argc, char **argv) +{ + const char *str; + CONSOLE_SCREEN_BUFFER_INFO csbi; + HMODULE h_kernel; + int i; + + PDC_LOG(("PDC_scr_open() - called\n")); + + SP = calloc(1, sizeof(SCREEN)); + pdc_atrtab = calloc(PDC_COLOR_PAIRS * PDC_OFFSET, 1); + + if (!SP || !pdc_atrtab) + return ERR; + + for (i = 0; i < 16; i++) + curstoreal[realtocurs[i]] = i; + + std_con_out = + pdc_con_out = GetStdHandle(STD_OUTPUT_HANDLE); + pdc_con_in = GetStdHandle(STD_INPUT_HANDLE); + + if (GetFileType(pdc_con_in) != FILE_TYPE_CHAR) + { + fprintf(stderr, "\nRedirection is not supported.\n"); + exit(1); + } + +#if defined(_MSC_VER) && _MSC_VER >= 1800 /* VS2013 and above can't build */ + is_nt = TRUE; /* non-NT (Win9x/3.1/ME) targets anyway, so always true */ +#else + is_nt = !(GetVersion() & 0x80000000); +#endif + + GetConsoleScreenBufferInfo(pdc_con_out, &csbi); + GetConsoleScreenBufferInfo(pdc_con_out, &orig_scr); + GetConsoleMode(pdc_con_in, &old_console_mode); + + /* preserve QuickEdit Mode setting for use in PDC_mouse_set() when + the mouse is not enabled -- other console input settings are + cleared */ + + pdc_quick_edit = old_console_mode & 0x0040; + + SP->lines = (str = getenv("LINES")) ? atoi(str) : PDC_get_rows(); + SP->cols = (str = getenv("COLS")) ? atoi(str) : PDC_get_columns(); + + SP->mouse_wait = PDC_CLICK_PERIOD; + SP->audible = TRUE; + + if (SP->lines < 2 || SP->lines > csbi.dwMaximumWindowSize.Y) + { + fprintf(stderr, "LINES value must be >= 2 and <= %d: got %d\n", + csbi.dwMaximumWindowSize.Y, SP->lines); + + return ERR; + } + + if (SP->cols < 2 || SP->cols > csbi.dwMaximumWindowSize.X) + { + fprintf(stderr, "COLS value must be >= 2 and <= %d: got %d\n", + csbi.dwMaximumWindowSize.X, SP->cols); + + return ERR; + } + + SP->orig_fore = csbi.wAttributes & 0x0f; + SP->orig_back = (csbi.wAttributes & 0xf0) >> 4; + + SP->orig_attr = TRUE; + + SP->_restore = PDC_RESTORE_NONE; + + if ((str = getenv("PDC_RESTORE_SCREEN")) == NULL || *str != '0') + { + /* Create a new console buffer */ + + pdc_con_out = + CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, CONSOLE_TEXTMODE_BUFFER, NULL); + + if (pdc_con_out == INVALID_HANDLE_VALUE) + { + PDC_LOG(("PDC_scr_open() - screen buffer failure\n")); + + pdc_con_out = std_con_out; + } + else + SP->_restore = PDC_RESTORE_BUFFER; + } + + xcpt_filter = SetUnhandledExceptionFilter(_restore_console); + SetConsoleCtrlHandler(_ctrl_break, TRUE); + + SP->_preserve = (getenv("PDC_PRESERVE_SCREEN") != NULL); + + PDC_reset_prog_mode(); + + SP->mono = FALSE; + + h_kernel = GetModuleHandleA("kernel32.dll"); + pGetConsoleScreenBufferInfoEx = + (GetConsoleScreenBufferInfoExFn)GetProcAddress(h_kernel, + "GetConsoleScreenBufferInfoEx"); + pSetConsoleScreenBufferInfoEx = + (SetConsoleScreenBufferInfoExFn)GetProcAddress(h_kernel, + "SetConsoleScreenBufferInfoEx"); + + return OK; +} + + /* Calls SetConsoleWindowInfo with the given parameters, but fits them + if a scoll bar shrinks the maximum possible value. The rectangle + must at least fit in a half-sized window. */ + +static BOOL _fit_console_window(HANDLE con_out, CONST SMALL_RECT *rect) +{ + SMALL_RECT run; + SHORT mx, my; + + if (SetConsoleWindowInfo(con_out, TRUE, rect)) + return TRUE; + + run = *rect; + run.Right /= 2; + run.Bottom /= 2; + + mx = run.Right; + my = run.Bottom; + + if (!SetConsoleWindowInfo(con_out, TRUE, &run)) + return FALSE; + + for (run.Right = rect->Right; run.Right >= mx; run.Right--) + if (SetConsoleWindowInfo(con_out, TRUE, &run)) + break; + + if (run.Right < mx) + return FALSE; + + for (run.Bottom = rect->Bottom; run.Bottom >= my; run.Bottom--) + if (SetConsoleWindowInfo(con_out, TRUE, &run)) + return TRUE; + + return FALSE; +} + +/* the core of resize_term() */ + +int PDC_resize_screen(int nlines, int ncols) +{ + SMALL_RECT rect; + COORD size, max; + + if( nlines || ncols) + { + if (nlines < 2 || ncols < 2) + return ERR; + + if( !stdscr) /* window hasn't been created yet; we're */ + { /* specifying its size before doing so */ + return OK; /* ...which doesn't work (yet) on Win32 */ + } + + max = GetLargestConsoleWindowSize(pdc_con_out); + + rect.Left = rect.Top = 0; + rect.Right = ncols - 1; + + if (rect.Right > max.X) + rect.Right = max.X; + + rect.Bottom = nlines - 1; + + if (rect.Bottom > max.Y) + rect.Bottom = max.Y; + + size.X = rect.Right + 1; + size.Y = rect.Bottom + 1; + + _fit_console_window(pdc_con_out, &rect); + SetConsoleScreenBufferSize(pdc_con_out, size); + _fit_console_window(pdc_con_out, &rect); + SetConsoleScreenBufferSize(pdc_con_out, size); + SetConsoleActiveScreenBuffer(pdc_con_out); + } + + PDC_flushinp(); + + SP->resized = FALSE; + SP->cursrow = SP->curscol = 0; + + return OK; +} + +void PDC_reset_prog_mode(void) +{ + PDC_LOG(("PDC_reset_prog_mode() - called.\n")); + + if (pdc_con_out != std_con_out) + SetConsoleActiveScreenBuffer(pdc_con_out); + else if (is_nt) + { + COORD bufsize; + SMALL_RECT rect; + + bufsize.X = orig_scr.srWindow.Right - orig_scr.srWindow.Left + 1; + bufsize.Y = orig_scr.srWindow.Bottom - orig_scr.srWindow.Top + 1; + + rect.Top = rect.Left = 0; + rect.Bottom = bufsize.Y - 1; + rect.Right = bufsize.X - 1; + + SetConsoleScreenBufferSize(pdc_con_out, bufsize); + SetConsoleWindowInfo(pdc_con_out, TRUE, &rect); + SetConsoleScreenBufferSize(pdc_con_out, bufsize); + SetConsoleActiveScreenBuffer(pdc_con_out); + } + + PDC_mouse_set(); +} + +void PDC_reset_shell_mode(void) +{ + PDC_LOG(("PDC_reset_shell_mode() - called.\n")); + + if (pdc_con_out != std_con_out) + SetConsoleActiveScreenBuffer(std_con_out); + else if (is_nt) + { + SetConsoleScreenBufferSize(pdc_con_out, orig_scr.dwSize); + SetConsoleWindowInfo(pdc_con_out, TRUE, &orig_scr.srWindow); + SetConsoleScreenBufferSize(pdc_con_out, orig_scr.dwSize); + SetConsoleWindowInfo(pdc_con_out, TRUE, &orig_scr.srWindow); + SetConsoleActiveScreenBuffer(pdc_con_out); + } + + SetConsoleMode(pdc_con_in, old_console_mode | ENABLE_EXTENDED_FLAGS); +} + +void PDC_restore_screen_mode(int i) +{ +} + +void PDC_save_screen_mode(int i) +{ +} + +void PDC_init_pair(short pair, short fg, short bg) +{ + unsigned char att, temp_bg; + chtype i; + + fg = curstoreal[fg]; + bg = curstoreal[bg]; + + for (i = 0; i < PDC_OFFSET; i++) + { + att = fg | (bg << 4); + + if (i & (A_REVERSE >> PDC_ATTR_SHIFT)) + att = bg | (fg << 4); + if (i & (A_UNDERLINE >> PDC_ATTR_SHIFT)) + att = 1; + if (i & (A_INVIS >> PDC_ATTR_SHIFT)) + { + temp_bg = att >> 4; + att = temp_bg << 4 | temp_bg; + } + if (i & (A_BOLD >> PDC_ATTR_SHIFT)) + att |= 8; + if (i & (A_BLINK >> PDC_ATTR_SHIFT)) + att |= 128; + + pdc_atrtab[pair * PDC_OFFSET + i] = att; + } +} + +int PDC_pair_content(short pair, short *fg, short *bg) +{ + *fg = realtocurs[pdc_atrtab[pair * PDC_OFFSET] & 0x0F]; + *bg = realtocurs[(pdc_atrtab[pair * PDC_OFFSET] & 0xF0) >> 4]; + + return OK; +} + +bool PDC_can_change_color(void) +{ + return is_nt; +} + +int PDC_color_content(short color, short *red, short *green, short *blue) +{ + COLORREF *color_table = _get_colors(); + + if (color_table) + { + DWORD col = color_table[curstoreal[color]]; + + *red = DIVROUND(GetRValue(col) * 1000, 255); + *green = DIVROUND(GetGValue(col) * 1000, 255); + *blue = DIVROUND(GetBValue(col) * 1000, 255); + + return OK; + } + + return ERR; +} + +int PDC_init_color(short color, short red, short green, short blue) +{ + COLORREF *color_table = _get_colors(); + + if (color_table) + { + color_table[curstoreal[color]] = + RGB(DIVROUND(red * 255, 1000), + DIVROUND(green * 255, 1000), + DIVROUND(blue * 255, 1000)); + + return _set_colors(); + } + + return ERR; +} + +/* Does nothing in the Win32 flavor of PDCurses. Included solely because +without this, we get an unresolved external... */ + +void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines, + const int new_min_cols, const int new_max_cols) +{ +} + +/* PDC_set_function_key() does nothing on this platform */ +int PDC_set_function_key( const unsigned function, const int new_key) +{ + int old_key = -1; + + if( function < PDC_MAX_FUNCTION_KEYS) + { + old_key = PDC_shutdown_key[function]; + PDC_shutdown_key[function] = new_key; + } + return( old_key); +} diff --git a/3rd-party/PDCurses/wincon/pdcsetsc.c b/3rd-party/PDCurses/wincon/pdcsetsc.c new file mode 100644 index 0000000..2c40d1d --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcsetsc.c @@ -0,0 +1,91 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +/*man-start************************************************************** + +pdcsetsc +-------- + +### Synopsis + + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + +### Description + + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + +### Portability + X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + +int PDC_curs_set(int visibility) +{ + CONSOLE_CURSOR_INFO cci; + int ret_vis; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + + if (GetConsoleCursorInfo(pdc_con_out, &cci) == FALSE) + return ERR; + + switch(visibility) + { + case 0: /* invisible */ + cci.bVisible = FALSE; + break; + case 2: /* highly visible */ + cci.bVisible = TRUE; + cci.dwSize = 95; + break; + default: /* normal visibility */ + cci.bVisible = TRUE; + cci.dwSize = SP->orig_cursor; + break; + } + + if (SetConsoleCursorInfo(pdc_con_out, &cci) == FALSE) + return ERR; + + SP->visibility = visibility; + return ret_vis; +} + +void PDC_set_title(const char *title) +{ +#ifdef PDC_WIDE + wchar_t wtitle[512]; +#endif + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); + +#ifdef PDC_WIDE + PDC_mbstowcs(wtitle, title, 511); + SetConsoleTitleW(wtitle); +#else + SetConsoleTitleA(title); +#endif +} + +int PDC_set_blink(bool blinkon) +{ + if (pdc_color_started) + COLORS = 16; + + return blinkon ? ERR : OK; +} diff --git a/3rd-party/PDCurses/wincon/pdcurses.ico b/3rd-party/PDCurses/wincon/pdcurses.ico new file mode 100644 index 0000000..53a6dde Binary files /dev/null and b/3rd-party/PDCurses/wincon/pdcurses.ico differ diff --git a/3rd-party/PDCurses/wincon/pdcurses.rc b/3rd-party/PDCurses/wincon/pdcurses.rc new file mode 100644 index 0000000..7763491 --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcurses.rc @@ -0,0 +1,28 @@ +#include "winver.h" + +1 VERSIONINFO + FILEVERSION 4,0,2,0 + PRODUCTVERSION 4,0,2,0 + FILEFLAGSMASK 0x3fL + FILEFLAGS 0x0L + FILEOS VOS_UNKNOWN + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Maintainer", "William McBrine\0" + VALUE "FileDescription", "Public Domain Curses\0" + VALUE "FileVersion", "4.0.2\0" + VALUE "InternalName", "PDCurses\0" + VALUE "LegalCopyright", "Public Domain\0" + VALUE "OriginalFilename", "PDCURSES.DLL\0" + VALUE "ProductName", "Public Domain Curses Library\0" + VALUE "ProductVersion", "4.0.2\0" + END + END +END + +1 ICON DISCARDABLE "PDCURSES.ico" diff --git a/3rd-party/PDCurses/wincon/pdcutil.c b/3rd-party/PDCurses/wincon/pdcutil.c new file mode 100644 index 0000000..59f5c2f --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcutil.c @@ -0,0 +1,41 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +void PDC_beep(void) +{ + PDC_LOG(("PDC_beep() - called\n")); + +/* MessageBeep(MB_OK); */ + MessageBeep(0XFFFFFFFF); +} + +void PDC_napms(int ms) +{ + PDC_LOG(("PDC_napms() - called: ms=%d\n", ms)); + + Sleep(ms); +} + +const char *PDC_sysname(void) +{ + return "Win32"; +} + +PDC_version_info PDC_version = { PDC_PORT_WIN32, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), + /* note that thus far, 'wide' and 'UTF8' versions exist */ + /* only for SDL2, X11, Win32, and Win32a; elsewhere, */ + /* these will be FALSE */ +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; diff --git a/3rd-party/PDCurses/wincon/pdcwin.h b/3rd-party/PDCurses/wincon/pdcwin.h new file mode 100644 index 0000000..4a37caa --- /dev/null +++ b/3rd-party/PDCurses/wincon/pdcwin.h @@ -0,0 +1,31 @@ +/* Public Domain Curses */ + +#if defined( PDC_WIDE) && !defined( UNICODE) +# define UNICODE +#endif + +#include +#undef MOUSE_MOVED +#include + +# if(CHTYPE_LONG >= 2) /* 64-bit chtypes */ + # define PDC_ATTR_SHIFT 23 +# else +#ifdef CHTYPE_LONG /* 32-bit chtypes */ + # define PDC_ATTR_SHIFT 19 +#else /* 16-bit chtypes */ + # define PDC_ATTR_SHIFT 8 +#endif +#endif +#if (defined(__CYGWIN__) || defined(__MINGW32__) || defined(__WATCOMC__) \ + || (defined(_MSC_VER) && _WIN32_WINNT >= _WIN32_WINNT_VISTA)) + #if !defined(HAVE_INFOEX) && !defined(HAVE_NO_INFOEX) + # define HAVE_INFOEX + #endif +#endif + +extern unsigned char *pdc_atrtab; +extern HANDLE pdc_con_out, pdc_con_in; +extern DWORD pdc_quick_edit; + +extern int PDC_get_buffer_rows(void); diff --git a/3rd-party/PDCurses/wingui/CMakeLists.txt b/3rd-party/PDCurses/wingui/CMakeLists.txt new file mode 100644 index 0000000..2b4c003 --- /dev/null +++ b/3rd-party/PDCurses/wingui/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.11) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE) + message(STATUS "No build type specified, defaulting to MinSizeRel.") +endif() + +PROJECT(wingui VERSION "${PROJECT_VERSION}" LANGUAGES C) + +INCLUDE(project_common) + +demo_app(../demos version) +demo_app(../demos firework) +demo_app(../demos ozdemo) +demo_app(../demos newtest) +demo_app(../demos ptest) +demo_app(../demos rain) +demo_app(../demos testcurs) +demo_app(../demos tuidemo) +demo_app(../demos worm) +demo_app(../demos xmas) + +IF(WIN32) + SET_TARGET_PROPERTIES(${PROJECT_NAME}_newtest PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS") +ENDIF(WIN32) + +SET(CPACK_COMPONENTS_ALL applications) diff --git a/3rd-party/PDCurses/wingui/Makefile.bcc b/3rd-party/PDCurses/wingui/Makefile.bcc new file mode 100644 index 0000000..c28cd03 --- /dev/null +++ b/3rd-party/PDCurses/wingui/Makefile.bcc @@ -0,0 +1,85 @@ +# Borland MAKE Makefile for PDCurses library - Win32 BC++ 4.0+ +# +# Usage: make -f [path\]Makefile.bcc [DEBUG=] [WIDE=] [UTF8=] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\wingui + +CC = bcc32 -q + +!ifdef DEBUG +CFLAGS = -N -v -y -DPDCDEBUG +!else +CFLAGS = -O +!endif + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +!endif + +!ifdef UTF8 +UTF8OPT = -DPDC_FORCE_UTF8 +!endif + +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c -Tpe -w32 $(CFLAGS) -w-par \ +$(WIDEOPT) $(UTF8OPT) + +LIBEXE = tlib /C /E /0 /a + +LIBCURSES = pdcurses.lib + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.tds + -del *.exe + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + -del $@ + $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib + +.autodepend + +{$(srcdir)\}.c.obj: + $(BUILD) $< + +{$(osdir)\}.c.obj: + $(BUILD) $< + +{$(demodir)\}.c.obj: + $(BUILD) $< + +.c.obj: + $(BUILD) $< + +.obj.exe: + $(CC) -e$@ $** $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj $(LIBCURSES) + $(CC) -e$@ $** + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c $(PDCURSES_CURSES_H) + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Borland C++ Win32 +PLATFORM2 = Borland C/C++ 5.5 for Win32 +ARCNAME = pdc$(VER)_bcc_w32 + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/wingui/Makefile.dmc b/3rd-party/PDCurses/wingui/Makefile.dmc new file mode 100644 index 0000000..0290b10 --- /dev/null +++ b/3rd-party/PDCurses/wingui/Makefile.dmc @@ -0,0 +1,259 @@ +# Makefile for PDCurses library - WIN32 Digital Mars +# +# Usage: make -f Makefile.dmc [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +PDCURSES_SRCDIR = .. + +PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) + +PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h +TERM_HEADER = $(PDCURSES_SRCDIR)\term.h + +srcdir = $(PDCURSES_SRCDIR)\pdcurses +osdir = $(PDCURSES_SRCDIR)\wingui +demodir = $(PDCURSES_SRCDIR)\demos + +PDCURSES_WIN_H = $(osdir)\pdcwin.h + +CC = dmc + +CFLAGS = -c -o+space -Nc + +# CPPFLAGS = -I$(PDCURSES_SRCDIR) +CPPFLAGS = -I$(PDCURSES_SRCDIR) -DPDC_WIDE + +LINK = dmc +LIBEXE = lib + +LIBCURSES = pdcurses.lib + +BUILD = $(CC) $(CFLAGS) $(CPPFLAGS) + +DEMOS = testcurs.exe ozdemo.exe newtest.exe xmas.exe tuidemo.exe \ +firework.exe ptest.exe rain.exe worm.exe + +all: $(LIBCURSES) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.map + -del advapi32.def + +LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \ +border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \ +getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \ +insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \ +outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \ +scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \ +touch.obj util.obj window.obj debug.obj + +PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \ +pdcsetsc.obj pdcutil.obj + +DEMOOBJS = testcurs.obj ozdemo.obj newtest.obj xmas.obj tuidemo.obj tui.obj \ +firework.obj ptest.obj rain.obj worm.obj + +LIBS = advapi32.lib gdi32.lib user32.lib shell32.lib comdlg32.lib + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +panel.obj ptest.obj: $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -c $@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib + +SRCBUILD = $(BUILD) $(srcdir)\$*.c +OSBUILD = $(BUILD) $(osdir)\$*.c +DEMOBUILD = $(LINK) $(CPPFLAGS) -o+space $@ $** + +addch.obj: $(srcdir)\addch.c + $(SRCBUILD) + +addchstr.obj: $(srcdir)\addchstr.c + $(SRCBUILD) + +addstr.obj: $(srcdir)\addstr.c + $(SRCBUILD) + +attr.obj: $(srcdir)\attr.c + $(SRCBUILD) + +beep.obj: $(srcdir)\beep.c + $(SRCBUILD) + +bkgd.obj: $(srcdir)\bkgd.c + $(SRCBUILD) + +border.obj: $(srcdir)\border.c + $(SRCBUILD) + +clear.obj: $(srcdir)\clear.c + $(SRCBUILD) + +color.obj: $(srcdir)\color.c + $(SRCBUILD) + +delch.obj: $(srcdir)\delch.c + $(SRCBUILD) + +deleteln.obj: $(srcdir)\deleteln.c + $(SRCBUILD) + +deprec.obj: $(srcdir)\deprec.c + $(SRCBUILD) + +getch.obj: $(srcdir)\getch.c + $(SRCBUILD) + +getstr.obj: $(srcdir)\getstr.c + $(SRCBUILD) + +getyx.obj: $(srcdir)\getyx.c + $(SRCBUILD) + +inch.obj: $(srcdir)\inch.c + $(SRCBUILD) + +inchstr.obj: $(srcdir)\inchstr.c + $(SRCBUILD) + +initscr.obj: $(srcdir)\initscr.c + $(SRCBUILD) + +inopts.obj: $(srcdir)\inopts.c + $(SRCBUILD) + +insch.obj: $(srcdir)\insch.c + $(SRCBUILD) + +insstr.obj: $(srcdir)\insstr.c + $(SRCBUILD) + +instr.obj: $(srcdir)\instr.c + $(SRCBUILD) + +kernel.obj: $(srcdir)\kernel.c + $(SRCBUILD) + +keyname.obj: $(srcdir)\keyname.c + $(SRCBUILD) + +mouse.obj: $(srcdir)\mouse.c + $(SRCBUILD) + +move.obj: $(srcdir)\move.c + $(SRCBUILD) + +outopts.obj: $(srcdir)\outopts.c + $(SRCBUILD) + +overlay.obj: $(srcdir)\overlay.c + $(SRCBUILD) + +pad.obj: $(srcdir)\pad.c + $(SRCBUILD) + +panel.obj: $(srcdir)\panel.c + $(SRCBUILD) + +printw.obj: $(srcdir)\printw.c + $(SRCBUILD) + +refresh.obj: $(srcdir)\refresh.c + $(SRCBUILD) + +scanw.obj: $(srcdir)\scanw.c + $(SRCBUILD) + +scr_dump.obj: $(srcdir)\scr_dump.c + $(SRCBUILD) + +scroll.obj: $(srcdir)\scroll.c + $(SRCBUILD) + +slk.obj: $(srcdir)\slk.c + $(SRCBUILD) + +termattr.obj: $(srcdir)\termattr.c + $(SRCBUILD) + +terminfo.obj: $(srcdir)\terminfo.c + $(SRCBUILD) + +touch.obj: $(srcdir)\touch.c + $(SRCBUILD) + +util.obj: $(srcdir)\util.c + $(SRCBUILD) + +window.obj: $(srcdir)\window.c + $(SRCBUILD) + +debug.obj: $(srcdir)\debug.c + $(SRCBUILD) + +pdcclip.obj: $(osdir)\pdcclip.c + $(OSBUILD) + +pdcdisp.obj: $(osdir)\pdcdisp.c + $(OSBUILD) + +pdcgetsc.obj: $(osdir)\pdcgetsc.c + $(OSBUILD) + +pdckbd.obj: $(osdir)\pdckbd.c + $(OSBUILD) + +pdcscrn.obj: $(osdir)\pdcscrn.c + $(OSBUILD) + +pdcsetsc.obj: $(osdir)\pdcsetsc.c + $(OSBUILD) + +pdcutil.obj: $(osdir)\pdcutil.c + $(OSBUILD) + +firework.exe: $(demodir)\firework.c + $(DEMOBUILD) $(LIBS) + +ozdemo.exe: $(demodir)\ozdemo.c + $(DEMOBUILD) $(LIBS) + +newtest.exe: $(demodir)\newtest.c + $(DEMOBUILD) $(LIBS) + +ptest.exe: $(demodir)\ptest.c + $(DEMOBUILD) $(LIBS) + +rain.exe: $(demodir)\rain.c + $(DEMOBUILD) $(LIBS) + +testcurs.exe: $(demodir)\testcurs.c + $(DEMOBUILD) $(LIBS) + +tuidemo.exe: tuidemo.obj tui.obj + $(DEMOBUILD) $(LIBS) + +worm.exe: $(demodir)\worm.c + $(DEMOBUILD) $(LIBS) + +xmas.exe: $(demodir)\xmas.c + $(DEMOBUILD) $(LIBS) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\$*.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\$*.c diff --git a/3rd-party/PDCurses/wingui/Makefile.lcc b/3rd-party/PDCurses/wingui/Makefile.lcc new file mode 100644 index 0000000..dabb8e7 --- /dev/null +++ b/3rd-party/PDCurses/wingui/Makefile.lcc @@ -0,0 +1,273 @@ +# Makefile for PDCurses library - WIN32 LCC-Win32 +# +# Usage: make -f Makefile.lcc [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +PDCURSES_SRCDIR = .. + +PDCURSES_CURSES_H = $(PDCURSES_SRCDIR)\curses.h +PDCURSES_CURSPRIV_H = $(PDCURSES_SRCDIR)\curspriv.h +PDCURSES_HEADERS = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H) + +PANEL_HEADER = $(PDCURSES_SRCDIR)\panel.h +TERM_HEADER = $(PDCURSES_SRCDIR)\term.h + +srcdir = $(PDCURSES_SRCDIR)\pdcurses +osdir = $(PDCURSES_SRCDIR)\wingui +demodir = $(PDCURSES_SRCDIR)\demos + +PDCURSES_WIN_H = $(osdir)\pdcwin.h + +CC = lcc + +#CFLAGS = -c -g3 -A -ansic +CFLAGS = -c -O -A -ansic + +CPPFLAGS = -I$(PDCURSES_SRCDIR) #-DPDC_WIDE -DPDC_FORCE_UTF8 + +LINK = lcclnk +LIBEXE = lcclib + +LIBCURSES = pdcurses.lib + +BUILD = $(CC) $(CFLAGS) $(CPPFLAGS) +PDCLIBS = $(LIBCURSES) + +DEMOS = testcurs.exe ozdemo.exe xmas.exe tuidemo.exe \ +firework.exe ptest.exe rain.exe worm.exe + +all: $(PDCLIBS) $(DEMOS) + +clean: + -del *.obj + -del *.lib + -del *.exe + +LIBOBJS = addch.obj addchstr.obj addstr.obj attr.obj beep.obj bkgd.obj \ +border.obj clear.obj color.obj delch.obj deleteln.obj deprec.obj getch.obj \ +getstr.obj getyx.obj inch.obj inchstr.obj initscr.obj inopts.obj \ +insch.obj insstr.obj instr.obj kernel.obj keyname.obj mouse.obj move.obj \ +outopts.obj overlay.obj pad.obj panel.obj printw.obj refresh.obj \ +scanw.obj scr_dump.obj scroll.obj slk.obj termattr.obj terminfo.obj \ +touch.obj util.obj window.obj debug.obj + +PDCOBJS = pdcclip.obj pdcdisp.obj pdcgetsc.obj pdckbd.obj pdcscrn.obj \ +pdcsetsc.obj pdcutil.obj + +DEMOOBJS = testcurs.obj ozdemo.obj xmas.obj tuidemo.obj tui.obj \ +firework.obj ptest.obj rain.obj worm.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +panel.obj ptest.obj: $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) /out:$@ $(LIBOBJS) $(PDCOBJS) + -copy $(LIBCURSES) panel.lib + +SRCBUILD = $(BUILD) $(srcdir)\$*.c +OSBUILD = $(BUILD) $(osdir)\$*.c + +addch.obj: $(srcdir)\addch.c + $(SRCBUILD) + +addchstr.obj: $(srcdir)\addchstr.c + $(SRCBUILD) + +addstr.obj: $(srcdir)\addstr.c + $(SRCBUILD) + +attr.obj: $(srcdir)\attr.c + $(SRCBUILD) + +beep.obj: $(srcdir)\beep.c + $(SRCBUILD) + +bkgd.obj: $(srcdir)\bkgd.c + $(SRCBUILD) + +border.obj: $(srcdir)\border.c + $(SRCBUILD) + +clear.obj: $(srcdir)\clear.c + $(SRCBUILD) + +color.obj: $(srcdir)\color.c + $(SRCBUILD) + +delch.obj: $(srcdir)\delch.c + $(SRCBUILD) + +deleteln.obj: $(srcdir)\deleteln.c + $(SRCBUILD) + +deprec.obj: $(srcdir)\deprec.c + $(SRCBUILD) + +getch.obj: $(srcdir)\getch.c + $(SRCBUILD) + +getstr.obj: $(srcdir)\getstr.c + $(SRCBUILD) + +getyx.obj: $(srcdir)\getyx.c + $(SRCBUILD) + +inch.obj: $(srcdir)\inch.c + $(SRCBUILD) + +inchstr.obj: $(srcdir)\inchstr.c + $(SRCBUILD) + +initscr.obj: $(srcdir)\initscr.c + $(SRCBUILD) + +inopts.obj: $(srcdir)\inopts.c + $(SRCBUILD) + +insch.obj: $(srcdir)\insch.c + $(SRCBUILD) + +insstr.obj: $(srcdir)\insstr.c + $(SRCBUILD) + +instr.obj: $(srcdir)\instr.c + $(SRCBUILD) + +kernel.obj: $(srcdir)\kernel.c + $(SRCBUILD) + +keyname.obj: $(srcdir)\keyname.c + $(SRCBUILD) + +mouse.obj: $(srcdir)\mouse.c + $(SRCBUILD) + +move.obj: $(srcdir)\move.c + $(SRCBUILD) + +outopts.obj: $(srcdir)\outopts.c + $(SRCBUILD) + +overlay.obj: $(srcdir)\overlay.c + $(SRCBUILD) + +pad.obj: $(srcdir)\pad.c + $(SRCBUILD) + +panel.obj: $(srcdir)\panel.c + $(SRCBUILD) + +printw.obj: $(srcdir)\printw.c + $(SRCBUILD) + +refresh.obj: $(srcdir)\refresh.c + $(SRCBUILD) + +scanw.obj: $(srcdir)\scanw.c + $(SRCBUILD) + +scr_dump.obj: $(srcdir)\scr_dump.c + $(SRCBUILD) + +scroll.obj: $(srcdir)\scroll.c + $(SRCBUILD) + +slk.obj: $(srcdir)\slk.c + $(SRCBUILD) + +termattr.obj: $(srcdir)\termattr.c + $(SRCBUILD) + +terminfo.obj: $(srcdir)\terminfo.c + $(SRCBUILD) + +touch.obj: $(srcdir)\touch.c + $(SRCBUILD) + +util.obj: $(srcdir)\util.c + $(SRCBUILD) + +window.obj: $(srcdir)\window.c + $(SRCBUILD) + +debug.obj: $(srcdir)\debug.c + $(SRCBUILD) + +pdcclip.obj: $(osdir)\pdcclip.c + $(OSBUILD) + +pdcdisp.obj: $(osdir)\pdcdisp.c + $(OSBUILD) + +pdcgetsc.obj: $(osdir)\pdcgetsc.c + $(OSBUILD) + +pdckbd.obj: $(osdir)\pdckbd.c + $(OSBUILD) + +pdcscrn.obj: $(osdir)\pdcscrn.c + $(OSBUILD) + +pdcsetsc.obj: $(osdir)\pdcsetsc.c + $(OSBUILD) + +pdcutil.obj: $(osdir)\pdcutil.c + $(OSBUILD) + +firework.exe: firework.obj + $(LINK) -o $@ firework.obj $(LIBCURSES) + +ozdemo.exe: ozdemo.obj + $(LINK) -o $@ ozdemo.obj $(LIBCURSES) + +ptest.exe: ptest.obj + $(LINK) -o $@ ptest.obj $(LIBCURSES) + +rain.exe: rain.obj + $(LINK) -o $@ rain.obj $(LIBCURSES) + +testcurs.exe: testcurs.obj + $(LINK) -o $@ testcurs.obj $(LIBCURSES) + +tuidemo.exe: tuidemo.obj tui.obj + $(LINK) -o $@ tuidemo.obj tui.obj $(LIBCURSES) + +worm.exe: worm.obj + $(LINK) -o $@ worm.obj $(LIBCURSES) + +xmas.exe: xmas.obj + $(LINK) -o $@ xmas.obj $(LIBCURSES) + +firework.obj: $(demodir)\firework.c + $(BUILD) $(demodir)\$*.c + +ozdemo.obj: $(demodir)\ozdemo.c + $(BUILD) $(demodir)\$*.c + +ptest.obj: $(demodir)\ptest.c + $(BUILD) $(demodir)\$*.c + +rain.obj: $(demodir)\rain.c + $(BUILD) $(demodir)\$*.c + +testcurs.obj: $(demodir)\testcurs.c + $(BUILD) $(demodir)\$*.c + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\$*.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\$*.c + +worm.obj: $(demodir)\worm.c + $(BUILD) $(demodir)\$*.c + +xmas.obj: $(demodir)\xmas.c + $(BUILD) $(demodir)\$*.c diff --git a/3rd-party/PDCurses/wingui/Makefile.mng b/3rd-party/PDCurses/wingui/Makefile.mng new file mode 100644 index 0000000..382fcad --- /dev/null +++ b/3rd-party/PDCurses/wingui/Makefile.mng @@ -0,0 +1,171 @@ +# GNU MAKE Makefile for PDCurses library - WIN32 MinGW GCC +# +# Usage: make -f [path\]Makefile.mng [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] [target] +# +# where target can be any of: +# [all|demos|pdcurses.a|testcurs.exe...] + +O = o + +ifndef PDCURSES_SRCDIR + PDCURSES_SRCDIR = .. +endif + +include $(PDCURSES_SRCDIR)/version.mif +include $(PDCURSES_SRCDIR)/libobjs.mif + +uname_S := $(shell uname -s 2>/dev/null) + +CAT = cat +PREFIX = +PATH_SEP = / +CP = cp +DELETE = rm -f + +# It appears we have three cases: we're running in Cygwin/MSYS; or we're +# running in command.com on Windows with MinGW; or we're on Linux or BSD +# or similar system, cross-compiling with MinGW. + +ifneq (,$(findstring CYGWIN,$(uname_S))) + # Insert Cygwin-specific changes here + ON_WINDOWS = 1 +endif +ifneq (,$(findstring MINGW32_NT,$(uname_S))) + # Insert MINGW32-specific changes here + ON_WINDOWS = 1 +endif +ifneq (,$(findstring MINGW64_NT,$(uname_S))) + # Insert MINGW64-specific changes here + ON_WINDOWS = 1 +endif + +ifeq ($(uname_S),) + CAT = type + PATH_SEP = \\ + CP = -copy + DELETE = -del + ON_WINDOWS = 1 +endif + +# If we aren't on Windows, assume MinGW on a Linux-like host +# Only decision is: are we doing a 64-bit compile (_w64 defined)? + +ifndef ON_WINDOWS + ifdef _w64 + PREFIX = x86_64-w64-mingw32- + else + PREFIX = i686-w64-mingw32- + endif +endif + +osdir = $(PDCURSES_SRCDIR)/wingui + +PDCURSES_WIN_H = $(osdir)/pdcwin.h + +CC = $(PREFIX)gcc + +AR = $(PREFIX)ar +STRIP = $(PREFIX)strip + +ifeq ($(DEBUG),Y) + CFLAGS = -g -Wall -DPDCDEBUG + LDFLAGS = -g +else + CFLAGS = -O4 -Wall -pedantic + LDFLAGS = +endif + +CFLAGS += -I$(PDCURSES_SRCDIR) + +ifdef CHTYPE_32 + CFLAGS += -DCHTYPE_32 +endif + +ifdef CHTYPE_16 + CFLAGS += -DCHTYPE_16 +endif + +ifeq ($(WIDE),Y) + CFLAGS += -DPDC_WIDE +endif + +ifeq ($(UTF8),Y) + CFLAGS += -DPDC_FORCE_UTF8 +endif + +LINK = $(CC) + +ifeq ($(DLL),Y) + CFLAGS += -DPDC_DLL_BUILD + LIBEXE = $(CC) + LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o + LIBCURSES = pdcurses.dll + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = -lgdi32 -lcomdlg32 + EXELIBS = + CLEAN = $(LIBCURSES) *.a +else + LIBEXE = $(AR) +ifeq ($(PREFIX),) + LIBFLAGS = rcv +else + LIBFLAGS = rv +endif + LIBCURSES = pdcurses.a + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = + EXELIBS = -lgdi32 -lcomdlg32 + CLEAN = *.a +endif + +.PHONY: all libs clean demos dist + +all: libs demos + +libs: $(LIBCURSES) + +clean: + $(DELETE) *.o + $(DELETE) *.exe + $(DELETE) *.dll + $(DELETE) $(CLEAN) + +demos: $(DEMOS) +ifneq ($(DEBUG),Y) + $(STRIP) *.exe +endif + +$(LIBCURSES) : $(LIBDEPS) + $(LIBEXE) $(LIBFLAGS) $@ $? $(LIBSADDED) + $(CP) pdcurses.a panel.a + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES) +panel.o : $(PANEL_HEADER) +terminfo.o: $(TERM_HEADER) + +$(LIBOBJS) : %.o: $(srcdir)/%.c + $(CC) -c $(CFLAGS) $< + +$(PDCOBJS) : %.o: $(osdir)/%.c + $(CC) -c $(CFLAGS) $< + +firework.exe ozdemo.exe newtest.exe ptest.exe rain.exe testcurs.exe \ +version.exe worm.exe xmas.exe: %.exe: $(demodir)/%.c + $(CC) $(CFLAGS) -mwindows -o$@ $< $(LIBCURSES) $(EXELIBS) + +tuidemo.exe: tuidemo.o tui.o + $(LINK) $(LDFLAGS) -mwindows -o$@ tuidemo.o tui.o $(LIBCURSES) $(EXELIBS) + +tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H) + $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< + +tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H) + $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< + +PLATFORM1 = MinGW Win32 +PLATFORM2 = MinGW for Win32 +ARCNAME = pdc$(VER)_ming_w32 + +include $(PDCURSES_SRCDIR)/makedist.mif diff --git a/3rd-party/PDCurses/wingui/Makefile.vc b/3rd-party/PDCurses/wingui/Makefile.vc new file mode 100644 index 0000000..a0c8e91 --- /dev/null +++ b/3rd-party/PDCurses/wingui/Makefile.vc @@ -0,0 +1,144 @@ +# Visual C++ & Intel(R) NMakefile for PDCurses library - Win32 VC++ 2.0+ +# +# Usage: nmake -f [path\]Makefile.vc [DEBUG=] [DLL=] [WIDE=] [UTF8=] +# [ICC=] [CHTYPE_32=] [IX86=] [CHTYPE_16=] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] +# CHTYPE_## is used to override the default 64-bit chtypes in favor +# of "traditional" 32- or 16-bit chtypes. +# IX86 is used to build 32-bit code instead of 64-bit +# ICC is used to invoke Intel (R) tools icl.exe and xilink.exe, instead of +# MS tools cl.exe and link.exe + +O = obj + +!ifndef PDCURSES_SRCDIR +PDCURSES_SRCDIR = .. +!endif + +!ifdef IX86 +PLATFORM=IX86 +!else +PLATFORM=X64 +!endif + +!include $(PDCURSES_SRCDIR)\version.mif +!include $(PDCURSES_SRCDIR)\libobjs.mif + +osdir = $(PDCURSES_SRCDIR)\wingui + +PDCURSES_WIN_H = $(osdir)\pdcwin.h + +!ifdef ICC +CC = icl.exe -nologo +LINK = xilink.exe -nologo +!else +CC = cl.exe -nologo +LINK = link.exe -nologo +!endif + +!ifdef DEBUG +CFLAGS = -Z7 -DPDCDEBUG -MT -D_CRT_SECURE_NO_WARNINGS +LDFLAGS = -debug -pdb:none +!else +CFLAGS = -Ox -MT -W3 -D_CRT_SECURE_NO_WARNINGS +LDFLAGS = +!endif + +!ifdef WIDE +WIDEOPT = -DPDC_WIDE +!endif + +!ifdef UTF8 +UTF8OPT = -DPDC_FORCE_UTF8 +!endif + +!ifdef CHTYPE_32 +CHTYPE_FLAGS= -DCHTYPE_32 +!endif + +!ifdef CHTYPE_16 +CHTYPE_FLAGS= -DCHTYPE_16 +!endif + +SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /MACHINE:$(PLATFORM) /OUT:pdcurses.dll + +CCLIBS = user32.lib gdi32.lib advapi32.lib shell32.lib comdlg32.lib +# may need to add msvcrt.lib for VC 2.x, VC 5.0 doesn't want it +#CCLIBS = msvcrt.lib user32.lib gdi32.lib advapi32.lib comdlg32.lib + +LIBEXE = lib -nologo + +LIBCURSES = pdcurses.lib +CURSESDLL = pdcurses.dll + +!ifdef DLL +DLLOPT = -DPDC_DLL_BUILD +PDCLIBS = $(CURSESDLL) +!else +PDCLIBS = $(LIBCURSES) +!endif + +BUILD = $(CC) -I$(PDCURSES_SRCDIR) -c $(CFLAGS) $(CHTYPE_FLAGS) $(DLLOPT) \ +$(WIDEOPT) $(UTF8OPT) + +all: $(PDCLIBS) + +clean: + -del *.obj + -del *.lib + -del *.exe + -del *.dll + -del *.exp + -del *.res + +demos: $(DEMOS) + +DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj + +$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) +$(PDCOBJS) : $(PDCURSES_WIN_H) +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) +panel.obj : $(PANEL_HEADER) +terminfo.obj: $(TERM_HEADER) + +!ifndef DLL +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS) +!endif + +$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) pdcurses.obj + $(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(CCLIBS) + +pdcurses.res pdcurses.obj: $(osdir)\pdcurses.rc $(osdir)\pdcurses.ico + rc /r /fopdcurses.res $(osdir)\pdcurses.rc + cvtres /MACHINE:$(PLATFORM) /NOLOGO /OUT:pdcurses.obj pdcurses.res + +{$(srcdir)\}.c{}.obj:: + $(BUILD) $< + +{$(osdir)\}.c{}.obj:: + $(BUILD) $< + +{$(demodir)\}.c{}.obj:: + $(BUILD) $< + +.obj.exe: + $(LINK) $(LDFLAGS) $< $(LIBCURSES) $(CCLIBS) + +tuidemo.exe: tuidemo.obj tui.obj + $(LINK) $(LDFLAGS) $*.obj tui.obj $(LIBCURSES) $(CCLIBS) + +tui.obj: $(demodir)\tui.c $(demodir)\tui.h + $(BUILD) -I$(demodir) $(demodir)\tui.c + +tuidemo.obj: $(demodir)\tuidemo.c + $(BUILD) -I$(demodir) $(demodir)\tuidemo.c + +PLATFORM1 = Visual C++ +PLATFORM2 = Microsoft Visual C/C++ for Win32 +ARCNAME = pdc$(VER)_vc_w32 + +!include $(PDCURSES_SRCDIR)\makedist.mif diff --git a/3rd-party/PDCurses/wingui/Makefile.wcc b/3rd-party/PDCurses/wingui/Makefile.wcc new file mode 100644 index 0000000..725d6e3 --- /dev/null +++ b/3rd-party/PDCurses/wingui/Makefile.wcc @@ -0,0 +1,51 @@ +# Watcom WMAKE Makefile for PDCurses library - Win32 Watcom C/C++ 10.6+ +# +# Usage: wmake -f [wingui/]Makefile.wcc [DEBUG=Y] [WIDE=Y] [UTF8=Y] [target] +# +# where target can be any of: +# [all|demos|pdcurses.lib|testcurs.exe...] + +!ifdef %PDCURSES_SRCDIR +PDCURSES_SRCDIR = $(%PDCURSES_SRCDIR) +!else +PDCURSES_SRCDIR = .. +!endif + +!include $(PDCURSES_SRCDIR)/version.mif + +osdir = $(PDCURSES_SRCDIR)/wingui + +CC = wcc386 +TARGET = nt_win + +CFLAGS = -ei -zq -wx -i=$(PDCURSES_SRCDIR) + +!ifeq DEBUG Y +CFLAGS += -hd -od -d2 -dDEBUG -DPDCDEBUG +LDFLAGS = DEBUG ALL op q sys $(TARGET) +!else +CFLAGS += -oneatx +LDFLAGS = op q sys $(TARGET) +!endif + +!ifeq WIDE Y +CFLAGS += -DPDC_WIDE +!endif + +!ifeq UTF8 Y +CFLAGS += -DPDC_FORCE_UTF8 +!endif + +LIBEXE = wlib -q -n -t + +!include $(PDCURSES_SRCDIR)/watcom.mif + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + $(LIBEXE) $@ $(LIBOBJS) $(PDCOBJS) + copy $(LIBCURSES) panel.lib + +PLATFORM1 = Watcom C++ WinGUI +PLATFORM2 = Open Watcom 1.6 for WinGUI +ARCNAME = pdc$(VER)_wcc_w32 + +!include $(PDCURSES_SRCDIR)/makedist.mif diff --git a/3rd-party/PDCurses/wingui/README.md b/3rd-party/PDCurses/wingui/README.md new file mode 100644 index 0000000..4b58370 --- /dev/null +++ b/3rd-party/PDCurses/wingui/README.md @@ -0,0 +1,93 @@ +PDCurses for WinGUI +================== + +This directory contains PDCurses source code files specific to Win32 +graphics mode (Win95 and all subsequent forks of Windows). + +Building +-------- + + (Note that the following is almost identical to the instructions + for the Win32 console flavor of PDCurses.) + +- Choose the appropriate makefile for your compiler: + + Makefile.bcc - Borland C++ 4.0.2+ + Makefile.dmc - Digital Mars + Makefile.lcc - LCC-Win32 + Makefile.mng - MinGW, Cygnus GNU Compiler + Makefile.vc - Microsoft Visual C++ 2.0+ or later & Intel(R) compiler + Makefile.wcc - Watcom 10.6+ or OpenWATCOM + +- Optionally, you can build in a different directory than the platform + directory by setting PDCURSES_SRCDIR to point to the directory where + you unpacked PDCurses, and changing to your target directory: + + set PDCURSES_SRCDIR=c:\pdcurses + + This won't work with the LCC or Digital Mars makefiles, nor will the + options described below. + +- Build it: + + make -f makefilename + + (For Watcom, use "wmake" instead of "make"; for MSVC, "nmake".) You'll + get the libraries (pdcurses.lib or .a, depending on your compiler; and + panel.lib or .a), the demos (*.exe), and a lot of object files. Note + that the panel library is just a copy of the main library, provided + for convenience; both panel and curses functions are in the main + library. + + You can also give the optional parameter "WIDE=Y", to build the + library with wide-character (Unicode) support: + + make -f Makefile.mng WIDE=Y + + When built this way, the library is not compatible with Windows 9x, + unless you also link with the Microsoft Layer for Unicode (not + tested). + + For the Intel(R) compiler, use Makefile.vc and add ICC=Y. + + By default, Makefile.vc results in 64-bit code for both VC and Intel(R). + Add IX86=Y to generate 32-bit code. (Other builds are 32-bit only.) + + Another option, "UTF8=Y", makes PDCurses ignore the system locale, and + treat all narrow-character strings as UTF-8. This option has no effect + unless WIDE=Y is also set. This was originally provided to get around + poor support for UTF-8 in the Win32 console: + + make -f Makefile.mng WIDE=Y UTF8=Y + + WinGUI doesn't have the same limitations as the Win32 console flavor, + but UTF-8 and non-UTF-8 versions are still available. If nothing else, + this means that if you've built a Win32 console PDCurses DLL with any + configuration, you can build a matching WinGUI DLL and swap between + console or GUI PDCurses just by swapping DLLs. + + You can also use the optional parameter "DLL=Y" with Visual C++, + MinGW or Cygwin, to build the library as a DLL: + + nmake -f Makefile.vc WIDE=Y DLL=Y + + When you build the library as a Windows DLL, you must always define + PDC_DLL_BUILD when linking against it. (Or, if you only want to use + the DLL, you could add this definition to your curses.h.) + + If cross-compiling from Linux, add the parameter `_w64=1` to get + 64-bit code (default will be 32-bit). + + make -f Makefile.mng _w64=1 [WIDE=Y UTF8=Y DLL=Y] + +Distribution Status +------------------- + +The files in this directory are released to the Public Domain. + +Acknowledgements +---------------- + +Based heavily on the Win32 console flavor of PDCurses by Chris Szurgot +, ported to Win32 GUI by Bill Gray +. diff --git a/3rd-party/PDCurses/wingui/pdcclip.c b/3rd-party/PDCurses/wingui/pdcclip.c new file mode 100644 index 0000000..0b86951 --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcclip.c @@ -0,0 +1,174 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +/*man-start************************************************************** + +clipboard +--------- + +### Synopsis + + int PDC_getclipboard(char **contents, long *length); + int PDC_setclipboard(const char *contents, long length); + int PDC_freeclipboard(char *contents); + int PDC_clearclipboard(void); + +### Description + + PDC_getclipboard() gets the textual contents of the system's + clipboard. This function returns the contents of the clipboard + in the contents argument. It is the responsibility of the + caller to free the memory returned, via PDC_freeclipboard(). + The length of the clipboard contents is returned in the length + argument. + + PDC_setclipboard copies the supplied text into the system's + clipboard, emptying the clipboard prior to the copy. + + PDC_clearclipboard() clears the internal clipboard. + +### Return Values + + indicator of success/failure of call. + PDC_CLIP_SUCCESS the call was successful + PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for + the clipboard contents + PDC_CLIP_EMPTY the clipboard contains no text + PDC_CLIP_ACCESS_ERROR no clipboard support + +### Portability + X/Open BSD SYS V + PDC_getclipboard - - - + PDC_setclipboard - - - + PDC_freeclipboard - - - + PDC_clearclipboard - - - + +**man-end****************************************************************/ + +#ifdef PDC_WIDE +# define PDC_TEXT CF_UNICODETEXT +#else +# define PDC_TEXT CF_OEMTEXT +#endif + +int PDC_getclipboard_handle( HANDLE *handle) +{ + PDC_LOG(("PDC_getclipboard() - called\n")); + + if (!OpenClipboard(NULL)) + { + return PDC_CLIP_ACCESS_ERROR; + } + + if ((*handle = GetClipboardData(PDC_TEXT)) == NULL) + { + CloseClipboard(); + return PDC_CLIP_EMPTY; + } + + return PDC_CLIP_SUCCESS; +} + +int PDC_getclipboard(char **contents, long *length) +{ + HANDLE handle; + int rval = PDC_getclipboard_handle( &handle); + + if( rval == PDC_CLIP_SUCCESS) + { + void *tptr = GlobalLock( handle); + + if( tptr) + { +#ifdef PDC_WIDE + size_t len = wcslen((wchar_t *)tptr) * 3; +#else + size_t len = strlen( tptr); +#endif + + *contents = (char *)GlobalAlloc( GMEM_FIXED, len + 1); + + if( !*contents) + rval = PDC_CLIP_MEMORY_ERROR; + else + { +#ifdef PDC_WIDE + len = PDC_wcstombs( (char *)*contents, tptr, len); +#else + strcpy((char *)*contents, tptr); +#endif + } + *length = (long)len; + GlobalUnlock( handle); + } + else + rval = PDC_CLIP_MEMORY_ERROR; + CloseClipboard(); + } + return rval; +} + +int PDC_setclipboard_raw( const char *contents, long length, + const bool translate_multibyte_to_wide_char) +{ + HGLOBAL handle; + LPTSTR buff; + + PDC_LOG(("PDC_setclipboard() - called\n")); + + if (!OpenClipboard(NULL)) + return PDC_CLIP_ACCESS_ERROR; + + handle = GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE, + (length + 1) * sizeof(TCHAR)); + + if (!handle) + return PDC_CLIP_MEMORY_ERROR; + + buff = GlobalLock(handle); + +#ifdef PDC_WIDE + if( translate_multibyte_to_wide_char) + PDC_mbstowcs((wchar_t *)buff, contents, length); + else + memcpy((char *)buff, contents, (length + 1) * sizeof( wchar_t)); +#else + memcpy((char *)buff, contents, length); + buff[length] = 0; /* ensure null termination */ +#endif + GlobalUnlock(handle); + EmptyClipboard(); + + if( !SetClipboardData(PDC_TEXT, handle)) + { + GlobalFree(handle); + return PDC_CLIP_ACCESS_ERROR; + } + + CloseClipboard(); + + return PDC_CLIP_SUCCESS; +} + +int PDC_setclipboard(const char *contents, long length) +{ + return( PDC_setclipboard_raw( contents, length, TRUE)); +} + +int PDC_freeclipboard(char *contents) +{ + PDC_LOG(("PDC_freeclipboard() - called\n")); + + GlobalFree(contents); + return PDC_CLIP_SUCCESS; +} + +int PDC_clearclipboard(void) +{ + PDC_LOG(("PDC_clearclipboard() - called\n")); + + EmptyClipboard(); + + return PDC_CLIP_SUCCESS; +} diff --git a/3rd-party/PDCurses/wingui/pdcdisp.c b/3rd-party/PDCurses/wingui/pdcdisp.c new file mode 100644 index 0000000..109a935 --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcdisp.c @@ -0,0 +1,718 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +#include +#include +#include +#include + +/* For this 'real Windows' version, we use all Unicode all the time, +including for ACS characters, and even when PDC_WIDE isn't #defined +(i.e., when running in 'legacy' 8-bit character mode) See 'acs_defs.h' +for details. */ + +#define USE_UNICODE_ACS_CHARS 1 + +#include "acs_defs.h" + +static const unsigned short starting_ascii_to_unicode[32] = { + 0, + 0x263a, /* 1 smiling face */ + 0x263b, /* 2 smiling face inverted */ + 0x2665, /* 3 heart */ + 0x2666, /* 4 diamond */ + 0x2663, /* 5 club */ + 0x2660, /* 6 spade */ + 0x2024, /* 7 small bullet */ + 0x25d8, /* 8 inverted bullet */ + 0x25bc, /* 9 hollow bullet */ + 0x25d9, /* 10 inverted hollow bullet */ + 0x2642, /* 11 male/Mars symbol */ + 0x2640, /* 12 female/Venus symbol */ + 0x266a, /* 13 eighth note */ + 0x266c, /* 14 two sixteenth notes */ + 0x263c, /* 15 splat */ + 0x25b6, /* 16 right-pointing triangle */ + 0x25c0, /* 17 left-pointing triangle */ + 0x2195, /* 18 double up/down arrow */ + 0x203c, /* 19 double exclamation !! */ + 0x00b6, /* 20 pilcrow */ + 0xa7, /* 21 */ + 0x2582, /* 22 lower 1/3 block */ + 0x280d, /* 23 double up/down arrow */ + 0x2191, /* 24 up arrow */ + 0x2193, /* 25 down arrow */ + 0x2192, /* 26 right arrow */ + 0x2190, /* 27 left arrow */ + 0x2319, /* 28 */ + 0x280c, /* 29 left & right arrow */ + 0x25b2, /* 30 up triangle */ + 0x25bc}; /* 31 down triangle */ + +/* Cursors may be added to the 'shapes' array. A 'shapes' string +defines the cursor as one or more rectangles, separated by semicolons. +The coordinates of the upper left and lower right corners are given, +usually just as integers from zero to eight. Thus, "0488" means a +rectangle running from (0,4), middle of the left side, to (8,8), +bottom right corner: a rectangle filling the bottom half of the +character cell. "0048" would fill the left half of the cell, and +"0082;6088" would fill the top and bottom quarters of the cell. + + However, a coordinate may be followed by a + or -, and then by a +single-digit offset in pixels. So "08-4" refers to a point on the +left-hand side of the character cell, four pixels from the bottom. I +admit that the cursor descriptions themselves look a little strange! +But this way of describing cursors is compact and lends itself to some +pretty simple code. + + The first three lines are standard PDCurses cursors: 0=no cursor, +1=four-pixel thick line at bottom of the cell, 2="high-intensity", +i.e., a filled block. The rest are extended cursors, not currently +available in other PDCurses flavors. */ + +#define N_CURSORS 9 + +static void redraw_cursor_from_index( const HDC hdc, const int idx) +{ + const char *shapes[N_CURSORS] = { + "", /* 0: invisible */ + "08-488", /* 1: normal: four lines at bottom */ + "0088", /* 2: full block */ + "0088;0+10+18-18-1", /* 3: outlined block */ + "28-368;4-10+34+18-3;2060+3", /* 4: caret */ + "0488", /* 5: bottom half block */ + "2266", /* 6: central block */ + "0385;3053;3558", /* 7: cross */ + "0088;0+10+48-18-4" }; /* 8: outlined block: heavy top/bottom*/ + const char *sptr = shapes[idx]; + LONG left, top; + extern int PDC_cxChar, PDC_cyChar; + + left = SP->curscol * PDC_cxChar; + top = SP->cursrow * PDC_cyChar; + while( *sptr) + { + int i; + LONG coords[4]; + RECT rect; + + for( i = 0; i < 4; i++) + { + coords[i] = (( i & 1) ? + top + (PDC_cyChar * (*sptr - '0') + 4) / 8 : + left + (PDC_cxChar * (*sptr - '0') + 4) / 8); + sptr++; + if( *sptr == '+' || *sptr == '-') + { + if( *sptr == '+') + coords[i] += sptr[1] - '0'; + else + coords[i] -= sptr[1] - '0'; + sptr += 2; + } + } + rect.left = coords[0]; + rect.top = coords[1]; + rect.right = coords[2]; + rect.bottom = coords[3]; + InvertRect( hdc, &rect); + if( *sptr == ';') + sptr++; + } +} + +/* PDC_current_cursor_state( ) determines which cursor, if any, +is currently shown. This may depend on the blink state. Also, +if the window currently lacks the focus, we show cursor 3 (a hollow +box) in place of any visible cursor. */ + +static int PDC_current_cursor_state( void) +{ + extern int PDC_blink_state; + extern HWND PDC_hWnd; + const int shift_amount = (PDC_blink_state ? 0 : 8); + const int cursor_style_for_unfocussed_window = + PDC_CURSOR( PDC_CURSOR_OUTLINE, PDC_CURSOR_OUTLINE); + int cursor_style; + + /* for unfocussed windows, show an hollow box: */ + if( SP->visibility && (PDC_hWnd != GetForegroundWindow( ))) + cursor_style = cursor_style_for_unfocussed_window; + else /* otherwise, just show the cursor "normally" */ + cursor_style = SP->visibility; + return( (cursor_style >> shift_amount) & 0xff); +} + +static void redraw_cursor( const HDC hdc) +{ + const int cursor_style = PDC_current_cursor_state( ); + + if( cursor_style > 0 && cursor_style < N_CURSORS) + redraw_cursor_from_index( hdc, cursor_style); +} + +/* position "hardware" cursor at (y, x). We don't have a for-real hardware */ +/* cursor in this version, of course, but we can fake it. Note that much */ +/* of the logic was borrowed from the SDL version. In particular, the */ +/* cursor is moved by first overwriting the "original" location. */ + +void PDC_gotoyx(int row, int col) +{ + PDC_LOG(("PDC_gotoyx() - called: row %d col %d from row %d col %d\n", + row, col, SP->cursrow, SP->curscol)); + + /* clear the old cursor, if it's on-screen: */ + if( SP->cursrow >= 0 && SP->curscol >= 0 && + SP->cursrow < SP->lines && SP->curscol < SP->cols) + { + const int temp_visibility = SP->visibility; + + SP->visibility = 0; + PDC_transform_line( SP->cursrow, SP->curscol, 1, + curscr->_y[SP->cursrow] + SP->curscol); + SP->visibility = temp_visibility; + } + + /* ...then draw the new (assuming it's actually visible). */ + /* This used to require some logic. Now the redraw_cursor() */ + /* function figures out what cursor should be drawn, if any. */ + if( SP->visibility) + { + extern HWND PDC_hWnd; + HDC hdc = GetDC( PDC_hWnd) ; + + SP->curscol = col; + SP->cursrow = row; + redraw_cursor( hdc); + ReleaseDC( PDC_hWnd, hdc) ; + } +} + +int PDC_font_size = 12; +TCHAR PDC_font_name[80]; + +static LOGFONT PDC_get_logical_font( const int font_idx) +{ + LOGFONT lf; + + memset(&lf, 0, sizeof(LOGFONT)); /* Clear out structure. */ + lf.lfHeight = -PDC_font_size; +#ifdef PDC_WIDE + if( !*PDC_font_name) + wcscpy( PDC_font_name, _T("Courier New")); + if( font_idx & 4) + wcscpy( lf.lfFaceName, _T("Unifont")); + else + wcscpy( lf.lfFaceName, PDC_font_name ); +/* wprintf( L"New font: %s\n", PDC_font_name); */ +#else + if( !*PDC_font_name) + strcpy( PDC_font_name, "Courier New"); + if( font_idx & 4) + strcpy( lf.lfFaceName, "Unifont"); + else + strcpy( lf.lfFaceName, PDC_font_name); +#endif +/* lf.lfPitchAndFamily = FIXED_PITCH | FF_MODERN; */ + lf.lfPitchAndFamily = FF_MODERN; + lf.lfWeight = ((font_idx & 1) ? FW_EXTRABOLD : FW_NORMAL); + lf.lfItalic = ((font_idx & 2) ? TRUE : FALSE); + lf.lfCharSet = ANSI_CHARSET; + lf.lfQuality = PROOF_QUALITY; + lf.lfOutPrecision = OUT_RASTER_PRECIS; + return( lf); +} + +HFONT PDC_get_font_handle( const int font_idx) +{ + LOGFONT lf = PDC_get_logical_font( font_idx); + + return( CreateFontIndirect( &lf)); +} + +int debug_printf( const char *format, ...); /* pdcscrn.c */ + +int PDC_choose_a_new_font( void) +{ + LOGFONT lf = PDC_get_logical_font( 0); + CHOOSEFONT cf; + int rval; + extern HWND PDC_hWnd; + + lf.lfHeight = -PDC_font_size; + debug_printf( "In PDC_choose_a_new_font: %d\n", lf.lfHeight); + memset( &cf, 0, sizeof( CHOOSEFONT)); + cf.lStructSize = sizeof( CHOOSEFONT); + cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS; + cf.hwndOwner = PDC_hWnd; + cf.lpLogFont = &lf; + cf.rgbColors = RGB( 0, 0, 0); + rval = ChooseFont( &cf); + if( rval) +#ifdef PDC_WIDE + wcscpy( PDC_font_name, lf.lfFaceName); +#else + strcpy( PDC_font_name, lf.lfFaceName); +#endif + debug_printf( "rval %d; %ld\n", rval, CommDlgExtendedError( )); + debug_printf( "output size: %d\n", lf.lfHeight); + PDC_font_size = -lf.lfHeight; + return( rval); +} + + /* This function 'intensifies' a color by shifting it toward white. */ + /* It used to average the input color with white. Then it did a */ + /* weighted average: 2/3 of the input color, 1/3 white, for a */ + /* lower "intensification" level. */ + /* Then Mark Hessling suggested that the output level should */ + /* remap zero to 85 (= 255 / 3, so one-third intensity), and input */ + /* of 192 or greater should be remapped to 255 (full intensity). */ + /* Assuming we want a linear response between zero and 192, that */ + /* leads to output = 85 + input * (255-85)/192. */ + /* This should lead to proper handling of bold text in legacy */ + /* apps, where "bold" means "high intensity". */ + +static COLORREF intensified_color( COLORREF ival) +{ + int rgb, i; + COLORREF oval = 0; + + for( i = 0; i < 3; i++, ival >>= 8) + { + rgb = (int)( ival & 0xff); + if( rgb >= 192) + rgb = 255; + else + rgb = 85 + rgb * (255 - 85) / 192; + oval |= ((COLORREF)rgb << (i * 8)); + } + return( oval); +} + + /* For use in adjusting colors for A_DIMmed characters. Just */ + /* knocks down the intensity of R, G, and B by 1/3. */ + +static COLORREF dimmed_color( COLORREF ival) +{ + unsigned i; + COLORREF oval = 0; + + for( i = 0; i < 3; i++, ival >>= 8) + { + unsigned rgb = (unsigned)( ival & 0xff); + + rgb -= (rgb / 3); + oval |= ((COLORREF)rgb << (i * 8)); + } + return( oval); +} + +/* see 'addch.c' for an explanation of how combining chars are handled. */ + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + #ifdef PDC_WIDE + #define USING_COMBINING_CHARACTER_SCHEME + int PDC_expand_combined_characters( const cchar_t c, cchar_t *added); /* addch.c */ + #endif + + /* PDC_get_rgb_values(), extract_packed_rgb(), intensified_component(), */ + /* intensified_color(), and dimmed_color() each exist in x11/x11.c, */ + /* wingui/pdcdisp.c, and sdl2/pdcdisp.c in forms slightly modified for */ + /* each platform. But they all look pretty much alike. */ + + /* PDCurses stores RGBs in fifteen bits, five bits each */ + /* for red, green, blue. A COLORREF uses eight bits per */ + /* channel. Hence the following. */ +static COLORREF extract_packed_rgb( const chtype color) +{ + const int red = (int)( (color << 3) & 0xf8); + const int green = (int)( (color >> 2) & 0xf8); + const int blue = (int)( (color >> 7) & 0xf8); + + return( RGB( red, green, blue)); +} +#endif + + +void PDC_get_rgb_values( const chtype srcp, + COLORREF *foreground_rgb, COLORREF *background_rgb) +{ + const int color = (int)(( srcp & A_COLOR) >> PDC_COLOR_SHIFT); + bool reverse_colors = ((srcp & A_REVERSE) ? TRUE : FALSE); + bool intensify_backgnd = FALSE; + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + if( srcp & A_RGB_COLOR) + { + /* Extract RGB from 30 bits of the color field */ + *background_rgb = extract_packed_rgb( srcp >> PDC_COLOR_SHIFT); + *foreground_rgb = extract_packed_rgb( srcp >> (PDC_COLOR_SHIFT + 15)); + } + else +#endif + { + extern COLORREF *pdc_rgbs; + short foreground_index, background_index; + + PDC_pair_content( (short)color, &foreground_index, &background_index); + *foreground_rgb = pdc_rgbs[foreground_index]; + *background_rgb = pdc_rgbs[background_index]; + } + + if( srcp & A_BLINK) + { + extern int PDC_really_blinking; /* see 'pdcsetsc.c' */ + extern int PDC_blink_state; + + if( !PDC_really_blinking) /* convert 'blinking' to 'bold' */ + intensify_backgnd = TRUE; + else if( PDC_blink_state) + reverse_colors = !reverse_colors; + } + if( reverse_colors) + { + const COLORREF temp = *foreground_rgb; + + *foreground_rgb = *background_rgb; + *background_rgb = temp; + } + + if( srcp & A_BOLD) + *foreground_rgb = intensified_color( *foreground_rgb); + if( intensify_backgnd) + *background_rgb = intensified_color( *background_rgb); + if( srcp & A_DIM) + *foreground_rgb = dimmed_color( *foreground_rgb); + if( srcp & A_DIM) + *background_rgb = dimmed_color( *background_rgb); +} + +#ifdef PDC_WIDE +const chtype MAX_UNICODE = 0x110000; +#endif + +#ifdef USE_FALLBACK_FONT +GLYPHSET *PDC_unicode_range_data = NULL; + +/* Note that in the following, if a character has a Unicode point +greater than 64K (i.e., it's not in the Basic Multilingual Plane), +we assume it has a glyph in the font. The problem is that, due to +the brain-dead implementation of Unicode in Windoze, we can't +actually tell if there is a glyph or not; the "range" data is 16-bit. */ + +static bool character_is_in_font( chtype ichar) +{ + int i; + WCRANGE *wptr = PDC_unicode_range_data->ranges; + + if( (ichar & A_ALTCHARSET) && (ichar & A_CHARTEXT) < 0x80) + ichar = acs_map[ichar & 0x7f]; + ichar &= A_CHARTEXT; + if( ichar > MAX_UNICODE) /* assume combining chars won't be */ + return( FALSE); /* supported; they rarely are */ + if( ichar > 0xffff) /* see above comments */ + return( TRUE); + for( i = PDC_unicode_range_data->cRanges; i; i--, wptr++) + if( wptr->wcLow > ichar) + return( FALSE); + else if( wptr->wcLow + wptr->cGlyphs > ichar) + return( TRUE); + /* Didn't find it in any range; it must not be in the font */ + return( FALSE); +} +#endif /* #ifdef USE_FALLBACK_FONT */ + +/* update the given physical line to look like the corresponding line in +curscr. + + NOTE that if x > 0, we decrement it and srcp, and increment the +length. In other words, we draw the preceding character, too. This +is done because, at certain font sizes, characters break out and +overwrite the preceding character. That results in debris left on +the screen. + + The code also now increments the length only, drawing one more +character (i.e., draws the character following the "text we really +want"). Again, this helps to avoid debris left on the screen. + + The 'ExtTextOut' function takes an lpDx array that specifies the exact +placement of each character relative to the previous character. This seems +to help avoid most (but not all) stray pixels from being displayed. The +problem is that, at certain font sizes, letters may be drawn that don't +fit properly in the clip rectangle; and they aren't actually clipped +correctly, despite the use of the ETO_CLIPPED flag. But things do seem +to be much better than was the case back when plain 'TextOut' was used. */ + +#define N_CACHED_FONTS 8 + +static HFONT hFonts[N_CACHED_FONTS]; + +#define BUFFSIZE 50 + +int PDC_find_ends_of_selected_text( const int line, + const RECT *rect, int *x); /* pdcscrn.c */ + +void PDC_transform_line_given_hdc( const HDC hdc, const int lineno, + int x, int len, const chtype *srcp) +{ + HFONT hOldFont = (HFONT)0; + extern int PDC_cxChar, PDC_cyChar; + int i, curr_color = -1; + attr_t font_attrib = (attr_t)-1; + int cursor_overwritten = FALSE; + COLORREF foreground_rgb = 0; + chtype prev_ch = 0; + extern RECT PDC_mouse_rect; /* see 'pdcscrn.c' */ + int selection[2]; + + if( !srcp) /* just freeing up fonts */ + { + for( i = 0; i < N_CACHED_FONTS; i++) + if( hFonts[i]) + { + DeleteObject( hFonts[i]); + hFonts[i] = NULL; + } +#ifdef USE_FALLBACK_FONT + if( PDC_unicode_range_data) + { + free( PDC_unicode_range_data); + PDC_unicode_range_data = NULL; + } +#endif + return; + } + /* Seems to me as if the input text to this function */ + if( x < 0) /* should _never_ be off-screen. But it sometimes is. */ + { /* Clipping is therefore necessary. */ + len += x; + srcp -= x; + x = 0; + } + len++; /* draw an extra char to avoid leaving garbage on screen */ + if( len > SP->cols - x) + len = SP->cols - x; + if( lineno >= SP->lines || len <= 0 || lineno < 0) + return; + if( x) /* back up by one character to avoid */ + { /* leaving garbage on the screen */ + x--; + len++; + srcp--; + } + if( lineno == SP->cursrow && SP->curscol >= x && SP->curscol < x + len) + if( PDC_current_cursor_state( )) + cursor_overwritten = TRUE; + + + while( len) + { + extern int PDC_really_blinking; /* see 'pdcsetsc.c' */ + const attr_t attrib = (attr_t)( *srcp >> PDC_REAL_ATTR_SHIFT); + const int color = (int)(( *srcp & A_COLOR) >> PDC_COLOR_SHIFT); + attr_t new_font_attrib = (*srcp & (A_BOLD | A_ITALIC)); + RECT clip_rect; + wchar_t buff[BUFFSIZE]; + int lpDx[BUFFSIZE + 1]; + int olen = 0; +#ifdef USE_FALLBACK_FONT + const bool in_font = character_is_in_font( *srcp); +#endif + + for( i = 0; i < len && olen < BUFFSIZE - 1 +#ifdef USE_FALLBACK_FONT + && (in_font == character_is_in_font( srcp[i]) + || (srcp[i] & A_CHARTEXT) == MAX_UNICODE) +#endif + && attrib == (attr_t)( srcp[i] >> PDC_REAL_ATTR_SHIFT); i++) + { + chtype ch = srcp[i] & A_CHARTEXT; + +#if( defined( PDC_WIDE) && defined( CHTYPE_LONG)) + if( ch > 0xffff && ch < MAX_UNICODE) /* use Unicode surrogates to fit */ + { /* >64K values into 16-bit wchar_t: */ + ch -= 0x10000; + buff[olen] = (wchar_t)( 0xd800 | (ch >> 10)); + lpDx[olen] = 0; /* ^ upper 10 bits */ + olen++; + ch = (wchar_t)( 0xdc00 | (ch & 0x3ff)); /* lower 10 bits */ + } +#if( CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes; combining */ + if( ch > MAX_UNICODE) /* chars & fullwidth supported */ + { + cchar_t added[10], root = ch; + int n_combined = 0; + + while( (root = PDC_expand_combined_characters( root, + &added[n_combined])) > MAX_UNICODE) + { + n_combined++; + } + buff[olen] = (wchar_t)root; + lpDx[olen] = 0; + olen++; + ch = (wchar_t)added[n_combined]; + while( n_combined) + { + n_combined--; + buff[olen] = (wchar_t)added[n_combined]; + lpDx[olen] = 0; + olen++; + } + } +#endif +#endif + if( (srcp[i] & A_ALTCHARSET) && ch < 0x80) + ch = acs_map[ch & 0x7f]; + else if( ch < 32) + ch = starting_ascii_to_unicode[ch]; +#ifndef PDC_WIDE /* If we're in Unicode, assume */ + else if( ch <= 0xff) /* the incoming text doesn't need */ + { /* code-page translation */ + char c = (char)ch; + wchar_t z; + + mbtowc( &z, &c, 1); + ch = (chtype)z; + } + assert( "We should never get here"); +#endif + buff[olen] = (wchar_t)ch; + lpDx[olen] = PDC_cxChar; +#ifdef PDC_WIDE + if( ch != MAX_UNICODE) + olen++; + else if( olen) /* prev char is double-width */ + lpDx[olen - 1] = 2 * PDC_cxChar; +#else + olen++; +#endif + } + lpDx[olen] = PDC_cxChar; + if( color != curr_color || ((prev_ch ^ *srcp) & (A_REVERSE | A_BLINK | A_BOLD | A_DIM))) + { + COLORREF background_rgb; + + PDC_get_rgb_values( *srcp, &foreground_rgb, &background_rgb); + curr_color = color; + SetTextColor( hdc, foreground_rgb); + SetBkColor( hdc, background_rgb); + } + if( !PDC_really_blinking && (*srcp & A_BLINK)) + new_font_attrib &= ~A_BLINK; +#ifdef USE_FALLBACK_FONT + if( !in_font) /* flag to indicate use of */ + new_font_attrib |= 1; /* fallback font */ +#endif + if( new_font_attrib != font_attrib) + { + HFONT hFont; + int idx = 0; + + font_attrib = new_font_attrib; + if( font_attrib & A_BOLD) + idx |= 1; + if( font_attrib & A_ITALIC) + idx |= 2; + if( font_attrib & 1) /* use Unifont or other fallback font */ + idx |= 4; + if( !hFonts[idx]) + hFonts[idx] = PDC_get_font_handle( idx); + hFont = SelectObject( hdc, hFonts[idx]); + if( !hOldFont) + hOldFont = hFont; + } + prev_ch = *srcp; + clip_rect.left = x * PDC_cxChar; + clip_rect.top = lineno * PDC_cyChar; + clip_rect.right = clip_rect.left + i * PDC_cxChar; + clip_rect.bottom = clip_rect.top + PDC_cyChar; + ExtTextOutW( hdc, clip_rect.left, clip_rect.top, + ETO_CLIPPED | ETO_OPAQUE, &clip_rect, + buff, olen, (olen > 1 ? lpDx : NULL)); +#ifdef A_OVERLINE + if( *srcp & (A_UNDERLINE | A_RIGHTLINE | A_LEFTLINE | A_OVERLINE | A_STRIKEOUT)) +#else + if( *srcp & (A_UNDERLINE | A_RIGHTLINE | A_LEFTLINE)) +#endif + { + const int y1 = clip_rect.top; + const int y2 = clip_rect.bottom - 1; + const int x1 = clip_rect.left; + const int x2 = clip_rect.right; + int j; + extern COLORREF *pdc_rgbs; + const HPEN pen = CreatePen( PS_SOLID, 1, (SP->line_color == -1 ? + foreground_rgb : pdc_rgbs[SP->line_color])); + const HPEN old_pen = SelectObject( hdc, pen); + + if( *srcp & A_UNDERLINE) + { + MoveToEx( hdc, x1, y2, NULL); + LineTo( hdc, x2, y2); + } +#ifdef A_OVERLINE + if( *srcp & A_OVERLINE) + { + MoveToEx( hdc, x1, y1, NULL); + LineTo( hdc, x2, y1); + } + if( *srcp & A_STRIKEOUT) + { + MoveToEx( hdc, x1, (y1 + y2) / 2, NULL); + LineTo( hdc, x2, (y1 + y2) / 2); + } +#endif + if( *srcp & A_RIGHTLINE) + for( j = 0; j < i; j++) + { + MoveToEx( hdc, x2 - j * PDC_cxChar - 1, y1, NULL); + LineTo( hdc, x2 - j * PDC_cxChar - 1, y2); + } + if( *srcp & A_LEFTLINE) + for( j = 0; j < i; j++) + { + MoveToEx( hdc, x1 + j * PDC_cxChar, y1, NULL); + LineTo( hdc, x1 + j * PDC_cxChar, y2); + } + SelectObject( hdc, old_pen); + DeleteObject( pen); + } + if( PDC_find_ends_of_selected_text( lineno, &PDC_mouse_rect, selection)) + if( x <= selection[1] + 1 && x + i >= selection[0]) + { + RECT rect; + + rect.top = lineno * PDC_cyChar; + rect.bottom = rect.top + PDC_cyChar; + rect.right = max( x, selection[0]); + rect.left = min( x + i, selection[1] + 1); + rect.right *= PDC_cxChar; + rect.left *= PDC_cxChar; + InvertRect( hdc, &rect); + } + len -= i; + x += i; + srcp += i; + } + SelectObject( hdc, hOldFont); + /* ...did we step on the cursor? If so, redraw it: */ + if( cursor_overwritten) + redraw_cursor( hdc); +} + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + if( !srcp) /* just freeing up fonts */ + PDC_transform_line_given_hdc( 0, 0, 0, 0, NULL); + else + { + extern HWND PDC_hWnd; + const HDC hdc = GetDC( PDC_hWnd) ; + + PDC_transform_line_given_hdc( hdc, lineno, x, len, srcp); + ReleaseDC( PDC_hWnd, hdc); + } +} + diff --git a/3rd-party/PDCurses/wingui/pdcgetsc.c b/3rd-party/PDCurses/wingui/pdcgetsc.c new file mode 100644 index 0000000..d28d8ed --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcgetsc.c @@ -0,0 +1,30 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + + return SP->visibility; +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ + extern int PDC_n_rows; + + PDC_LOG(("PDC_get_rows() - called\n")); + return( PDC_n_rows); +} + +int PDC_get_columns(void) +{ + extern int PDC_n_cols; + + PDC_LOG(("PDC_get_columns() - called\n")); + return( PDC_n_cols); +} diff --git a/3rd-party/PDCurses/wingui/pdckbd.c b/3rd-party/PDCurses/wingui/pdckbd.c new file mode 100644 index 0000000..198ccfd --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdckbd.c @@ -0,0 +1,148 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" +#include + +/*man-start************************************************************** + + Name: pdckbd + + Synopsis: + unsigned long PDC_get_input_fd(void); + + Description: + PDC_get_input_fd() returns the file descriptor that PDCurses + reads its input from. It can be used for select(). (For the + WinGUI version, it's meaningless and returns zero.) + + Portability X/Open BSD SYS V + PDC_get_input_fd - - - + +**man-end****************************************************************/ + + +unsigned long PDC_get_input_fd(void) +{ + PDC_LOG(("PDC_get_input_fd() - called\n")); + + return 0L; +} + +void PDC_set_keyboard_binary(bool on) +{ + PDC_LOG(("PDC_set_keyboard_binary() - called\n")); +} + +/* check if a key or mouse event is waiting */ + +#define KEY_QUEUE_SIZE 30 + +extern int PDC_key_queue_low, PDC_key_queue_high; +extern int PDC_key_queue[KEY_QUEUE_SIZE]; +static TCHAR *clipboard_contents; +static long clipboard_len; + +int PDC_getclipboard_handle( HANDLE *handle); /* pdcclip.c */ + + /* When copying the clipboard contents for use in the key */ + /* queue, we leave out the line feeds. We also don't do */ + /* it at all if 'clipboard_contents' is already full. */ +void PDC_add_clipboard_to_key_queue( void) +{ + long i, j; + HANDLE handle; + + if( !clipboard_contents) + if( PDC_getclipboard_handle( &handle) == PDC_CLIP_SUCCESS) + { +#ifdef PDC_WIDE + const long len = (long)wcslen((wchar_t *)handle); +#else + const long len = (long)strlen((char *)handle); +#endif + + clipboard_contents = (TCHAR *)calloc( len + 1, sizeof( TCHAR)); + memcpy( clipboard_contents, (TCHAR *)handle, (len + 1) * sizeof( TCHAR)); + CloseClipboard( ); + for( i = j = 0; i < len; i++) + if( clipboard_contents[i] != 10) + clipboard_contents[j++] = clipboard_contents[i]; + clipboard_len = j; + } +} + +/* PDCurses message/event callback */ +/* Calling PDC_napms for one millisecond ensures that the message loop */ +/* is called and messages in general, and keyboard events in particular, */ +/* get processed. */ + +bool PDC_check_key(void) +{ + PDC_napms( 1); + if( PDC_key_queue_low != PDC_key_queue_high || clipboard_len) + return TRUE; + return FALSE; +} + +/* return the next available key or mouse event */ + +int PDC_get_key(void) +{ + int rval = -1; + + if( PDC_key_queue_low != PDC_key_queue_high) + { + rval = PDC_key_queue[PDC_key_queue_low++]; + if( PDC_key_queue_low == KEY_QUEUE_SIZE) + PDC_key_queue_low = 0; + } + else if( clipboard_len) + { + rval = *clipboard_contents; + clipboard_len--; + memmove( clipboard_contents, clipboard_contents + 1, clipboard_len * sizeof( TCHAR)); + if( !clipboard_len) + { + free( clipboard_contents); + clipboard_contents = NULL; + } + } + + SP->key_code = (rval >= KEY_MIN && rval <= KEY_MAX); + return rval; +} + +/* discard any pending keyboard or mouse input -- this is the core + routine for flushinp() */ + +void PDC_flushinp(void) +{ + PDC_LOG(("PDC_flushinp() - called\n")); + PDC_key_queue_low = PDC_key_queue_high = 0; + if( clipboard_len) + { + free( clipboard_contents); + clipboard_contents = NULL; + clipboard_len = 0; + } +} + +bool PDC_has_mouse( void) +{ + return TRUE; +} + +int PDC_mouse_set(void) +{ + /* If turning on mouse input: Set ENABLE_MOUSE_INPUT, and clear + all other flags, including the extended flags; + If turning off the mouse: Set QuickEdit Mode to the status it + had on startup, and clear all other flags */ + + return OK; +} + +int PDC_modifiers_set(void) +{ + return OK; +} diff --git a/3rd-party/PDCurses/wingui/pdcscrn.c b/3rd-party/PDCurses/wingui/pdcscrn.c new file mode 100644 index 0000000..2fd6f79 --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcscrn.c @@ -0,0 +1,2797 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" +#include +#include +#include + +/* COLOR_PAIR to attribute encoding table. */ + +static short *color_pair_indices = (short *)NULL; +COLORREF *pdc_rgbs = (COLORREF *)NULL; +static int menu_shown = 1; +static int min_lines = 25, max_lines = 25; +static int min_cols = 80, max_cols = 80; + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 && defined( PDC_WIDE) + #define USING_COMBINING_CHARACTER_SCHEME + int PDC_expand_combined_characters( const cchar_t c, cchar_t *added); /* addch.c */ +#endif + +/* Some older versions of Microsoft C/C++ don't understand about +inlined functions. Until we puzzle out which ones do and which +don't, we'll just leave "inlined" functions as plain old static +functions. */ + +#ifdef _MSC_VER +#define INLINE static +#else +#define INLINE static inline +#endif + +static int keep_size_within_bounds( int *lines, int *cols); +INLINE int set_default_sizes_from_registry( const int n_cols, const int n_rows, + const int xloc, const int yloc, const int menu_shown); +void PDC_transform_line_given_hdc( const HDC hdc, const int lineno, + int x, int len, const chtype *srcp); + +#define N_COLORS 256 + +#ifdef A_OVERLINE +#define A_ALL_LINES (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE | A_OVERLINE | A_STRIKEOUT) +#else +#define A_ALL_LINES (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE) +#endif + + /* If PDC_MAX_MOUSE_BUTTONS is undefined, it means the user hasn't */ + /* gotten a current 'curses.h' in which five-button mice are supported. */ + /* To handle this gracefully, we'll just fall back to three buttons. */ + +#ifndef PDC_MAX_MOUSE_BUTTONS + #define PDC_MAX_MOUSE_BUTTONS 3 +#endif + +#define VERTICAL_WHEEL_EVENT PDC_MAX_MOUSE_BUTTONS +#define HORIZONTAL_WHEEL_EVENT (PDC_MAX_MOUSE_BUTTONS + 1) + +unsigned long pdc_key_modifiers = 0L; +int PDC_show_ctrl_alts = 0; + +/* RR: Removed statis on next line */ +bool PDC_bDone = FALSE; +static HWND originally_focussed_window; + +int debug_printf( const char *format, ...) +{ + static bool debugging = TRUE; + + if( debugging) + { + const char *output_filename = getenv( "PDC_DEBUG"); + + if( !output_filename) + debugging = FALSE; /* don't bother trying again */ + else + { + FILE *ofile = fopen( output_filename, "a"); + + if( ofile) + { + va_list argptr; + va_start( argptr, format); + vfprintf( ofile, format, argptr); + va_end( argptr); + fclose( ofile); + } + else + { + printf( "Opening '%s' failed\n", output_filename); + exit( 0); + debugging = FALSE; /* don't bother trying again */ + } + } + } + return( 0); +} + +HWND PDC_hWnd; +static int PDC_argc = 0; +static char **PDC_argv = NULL; + +static void final_cleanup( void) +{ + debug_printf( "final_cleanup: SP = %p\n", SP); + if (SP) + { + RECT rect; + + GetWindowRect( PDC_hWnd, &rect); + set_default_sizes_from_registry( SP->cols, SP->lines, + rect.left, rect.top, menu_shown); + } + PDC_LOG(( "final_cleanup: freeing fonts\n")); + PDC_transform_line( 0, 0, 0, NULL); /* free any fonts */ + if( originally_focussed_window) + SetForegroundWindow( originally_focussed_window); + if( PDC_argc) + { + int i; + + for( i = 0; i < PDC_argc; i++) + free( PDC_argv[i]); + free( PDC_argv); + PDC_argc = 0; + PDC_argv = NULL; + } +#ifdef USING_COMBINING_CHARACTER_SCHEME + PDC_expand_combined_characters( 0, NULL); /* free internal buffer */ +#endif + debug_printf( "reset foreground window\n"); +} + +void PDC_scr_close(void) +{ + PDC_LOG(("PDC_scr_close() - called\n")); + final_cleanup( ); + PDC_bDone = TRUE; +} + +/* NOTE that PDC_scr_free( ) is called only from delscreen( ), */ +/* which is rarely called. It appears that most programs simply */ +/* rely on the memory getting freed when the program terminates. */ +/* It seems conceivable to me that we could get into some trouble */ +/* here, if SP is freed and NULLed, but then accessed again, */ +/* possibly within the WinGUI window thread. */ + +void PDC_scr_free(void) +{ + if (SP) + free(SP); + SP = (SCREEN *)NULL; + + if (color_pair_indices) + free(color_pair_indices); + color_pair_indices = (short *)NULL; + + if (pdc_rgbs) + free(pdc_rgbs); + pdc_rgbs = (COLORREF *)NULL; +} + +int PDC_choose_a_new_font( void); /* pdcdisp.c */ +void PDC_add_clipboard_to_key_queue( void); /* pdckbd.c */ + +#define KEY_QUEUE_SIZE 30 + + /* By default, the PDC_shutdown_key[] array contains 0 */ + /* (i.e., there's no key that's supposed to be returned for */ + /* exit handling), and 22 = Ctrl-V (i.e., hit Ctrl-V to */ + /* paste text from the clipboard into the key queue); then */ + /* Ctl-= (enlarge font) and Ctl-Minus (decrease font); then */ + /* Ctl-, (select font from dialog). */ + +static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 22, CTL_EQUAL, CTL_MINUS, + CTL_COMMA }; +int PDC_n_rows, PDC_n_cols; +int PDC_cxChar, PDC_cyChar, PDC_key_queue_low = 0, PDC_key_queue_high = 0; +int PDC_key_queue[KEY_QUEUE_SIZE]; + + /* If the following is true, you can enter Unicode values by hitting */ + /* Alt and holding it down while typing the value of the character on */ + /* the numeric keypad (for decimal entry); _or_ you can hit Alt-Padplus */ + /* and then enter a hex value, while holding down the Alt key. In */ + /* either case, when you release the Alt key, the Unicode character */ + /* is added to the queue. For hex entry, 0-9 can come either from */ + /* the numeric keypad or the "usual" keyboard. */ +bool PDC_allow_numpad_unicode = TRUE; +static int numpad_unicode_value = 0; + +static void adjust_font_size( const int font_size_change); + +static void add_key_to_queue( const int new_key) +{ + const int new_idx = ((PDC_key_queue_high + 1) % KEY_QUEUE_SIZE); + /* This is usually 10, but is set to 16 if the user */ + /* hits ALT_PADPLUS and is about to enter a hex value: */ + static int unicode_radix = 10; + + if( PDC_allow_numpad_unicode) + { + int digit = -1; + + if( new_key >= ALT_PAD0 && new_key <= ALT_PAD9) + digit = new_key - ALT_PAD0; + /* In hex Unicode entry, you can enter digits on both */ + /* the numeric and "standard" keyboards : */ + if( unicode_radix == 16 && new_key >= ALT_0 && new_key <= ALT_9) + digit = new_key - ALT_0; + if( unicode_radix == 16 && new_key >= ALT_A && new_key <= ALT_F) + digit = new_key - ALT_A + 10; + if( digit >= 0) + { + numpad_unicode_value = numpad_unicode_value * unicode_radix + digit; + return; + } + if( new_key == ALT_PADPLUS) + { /* signal to begin hex Unicode entry */ + unicode_radix = 16; + return; + } + } + unicode_radix = 10; + if( new_key && new_key == PDC_shutdown_key[FUNCTION_KEY_PASTE]) + PDC_add_clipboard_to_key_queue( ); + else if( new_key && new_key == PDC_shutdown_key[FUNCTION_KEY_ABORT]) + exit( -1); + else if( new_key && new_key == PDC_shutdown_key[FUNCTION_KEY_ENLARGE_FONT]) + adjust_font_size( 1); + else if( new_key && new_key == PDC_shutdown_key[FUNCTION_KEY_SHRINK_FONT]) + adjust_font_size( -1); + else if( new_key && new_key == PDC_shutdown_key[FUNCTION_KEY_CHOOSE_FONT]) + { + if( PDC_choose_a_new_font( )) + adjust_font_size( 0); + } + else if( new_idx != PDC_key_queue_low) + { + PDC_key_queue[PDC_key_queue_high] = new_key; + PDC_key_queue_high = new_idx; + } +} + +/************************************************************************ + * Table for key code translation of function keys in keypad mode * + * These values are for strict IBM keyboard compatibles only * + ************************************************************************/ + +typedef struct +{ + unsigned short normal; + unsigned short shift; + unsigned short control; + unsigned short alt; + unsigned short extended; +} KPTAB; + + +static const KPTAB kptab[] = +{ + {0, 0, 0, 0, 0 }, /* 0 */ + {0, 0, 0, 0, 0 }, /* 1 VK_LBUTTON */ + {0, 0, 0, 0, 0 }, /* 2 VK_RBUTTON */ + {CTL_PAUSE, 'a', 'b', 'c', 0 }, /* 3 VK_CANCEL */ + {0, 0, 0, 0, 0 }, /* 4 VK_MBUTTON */ + {0, 0, 0, 0, 0 }, /* 5 */ + {0, 0, 0, 0, 0 }, /* 6 */ + {0, 0, 0, 0, 0 }, /* 7 */ + {0x08, 0x08, 0x7F, ALT_BKSP, 0 }, /* 8 VK_BACK */ + {0x09, KEY_BTAB, CTL_TAB, ALT_TAB, 999 }, /* 9 VK_TAB */ + {0, 0, 0, 0, 0 }, /* 10 */ + {0, 0, 0, 0, 0 }, /* 11 */ + {KEY_B2, 0x35, CTL_PAD5, ALT_PAD5, 0 }, /* 12 VK_CLEAR */ + {0x0D, 0x0D, CTL_ENTER, ALT_ENTER, 1 }, /* 13 VK_RETURN */ + {0, 0, 0, 0, 0 }, /* 14 */ + {0, 0, 0, 0, 0 }, /* 15 */ + {0, 0, 0, 0, 0 }, /* 16 VK_SHIFT HANDLED SEPARATELY */ + {0, 0, 0, 0, 0 }, /* 17 VK_CONTROL HANDLED SEPARATELY */ + {0, 0, 0, 0, 0 }, /* 18 VK_MENU HANDLED SEPARATELY */ + {KEY_PAUSE, KEY_SPAUSE,CTL_PAUSE, 0, 0 }, /* 19 VK_PAUSE */ + {0, 0, 0, 0, 0 }, /* 20 VK_CAPITAL HANDLED SEPARATELY */ + {0, 0, 0, 0, 0 }, /* 21 VK_HANGUL */ + {0, 0, 0, 0, 0 }, /* 22 */ + {0, 0, 0, 0, 0 }, /* 23 VK_JUNJA */ + {0, 0, 0, 0, 0 }, /* 24 VK_FINAL */ + {0, 0, 0, 0, 0 }, /* 25 VK_HANJA */ + {0, 0, 0, 0, 0 }, /* 26 */ + {0x1B, 0x1B, 0x1B, ALT_ESC, 0 }, /* 27 VK_ESCAPE */ + {0, 0, 0, 0, 0 }, /* 28 VK_CONVERT */ + {0, 0, 0, 0, 0 }, /* 29 VK_NONCONVERT */ + {0, 0, 0, 0, 0 }, /* 30 VK_ACCEPT */ + {0, 0, 0, 0, 0 }, /* 31 VK_MODECHANGE */ + {0x20, 0x20, 0x20, 0x20, 0 }, /* 32 VK_SPACE */ + {KEY_A3, 0x39, CTL_PAD9, ALT_PAD9, 3 }, /* 33 VK_PRIOR */ + {KEY_C3, 0x33, CTL_PAD3, ALT_PAD3, 4 }, /* 34 VK_NEXT */ + {KEY_C1, 0x31, CTL_PAD1, ALT_PAD1, 5 }, /* 35 VK_END */ + {KEY_A1, 0x37, CTL_PAD7, ALT_PAD7, 6 }, /* 36 VK_HOME */ + {KEY_B1, 0x34, CTL_PAD4, ALT_PAD4, 7 }, /* 37 VK_LEFT */ + {KEY_A2, 0x38, CTL_PAD8, ALT_PAD8, 8 }, /* 38 VK_UP */ + {KEY_B3, 0x36, CTL_PAD6, ALT_PAD6, 9 }, /* 39 VK_RIGHT */ + {KEY_C2, 0x32, CTL_PAD2, ALT_PAD2, 10 }, /* 40 VK_DOWN */ + {0, 0, 0, 0, 0 }, /* 41 VK_SELECT */ + {0, 0, 0, 0, 0 }, /* 42 VK_PRINT */ + {0, 0, 0, 0, 0 }, /* 43 VK_EXECUTE */ + {KEY_PRINTSCREEN, 0, 0, ALT_PRINTSCREEN, 0 }, /* 44 VK_SNAPSHOT*/ + {PAD0, 0x30, CTL_PAD0, ALT_PAD0, 11 }, /* 45 VK_INSERT */ + {PADSTOP, 0x2E, CTL_PADSTOP, ALT_PADSTOP,12 }, /* 46 VK_DELETE */ + {0, 0, 0, 0, 0 }, /* 47 VK_HELP */ + {0x30, 0x29, CTL_0, ALT_0, 0 }, /* 48 */ + {0x31, 0x21, CTL_1, ALT_1, 0 }, /* 49 */ + {0x32, 0x40, CTL_2, ALT_2, 0 }, /* 50 */ + {0x33, 0x23, CTL_3, ALT_3, 0 }, /* 51 */ + {0x34, 0x24, CTL_4, ALT_4, 0 }, /* 52 */ + {0x35, 0x25, CTL_5, ALT_5, 0 }, /* 53 */ + {0x36, 0x5E, CTL_6, ALT_6, 0 }, /* 54 */ + {0x37, 0x26, CTL_7, ALT_7, 0 }, /* 55 */ + {0x38, 0x2A, CTL_8, ALT_8, 0 }, /* 56 */ + {0x39, 0x28, CTL_9, ALT_9, 0 }, /* 57 */ + {0, 0, 0, 0, 0 }, /* 58 */ + {0, 0, 0, 0, 0 }, /* 59 */ + {0, 0, 0, 0, 0 }, /* 60 */ + {0, 0, 0, 0, 0 }, /* 61 */ + {0, 0, 0, 0, 0 }, /* 62 */ + {0, 0, 0, 0, 0 }, /* 63 */ + {0, 0, 0, 0, 0 }, /* 64 */ + {0x61, 0x41, 0x01, ALT_A, 0 }, /* 65 */ + {0x62, 0x42, 0x02, ALT_B, 0 }, /* 66 */ + {0x63, 0x43, 0x03, ALT_C, 0 }, /* 67 */ + {0x64, 0x44, 0x04, ALT_D, 0 }, /* 68 */ + {0x65, 0x45, 0x05, ALT_E, 0 }, /* 69 */ + {0x66, 0x46, 0x06, ALT_F, 0 }, /* 70 */ + {0x67, 0x47, 0x07, ALT_G, 0 }, /* 71 */ + {0x68, 0x48, 0x08, ALT_H, 0 }, /* 72 */ + {0x69, 0x49, 0x09, ALT_I, 0 }, /* 73 */ + {0x6A, 0x4A, 0x0A, ALT_J, 0 }, /* 74 */ + {0x6B, 0x4B, 0x0B, ALT_K, 0 }, /* 75 */ + {0x6C, 0x4C, 0x0C, ALT_L, 0 }, /* 76 */ + {0x6D, 0x4D, 0x0D, ALT_M, 0 }, /* 77 */ + {0x6E, 0x4E, 0x0E, ALT_N, 0 }, /* 78 */ + {0x6F, 0x4F, 0x0F, ALT_O, 0 }, /* 79 */ + {0x70, 0x50, 0x10, ALT_P, 0 }, /* 80 */ + {0x71, 0x51, 0x11, ALT_Q, 0 }, /* 81 */ + {0x72, 0x52, 0x12, ALT_R, 0 }, /* 82 */ + {0x73, 0x53, 0x13, ALT_S, 0 }, /* 83 */ + {0x74, 0x54, 0x14, ALT_T, 0 }, /* 84 */ + {0x75, 0x55, 0x15, ALT_U, 0 }, /* 85 */ + {0x76, 0x56, 0x16, ALT_V, 0 }, /* 86 */ + {0x77, 0x57, 0x17, ALT_W, 0 }, /* 87 */ + {0x78, 0x58, 0x18, ALT_X, 0 }, /* 88 */ + {0x79, 0x59, 0x19, ALT_Y, 0 }, /* 89 */ + {0x7A, 0x5A, 0x1A, ALT_Z, 0 }, /* 90 */ + {0, 0, 0, 0, 0 }, /* 91 VK_LWIN */ + {0, 0, 0, 0, 0 }, /* 92 VK_RWIN */ + {KEY_APPS, KEY_SAPPS, CTL_APPS, ALT_APPS, 13 }, /* 93 VK_APPS */ + {0, 0, 0, 0, 0 }, /* 94 */ + {0, 0, 0, 0, 0 }, /* 95 */ + {0x30, 0, CTL_PAD0, ALT_PAD0, 0 }, /* 96 VK_NUMPAD0 */ + {0x31, 0, CTL_PAD1, ALT_PAD1, 0 }, /* 97 VK_NUMPAD1 */ + {0x32, 0, CTL_PAD2, ALT_PAD2, 0 }, /* 98 VK_NUMPAD2 */ + {0x33, 0, CTL_PAD3, ALT_PAD3, 0 }, /* 99 VK_NUMPAD3 */ + {0x34, 0, CTL_PAD4, ALT_PAD4, 0 }, /* 100 VK_NUMPAD4 */ + {0x35, 0, CTL_PAD5, ALT_PAD5, 0 }, /* 101 VK_NUMPAD5 */ + {0x36, 0, CTL_PAD6, ALT_PAD6, 0 }, /* 102 VK_NUMPAD6 */ + {0x37, 0, CTL_PAD7, ALT_PAD7, 0 }, /* 103 VK_NUMPAD7 */ + {0x38, 0, CTL_PAD8, ALT_PAD8, 0 }, /* 104 VK_NUMPAD8 */ + {0x39, 0, CTL_PAD9, ALT_PAD9, 0 }, /* 105 VK_NUMPAD9 */ + {PADSTAR, SHF_PADSTAR,CTL_PADSTAR, ALT_PADSTAR,999 }, /* 106 VK_MULTIPLY*/ + {PADPLUS, SHF_PADPLUS,CTL_PADPLUS, ALT_PADPLUS,999 }, /* 107 VK_ADD */ + {0, 0, 0, 0, 0 }, /* 108 VK_SEPARATOR */ + {PADMINUS, SHF_PADMINUS,CTL_PADMINUS,ALT_PADMINUS,999}, /* 109 VK_SUBTRACT*/ + {0x2E, 0, CTL_PADSTOP, ALT_PADSTOP,0 }, /* 110 VK_DECIMAL */ + {PADSLASH, SHF_PADSLASH,CTL_PADSLASH,ALT_PADSLASH,2 }, /* 111 VK_DIVIDE */ + {KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37), 0 }, /* 112 VK_F1 */ + {KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38), 0 }, /* 113 VK_F2 */ + {KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39), 0 }, /* 114 VK_F3 */ + {KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40), 0 }, /* 115 VK_F4 */ + {KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41), 0 }, /* 116 VK_F5 */ + {KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42), 0 }, /* 117 VK_F6 */ + {KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43), 0 }, /* 118 VK_F7 */ + {KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44), 0 }, /* 119 VK_F8 */ + {KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45), 0 }, /* 120 VK_F9 */ + {KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46), 0 }, /* 121 VK_F10 */ + {KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47), 0 }, /* 122 VK_F11 */ + {KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48), 0 }, /* 123 VK_F12 */ + + /* 124 through 218 */ + + {0, 0, 0, 0, 0}, /* 124 VK_F13 */ + {0, 0, 0, 0, 0}, /* 125 VK_F14 */ + {0, 0, 0, 0, 0}, /* 126 VK_F15 */ + {0, 0, 0, 0, 0}, /* 127 VK_F16 */ + {0, 0, 0, 0, 0}, /* 128 VK_F17 */ + {0, 0, 0, 0, 0}, /* 129 VK_F18 */ + {0, 0, 0, 0, 0}, /* 130 VK_F19 */ + {0, 0, 0, 0, 0}, /* 131 VK_F20 */ + {0, 0, 0, 0, 0}, /* 132 VK_F21 */ + {0, 0, 0, 0, 0}, /* 133 VK_F22 */ + {0, 0, 0, 0, 0}, /* 134 VK_F23 */ + {0, 0, 0, 0, 0}, /* 135 VK_F24 */ + {0, 0, 0, 0, 0}, /* 136 unassigned */ + {0, 0, 0, 0, 0}, /* 137 unassigned */ + {0, 0, 0, 0, 0}, /* 138 unassigned */ + {0, 0, 0, 0, 0}, /* 139 unassigned */ + {0, 0, 0, 0, 0}, /* 140 unassigned */ + {0, 0, 0, 0, 0}, /* 141 unassigned */ + {0, 0, 0, 0, 0}, /* 142 unassigned */ + {0, 0, 0, 0, 0}, /* 143 unassigned */ + {0, 0, 0, 0, 0}, /* 144 VK_NUMLOCK */ + {KEY_SCROLLLOCK, 0, 0, ALT_SCROLLLOCK, 0}, /* 145 VKSCROLL */ + {0, 0, 0, 0, 0}, /* 146 OEM specific */ + {0, 0, 0, 0, 0}, /* 147 OEM specific */ + {0, 0, 0, 0, 0}, /* 148 OEM specific */ + {0, 0, 0, 0, 0}, /* 149 OEM specific */ + {0, 0, 0, 0, 0}, /* 150 OEM specific */ + {0, 0, 0, 0, 0}, /* 151 Unassigned */ + {0, 0, 0, 0, 0}, /* 152 Unassigned */ + {0, 0, 0, 0, 0}, /* 153 Unassigned */ + {0, 0, 0, 0, 0}, /* 154 Unassigned */ + {0, 0, 0, 0, 0}, /* 155 Unassigned */ + {0, 0, 0, 0, 0}, /* 156 Unassigned */ + {0, 0, 0, 0, 0}, /* 157 Unassigned */ + {0, 0, 0, 0, 0}, /* 158 Unassigned */ + {0, 0, 0, 0, 0}, /* 159 Unassigned */ + {0, 0, 0, 0, 0}, /* 160 VK_LSHIFT */ + {0, 0, 0, 0, 0}, /* 161 VK_RSHIFT */ + {0, 0, 0, 0, 0}, /* 162 VK_LCONTROL */ + {0, 0, 0, 0, 0}, /* 163 VK_RCONTROL */ + {0, 0, 0, 0, 0}, /* 164 VK_LMENU */ + {0, 0, 0, 0, 0}, /* 165 VK_RMENU */ + {0, 0, 0, 0, 14}, /* 166 VK_BROWSER_BACK */ + {0, 0, 0, 0, 15}, /* 167 VK_BROWSER_FORWARD */ + {0, 0, 0, 0, 16}, /* 168 VK_BROWSER_REFRESH */ + {0, 0, 0, 0, 17}, /* 169 VK_BROWSER_STOP */ + {0, 0, 0, 0, 18}, /* 170 VK_BROWSER_SEARCH */ + {0, 0, 0, 0, 19}, /* 171 VK_BROWSER_FAVORITES */ + {0, 0, 0, 0, 20}, /* 172 VK_BROWSER_HOME */ + {0, 0, 0, 0, 21}, /* 173 VK_VOLUME_MUTE */ + {0, 0, 0, 0, 22}, /* 174 VK_VOLUME_DOWN */ + {0, 0, 0, 0, 23}, /* 175 VK_VOLUME_UP */ + {0, 0, 0, 0, 24}, /* 176 VK_MEDIA_NEXT_TRACK */ + {0, 0, 0, 0, 25}, /* 177 VK_MEDIA_PREV_TRACK */ + {0, 0, 0, 0, 26}, /* 178 VK_MEDIA_STOP */ + {0, 0, 0, 0, 27}, /* 179 VK_MEDIA_PLAY_PAUSE */ + {0, 0, 0, 0, 28}, /* 180 VK_LAUNCH_MAIL */ + {0, 0, 0, 0, 29}, /* 181 VK_LAUNCH_MEDIA_SELECT */ + {0, 0, 0, 0, 30}, /* 182 VK_LAUNCH_APP1 */ + {0, 0, 0, 0, 31}, /* 183 VK_LAUNCH_APP2 */ + {0, 0, 0, 0, 0}, /* 184 Reserved */ + {0, 0, 0, 0, 0}, /* 185 Reserved */ + {';', ':', CTL_SEMICOLON, ALT_SEMICOLON, 0}, /* 186 VK_OEM_1 */ + {'=', '+', CTL_EQUAL, ALT_EQUAL, 0}, /* 187 VK_OEM_PLUS */ + {',', '<', CTL_COMMA, ALT_COMMA, 0}, /* 188 VK_OEM_COMMA */ + {'-', '_', CTL_MINUS, ALT_MINUS, 0}, /* 189 VK_OEM_MINUS */ + {'.', '>', CTL_STOP, ALT_STOP, 0}, /* 190 VK_OEM_PERIOD */ + {'/', '?', CTL_FSLASH, ALT_FSLASH, 0}, /* 191 VK_OEM_2 */ + {'`', '~', CTL_BQUOTE, ALT_BQUOTE, 0}, /* 192 VK_OEM_3 */ + {0, 0, 0, 0, 0}, /* 193 */ + {0, 0, 0, 0, 0}, /* 194 */ + {0, 0, 0, 0, 0}, /* 195 */ + {0, 0, 0, 0, 0}, /* 196 */ + {0, 0, 0, 0, 0}, /* 197 */ + {0, 0, 0, 0, 0}, /* 198 */ + {0, 0, 0, 0, 0}, /* 199 */ + {0, 0, 0, 0, 0}, /* 200 */ + {0, 0, 0, 0, 0}, /* 201 */ + {0, 0, 0, 0, 0}, /* 202 */ + {0, 0, 0, 0, 0}, /* 203 */ + {0, 0, 0, 0, 0}, /* 204 */ + {0, 0, 0, 0, 0}, /* 205 */ + {0, 0, 0, 0, 0}, /* 206 */ + {0, 0, 0, 0, 0}, /* 207 */ + {0, 0, 0, 0, 0}, /* 208 */ + {0, 0, 0, 0, 0}, /* 209 */ + {0, 0, 0, 0, 0}, /* 210 */ + {0, 0, 0, 0, 0}, /* 211 */ + {0, 0, 0, 0, 0}, /* 212 */ + {0, 0, 0, 0, 0}, /* 213 */ + {0, 0, 0, 0, 0}, /* 214 */ + {0, 0, 0, 0, 0}, /* 215 */ + {0, 0, 0, 0, 0}, /* 216 */ + {0, 0, 0, 0, 0}, /* 217 */ + {0, 0, 0, 0, 0}, /* 218 */ + {0x5B, 0x7B, 0x1B, ALT_LBRACKET,0 }, /* 219 VK_OEM_4 */ + {0x5C, 0x7C, 0x1C, ALT_BSLASH, 0 }, /* 220 VK_OEM_5 */ + {0x5D, 0x7D, 0x1D, ALT_RBRACKET,0 }, /* 221 VK_OEM_6 */ + {'\'', '"', 0x27, ALT_FQUOTE, 0 }, /* 222 VK_OEM_7 */ + {0, 0, 0, 0, 0 }, /* 223 VK_OEM_8 */ + {0, 0, 0, 0, 0 }, /* 224 */ + {0, 0, 0, 0, 0 } /* 225 */ +}; +/* End of kptab[] */ + +static const KPTAB ext_kptab[] = +{ + {0, 0, 0, 0, }, /* 0 MUST BE EMPTY */ + {PADENTER, SHF_PADENTER, CTL_PADENTER, ALT_PADENTER}, /* 1 13 */ + {PADSLASH, SHF_PADSLASH, CTL_PADSLASH, ALT_PADSLASH}, /* 2 111 */ + {KEY_PPAGE, KEY_SPREVIOUS, CTL_PGUP, ALT_PGUP }, /* 3 33 */ + {KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN }, /* 4 34 */ + {KEY_END, KEY_SEND, CTL_END, ALT_END }, /* 5 35 */ + {KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME }, /* 6 36 */ + {KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT }, /* 7 37 */ + {KEY_UP, KEY_SUP, CTL_UP, ALT_UP }, /* 8 38 */ + {KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT }, /* 9 39 */ + {KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN }, /* 10 40 */ + {KEY_IC, KEY_SIC, CTL_INS, ALT_INS }, /* 11 45 */ + {KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL }, /* 12 46 */ + {KEY_APPS, KEY_SAPPS , CTL_APPS, ALT_APPS }, /* 13 93 VK_APPS */ + {KEY_BROWSER_BACK, KEY_SBROWSER_BACK, KEY_CBROWSER_BACK, KEY_ABROWSER_BACK, }, /* 14 166 VK_BROWSER_BACK */ + {KEY_BROWSER_FWD, KEY_SBROWSER_FWD, KEY_CBROWSER_FWD, KEY_ABROWSER_FWD, }, /* 15 167 VK_BROWSER_FORWARD */ + {KEY_BROWSER_REF, KEY_SBROWSER_REF, KEY_CBROWSER_REF, KEY_ABROWSER_REF, }, /* 16 168 VK_BROWSER_REFRESH */ + {KEY_BROWSER_STOP, KEY_SBROWSER_STOP, KEY_CBROWSER_STOP, KEY_ABROWSER_STOP, }, /* 17 169 VK_BROWSER_STOP */ + {KEY_SEARCH, KEY_SSEARCH, KEY_CSEARCH, KEY_ASEARCH, }, /* 18 170 VK_BROWSER_SEARCH */ + {KEY_FAVORITES, KEY_SFAVORITES, KEY_CFAVORITES, KEY_AFAVORITES, }, /* 19 171 VK_BROWSER_FAVORITES */ + {KEY_BROWSER_HOME, KEY_SBROWSER_HOME, KEY_CBROWSER_HOME, KEY_ABROWSER_HOME, }, /* 20 172 VK_BROWSER_HOME */ + {KEY_VOLUME_MUTE, KEY_SVOLUME_MUTE, KEY_CVOLUME_MUTE, KEY_AVOLUME_MUTE, }, /* 21 173 VK_VOLUME_MUTE */ + {KEY_VOLUME_DOWN, KEY_SVOLUME_DOWN, KEY_CVOLUME_DOWN, KEY_AVOLUME_DOWN, }, /* 22 174 VK_VOLUME_DOWN */ + {KEY_VOLUME_UP, KEY_SVOLUME_UP, KEY_CVOLUME_UP, KEY_AVOLUME_UP, }, /* 23 175 VK_VOLUME_UP */ + {KEY_NEXT_TRACK, KEY_SNEXT_TRACK, KEY_CNEXT_TRACK, KEY_ANEXT_TRACK, }, /* 24 176 VK_MEDIA_NEXT_TRACK */ + {KEY_PREV_TRACK, KEY_SPREV_TRACK, KEY_CPREV_TRACK, KEY_APREV_TRACK, }, /* 25 177 VK_MEDIA_PREV_TRACK */ + {KEY_MEDIA_STOP, KEY_SMEDIA_STOP, KEY_CMEDIA_STOP, KEY_AMEDIA_STOP, }, /* 26 178 VK_MEDIA_STOP */ + {KEY_PLAY_PAUSE, KEY_SPLAY_PAUSE, KEY_CPLAY_PAUSE, KEY_APLAY_PAUSE, }, /* 27 179 VK_MEDIA_PLAY_PAUSE */ + {KEY_LAUNCH_MAIL, KEY_SLAUNCH_MAIL, KEY_CLAUNCH_MAIL, KEY_ALAUNCH_MAIL, }, /* 28 180 VK_LAUNCH_MAIL */ + {KEY_MEDIA_SELECT, KEY_SMEDIA_SELECT, KEY_CMEDIA_SELECT, KEY_AMEDIA_SELECT, }, /* 29 181 VK_LAUNCH_MEDIA_SELECT */ + {KEY_LAUNCH_APP1, KEY_SLAUNCH_APP1, KEY_CLAUNCH_APP1, KEY_ALAUNCH_APP1, }, /* 30 182 VK_LAUNCH_APP1 */ + {KEY_LAUNCH_APP2, KEY_SLAUNCH_APP2, KEY_CLAUNCH_APP2, KEY_ALAUNCH_APP2, }, /* 31 183 VK_LAUNCH_APP2 */ +}; + + +HFONT PDC_get_font_handle( const int is_bold); /* pdcdisp.c */ + +/* Mouse handling is done as follows: + + What we want is a setup wherein, if the user presses and releases a +mouse button within SP->mouse_wait milliseconds, there will be a +KEY_MOUSE issued through getch( ) and the "button state" for that button +will be set to BUTTON_CLICKED. + + If the user presses and releases the button, and it takes _longer_ +than SP->mouse_wait milliseconds, then there should be a KEY_MOUSE +issued with the "button state" set to BUTTON_PRESSED. Then, later, +another KEY_MOUSE with a BUTTON_RELEASED. + + To accomplish this: when a message such as WM_LBUTTONDOWN, +WM_RBUTTONDOWN, or WM_MBUTTONDOWN is issued (and more recently WM_XBUTTONDOWN +for five-button mice), we set up a timer with a period of SP->mouse_wait +milliseconds. There are then two possibilities. The user will release the +button quickly (so it's a "click") or they won't (and it's a "press/release"). + + In the first case, we'll get the WM_xBUTTONUP message before the +WM_TIMER one. We'll kill the timer and set up the BUTTON_CLICKED state. (*) + + In the second case, we'll get the WM_TIMER message first, so we'll +set the BUTTON_PRESSED state and kill the timer. Eventually, the user +will get around to letting go of the mouse button, and we'll get that +WM_xBUTTONUP message. At that time, we'll set the BUTTON_RELEASED state +and add the second KEY_MOUSE to the key queue. + + Also, note that if there is already a KEY_MOUSE to the queue, there's +no point in adding another one. At least at present, the actual mouse +events aren't queued anyway. So if there was, say, a click and then a +release without getch( ) being called in between, you'd then have two +KEY_MOUSEs on the queue, but would have lost all information about what +the first one actually was. Hence the code near the end of this function +to ensure there isn't already a KEY_MOUSE in the queue. + + Also, a note about wheel handling. Pre-Vista, you could just say +"the wheel went up" or "the wheel went down". Vista introduced the possibility +that the mouse motion could be a smoothly varying quantity. So on each +mouse move, we add in the amount moved, then check to see if that's +enough to trigger a wheel up/down event (or possibly several). The idea +is that whereas before, each movement would be 120 units (the default), +you might now get a series of 40-unit moves and should emit a wheel up/down +event on every third move. + + (*) Things are actually slightly more complicated than this. In general, +it'll just be a plain old BUTTON_CLICKED state. But if there was another +BUTTON_CLICKED within the last 2 * SP->mouse_wait milliseconds, then this +must be a _double_ click, so we set the BUTTON_DOUBLE_CLICKED state. And +if, within that time frame, there was a double or triple click, then we +set the BUTTON_TRIPLE_CLICKED state. There isn't a "quad" or higher state, +so if you quadruple-click the mouse, with each click separated by less +than 2 * SP->mouse_wait milliseconds, then the messages sent will be +BUTTON_CLICKED, BUTTON_DOUBLE_CLICKED, BUTTON_TRIPLE_CLICKED, and +then another BUTTON_TRIPLE_CLICKED. */ + +static int set_mouse( const int button_index, const int button_state, + const LPARAM lParam) +{ + int i, n_key_mouse_to_add = 1; + POINT pt; + + pt.x = LOWORD( lParam); + pt.y = HIWORD( lParam); + if( button_index == -1) /* mouse moved, no button */ + n_key_mouse_to_add = 1; + else + { + memset(&pdc_mouse_status, 0, sizeof(MOUSE_STATUS)); + if( button_index < PDC_MAX_MOUSE_BUTTONS) + { + if( button_index < 3) + { + pdc_mouse_status.button[button_index] = (short)button_state; + pdc_mouse_status.changes = (1 << button_index); + } + else + { + pdc_mouse_status.xbutton[button_index - 3] = (short)button_state; + pdc_mouse_status.changes = (0x40 << button_index); + } + } + else /* actually a wheel mouse movement */ + { /* button_state = number of units moved */ + static int mouse_wheel_vertical_loc = 0; + static int mouse_wheel_horizontal_loc = 0; + const int mouse_wheel_sensitivity = 120; + + n_key_mouse_to_add = 0; + if( button_index == VERTICAL_WHEEL_EVENT) + { + mouse_wheel_vertical_loc += button_state; + while( mouse_wheel_vertical_loc > mouse_wheel_sensitivity / 2) + { + n_key_mouse_to_add++; + mouse_wheel_vertical_loc -= mouse_wheel_sensitivity; + pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_UP; + } + while( mouse_wheel_vertical_loc < -mouse_wheel_sensitivity / 2) + { + n_key_mouse_to_add++; + mouse_wheel_vertical_loc += mouse_wheel_sensitivity; + pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_DOWN; + } + } + else /* must be a horizontal event: */ + { + mouse_wheel_horizontal_loc += button_state; + while( mouse_wheel_horizontal_loc > mouse_wheel_sensitivity / 2) + { + n_key_mouse_to_add++; + mouse_wheel_horizontal_loc -= mouse_wheel_sensitivity; + pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_RIGHT; + } + while( mouse_wheel_horizontal_loc < -mouse_wheel_sensitivity / 2) + { + n_key_mouse_to_add++; + mouse_wheel_horizontal_loc += mouse_wheel_sensitivity; + pdc_mouse_status.changes |= PDC_MOUSE_WHEEL_LEFT; + } + } + /* I think it may be that for wheel events, we */ + /* return x = y = -1, rather than getting the */ + /* actual mouse position. I don't like this, but */ + /* I like messing up existing apps even less. */ + pt.x = -PDC_cxChar; + pt.y = -PDC_cyChar; +/* ScreenToClient( PDC_hWnd, &pt); Wheel posns are in screen, */ + } /* not client, coords; gotta xform them */ + } + pdc_mouse_status.x = pt.x / PDC_cxChar; + pdc_mouse_status.y = pt.y / PDC_cyChar; +/* if( SP->save_key_modifiers) */ + { + int i, button_flags = 0; + + if( GetKeyState( VK_MENU) & 0x8000) + button_flags |= PDC_BUTTON_ALT; + + if( GetKeyState( VK_SHIFT) & 0x8000) + button_flags |= PDC_BUTTON_SHIFT; + + if( GetKeyState( VK_CONTROL) & 0x8000) + button_flags |= PDC_BUTTON_CONTROL; + + for (i = 0; i < 3; i++) + pdc_mouse_status.button[i] |= button_flags; + for (i = 0; i < PDC_N_EXTENDED_MOUSE_BUTTONS; i++) + pdc_mouse_status.xbutton[i] |= button_flags; + } + /* If there is already a KEY_MOUSE in the queue, we */ + /* don't really want to add another one. See above. */ + i = PDC_key_queue_low; + while( i != PDC_key_queue_high) + { + if( PDC_key_queue[i] == KEY_MOUSE) + { + debug_printf( "Mouse key already in queue\n"); + return( 0); + } + i = (i + 1) % KEY_QUEUE_SIZE; + } + /* If the window is maximized, the click may occur just */ + /* outside the "real" screen area. If so, we again */ + /* don't want to add a key to the queue: */ + if( pdc_mouse_status.x >= PDC_n_cols || pdc_mouse_status.y >= PDC_n_rows) + n_key_mouse_to_add = 0; + /* OK, there isn't a KEY_MOUSE already in the queue. */ + /* So we'll add one (or zero or more, for wheel mice): */ + while( n_key_mouse_to_add--) + add_key_to_queue( KEY_MOUSE); + return( 0); +} + + /* The following should be #defined in 'winuser.h', but such is */ + /* not always the case. The following fixes the exceptions: */ +#ifndef WM_MOUSEWHEEL + #define WM_MOUSEWHEEL 0x020A +#endif +#ifndef WM_MOUSEHWHEEL + #define WM_MOUSEHWHEEL 0x020E +#endif +#ifndef WM_XBUTTONDOWN + #define WM_XBUTTONDOWN 0x020B + #define WM_XBUTTONUP 0x020C +#endif +#ifndef MK_XBUTTON1 + #define MK_XBUTTON1 0x0020 + #define MK_XBUTTON2 0x0040 +#endif + +#ifdef USE_FALLBACK_FONT +extern GLYPHSET *PDC_unicode_range_data; +#endif /* #ifdef USE_FALLBACK_FONT */ + +int PDC_blink_state = 0; +#define TIMER_ID_FOR_BLINKING 0x2000 + +/* When first loading a font, we use 'get_character_sizes' to briefly +load the (non-bold, non-italic flavor of the) font, get its height and +width, and call GetFontUnicodeRanges to determine which characters are +actually available from that font. That set of ranges is used so that, +when we come across characters not in the font, we can switch to a +"fallback" font (Unifont, most likely). */ + +static void get_character_sizes( const HWND hwnd, + int *xchar_size, int *ychar_size) +{ + HFONT hFont = PDC_get_font_handle( 0); + HFONT prev_font; + HDC hdc = GetDC (hwnd) ; + TEXTMETRIC tm ; +#ifdef USE_FALLBACK_FONT + DWORD size; +#endif + + prev_font = SelectObject (hdc, hFont); + GetTextMetrics (hdc, &tm) ; +#ifdef USE_FALLBACK_FONT + assert( !PDC_unicode_range_data); + size = GetFontUnicodeRanges( hdc, NULL); + PDC_unicode_range_data = (GLYPHSET *)calloc( 1, size); + PDC_unicode_range_data->cbThis = size; + size = GetFontUnicodeRanges( hdc, PDC_unicode_range_data); +#endif /* #ifdef USE_FALLBACK_FONT */ + SelectObject( hdc, prev_font); + ReleaseDC (hwnd, hdc) ; + DeleteObject( hFont); + *xchar_size = tm.tmAveCharWidth ; + *ychar_size = tm.tmHeight; +} + +INLINE void sort_out_rect( RECT *rect) +{ + int temp; + + if( rect->left > rect->right) + { + temp = rect->right; + rect->right = rect->left; + rect->left = temp; + } + if( rect->top > rect->bottom) + { + temp = rect->bottom; + rect->bottom = rect->top; + rect->top = temp; + } +} + +static int rectangle_from_chars_to_pixels( RECT *rect) +{ + int rval = 1; + + if( rect->right == rect->left && rect->top == rect->bottom) + rval = 0; + sort_out_rect( rect); + if( rect->top < 0) + rval = 0; + rect->right++; + rect->bottom++; + rect->left *= PDC_cxChar; + rect->right *= PDC_cxChar; + rect->top *= PDC_cyChar; + rect->bottom *= PDC_cyChar; + return( rval); +} + +/* When updating the mouse rectangle, you _could_ just remove the old one +and draw the new one. But that sometimes caused flickering if the mouse +area was large. In such cases, it's better to determine what areas +actually changed, and invert just those. So the following checks to +see if two overlapping rectangles are being drawn (this is the norm) +and figures out the area that actually needs to be flipped. It does +seem to decrease flickering to near-zero. */ + +static int PDC_selecting_rectangle = 1; + +int PDC_find_ends_of_selected_text( const int line, + const RECT *rect, int *x) +{ + int rval = 0, i; + + if( (rect->top - line) * (rect->bottom - line) <= 0 + && (rect->top != rect->bottom || rect->left != rect->right)) + { + if( PDC_selecting_rectangle || rect->top == rect->bottom) + { + x[0] = min( rect->right, rect->left); + x[1] = max( rect->right, rect->left); + rval = 1; + } + else if( rect->top <= line && line <= rect->bottom) + { + x[0] = (line == rect->top ? rect->left : 0); + x[1] = (line == rect->bottom ? rect->right : SP->cols - 1); + rval = 1; + } + else if( rect->top >= line && line >= rect->bottom) + { + x[0] = (line == rect->bottom ? rect->right : 0); + x[1] = (line == rect->top ? rect->left : SP->cols - 1); + rval = 1; + } + } + if( rval) + for( i = 0; i < 2; i++) + if( x[i] > SP->cols - 1) + x[i] = SP->cols - 1; + return( rval); +} + +/* Called in only one place, so let's inline it */ + +INLINE void show_mouse_rect( const HWND hwnd, RECT before, RECT after) +{ + if( before.top > -1 || after.top > -1) + if( memcmp( &after, &before, sizeof( RECT))) + { + const HDC hdc = GetDC( hwnd) ; + + if( PDC_selecting_rectangle) + { + const int show_before = rectangle_from_chars_to_pixels( &before); + const int show_after = rectangle_from_chars_to_pixels( &after); + + if( show_before && show_after) + { + RECT temp; + + if( before.top < after.top) + { + temp = before; before = after; after = temp; + } + if( before.top < after.bottom && after.right > before.left + && before.right > after.left) + { + const int tval = min( after.bottom, before.bottom); + + temp = after; + temp.bottom = before.top; + InvertRect( hdc, &temp); + + temp.top = temp.bottom; + temp.bottom = tval; + temp.right = max( after.right, before.right); + temp.left = min( after.right, before.right); + InvertRect( hdc, &temp); + + temp.right = max( after.left, before.left); + temp.left = min( after.left, before.left); + InvertRect( hdc, &temp); + + temp = (after.bottom > before.bottom ? after : before); + temp.top = tval; + InvertRect( hdc, &temp); + } + } + else if( show_before) + InvertRect( hdc, &before); + else if( show_after) + InvertRect( hdc, &after); + } + else /* _not_ selecting rectangle; selecting lines */ + { + int line; + + for( line = 0; line < SP->lines; line++) + { + int x[4], n_rects = 0, i; + + n_rects = PDC_find_ends_of_selected_text( line, &before, x); + n_rects += PDC_find_ends_of_selected_text( line, &after, x + n_rects * 2); + if( n_rects == 2) + if( x[0] == x[2] && x[1] == x[3]) + n_rects = 0; /* Rects are same & will cancel */ + for( i = 0; i < n_rects; i++) + { + RECT trect; + + trect.left = x[i + i]; + trect.right = x[i + i + 1]; + trect.top = line; + trect.bottom = line; + rectangle_from_chars_to_pixels( &trect); + InvertRect( hdc, &trect); + } + } + } + ReleaseDC( hwnd, hdc) ; + } +} + +/* Cygwin lacks _splitpath, _wsplitpath. THE FOLLOWING ARE NOT FULLY +TESTED IMPLEMENTATIONS OF THOSE TWO FUNCTIONS, because the only use we +make of them is to get fname. (Though I did write a little test program, +and they seem to work.) */ + +#ifdef __CYGWIN__ +#ifdef PDC_WIDE +static void my_wsplitpath( const wchar_t *path, wchar_t *drive, + wchar_t *dir, wchar_t *fname, wchar_t *ext) +{ + size_t i, loc = 0; + + assert( path); + assert( fname); + if( path[0] && path[1] == ':') + { + if( drive) + { + drive[0] = path[0]; + drive[1] = ':'; + drive[2] = '\0'; + } + path += 2; + } + else if( drive) + *drive = '\0'; + for( i = 0; path[i]; i++) + if( path[i] == '/' || path[i] == '\\') + loc = i + 1; + if( dir) + { + memcpy( dir, path, loc * sizeof( wchar_t)); + dir[loc] = '\0'; + } + if( loc) + path += loc; + loc = 0; + while( path[loc] && path[loc] != '.') + loc++; + if( fname) + { + memcpy( fname, path, loc * sizeof( wchar_t)); + fname[loc] = '\0'; + } + if( ext) + wcscpy( ext, path + loc); +} +#endif /* #ifdef PDC_WIDE */ + +static void my_splitpath( const char *path, char *drive, + char *dir, char *fname, char *ext) +{ + size_t i, loc = 0; + + assert( path); + assert( fname); + if( path[0] && path[1] == ':') + { + if( drive) + { + drive[0] = path[0]; + drive[1] = ':'; + drive[2] = '\0'; + } + path += 2; + } + else if( drive) + *drive = '\0'; + for( i = 0; path[i]; i++) + if( path[i] == '/' || path[i] == '\\') + loc = i + 1; + if( dir) + { + memcpy( dir, path, loc * sizeof( char)); + dir[loc] = '\0'; + } + if( loc) + path += loc; + loc = 0; + while( path[loc] && path[loc] != '.') + loc++; + if( fname) + { + memcpy( fname, path, loc * sizeof( char)); + fname[loc] = '\0'; + } + if( ext) + strcpy( ext, path + loc); +} +#else /* non-Cygwin case : */ + #define my_splitpath _splitpath + #define my_wsplitpath _wsplitpath + #define GOT_ARGV_ARGC +#endif /* #ifdef __CYGWIN__ */ + +/* This function looks at the full command line, which includes a fully +specified path to the executable and arguments; and strips out just the +name of the app, with the arguments optionally appended. Hence, + +C:\PDCURSES\WINGUI\TESTCURS.EXE arg1 arg2 + + would be reduced to 'Testcurs' (if include_args == 0) or +'Testcurs arg1 arg2' (if include_args == 1). The former case is used to +create a (hopefully unique) registry key for the app, so that the app's +specific settings (screen and font size) will be stored for the next run. +The latter case is used to generate a default window title. + + Unfortunately, this code has to do some pretty strange things. In the +Unicode (PDC_WIDE) case, we really should use __wargv; but that pointer +may or may not be NULL. If it's NULL, we fall back on __argv. In at +least one case, where this code is compiled into a DLL using MinGW and +then used in an app compiled with MS Visual C, __argv isn't set either, +and we drop back to looking at GetCommandLine( ). Which leads to a real +oddity: GetCommandLine( ) may return something such as, say, + +"C:\PDCurses\WinGUI\testcurs.exe" -lRussian + + ...which, after being run through _splitpath or _wsplitpath, becomes + +testcurs.exe" -lRussian + + The .exe" is removed, and the command-line arguments shifted or removed, +depending on the value of include_args. Pretty strange stuff. + + However, if one calls Xinitscr( ) and passed command-line arguments when +starting this library, those arguments will be stored in PDC_argc and +PDC_argv, and will be used instead of GetCommandLine. +*/ + +#ifdef UNICODE + #define my_stprintf wsprintf + #define my_tcslen wcslen +#ifdef __CYGWIN__ + /* Can't lowercase Unicode text in Cygwin */ + #define my_tcslwr +#elif defined _MSC_VER + #define my_tcslwr _wcslwr +#else + #define my_tcslwr wcslwr +#endif /* __CYGWIN__ */ + #define my_tcscat wcscat + #define my_tcscpy wcscpy + #define my_stscanf swscanf + +#else /* UNICODE */ + + #define my_stprintf sprintf + #define my_tcslen strlen + #define my_tcslwr strlwr +#ifdef _MSC_VER + #define strlwr _strlwr +#endif + #define my_tcscat strcat + #define my_tcscpy strcpy + #define my_stscanf sscanf +#endif /* UNICODE */ + + +static void get_app_name( TCHAR *buff, const size_t buff_size, const bool include_args) +{ + int i; + size_t buff_space; +#ifdef GOT_ARGV_ARGC + int argc = (PDC_argc ? PDC_argc : __argc); + char **argv = (PDC_argc ? PDC_argv : __argv); +#else + int argc = PDC_argc; + char **argv = PDC_argv; +#endif + +#ifdef PDC_WIDE + wchar_t **wargv = __wargv; +#ifdef GOT_ARGV_ARGC + /* in case we can not access the array directly try to get it otherwise */ + if( !wargv) { + wchar_t *cmd_linew = GetCommandLine( ); + if (cmd_linew) { + wargv = CommandLineToArgvW (cmd_linew, &argc); + } + } + if( wargv) + { + my_wsplitpath( wargv[0], NULL, NULL, buff, NULL); + if ( include_args) + { + buff_space = buff_size - my_tcslen( buff) - 1; + for ( i = 1; i < argc; i++) + { + size_t arg_len = my_tcslen( wargv[i]) + 1; + if ( buff_space < arg_len) { + break; + } + buff_space -= arg_len; + wcscat( buff, L" "); + wcscat( buff, wargv[i]); + } + } + } + else +#endif /* #ifdef GOT_ARGV_ARGC */ + if( argv) + { + char tbuff[MAX_PATH]; + my_splitpath( argv[0], NULL, NULL, tbuff, NULL); + if ( include_args) + { + buff_space = buff_size - strlen( tbuff) - 1; + for ( i = 1; i < argc; i++) + { + size_t arg_len = strlen( argv[i]) + 1; + if ( buff_space < arg_len) { + break; + } + buff_space -= arg_len; + strcat( tbuff, " "); + strcat( tbuff, argv[i]); + } + } + mbstowcs( buff, tbuff, strlen( tbuff) + 1); + } + else /* no __argv or PDC_argv pointer available */ + { + wchar_t *tptr; + + my_wsplitpath( GetCommandLine( ), NULL, NULL, buff, NULL); + my_tcslwr( buff + 1); + tptr = wcsstr( buff, L".exe\""); + if( tptr) + { + if( include_args) + memmove( tptr, tptr + 5, wcslen( tptr + 4) * sizeof( wchar_t)); + else + *tptr = '\0'; + } + } +#else /* non-Unicode case */ + if( argv) + { + my_splitpath( argv[0], NULL, NULL, buff, NULL); + debug_printf( "Path: %s; exe: %s\n", argv[0], buff); + if ( include_args) + { + buff_space = buff_size - my_tcslen( buff) - 1; + for ( i = 1; i < argc; i++) + { + size_t arg_len = my_tcslen( argv[i]) + 1; + if ( buff_space < arg_len) { + break; + } + buff_space -= arg_len; + strcat( buff, " "); + strcat( buff, argv[i]); + } + } + } + else /* no __argv pointer available */ + { + char *tptr; + + my_splitpath( GetCommandLine( ), NULL, NULL, buff, NULL); + strlwr( buff + 1); + tptr = strstr( buff, ".exe\""); + if( tptr) + { + if( include_args) + memmove( tptr, tptr + 5, strlen( tptr + 4)); + else + *tptr = '\0'; + } + } +#endif + my_tcslwr( buff + 1); +} + +/* This function extracts the first icon from the executable that is +executing this DLL */ + +INLINE HICON get_app_icon( ) +{ +#ifdef PDC_WIDE + wchar_t filename[MAX_PATH]; +#else + char filename[MAX_PATH]; +#endif + + HICON icon = NULL; + if ( GetModuleFileName( NULL, filename, sizeof(filename) ) != 0 ) + icon = ExtractIcon( 0, filename, 0 ); + return icon; +} + +extern TCHAR PDC_font_name[]; + +/* This flavor of Curses tries to store the window and font sizes on +an app-by-app basis. To do this, it uses the above get_app_name( ) +function, then sets or gets a corresponding value from the Windoze +registry. The benefit should be that one can have one screen size/font +for, say, Testcurs, while having different settings for, say, Firework +or Rain or one's own programs. */ + +INLINE int set_default_sizes_from_registry( const int n_cols, const int n_rows, + const int xloc, const int yloc, const int menu_shown) +{ + DWORD is_new_key; + HKEY hNewKey; + long rval = RegCreateKeyEx( HKEY_CURRENT_USER, _T( "SOFTWARE\\PDCurses"), + 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, + 0, &hNewKey, &is_new_key); + + if( rval == ERROR_SUCCESS) + { + TCHAR buff[180]; + TCHAR key_name[MAX_PATH]; + extern int PDC_font_size; + + if( IsZoomed( PDC_hWnd)) /* -1x-1 indicates a maximized window */ + my_stprintf( buff, + _T( "-1x-1,%d,0,0,%d"), PDC_font_size, menu_shown); + else + my_stprintf( buff, + _T( "%dx%d,%d,%d,%d,%d"), n_cols, n_rows, PDC_font_size, + xloc, yloc, menu_shown); + my_stprintf( buff + my_tcslen( buff), + _T(";%d,%d,%d,%d:"), + min_lines, max_lines, + min_cols, max_cols); + my_tcscat( buff, PDC_font_name); + + get_app_name( key_name, MAX_PATH, FALSE); + rval = RegSetValueEx( hNewKey, key_name, 0, REG_SZ, + (BYTE *)buff, (DWORD)( my_tcslen( buff) * sizeof( TCHAR))); + RegCloseKey( hNewKey); + } + debug_printf( "Size: %d %d; %d\n", n_cols, n_rows, rval); + return( rval != ERROR_SUCCESS); +} + +/* If the window is maximized, there will usually be a fractional +character width at the right and bottom edges. The following code fills +that in with a black brush. It takes the "paint rectangle", the area +passed with a WM_PAINT message that specifies what chunk of the client +area needs to be redrawn. + + If the window is _not_ maximized, this shouldn't happen; the window +width/height should always be an integral multiple of the character +width/height, with no slivers at the right and bottom edges. */ + +static void fix_up_edges( const HDC hdc, const RECT *rect) +{ + const int x = PDC_n_cols * PDC_cxChar; + const int y = PDC_n_rows * PDC_cyChar; + + if( rect->right >= x || rect->bottom >= y) + { + const HBRUSH hOldBrush = + SelectObject( hdc, GetStockObject( BLACK_BRUSH)); + + SelectObject( hdc, GetStockObject( NULL_PEN)); + if( rect->right >= x) + Rectangle( hdc, x, rect->top, rect->right + 1, rect->bottom + 1); + if( rect->bottom >= y) + Rectangle( hdc, rect->left, y, rect->right + 1, rect->bottom + 1); + SelectObject( hdc, hOldBrush); + } +} + +static void adjust_font_size( const int font_size_change) +{ + extern int PDC_font_size; + + PDC_font_size += font_size_change; + if( PDC_font_size < 2) + PDC_font_size = 2; + PDC_transform_line( 0, 0, 0, NULL); /* free any fonts */ + get_character_sizes( PDC_hWnd, &PDC_cxChar, &PDC_cyChar); + /* When the font size changes, do we want to keep */ + /* the window the same size (except to remove any */ + /* fractional character)? Or do we keep the number */ + /* of rows/columns the same? For the nonce, I'm */ + /* keeping the window size fixed if the window is */ + /* maximized, but keeping the number of rows/lines */ + /* fixed if it's windowed. That's my opinion. If */ + /* you disagree, I have others. */ + if( IsZoomed( PDC_hWnd)) + { + RECT client_rect; + HDC hdc; + + GetClientRect( PDC_hWnd, &client_rect); + PDC_n_rows = client_rect.bottom / PDC_cyChar; + PDC_n_cols = client_rect.right / PDC_cxChar; + keep_size_within_bounds( &PDC_n_rows, &PDC_n_cols); + PDC_resize_screen( PDC_n_rows, PDC_n_cols); + add_key_to_queue( KEY_RESIZE); + SP->resized = TRUE; + hdc = GetDC (PDC_hWnd) ; + GetClientRect( PDC_hWnd, &client_rect); + fix_up_edges( hdc, &client_rect); + ReleaseDC( PDC_hWnd, hdc) ; + } + else + { + PDC_resize_screen( PDC_n_rows, PDC_n_cols); + InvalidateRect( PDC_hWnd, NULL, FALSE); + } +} + + /* PDC_mouse_rect is the area currently highlit by dragging the */ + /* mouse. It's global, sadly, because we need to ensure that */ + /* the highlighting is respected when the text within that */ + /* rectangle is redrawn by PDC_transform_line(). */ +RECT PDC_mouse_rect = { -1, -1, -1, -1 }; + +int PDC_setclipboard_raw( const char *contents, long length, + const bool translate_multibyte_to_wide_char); + +/* Called in only one place (when the left mouse button goes up), */ +/* so we should inline it : */ + +INLINE void HandleBlockCopy( void) +{ + int i, j, len, x[2]; + TCHAR *buff, *tptr; + + /* Make a first pass to determine how much text is blocked: */ + for( i = len = 0; i < SP->lines; i++) + if( PDC_find_ends_of_selected_text( i, &PDC_mouse_rect, x)) + len += x[1] - x[0] + 3; + buff = tptr = (TCHAR *)malloc( (len + 1) * sizeof( TCHAR)); + /* Make second pass to copy that text to a buffer: */ + for( i = len = 0; i < SP->lines; i++) + if( PDC_find_ends_of_selected_text( i, &PDC_mouse_rect, x)) + { + const chtype *cptr = curscr->_y[i]; + + for( j = 0; j < x[1] - x[0] + 1; j++) + tptr[j] = (TCHAR)cptr[j + x[0]]; + while( j > 0 && tptr[j - 1] == ' ') + j--; /* remove trailing spaces */ + tptr += j; + *tptr++ = (TCHAR)13; + *tptr++ = (TCHAR)10; + } + if( tptr != buff) /* at least one line read in */ + { + tptr[-2] = '\0'; /* cut off the last CR/LF */ + PDC_setclipboard_raw( (char *)buff, (long)( tptr - buff), FALSE); + } + free( buff); +} + +#define WM_ENLARGE_FONT (WM_USER + 1) +#define WM_SHRINK_FONT (WM_USER + 2) +#define WM_MARK_AND_COPY (WM_USER + 3) +#define WM_TOGGLE_MENU (WM_USER + 4) +#define WM_EXIT_GRACELESSLY (WM_USER + 5) +#define WM_CHOOSE_FONT (WM_USER + 6) + +static int add_resize_key = 1; + +/*man-start************************************************************** + +Resize limits +------------- + +### Synopsis + + void PDC_set_resize_limits( const int new_min_lines, + const int new_max_lines, + const int new_min_cols, + const int new_max_cols); + +### Description + + For platforms supporting resizable windows (SDLx, WinGUI, X11). Some + programs may be unprepared for a resize event; for these, calling + this function with the max and min limits equal ensures that no + user resizing can be done. Other programs may require at least a + certain number, and/or no more than a certain number, of columns + and/or lines. + +### Portability + + PDCurses-only function. + +**man-end****************************************************************/ + +void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines, + const int new_min_cols, const int new_max_cols) +{ + min_lines = max( new_min_lines, 2); + max_lines = max( new_max_lines, min_lines); + min_cols = max( new_min_cols, 2); + max_cols = max( new_max_cols, min_cols); +} + + /* The screen should hold the characters (PDC_cxChar * n_default_columns */ + /* pixels wide, similarly high). In width, we need two frame widths, */ + /* one on each side. Vertically, we need two frame heights, plus room */ + /* for the application title and the menu. */ + +static void adjust_window_size( int *xpixels, int *ypixels, int window_style, + const int menu_shown) +{ + RECT rect; + + rect.left = rect.top = 0; + rect.right = *xpixels; + rect.bottom = *ypixels; +/* printf( "Adjusting to %d, %d\n", *xpixels, *ypixels); */ + AdjustWindowRect( &rect, window_style, menu_shown); + *xpixels = rect.right - rect.left; + *ypixels = rect.bottom - rect.top; +} + +static int keep_size_within_bounds( int *lines, int *cols) +{ + int rval = 0; + + if( *lines < min_lines) + { + *lines = min_lines; + rval = 1; + } + else if( *lines > max_lines) + { + *lines = max_lines; + rval = 2; + } + if( *cols < min_cols) + { + *cols = min_cols; + rval |= 4; + } + else if( *cols > max_cols) + { + *cols = max_cols; + rval |= 8; + } + return( rval); +} + +INLINE int get_default_sizes_from_registry( int *n_cols, int *n_rows, + int *xloc, int *yloc, int *menu_shown) +{ + TCHAR data[100]; + DWORD size_out = sizeof( data); + HKEY hKey = 0; + long rval = RegOpenKeyEx( HKEY_CURRENT_USER, _T( "SOFTWARE\\PDCurses"), + 0, KEY_READ, &hKey); + + if( !hKey) + return( 1); + if( rval == ERROR_SUCCESS) + { + TCHAR key_name[MAX_PATH]; + + get_app_name( key_name, MAX_PATH, FALSE); + rval = RegQueryValueEx( hKey, key_name, + NULL, NULL, (BYTE *)data, &size_out); + if( rval == ERROR_SUCCESS) + { + extern int PDC_font_size; + int x = -1, y = -1, bytes_read = 0; + + my_stscanf( data, _T( "%dx%d,%d,%d,%d,%d;%d,%d,%d,%d:%n"), + &x, &y, &PDC_font_size, + xloc, yloc, menu_shown, + &min_lines, &max_lines, + &min_cols, &max_cols, + &bytes_read); + if( bytes_read > 0 && data[bytes_read - 1] == ':') + my_tcscpy( PDC_font_name, data + bytes_read); + if( n_cols) + *n_cols = x; + if( n_rows) + *n_rows = y; + if( *n_cols > 0 && *n_rows > 0) /* i.e., not maximized */ + keep_size_within_bounds( n_rows, n_cols); + } + RegCloseKey( hKey); + } + if( rval != ERROR_SUCCESS) + debug_printf( "get_default_sizes_from_registry error: %d\n", rval); + return( rval != ERROR_SUCCESS); +} + +/* Ensure that the dragged rectangle */ +/* is an even multiple of the char size */ +INLINE void HandleSizing( WPARAM wParam, LPARAM lParam ) +{ + RECT *rect = (RECT *)lParam; + RECT window_rect, client_rect; + int hadd, vadd, width, height; + int n_rows, n_cols; + int rounded_width, rounded_height; + + GetWindowRect( PDC_hWnd, &window_rect); + GetClientRect( PDC_hWnd, &client_rect); + hadd = (window_rect.right - window_rect.left) - client_rect.right; + vadd = (window_rect.bottom - window_rect.top) - client_rect.bottom; + width = rect->right - rect->left - hadd; + height = rect->bottom - rect->top - vadd; + + n_cols = (width + PDC_cxChar / 2) / PDC_cxChar; + n_rows = (height + PDC_cyChar / 2) / PDC_cyChar; + keep_size_within_bounds( &n_rows, &n_cols); + + rounded_width = hadd + n_cols * PDC_cxChar; + rounded_height = vadd + n_rows * PDC_cyChar; + + if( wParam == WMSZ_BOTTOM || wParam == WMSZ_BOTTOMLEFT + || wParam == WMSZ_BOTTOMRIGHT) + rect->bottom = rect->top + rounded_height; + if( wParam == WMSZ_TOP || wParam == WMSZ_TOPLEFT + || wParam == WMSZ_TOPRIGHT) + rect->top = rect->bottom - rounded_height; + if( wParam == WMSZ_RIGHT || wParam == WMSZ_BOTTOMRIGHT + || wParam == WMSZ_TOPRIGHT) + rect->right = rect->left + rounded_width; + if( wParam == WMSZ_LEFT || wParam == WMSZ_BOTTOMLEFT + || wParam == WMSZ_TOPLEFT) + rect->left = rect->right - rounded_width; +} + +/* Under Wine, it appears that the code to force the window size to be +an integral number of columns and rows doesn't work. This is because +WM_SIZING messages aren't sent (this is apparently fixed as of Wine 1.7.18, +though I've not tried it yet; I'm still on Wine 1.6, the stable branch.) +You can therefore end up in a loop where the code keeps trying to resize a +window that isn't actually resizing. So, _when running in Wine only_, +we want that code not to be executed... which means having to figure out: +are we running under Wine? Which means that when PDCurses/WinGUI is +initialized, we set the following 'wine_version' pointer. One could +actually call wine_version(), if not NULL, to get the current Wine +version. */ + +typedef const char *(CDECL *wine_version_func)(void); + +static wine_version_func wine_version; + +static void HandleSize( const WPARAM wParam, const LPARAM lParam) +{ + static WPARAM prev_wParam = (WPARAM)-99; + const unsigned n_xpixels = LOWORD (lParam); + const unsigned n_ypixels = HIWORD (lParam); + unsigned new_n_rows, new_n_cols; + + debug_printf( "WM_SIZE: wParam %x %d %d %d\n", (unsigned)wParam, + n_xpixels, n_ypixels, SP->resized); +/* if( wine_version) + printf( "Wine version: %s\n", wine_version( )); */ + + + if( wParam == SIZE_MINIMIZED ) + { + prev_wParam = SIZE_MINIMIZED; + return; + } + new_n_rows = n_ypixels / PDC_cyChar; + new_n_cols = n_xpixels / PDC_cxChar; + debug_printf( "Size was %d x %d; will be %d x %d\n", + PDC_n_rows, PDC_n_cols, new_n_rows, new_n_cols); + SP->resized = FALSE; + + /* If the window will have a different number of rows */ + /* or columns, we put KEY_RESIZE in the key queue. */ + /* We don't do this if */ + /* the resizing is the result of the window being */ + /* initialized, or as a result of PDC_resize_screen */ + /* being called. In the latter case, the user */ + /* presumably already knows the screen's been resized. */ + if( PDC_n_rows != (int)new_n_rows || PDC_n_cols != (int)new_n_cols) + { + PDC_n_cols = new_n_cols; + PDC_n_rows = new_n_rows; + debug_printf( "prev_wParam = %d; add_resize_key = %d\n", + (int)prev_wParam, add_resize_key); + if( prev_wParam != (WPARAM)-99 && add_resize_key) + { + /* don't add a key when the window is initialized */ + add_key_to_queue( KEY_RESIZE); + SP->resized = TRUE; + } + } + else if( wine_version) + return; + + add_resize_key = 1; + if( wParam == SIZE_RESTORED && + ( n_xpixels % PDC_cxChar || n_ypixels % PDC_cyChar)) + { + int new_xpixels = PDC_cxChar * PDC_n_cols; + int new_ypixels = PDC_cyChar * PDC_n_rows; + + adjust_window_size( &new_xpixels, &new_ypixels, + GetWindowLong( PDC_hWnd, GWL_STYLE), menu_shown); + debug_printf( "Irregular size\n"); + SetWindowPos( PDC_hWnd, 0, 0, 0, + new_xpixels, new_ypixels, + SWP_NOMOVE | SWP_NOZORDER | SWP_SHOWWINDOW); + + } + + /* If the window has been restored from minimized form, */ + /* we should repaint. Otherwise, don't. */ + prev_wParam = wParam; +} + +static void HandleMouseMove( WPARAM wParam, LPARAM lParam, + int* ptr_modified_key_to_return ) +{ + const int mouse_x = LOWORD( lParam) / PDC_cxChar; + const int mouse_y = HIWORD( lParam) / PDC_cyChar; + static int prev_mouse_x, prev_mouse_y; + + if( mouse_x != prev_mouse_x || mouse_y != prev_mouse_y) + { + int report_event = 0; + + prev_mouse_x = mouse_x; + prev_mouse_y = mouse_y; + if( wParam & MK_LBUTTON) + { + PDC_mouse_rect.left = mouse_x; + PDC_mouse_rect.top = mouse_y; + if( SP->_trap_mbe & BUTTON1_MOVED) + report_event |= PDC_MOUSE_MOVED | 1; + } + if( wParam & MK_MBUTTON) + if( SP->_trap_mbe & BUTTON2_MOVED) + report_event |= PDC_MOUSE_MOVED | 2; + if( wParam & MK_RBUTTON) + if( SP->_trap_mbe & BUTTON3_MOVED) + report_event |= PDC_MOUSE_MOVED | 4; + +#ifdef CANT_DO_THINGS_THIS_WAY + /* Logic would dictate the following lines. But with PDCurses */ + /* as it's currently set up, we've run out of bits and there */ + /* is no BUTTON4_MOVED or BUTTON5_MOVED. Perhaps we need to */ + /* redefine _trap_mbe to be a 64-bit quantity? */ + if( wParam & MK_XBUTTON1) + if( SP->_trap_mbe & BUTTON4_MOVED) + report_event |= PDC_MOUSE_MOVED | 8; + if( wParam & MK_XBUTTON2) + if( SP->_trap_mbe & BUTTON5_MOVED) + report_event |= PDC_MOUSE_MOVED | 16; +#endif + + if( !report_event) + if( SP->_trap_mbe & REPORT_MOUSE_POSITION) + report_event = PDC_MOUSE_POSITION; + if( report_event) + { + int i; + + pdc_mouse_status.changes = report_event; + for( i = 0; i < 3; i++) + { + pdc_mouse_status.button[i] = (((report_event >> i) & 1) ? + BUTTON_MOVED : 0); + } + *ptr_modified_key_to_return = 0; + set_mouse( -1, 0, lParam ); + } /* -1 to 'set_mouse' signals mouse move; 0 is ignored */ + } +} + +static void HandlePaint( HWND hwnd ) +{ + PAINTSTRUCT ps; + HDC hdc; + RECT rect; + + GetUpdateRect( hwnd, &rect, FALSE); +/* printf( "In HandlePaint: %ld %ld, %ld %ld\n", + rect.left, rect.top, rect.right, rect.bottom); */ + + hdc = BeginPaint( hwnd, &ps); + + fix_up_edges( hdc, &rect); + + if( curscr && curscr->_y) + { + int i, x1, n_chars; + + x1 = rect.left / PDC_cxChar; + n_chars = rect.right / PDC_cxChar - x1 + 1; + if( n_chars > SP->cols - x1) + n_chars = SP->cols - x1; + if( n_chars > 0) + for( i = rect.top / PDC_cyChar; i <= rect.bottom / PDC_cyChar; i++) + if( i < SP->lines && curscr->_y[i]) + PDC_transform_line_given_hdc( hdc, i, x1, + n_chars, curscr->_y[i] + x1); + } + EndPaint( hwnd, &ps ); +} + +static bool key_already_handled = FALSE; + +static void HandleSyskeyDown( const WPARAM wParam, const LPARAM lParam, + int *ptr_modified_key_to_return ) +{ + const int shift_pressed = (GetKeyState( VK_SHIFT) & 0x8000); + const int ctrl_pressed = (GetKeyState( VK_CONTROL) & 0x8000); + const int alt_pressed = (GetKeyState( VK_MENU) & 0x8000); + const int extended = ((lParam & 0x01000000) != 0); + const int repeated = (int)( lParam >> 30) & 1; + const KPTAB *kptr = kptab + wParam; + int key = 0; + static int repeat_count; + + if( !repeated) + *ptr_modified_key_to_return = 0; + + if( repeated) + repeat_count++; + else + repeat_count = 0; + if( SP->return_key_modifiers && !repeated) + { /* See notes above this function */ + if( wParam == VK_SHIFT) + { + if( GetKeyState( VK_LSHIFT) & 0x8000) + *ptr_modified_key_to_return = KEY_SHIFT_L; + else if( GetKeyState( VK_RSHIFT) & 0x8000) + *ptr_modified_key_to_return = KEY_SHIFT_R; + else if(( HIWORD( lParam) & 0xff) == 0x36) + *ptr_modified_key_to_return = KEY_SHIFT_R; + else + *ptr_modified_key_to_return = KEY_SHIFT_L; + } + if( wParam == VK_CONTROL) + *ptr_modified_key_to_return = + (extended ? KEY_CONTROL_R : KEY_CONTROL_L); + if( wParam == VK_MENU) + *ptr_modified_key_to_return = + (extended ? KEY_ALT_R : KEY_ALT_L); + } + + if( !key) /* it's not a shift, ctl, alt handled above */ + { + if( extended && kptr->extended != 999) + kptr = ext_kptab + kptr->extended; + + if( alt_pressed) + key = kptr->alt; + else if( ctrl_pressed) + key = kptr->control; + else if( shift_pressed) + key = kptr->shift; + else + key = kptr->normal; + } + + /* On non-US keyboards, people hit Alt-Gr ("Alt-Ctrl" to */ + /* those on US keyboards) to get characters not otherwise */ + /* available: accented characters, local currency symbols, */ + /* etc. So we default to suppressing Alt-Ctrl-letter combos. */ + /* However, apps can set PDC_show_ctrl_alts if they know they're */ + /* running on a US keyboard layout (or other layout that doesn't */ + /* make special use of Ctrl-Alt... for example, I use the Dvorak */ + /* layout; it's fine with PDC_show_ctrl_alts = 1.) */ + if( key >= KEY_MIN && key <= KEY_MAX) + if( !ctrl_pressed || !alt_pressed || PDC_show_ctrl_alts) + { + add_key_to_queue( key); + if( wParam == VK_MULTIPLY || wParam == VK_DIVIDE + || wParam == VK_ADD || wParam == VK_SUBTRACT + || wParam == VK_RETURN) + if( !alt_pressed) + key_already_handled = TRUE; + } + pdc_key_modifiers = 0; + /* Save the key modifiers if required. Do this first to allow to + detect e.g. a pressed CTRL key after a hit of NUMLOCK. */ + + if (SP->save_key_modifiers) + { + if( alt_pressed) + pdc_key_modifiers |= PDC_KEY_MODIFIER_ALT; + + if( shift_pressed) + pdc_key_modifiers |= PDC_KEY_MODIFIER_SHIFT; + + if( ctrl_pressed) + pdc_key_modifiers |= PDC_KEY_MODIFIER_CONTROL; + + if( GetKeyState( VK_NUMLOCK) & 1) + pdc_key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK; + + if( repeat_count) + pdc_key_modifiers |= PDC_KEY_MODIFIER_REPEAT; + } +} + +/* Blinking text is supposed to blink twice a second. Therefore, +HandleTimer( ) is called every .5 seconds. + + In truth, it's not so much 'blinking' as 'changing certain types of +text' that happens. If text is really blinking (i.e., PDC_set_blink(TRUE) +has been called), we need to flip that text. Or if text _was_ blinking +and we've just called PDC_set_blink(FALSE), all that text has to be +redrawn in 'standout' mode. Also, if PDC_set_line_color() has been +called, all text with left/right/under/over/strikeout lines needs to +be redrawn. + + So. After determining which attributes require redrawing (if any), +we run through all of 'curscr' and look for text with those attributes +set. If we find such text, we run it through PDC_transform_line. +(To speed matters up slightly, we skip over text at the start and end +of each line that lacks the desired attributes. We could conceivably +get more clever; as it stands, if the very first and very last +characters are blinking, we redraw the entire line, even though +everything in between may not require it. But it would probably be a +lot of code for little benefit.) + + Note that by default, we'll usually find that the line color hasn't +changed and the 'blink mode' is still FALSE. In that case, attr_to_seek +will be zero and the only thing we'll do here is to blink the cursor. */ + +static void HandleTimer( const WPARAM wParam ) +{ + int i; /* see WndProc() notes */ + extern int PDC_really_blinking; /* see 'pdcsetsc.c' */ + static int previously_really_blinking = 0; + static int prev_line_color = -1; + chtype attr_to_seek = 0; + + if( prev_line_color != SP->line_color) + attr_to_seek = A_ALL_LINES; + if( PDC_really_blinking || previously_really_blinking) + attr_to_seek |= A_BLINK; + prev_line_color = SP->line_color; + previously_really_blinking = PDC_really_blinking; + PDC_blink_state ^= 1; + if( attr_to_seek) + { + for( i = 0; i < SP->lines; i++) + { + if( curscr->_y[i]) + { + int j = 0, n_chars; + chtype *line = curscr->_y[i]; + + /* skip over starting text that isn't blinking: */ + while( j < SP->cols && !(*line & attr_to_seek)) + { + j++; + line++; + } + n_chars = SP->cols - j; + /* then skip over text at the end that's not blinking: */ + while( n_chars && !(line[n_chars - 1] & attr_to_seek)) + { + n_chars--; + } + if( n_chars) + PDC_transform_line( i, j, n_chars, line); + } +/* else + MessageBox( 0, "NULL _y[] found\n", "PDCurses", MB_OK); */ + } + } + if( SP->cursrow >=SP->lines || SP->curscol >= SP->cols + || SP->cursrow < 0 || SP->curscol < 0 + || !curscr->_y || !curscr->_y[SP->cursrow]) + debug_printf( "Cursor off-screen: %d %d, %d %d\n", + SP->cursrow, SP->curscol, SP->lines, SP->cols); + else if( PDC_CURSOR_IS_BLINKING) + PDC_transform_line( SP->cursrow, SP->curscol, 1, + curscr->_y[SP->cursrow] + SP->curscol); +} + + /* Options to enlarge/shrink the font are currently commented out. */ + +static HMENU set_menu( void) +{ + const HMENU hMenu = CreateMenu( ); +#ifdef PDC_WIDE + AppendMenu( hMenu, MF_STRING, WM_CHOOSE_FONT, L"Font"); + AppendMenu( hMenu, MF_STRING, WM_PASTE, L"Paste"); +#else + AppendMenu( hMenu, MF_STRING, WM_CHOOSE_FONT, "Font"); + AppendMenu( hMenu, MF_STRING, WM_PASTE, "Paste"); +#endif + return( hMenu); +} + +INLINE void HandleMenuToggle( bool *ptr_ignore_resize) +{ + const bool is_zoomed = IsZoomed( PDC_hWnd); + HMENU hMenu; + + menu_shown ^= 1; + hMenu = GetSystemMenu( PDC_hWnd, FALSE); + CheckMenuItem( hMenu, WM_TOGGLE_MENU, MF_BYCOMMAND + | (menu_shown ? MF_CHECKED : MF_UNCHECKED)); + + if( !is_zoomed) + *ptr_ignore_resize = TRUE; + if( !menu_shown) + { + hMenu = GetMenu( PDC_hWnd); /* destroy existing menu */ + DestroyMenu( hMenu); + hMenu = CreateMenu( ); /* then set an empty menu */ + SetMenu( PDC_hWnd, hMenu); + } + else + { + SetMenu( PDC_hWnd, set_menu( )); + } + *ptr_ignore_resize = FALSE; + + if( !is_zoomed) + { + PDC_resize_screen( PDC_n_rows, PDC_n_cols ); + } + + InvalidateRect( PDC_hWnd, NULL, FALSE); +} + +INLINE uint64_t milliseconds_since_1970( void) +{ + FILETIME ft; + const uint64_t jd_1601 = 2305813; /* actually 2305813.5 */ + const uint64_t jd_1970 = 2440587; /* actually 2440587.5 */ + const uint64_t ten_million = 10000000; + const uint64_t diff = (jd_1970 - jd_1601) * ten_million * 86400; + uint64_t decimicroseconds_since_1970; /* i.e., time in units of 1e-7 seconds */ + + GetSystemTimeAsFileTime( &ft); + decimicroseconds_since_1970 = ((uint64_t)ft.dwLowDateTime | + ((uint64_t)ft.dwHighDateTime << 32)) - diff; + return( decimicroseconds_since_1970 / 10000); +} + +/* Note that there are two types of WM_TIMER timer messages. One type +indicates that SP->mouse_wait milliseconds have elapsed since a mouse +button was pressed; that's handled as described in the above notes. +The other type, issued every half second, indicates that blinking +should take place. For these, HandleTimer() is called (see above). + + On WM_PAINT, we determine what parts of 'curscr' would be covered by +the update rectangle, and run those through PDC_transform_line. + + For determining left/right shift, alt, and control, I borrowed code +from SDL. Note that the Win32 version of PDCurses doesn't work correctly +here for Win9x; it just does GetKeyState( VK_LSHIFT), etc., which is +apparently not supported in Win9x. So no matter which shift (or alt or +Ctrl key) is hit, the right-hand variant is returned in that library. +The SDL handling, and hence the handling below, _does_ work on Win9x. +Note, though, that in Win9x, detection of the Shift keys is hardware +dependent; if you've an unusual keyboard, both Shift keys may be +detected as right, or both as left. */ + +#if defined(_WIN32) && defined(__GNUC__) +#define ALIGN_STACK __attribute__((force_align_arg_pointer)) +#else +#define ALIGN_STACK +#endif + +static LRESULT ALIGN_STACK CALLBACK WndProc (const HWND hwnd, + const UINT message, + const WPARAM wParam, + const LPARAM lParam) +{ + int button_down = -1, button_up = -1; + static int mouse_buttons_pressed = 0; + static LPARAM mouse_lParam; + static uint64_t last_click_time[PDC_MAX_MOUSE_BUTTONS]; + /* in millisec since 1970 */ + static int modified_key_to_return = 0; + const RECT before_rect = PDC_mouse_rect; + static bool ignore_resize = FALSE; + + PDC_hWnd = hwnd; + if( !hwnd) + debug_printf( "Null hWnd: msg %u, wParam %x, lParam %lx\n", + message, wParam, lParam); + + switch (message) + { + case WM_SIZING: + HandleSizing( wParam, lParam ); + return( TRUE ); + + case WM_SIZE: + /* If ignore_resize = 1, don't bother resizing; */ + /* the final window size has yet to be set */ + if( ignore_resize == FALSE) + HandleSize( wParam, lParam); + return 0 ; + + case WM_MOUSEWHEEL: + debug_printf( "Mouse wheel: %x %lx\n", wParam, lParam); + modified_key_to_return = 0; + set_mouse( VERTICAL_WHEEL_EVENT, (short)( HIWORD(wParam)), lParam); + break; + + case WM_MOUSEHWHEEL: + debug_printf( "Mouse horiz wheel: %x %lx\n", wParam, lParam); + modified_key_to_return = 0; + set_mouse( HORIZONTAL_WHEEL_EVENT, (short)( HIWORD(wParam)), lParam); + break; + + case WM_MOUSEMOVE: + HandleMouseMove( wParam, lParam, &modified_key_to_return ); + break; + + case WM_LBUTTONDOWN: + PDC_mouse_rect.left = PDC_mouse_rect.right = + LOWORD( lParam) / PDC_cxChar; + PDC_mouse_rect.top = PDC_mouse_rect.bottom = + HIWORD( lParam) / PDC_cyChar; + PDC_selecting_rectangle = (wParam & MK_SHIFT); + SetCapture( hwnd); + button_down = 0; + break; + + case WM_LBUTTONUP: + button_up = 0; + ReleaseCapture( ); + if( (PDC_mouse_rect.left != PDC_mouse_rect.right || + PDC_mouse_rect.top != PDC_mouse_rect.bottom) && + (PDC_mouse_rect.right >= 0 && PDC_mouse_rect.left >= 0 + && curscr && curscr->_y) ) + { + /* RR: will crash sometimes */ + /* As an example on double-click of the title bar */ + HandleBlockCopy(); + } + PDC_mouse_rect.top = PDC_mouse_rect.bottom = -1; /* now hide rect */ + break; + + case WM_RBUTTONDOWN: + button_down = 2; + SetCapture( hwnd); + break; + + case WM_RBUTTONUP: + button_up = 2; + ReleaseCapture( ); + break; + + case WM_MBUTTONDOWN: + button_down = 1; + SetCapture( hwnd); + break; + + case WM_MBUTTONUP: + button_up = 1; + ReleaseCapture( ); + break; + +#if( PDC_MAX_MOUSE_BUTTONS >= 5) + /* WinGUI can support five mouse buttons. But some may wish */ + /* to leave PDC_MAX_MOUSE_BUTTONS=3, for compatibility */ + /* with older PDCurses libraries. Hence the above #if. */ + case WM_XBUTTONDOWN: + button_down = ((wParam & MK_XBUTTON1) ? 3 : 4); + SetCapture( hwnd); + break; + + case WM_XBUTTONUP: +#ifdef WRONG_WAY + /* You'd think we'd use the following line, wouldn't you? */ + /* But we can't, because an XBUTTONUP message doesn't actually */ + /* tell you which button was released! So we'll assume that */ + /* the released xbutton matches a pressed one; and we've kept */ + /* track of which buttons are currently pressed. */ + button_up = ((wParam & MK_XBUTTON1) ? 3 : 4); +#endif + button_up = (((mouse_buttons_pressed & 8) || + pdc_mouse_status.xbutton[0] & BUTTON_PRESSED) ? 3 : 4); + ReleaseCapture( ); + break; +#endif /* #if( PDC_MAX_MOUSE_BUTTONS >= 5) */ + + case WM_MOVE: + return 0 ; + + case WM_ERASEBKGND: /* no need to erase background; it'll */ + return( 0); /* all get painted over anyway */ + + /* The WM_PAINT routine is sort of "borrowed" from doupdate( ) from */ + /* refresh.c. I'm not entirely sure that this is what ought to be */ + /* done, though it does appear to work correctly. */ + case WM_PAINT: + if( hwnd && curscr ) + { + HandlePaint( hwnd ); + } + break; + + case WM_KEYUP: + case WM_SYSKEYUP: + if( wParam == VK_MENU && numpad_unicode_value) + { + modified_key_to_return = numpad_unicode_value; + numpad_unicode_value = 0; + pdc_key_modifiers = 0; + } + if( modified_key_to_return ) + { + add_key_to_queue( modified_key_to_return ); + modified_key_to_return = 0; + } + break; + + case WM_CHAR: /* _Don't_ add Shift-Tab; it's handled elsewhere */ + if( wParam != 9 || !(GetKeyState( VK_SHIFT) & 0x8000)) + if( !key_already_handled) + add_key_to_queue( (int)wParam ); + key_already_handled = FALSE; + break; + + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + if( wParam < 225 && wParam > 0 ) + { + HandleSyskeyDown( wParam, lParam, &modified_key_to_return ); + } + return 0 ; + + case WM_SYSCHAR: + return 0 ; + + case WM_TIMER: + /* see notes above this function */ + if( wParam != TIMER_ID_FOR_BLINKING ) + { + static const int remap_table[PDC_MAX_MOUSE_BUTTONS] = + { BUTTON1_PRESSED, BUTTON2_PRESSED, BUTTON3_PRESSED, + BUTTON4_PRESSED, BUTTON5_PRESSED }; + + modified_key_to_return = 0; + if( SP && (SP->_trap_mbe & remap_table[wParam])) + set_mouse( (const int) wParam, BUTTON_PRESSED, mouse_lParam); + KillTimer( PDC_hWnd, (int)wParam); + mouse_buttons_pressed ^= (1 << wParam); + } + else if( SP && curscr && curscr->_y) + { + /* blink the blinking text */ + HandleTimer( wParam ); + } + break; + + case WM_CLOSE: + { + if( !PDC_shutdown_key[FUNCTION_KEY_SHUT_DOWN]) + { + final_cleanup( ); + PDC_bDone = TRUE; + exit( 0); + } + else + add_key_to_queue( PDC_shutdown_key[FUNCTION_KEY_SHUT_DOWN]); + } + return( 0); + + case WM_COMMAND: + case WM_SYSCOMMAND: + if( wParam == WM_EXIT_GRACELESSLY) + { + final_cleanup( ); + PDC_bDone = TRUE; + exit( 0); + } + else if( wParam == WM_ENLARGE_FONT || wParam == WM_SHRINK_FONT) + { + adjust_font_size( (wParam == WM_ENLARGE_FONT) ? 1 : -1); + return( 0); + } + else if( wParam == WM_CHOOSE_FONT) + { + if( PDC_choose_a_new_font( )) + adjust_font_size( 0); + return( 0); + } + else if( wParam == WM_PASTE) + { + PDC_add_clipboard_to_key_queue( ); + } + else if( wParam == WM_TOGGLE_MENU) + { + HandleMenuToggle( &ignore_resize); + } + break; + + case WM_DESTROY: + PDC_LOG(("WM_DESTROY\n")); + PostQuitMessage (0) ; + PDC_bDone = TRUE; + return 0 ; + } + + if( hwnd) + show_mouse_rect( hwnd, before_rect, PDC_mouse_rect); + + if( button_down >= 0) + { + modified_key_to_return = 0; + SetTimer( hwnd, button_down, SP->mouse_wait, NULL); + mouse_buttons_pressed |= (1 << button_down); + mouse_lParam = lParam; + } + if( button_up >= 0) + { + int message_to_send = -1; + + modified_key_to_return = 0; + if( (mouse_buttons_pressed >> button_up) & 1) + { + const uint64_t curr_click_time = + milliseconds_since_1970( ); + static const int double_remap_table[PDC_MAX_MOUSE_BUTTONS] = + { BUTTON1_DOUBLE_CLICKED, BUTTON2_DOUBLE_CLICKED, + BUTTON3_DOUBLE_CLICKED, BUTTON4_DOUBLE_CLICKED, + BUTTON5_DOUBLE_CLICKED }; + static const int triple_remap_table[PDC_MAX_MOUSE_BUTTONS] = + { BUTTON1_TRIPLE_CLICKED, BUTTON2_TRIPLE_CLICKED, + BUTTON3_TRIPLE_CLICKED, BUTTON4_TRIPLE_CLICKED, + BUTTON5_TRIPLE_CLICKED }; + static int n_previous_clicks; + + if( curr_click_time < + last_click_time[button_up] + 2 * SP->mouse_wait) + n_previous_clicks++; /* 'n_previous_clicks' will be */ + else /* zero for a "normal" click, 1 */ + n_previous_clicks = 0; /* for a dblclick, 2 for a triple */ + + if( n_previous_clicks >= 2 && + (SP->_trap_mbe & triple_remap_table[button_up])) + message_to_send = BUTTON_TRIPLE_CLICKED; + else if( n_previous_clicks >= 1 && + (SP->_trap_mbe & double_remap_table[button_up])) + message_to_send = BUTTON_DOUBLE_CLICKED; + else /* either it's not a doubleclick, or we aren't */ + { /* checking for double clicks */ + static const int remap_table[PDC_MAX_MOUSE_BUTTONS] = + { BUTTON1_CLICKED, BUTTON2_CLICKED, BUTTON3_CLICKED, + BUTTON4_CLICKED, BUTTON5_CLICKED }; + + if( SP->_trap_mbe & remap_table[button_up]) + message_to_send = BUTTON_CLICKED; + } + KillTimer( hwnd, button_up); + mouse_buttons_pressed ^= (1 << button_up); + last_click_time[button_up] = curr_click_time; + } + if( message_to_send == -1) /* might just send as a 'released' msg */ + { + static const int remap_table[PDC_MAX_MOUSE_BUTTONS] = + { BUTTON1_RELEASED, BUTTON2_RELEASED, BUTTON3_RELEASED, + BUTTON4_RELEASED, BUTTON5_RELEASED }; + + if( SP->_trap_mbe & remap_table[button_up]) + message_to_send = BUTTON_RELEASED; + } + if( message_to_send != -1) + set_mouse( button_up, message_to_send, lParam); + } + + return DefWindowProc( hwnd, message, wParam, lParam) ; +} + + /* Default behaviour is that, when one clicks on the 'close' button, */ + /* exit( 0) is called, just as in the SDL and X11 versions. But if */ + /* one wishes, one can call PDC_set_shutdown_key to cause those */ + /* buttons to put a specified character into the input queue. It's */ + /* then the application's problem to exit gracefully, perhaps with */ + /* messages such as 'are you sure' and so forth. */ + /* If you've set a shutdown key, there's always a risk that the */ + /* program will get stuck in a loop and never process said key. So */ + /* when the key is set, a 'Kill' item is appended to the system menu */ + /* so that the user still has some way to terminate the app, albeit */ + /* with extreme prejudice (i.e., click on 'Kill' and exit is called */ + /* and the app exits gracelessly.) */ + +int PDC_set_function_key( const unsigned function, const int new_key) +{ + int old_key = -1; + + if( function < PDC_MAX_FUNCTION_KEYS) + { + old_key = PDC_shutdown_key[function]; + PDC_shutdown_key[function] = new_key; + } + + if( function == FUNCTION_KEY_SHUT_DOWN) + if( (new_key && !old_key) || (old_key && !new_key)) + { + HMENU hMenu = GetSystemMenu( PDC_hWnd, FALSE); + + if( new_key) + AppendMenu( hMenu, MF_STRING, WM_EXIT_GRACELESSLY, _T( "Kill")); + else + RemoveMenu( hMenu, WM_EXIT_GRACELESSLY, MF_BYCOMMAND); + } + return( old_key); +} + +/* https://msdn.microsoft.com/en-us/library/windows/desktop/dd162826(v=vs.85).aspx +The code at the above link provides general methods for positioning a window +on a multiple-display setup. The only instance we're using is the +MONITOR_WORKAREA one, which ensures that even if monitor geometry changes, +the window will still be entirely on-screen. + +These functions entered the Win32 API with Windows 2000. If +MONITOR_DEFAULTTONEAREST isn't defined, we shouldn't try to do this. */ + +#ifdef MONITOR_DEFAULTTONEAREST + +static void clip_or_center_rect_to_monitor( LPRECT prc) +{ + HMONITOR hMonitor; + MONITORINFO mi; + RECT rc; + const int w = prc->right - prc->left; + const int h = prc->bottom - prc->top; + + hMonitor = MonitorFromRect(prc, MONITOR_DEFAULTTONEAREST); + + mi.cbSize = sizeof(mi); + GetMonitorInfo(hMonitor, &mi); + + rc = mi.rcMonitor; + + prc->left = max(rc.left, min(rc.right-w, prc->left)); + prc->top = max(rc.top, min(rc.bottom-h, prc->top)); + prc->right = prc->left + w; + prc->bottom = prc->top + h; +} + +static void clip_or_center_window_to_monitor( HWND hwnd) +{ + RECT rc; + + GetWindowRect(hwnd, &rc); + clip_or_center_rect_to_monitor(&rc); + SetWindowPos(hwnd, NULL, rc.left, rc.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE); +} +#endif + +/* By default, the user cannot resize the window. This is because +many apps don't handle KEY_RESIZE, and one can get odd behavior +in such cases. There are two ways around this. If you call +PDC_set_resize_limits( ) before initwin( ), telling WinGUI exactly how +large/small the window can be, the window will be user-resizable. Or +you can set ttytype[0...3] to contain the resize limits. A call such as + +PDC_set_resize_limits( 42, 42, 135, 135); + + will result in the window being fixed at 42 lines by 135 columns. + +PDC_set_resize_limits( 20, 50, 70, 200); + + will mean the window can have 20 to 50 lines and 70 to 200 columns. +The user will be able to resize the window freely within those limits. +See 'newtest.c' (in the 'demos' folder) for an example. + + This function is used in only one place (PDC_scr_open( )), so +it's inlined. */ + +INLINE int set_up_window( void) +{ + /* create the dialog window */ + WNDCLASS wndclass ; + HMENU hMenu; + HANDLE hInstance = GetModuleHandleA( NULL); + int n_default_columns = 80; + int n_default_rows = 25; + int xsize, ysize, window_style; + int xloc = CW_USEDEFAULT; + int yloc = CW_USEDEFAULT; + TCHAR WindowTitle[MAX_PATH]; + const TCHAR *AppName = _T( "Curses_App"); + HICON icon; + static bool wndclass_has_been_registered = FALSE; + + if( !hInstance) + debug_printf( "No instance: %d\n", GetLastError( )); + originally_focussed_window = GetForegroundWindow( ); + debug_printf( "hInstance %x\nOriginal window %x\n", hInstance, originally_focussed_window); + /* set the window icon from the icon in the process */ + icon = get_app_icon(); + if( !icon ) + icon = LoadIcon( NULL, IDI_APPLICATION); + if( !wndclass_has_been_registered) + { + ATOM rval; + + wndclass.style = CS_VREDRAW ; + wndclass.lpfnWndProc = WndProc ; + wndclass.cbClsExtra = 0 ; + wndclass.cbWndExtra = 0 ; + wndclass.hInstance = hInstance ; + wndclass.hIcon = icon; + wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; + wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; + wndclass.lpszMenuName = NULL ; + wndclass.lpszClassName = AppName ; + + rval = RegisterClass( &wndclass) ; + if( !rval) + { + const DWORD last_error = GetLastError( ); + + debug_printf( "RegisterClass failed: GetLastError = %lx\n", last_error); + return( -1); + } + wndclass_has_been_registered = TRUE; + } + + get_app_name( WindowTitle, MAX_PATH, TRUE); +#ifdef PDC_WIDE + debug_printf( "WindowTitle = '%ls'\n", WindowTitle); +#endif + + get_default_sizes_from_registry( &n_default_columns, &n_default_rows, &xloc, &yloc, + &menu_shown); + if( PDC_n_rows > 2 && PDC_n_cols > 2) + { + n_default_columns = PDC_n_cols; + n_default_rows = PDC_n_rows; + } + if( ttytype[1]) + PDC_set_resize_limits( (unsigned char)ttytype[0], + (unsigned char)ttytype[1], + (unsigned char)ttytype[2], + (unsigned char)ttytype[3]); + debug_printf( "Size %d x %d, loc %d x %d; menu %d\n", + n_default_columns, n_default_rows, xloc, yloc, menu_shown); + get_character_sizes( NULL, &PDC_cxChar, &PDC_cyChar); + + if( min_lines != max_lines || min_cols != max_cols) + window_style = ((n_default_columns == -1) ? + WS_MAXIMIZE | WS_OVERLAPPEDWINDOW : WS_OVERLAPPEDWINDOW); + else /* fixed-size window: looks "normal", but w/o a maximize box */ + window_style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; + + if( n_default_columns == -1) + xsize = ysize = CW_USEDEFAULT; + else + { + keep_size_within_bounds( &n_default_rows, &n_default_columns); + xsize = PDC_cxChar * n_default_columns; + ysize = PDC_cyChar * n_default_rows; + adjust_window_size( &xsize, &ysize, window_style, menu_shown); + } + + PDC_hWnd = CreateWindow( AppName, WindowTitle, window_style, + xloc, yloc, + xsize, ysize, + NULL, (menu_shown ? set_menu( ) : NULL), + hInstance, NULL) ; + + if( !PDC_hWnd) + { + const DWORD last_error = GetLastError( ); + + debug_printf( "CreateWindow failed; GetLastError = %ld", last_error); + return( -2); + } + + hMenu = GetSystemMenu( PDC_hWnd, FALSE); + AppendMenu( hMenu, MF_STRING | (menu_shown ? MF_CHECKED : MF_UNCHECKED), WM_TOGGLE_MENU, _T( "Menu")); + AppendMenu( hMenu, MF_STRING, WM_CHOOSE_FONT, _T( "Choose Font")); + + debug_printf( "menu set\n"); + + ShowWindow (PDC_hWnd, + (n_default_columns == -1) ? SW_SHOWMAXIMIZED : SW_SHOWNORMAL); + debug_printf( "window shown\n"); + ValidateRect( PDC_hWnd, NULL); /* don't try repainting */ + UpdateWindow (PDC_hWnd) ; + debug_printf( "window updated\n"); + SetTimer( PDC_hWnd, TIMER_ID_FOR_BLINKING, 500, NULL); + debug_printf( "timer set\n"); + +#ifdef MONITOR_DEFAULTTONEAREST + /* if the window is off-screen, move it on screen. */ + clip_or_center_window_to_monitor( PDC_hWnd); +#endif + + return( 0); +} + +/* open the physical screen -- allocate SP, miscellaneous intialization, + and may save the existing screen for later restoration. + + Deciding on a for-real maximum screen size has proven difficult. + But there is really no particularly good reason to set such a maximum. + If one does, you get some tricky issues: suppose the user drags the + window to create a screen larger than MAX_LINES or MAX_COLUMNS? My + hope is to evade that problem by just setting those constants to be... + well... unrealistically large. */ + +#define MAX_LINES 50000 +#define MAX_COLUMNS 50000 + +int PDC_scr_open( int argc, char **argv) +{ + int i, r, g, b; + HMODULE hntdll = GetModuleHandle( _T("ntdll.dll")); + + if( hntdll) + wine_version = (wine_version_func)GetProcAddress(hntdll, "wine_get_version"); + + PDC_LOG(("PDC_scr_open() - called\n")); + SP = calloc(1, sizeof(SCREEN)); + color_pair_indices = (short *)calloc(PDC_COLOR_PAIRS * 2, sizeof( short)); + pdc_rgbs = (COLORREF *)calloc(N_COLORS, sizeof( COLORREF)); + if (!SP || !color_pair_indices || !pdc_rgbs) + return ERR; + + debug_printf( "colors alloc\n"); + COLORS = N_COLORS; /* should give this a try and see if it works! */ + for( i = 0; i < 16; i++) + { + const int intensity = ((i & 8) ? 0xff : 0xc0); + + pdc_rgbs[i] = RGB( ((i & COLOR_RED) ? intensity : 0), + ((i & COLOR_GREEN) ? intensity : 0), + ((i & COLOR_BLUE) ? intensity : 0)); + } + /* 256-color xterm extended palette: 216 colors in a + 6x6x6 color cube, plus 24 (not 50) shades of gray */ + for( r = 0; r < 6; r++) + for( g = 0; g < 6; g++) + for( b = 0; b < 6; b++) + pdc_rgbs[i++] = RGB( r ? r * 40 + 55 : 0, + g ? g * 40 + 55 : 0, + b ? b * 40 + 55 : 0); + for( i = 0; i < 24; i++) + pdc_rgbs[i + 232] = RGB( i * 10 + 8, i * 10 + 8, i * 10 + 8); + SP->mouse_wait = PDC_CLICK_PERIOD; + SP->visibility = 0; /* no cursor, by default */ + SP->curscol = SP->cursrow = 0; + SP->audible = TRUE; + SP->mono = FALSE; + + /* note: we parse the non-wide argc (see comment in header), + therefore using non-wide char handling here */ + if( argc && argv) /* store a copy of the input arguments */ + { + PDC_argc = argc; + PDC_argv = (char **)calloc( argc + 1, sizeof( char *)); + for( i = 0; i < argc; i++) + { + PDC_argv[i] = (char *)malloc( strlen( argv[i]) + 1); + strcpy( PDC_argv[i], argv[i]); + } + } + + if( set_up_window( )) + { + fprintf( stderr, "set_up_window failed\n"); + return ERR; + } + debug_printf( "Back from set_up_window\n"); + while( !PDC_get_rows( )) /* wait for screen to be drawn and */ + ; /* actual size to be determined */ + + debug_printf( "Back from PDC_get_rows\n"); + SP->lines = PDC_get_rows(); + SP->cols = PDC_get_columns(); + + if (SP->lines < 2 || SP->lines > MAX_LINES + || SP->cols < 2 || SP->cols > MAX_COLUMNS) + { + fprintf(stderr, "LINES value must be >= 2 and <= %d: got %d\n", + MAX_LINES, SP->lines); + fprintf(stderr, "COLS value must be >= 2 and <= %d: got %d\n", + MAX_COLUMNS, SP->cols); + + return ERR; + } + +/* PDC_reset_prog_mode(); doesn't do anything anyway */ + debug_printf( "...we're done\n"); + return OK; +} + +/* the core of resize_term() */ + +int PDC_resize_screen( int nlines, int ncols) +{ + if( !stdscr) /* window hasn't been created yet; we're */ + { /* specifying its size before doing so */ + PDC_n_rows = nlines; + PDC_n_cols = ncols; + return OK; + } + SP->resized = FALSE; + debug_printf( "Incoming: %d %d\n", nlines, ncols); + if( nlines >= 2 && ncols >= 2 && PDC_cxChar && PDC_cyChar && PDC_hWnd && + !IsZoomed( PDC_hWnd) /* && WaitResult == WAIT_OBJECT_0 */) + { + RECT rect, client_rect; + int new_width; + int new_height; + + GetWindowRect( PDC_hWnd, &rect); + GetClientRect( PDC_hWnd, &client_rect); + debug_printf( "Outgoing: %d %d\n", nlines, ncols); + new_width = ncols * PDC_cxChar; + new_height = nlines * PDC_cyChar; + + if( new_width != client_rect.right || new_height != client_rect.bottom) + { /* check to make sure size actually changed */ + add_resize_key = 0; + SetWindowPos( PDC_hWnd, 0, 0, 0, + new_width + (rect.right - rect.left) - client_rect.right, + new_height + (rect.bottom - rect.top) - client_rect.bottom, + SWP_NOMOVE | SWP_NOZORDER | SWP_SHOWWINDOW); + } + } + return OK; +} + +void PDC_reset_prog_mode(void) +{ + PDC_LOG(("PDC_reset_prog_mode() - called.\n")); +#ifdef NOT_CURRENTLY_IN_USE + if( PDC_bDone == FALSE && PDC_hWnd) + { + PDC_bDone = TRUE; + SetForegroundWindow( PDC_hWnd); + } +#endif +} + +void PDC_reset_shell_mode(void) +{ +} + +void PDC_restore_screen_mode(int i) +{ +} + +void PDC_save_screen_mode(int i) +{ +} + +/* NOTE: as with PDC_init_color() (see below), this function has to +redraw all text with color attribute 'pair' to match the newly-set +foreground and background colors. The loops to go through every character +in curscr, looking for those that need to be redrawn and ignoring +those at the front and start of each line, are very similar. */ + +static short get_pair( const chtype ch) +{ + return( (short)( (ch & A_COLOR) >> PDC_COLOR_SHIFT)); +} + +void PDC_init_pair( short pair, short fg, short bg) +{ + if( color_pair_indices[pair] != fg || + color_pair_indices[pair + PDC_COLOR_PAIRS] != bg) + { + color_pair_indices[pair] = fg; + color_pair_indices[pair + PDC_COLOR_PAIRS] = bg; + /* Possibly go through curscr and redraw everything with that color! */ + if( curscr && curscr->_y) + { + int i; + + for( i = 0; i < SP->lines; i++) + if( curscr->_y[i]) + { + int j = 0, n_chars; + chtype *line = curscr->_y[i]; + + /* skip over starting text that isn't of the desired color: */ + while( j < SP->cols && get_pair( *line) != pair) + { + j++; + line++; + } + n_chars = SP->cols - j; + /* then skip over text at the end that's not the right color: */ + while( n_chars && get_pair( line[n_chars - 1]) != pair) + n_chars--; + if( n_chars) + PDC_transform_line( i, j, n_chars, line); + } + } + } +} + +int PDC_pair_content( short pair, short *fg, short *bg) +{ + *fg = color_pair_indices[pair]; + *bg = color_pair_indices[pair + PDC_COLOR_PAIRS]; + return OK; +} + +bool PDC_can_change_color(void) +{ + return TRUE; +} + +int PDC_color_content( short color, short *red, short *green, short *blue) +{ + COLORREF col = pdc_rgbs[color]; + + *red = DIVROUND(GetRValue(col) * 1000, 255); + *green = DIVROUND(GetGValue(col) * 1000, 255); + *blue = DIVROUND(GetBValue(col) * 1000, 255); + + return OK; +} + +/* We have an odd problem when changing colors with PDC_init_color(). On +palette-based systems, you just change the palette and the hardware takes +care of the rest. Here, though, we actually need to redraw any text that's +drawn in the specified color. So we gotta look at each character and see if +either the foreground or background matches the index that we're changing. +Then, that text gets redrawn. For speed/simplicity, the code looks for the +first and last character in each line that would be affected, then draws those +in between (frequently, this will be zero characters, i.e., no text on that +particular line happens to use the color index in question.) See similar code +above for PDC_init_pair(), to handle basically the same problem. */ + +static int color_used_for_this_char( const chtype c, const int idx) +{ + const int color = get_pair( c); + const int rval = (color_pair_indices[color] == idx || + color_pair_indices[color + PDC_COLOR_PAIRS] == idx); + + return( rval); +} + +int PDC_init_color( short color, short red, short green, short blue) +{ + const COLORREF new_rgb = RGB(DIVROUND(red * 255, 1000), + DIVROUND(green * 255, 1000), + DIVROUND(blue * 255, 1000)); + + if( pdc_rgbs[color] != new_rgb) + { + pdc_rgbs[color] = new_rgb; + /* Possibly go through curscr and redraw everything with that color! */ + if( curscr && curscr->_y) + { + int i; + + for( i = 0; i < SP->lines; i++) + if( curscr->_y[i]) + { + int j = 0, n_chars; + chtype *line = curscr->_y[i]; + + /* skip over starting text that isn't of the desired color: */ + while( j < SP->cols + && !color_used_for_this_char( *line, color)) + { + j++; + line++; + } + n_chars = SP->cols - j; + /* then skip over text at the end that's not the right color: */ + while( n_chars && + !color_used_for_this_char( line[n_chars - 1], color)) + n_chars--; + if( n_chars) + PDC_transform_line( i, j, n_chars, line); + } + } + } + return OK; +} diff --git a/3rd-party/PDCurses/wingui/pdcsetsc.c b/3rd-party/PDCurses/wingui/pdcsetsc.c new file mode 100644 index 0000000..6d18e69 --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcsetsc.c @@ -0,0 +1,89 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +/*man-start************************************************************** + + Name: pdcsetsc + + Synopsis: + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + + Description: + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + + Portability X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + + /* Note that the following is a line-for-line */ + /* copy of the SDL version of this function. */ +int PDC_curs_set(int visibility) +{ + int ret_vis; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + + SP->visibility = visibility; + + PDC_gotoyx(SP->cursrow, SP->curscol); + + return ret_vis; +} + +void PDC_set_title(const char *title) +{ + extern HWND PDC_hWnd; +#ifdef PDC_WIDE + wchar_t wtitle[512]; +#endif + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); + +#ifdef PDC_WIDE + PDC_mbstowcs(wtitle, title, 511); + SetWindowTextW( PDC_hWnd, wtitle); +#else + SetWindowTextA( PDC_hWnd, title); +#endif +} + + /* If PDC_really_blinking is TRUE, then text with the A_BLINK */ + /* attribute will actually blink. Otherwise, such text will */ + /* be shown with higher color intensity (the R, G, and B values */ + /* are averaged with pure white). See pdcdisp.c for details of */ + /* how this is done. */ + /* Unlike on other PDCurses platforms, this doesn't require */ + /* decreasing the number of colors by half. Also, the choice */ + /* indicated by 'blinkon' will actually be respected, so OK is */ + /* always returned (most platforms don't actually support */ + /* blinking). */ + /* The default behavior is to not show A_BLINK text as */ + /* blinking, i.e., PDC_really_blinking = FALSE. Blinking text */ + /* can be pretty annoying to some people. You should probably */ + /* call PDC_set_blink( TRUE) only if there is something to which */ + /* the user _must_ pay attention; say, "the nuclear reactor */ + /* is about to melt down". Otherwise, the bolder, brighter */ + /* text should be attention-getting enough. */ + +int PDC_really_blinking = FALSE; + +int PDC_set_blink(bool blinkon) +{ + PDC_really_blinking = blinkon; + return OK; +} diff --git a/3rd-party/PDCurses/wingui/pdcurses.ico b/3rd-party/PDCurses/wingui/pdcurses.ico new file mode 100644 index 0000000..53a6dde Binary files /dev/null and b/3rd-party/PDCurses/wingui/pdcurses.ico differ diff --git a/3rd-party/PDCurses/wingui/pdcurses.rc b/3rd-party/PDCurses/wingui/pdcurses.rc new file mode 100644 index 0000000..7763491 --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcurses.rc @@ -0,0 +1,28 @@ +#include "winver.h" + +1 VERSIONINFO + FILEVERSION 4,0,2,0 + PRODUCTVERSION 4,0,2,0 + FILEFLAGSMASK 0x3fL + FILEFLAGS 0x0L + FILEOS VOS_UNKNOWN + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Maintainer", "William McBrine\0" + VALUE "FileDescription", "Public Domain Curses\0" + VALUE "FileVersion", "4.0.2\0" + VALUE "InternalName", "PDCurses\0" + VALUE "LegalCopyright", "Public Domain\0" + VALUE "OriginalFilename", "PDCURSES.DLL\0" + VALUE "ProductName", "Public Domain Curses Library\0" + VALUE "ProductVersion", "4.0.2\0" + END + END +END + +1 ICON DISCARDABLE "PDCURSES.ico" diff --git a/3rd-party/PDCurses/wingui/pdcutil.c b/3rd-party/PDCurses/wingui/pdcutil.c new file mode 100644 index 0000000..b7dc946 --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcutil.c @@ -0,0 +1,61 @@ +/* Public Domain Curses */ + +#include "pdcwin.h" + +void PDC_beep(void) +{ + PDC_LOG(("PDC_beep() - called\n")); + +/* MessageBeep(MB_OK); */ + MessageBeep(0XFFFFFFFF); +} + +void PDC_napms(int ms) /* 'ms' = milli, _not_ microseconds! */ +{ + /* RR: keep GUI window responsive while PDCurses sleeps */ + MSG msg; + DWORD curr_ms = GetTickCount( ); + const DWORD milliseconds_sleep_limit = ms + curr_ms; + extern bool PDC_bDone; + + PDC_LOG(("PDC_napms() - called: ms=%d\n", ms)); + + /* Pump all pending messages from WIN32 to the window handler */ + while( !PDC_bDone && curr_ms < milliseconds_sleep_limit ) + { + const DWORD max_sleep_ms = 50; /* check msgs 20 times/second */ + DWORD sleep_millisecs; + + while( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) ) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + curr_ms = GetTickCount( ); + sleep_millisecs = milliseconds_sleep_limit - curr_ms; + if( sleep_millisecs > max_sleep_ms) + sleep_millisecs = max_sleep_ms; + Sleep( sleep_millisecs); + curr_ms += sleep_millisecs; + } +} + +const char *PDC_sysname(void) +{ + return "WinGUI"; +} + +PDC_version_info PDC_version = { PDC_PORT_WINGUI, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; diff --git a/3rd-party/PDCurses/wingui/pdcwin.h b/3rd-party/PDCurses/wingui/pdcwin.h new file mode 100644 index 0000000..30f1702 --- /dev/null +++ b/3rd-party/PDCurses/wingui/pdcwin.h @@ -0,0 +1,122 @@ +/* Public Domain Curses */ + +/* $Id: pdcwin.h,v 1.6 2008/07/13 06:36:32 wmcbrine Exp $ */ + +#ifdef PDC_WIDE +# define UNICODE +# define _UNICODE +#endif + +#include + +#if defined( GS_8BIT_INDICES) && defined( PDC_WIDE) + /* We only need the 'fallback font' for the wide-char version, */ + /* and it'll only work in Win2000 or later (earlier versions */ + /* lack the necessary GetFontUnicodeRanges() function.) Comment */ + /* out the following line if you're dealing with a really old */ + /* system, or just don't want to use a fallback font. */ + #define USE_FALLBACK_FONT +#endif + +/* Windows.h will #define MOUSE_MOVED to 0x1, which is what the +Windows API expects. In Curses, MOUSE_MOVED is a macro indicating +whether the mouse has moved, so we'd get a compiler warning that +we're re-defining MOUSE_MOVED. That warning may be a Good Thing in +your software, letting you know: "Be careful; in a Curses program, +MOUSE_MOVED won't have the same meaning it does in a 'real' Windows +program." + + But in building WinGUI itself, we're expecting the Curses +meaning for MOUSE_MOVED, and the compiler warning would just be +a nuisance. So we'll #undefine MOUSE_MOVED before getting to the +Curses definition : */ + +#undef MOUSE_MOVED +#include + +extern int PDC_get_buffer_rows(void); + +/* The following probably ought to go into 'curses.h' at some point. */ +/* Or at least, not be here; this is a temporary place for them. */ + +/* WinGUI has some drastically extended cursor possibilities. The +following #defines can be used with curs_set(). For all other flavors +of PDCurses, only the invisible, "normal", and "intense" cursor +states will be recognized. In Win32, caret, half-block, central +block, cross, and outlined block cursors are available. + + By default, all such cursors will blink. However, in WinGUI, +the input value to curs_set() is treated as a two-byte value, with +the cursor blinking between those two states. For example, +curs_set( 0x0102) would blink between a "normal" (underline) cursor and +an "intense" (full-block) cursor. One can see that this behavior is +backward-compatible; for example, curs_set( 1) would blink between a +"normal" underline cursor and an invisible cursor. (But curs_set( 0x0101) +would result in a non-blinking underline cursor.) Note that one can use +the PDC_CURSOR macro for this, as in... + + curs_set( PDC_CURSOR( PDC_CURSOR_OUTLINE, PDC_CURSOR_INTENSE)); */ + +#define PDC_CURSOR_INVISIBLE 0x00 +#define PDC_CURSOR_NORMAL 0x01 +#define PDC_CURSOR_INTENSE 0x02 +#define PDC_CURSOR_OUTLINE 0x03 +#define PDC_CURSOR_CARET 0x04 +#define PDC_CURSOR_HALF_BLOCK 0x05 +#define PDC_CURSOR_CENTRAL_BLOCK 0x06 +#define PDC_CURSOR_CROSS 0x07 +#define PDC_CURSOR_OUTLINE_BLOCK 0x08 + +#define PDC_CURSOR( A, B) ((A)<<8 | (B)) +#define PDC_CURSOR_IS_BLINKING \ + ((SP->visibility >> 8) != (SP->visibility & 0xff)) + +/* With 64-bit chtypes, we're allowing 20 bits for the character +(thus Unicode values up to 0xffffff) plus one bit to indicate the +alternate character set. With 32-bit chtypes, we don't have so +many bits to play with and limit ourselves to 16-bit characters +(i.e., Unicode past 0xffff can't be shown), plus that one bit +for alternate chars. With 16-bit chtypes, there are only eight +bits available to the character. PDC_REAL_ATTR_SHIFT gives the +number of low bits devoted to storing characters. */ + +# if(CHTYPE_LONG >= 2) /* 64-bit chtypes */ + # define PDC_REAL_ATTR_SHIFT 21 +# else +#ifdef CHTYPE_LONG /* 32-bit chtypes */ + # define PDC_REAL_ATTR_SHIFT 17 +#else /* 16-bit chtypes */ + # define PDC_REAL_ATTR_SHIFT 8 +#endif +#endif + + /* The PDC_set_function_key() function allows one to set a 'shut down' +key, and reassign hotkeys used for pasting from the clipboard and +enlarging and decreasing the font size, and for using the font selection +dialog. For example, calling + +PDC_set_function_key( FUNCTION_KEY_SHUT_DOWN, ALT_Q); + +would reset the library so that, if the user clicks on the 'close' box, +Alt-Q would be added to the key queue. This would give the app the +opportunity to shut things down (and perhaps ask "are you sure", and/or +"save changes or discard or cancel"), rather than just having the +window close (the default behavior). + + Also, by default, Ctrl-V "pastes" the clipboard into the key queue, +and Ctrl-Equals brings up the font selection dialog. But one could +call, for example, + +PDC_set_function_key( FUNCTION_KEY_PASTE, CTL_Z); + + to reset the "paste" key to be Ctrl-Z. Or one could call + +PDC_set_function_key( FUNCTION_KEY_PASTE, 0); + + to shut off that function. (It would still be accessible from the menu.) + + Thus far, this is a WinGUI-flavor specific function. But it could, and +in my opinion should, be made available in the SDL and XCurses flavors too. + + The return value is the key previously used for that function. +*/ diff --git a/3rd-party/PDCurses/x11/Makefile.in b/3rd-party/PDCurses/x11/Makefile.in new file mode 100644 index 0000000..db7949b --- /dev/null +++ b/3rd-party/PDCurses/x11/Makefile.in @@ -0,0 +1,754 @@ +# Makefile for PDCurses library for X11 + +SHELL = @SHELL@ + +@SET_MAKE@ + +# srcdir is set to .../PDCurses/x11 by configure +srcdir = @srcdir@ +basedir = $(srcdir)/.. +abs_basedir = @abs_srcdir@/.. +exec_prefix = @exec_prefix@ +prefix = @prefix@ +libdir = @libdir@ +bindir = @bindir@ +includedir = @includedir@ + +x11dir = $(srcdir) +pdcursesdir = $(basedir)/pdcurses +demodir = $(basedir)/demos + +PDCURSES_CONFIG_H =./config.h +PDCURSES_CURSES_H =$(basedir)/curses.h +PDCURSES_CURSPRIV_H =$(basedir)/curspriv.h +PDCURSES_HEADERS =$(PDCURSES_CONFIG_H) $(PDCURSES_CURSES_H) \ +$(PDCURSES_CURSPRIV_H) +PDCURSES_X11_H =$(x11dir)/pdcx11.h + +INSTALL = $(x11dir)/install-sh +RANLIB = @RANLIB@ +SHLPRE = @SHLPRE@ +SHLPST = @SHLPST@ +SHLFILE = XCurses +SHL_TARGETS = @SHL_TARGETS@ +OTHER_INSTALLS = @OTHER_INSTALLS@ +BASE_INSTALL = @BASE_INSTALL@ +BASE_BINARY = @BASE_BINARY@ +CAN_USE_ABI = @CAN_USE_ABI@ +RPMTOPDIR = @RPMTOPDIR@ +MYDISTRO = @MYDISTRO@ +MACH_ARCH = @MACH_ARCH@ +LN_S = @LN_S@ -f + +include $(basedir)/version.mif + +PDC_DIR=PDCurses-$(VERDOT) + +ZIPFILE = pdcurs$(VER).zip +TARBALL = $(PDC_DIR).tar.gz + +LD_RXLIB1 = @LD_RXLIB1@ +LD_RXLIB2 = @MH_XLIBS@ @MH_EXTRA_LIBS@ -lc + +CFLAGS = @CFLAGS@ + +CPPFLAGS = @DEFS@ -DXCURSES @SYS_DEFS@ -I$(basedir) -I. + +BUILD = @CC@ -c $(CFLAGS) $(CPPFLAGS) @MH_XINC_DIR@ +DYN_BUILD = @O2SAVE@ $(BUILD) @DYN_COMP@ @CC2O@ + +LINK = @PURIFY@ @CC@ +#LDFLAGS = $(LIB_DEPS) @LDFLAGS@ @LIBS@ @MH_XLIBS@ @MH_EXTRA_LIBS@ +LDFLAGS = $(LIBCURSES) @LDFLAGS@ @LIBS@ @MH_XLIBS@ @MH_EXTRA_LIBS@ + +LIBCURSES = libXCurses.a + +LIB_DEPS = -L. -lXCurses + +PDCLIBS = $(LIBCURSES) @SHL_TARGETS@ + +DEMOS = firework ozdemo newtest ptest rain testcurs tuidemo worm xmas +DEMOOBJS = firework.o ozdemo.o newtest.o ptest.o rain.o testcurs.o tui.o \ +tuidemo.o worm.o xmas.o + +SHLFILE = XCurses + +all: $(PDCLIBS) $(DEMOS) + +install: $(BASE_INSTALL) $(OTHER_INSTALLS) + +# base install; for builds with ABI .so or non ABI .so +installbase: all + $(INSTALL) -d -m 755 $(DESTDIR)$(libdir) + $(INSTALL) -d -m 755 $(DESTDIR)$(bindir) + $(INSTALL) -d -m 755 $(DESTDIR)$(includedir) + $(INSTALL) -d -m 755 $(DESTDIR)$(includedir)/xcurses + $(INSTALL) -c -m 644 $(basedir)/curses.h $(DESTDIR)$(includedir)/xcurses.h + $(INSTALL) -c -m 644 $(basedir)/curses.h $(DESTDIR)$(includedir)/xcurses/curses.h + sed -e 's/#include /#include /' < $(basedir)/panel.h > ./xpanel.h + $(INSTALL) -m 644 ./xpanel.h $(DESTDIR)$(includedir)/xpanel.h + $(INSTALL) -c -m 644 $(basedir)/panel.h $(DESTDIR)$(includedir)/xcurses/panel.h + $(INSTALL) -c -m 644 $(basedir)/term.h $(DESTDIR)$(includedir)/xcurses/term.h + $(INSTALL) -c -m 644 ./libXCurses.a $(DESTDIR)$(libdir)/libXCurses.a + -$(RANLIB) $(DESTDIR)$(libdir)/libXCurses.a + (cd $(DESTDIR)$(libdir); $(LN_S) libXCurses.a libXpanel.a) + -$(RANLIB) $(DESTDIR)$(libdir)/libXpanel.a + $(INSTALL) -c -m 755 ./xcurses-config $(DESTDIR)$(bindir)/xcurses-config + +installlib: + -$(INSTALL) -c -m 755 ./$(SHLPRE)$(SHLFILE)$(SHLPST) $(DESTDIR)$(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) + (cd $(DESTDIR)$(libdir); $(LN_S) $(SHLPRE)$(SHLFILE)$(SHLPST) $(libdir)/$(SHLPRE)Xpanel$(SHLPST)) + +installabilib: + -$(INSTALL) -c -m 755 ./$(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI) $(DESTDIR)$(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI) + (cd $(DESTDIR)$(libdir); $(LN_S) $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI) $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI_MAJOR)) + (cd $(DESTDIR)$(libdir); $(LN_S) $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI_MAJOR) $(SHLPRE)$(SHLFILE)$(SHLPST)) + (cd $(DESTDIR)$(libdir); $(LN_S) $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI) $(SHLPRE)Xpanel$(SHLPST).$(ABI)) + (cd $(DESTDIR)$(libdir); $(LN_S) $(SHLPRE)Xpanel$(SHLPST).$(ABI) $(SHLPRE)Xpanel$(SHLPST).$(ABI_MAJOR)) + (cd $(DESTDIR)$(libdir); $(LN_S) $(SHLPRE)Xpanel$(SHLPST).$(ABI_MAJOR) $(SHLPRE)Xpanel$(SHLPST)) + +uninstall: + -rm -f $(DESTDIR)$(includedir)/xcurses.h + -rm -f $(DESTDIR)$(includedir)/xpanel.h + -rm -fr $(DESTDIR)$(includedir)/xcurses/ + -rm -f $(DESTDIR)$(libdir)/libXCurses.a + -rm -f $(DESTDIR)$(libdir)/libXpanel.a + -rm -f $(DESTDIR)$(bindir)/xcurses-config + -rm -f $(DESTDIR)$(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) + -rm -f $(DESTDIR)$(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI) + -rm -f $(DESTDIR)$(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI_MAJOR) + -rm -f $(DESTDIR)$(libdir)/$(SHLPRE)Xpanel$(SHLPST) + -rm -f $(DESTDIR)$(libdir)/$(SHLPRE)Xpanel$(SHLPST).$(ABI) + -rm -f $(DESTDIR)$(libdir)/$(SHLPRE)Xpanel$(SHLPST).$(ABI_MAJOR) + + +oldinstall: + $(INSTALL) -d -m 755 $(libdir) + $(INSTALL) -d -m 755 $(bindir) + $(INSTALL) -d -m 755 $(includedir) + $(INSTALL) -d -m 755 $(includedir)/xcurses + $(INSTALL) -c -m 644 $(basedir)/curses.h $(includedir)/xcurses.h + $(INSTALL) -c -m 644 $(basedir)/curses.h $(includedir)/xcurses/curses.h + sed -e 's/#include /#include /' \ + < $(basedir)/panel.h > ./xpanel.h + $(INSTALL) -m 644 ./xpanel.h $(includedir)/xpanel.h + $(INSTALL) -c -m 644 $(basedir)/panel.h $(includedir)/xcurses/panel.h + $(INSTALL) -c -m 644 $(basedir)/term.h $(includedir)/xcurses/term.h + $(INSTALL) -c -m 644 ./libXCurses.a $(libdir)/libXCurses.a + -$(RANLIB) $(libdir)/libXCurses.a + -$(INSTALL) -c -m 755 ./$(SHLPRE)$(SHLFILE)$(SHLPST) \ + $(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) + ln -f -s $(libdir)/$(SHLPRE)$(SHLFILE)$(SHLPST) \ + $(libdir)/$(SHLPRE)Xpanel$(SHLPST) + ln -f -s $(libdir)/libXCurses.a $(libdir)/libXpanel.a + -$(RANLIB) $(libdir)/libXpanel.a + $(INSTALL) -c -m 755 ./xcurses-config $(bindir)/xcurses-config + +clean: + -rm -rf *.o *.sho trace $(PDCLIBS) $(DEMOS) config.log \ + config.cache config.status + +demos: $(DEMOS) + +distclean: clean + -rm -f Makefile config.h xcurses-config + +mostlyclean: clean + +realclean: distclean + +LIBOBJS = addch.o addchstr.o addstr.o attr.o beep.o bkgd.o border.o \ +clear.o color.o delch.o deleteln.o deprec.o getch.o getstr.o getyx.o \ +inch.o inchstr.o initscr.o inopts.o insch.o insstr.o instr.o kernel.o \ +keyname.o mouse.o move.o outopts.o overlay.o pad.o panel.o printw.o \ +refresh.o scanw.o scr_dump.o scroll.o slk.o termattr.o terminfo.o \ +touch.o util.o window.o debug.o + +PDCOBJS = pdcclip.o pdcdisp.o pdcgetsc.o pdckbd.o pdcscrn.o pdcsetsc.o \ +pdcutil.o pdcx11.o x11.o sb.o ScrollBox.o + +LIBSHOBJS = $(LIBOBJS:.o=.sho) +PDCSHOBJS = $(PDCOBJS:.o=.sho) + +SHOFILES = $(LIBSHOBJS) $(PDCSHOBJS) + +$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS) + ar rv $@ $? + -$(RANLIB) $@ + +$(SHLPRE)$(SHLFILE)$(SHLPST) : $(SHOFILES) + $(LD_RXLIB1) -o $@ $(SHOFILES) $(LD_RXLIB2) + +$(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI): $(SHOFILES) + $(LD_RXLIB1) -o $@ $(SHOFILES) $(LD_RXLIB2) + -rm -f $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI_MAJOR) + -rm -f $(SHLPRE)$(SHLFILE)$(SHLPST) + -$(LN_S) $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI) $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI_MAJOR) + -$(LN_S) $(SHLPRE)$(SHLFILE)$(SHLPST).$(ABI_MAJOR) $(SHLPRE)$(SHLFILE)$(SHLPST) + +$(LIBOBJS) $(PDCOBJS) $(SHOFILES) : $(PDCURSES_HEADERS) +$(PDCOBJS) $(PDCSHOBJS) : $(PDCURSES_X11_H) +$(DEMOOBJS) : $(PDCURSES_CURSES_H) +$(DEMOS) : $(LIBCURSES) +terminfo.o terminfo.sho: $(TERM_HEADER) + +addch.o: $(pdcursesdir)/addch.c + $(BUILD) $(pdcursesdir)/addch.c + +addchstr.o: $(pdcursesdir)/addchstr.c + $(BUILD) $(pdcursesdir)/addchstr.c + +addstr.o: $(pdcursesdir)/addstr.c + $(BUILD) $(pdcursesdir)/addstr.c + +attr.o: $(pdcursesdir)/attr.c + $(BUILD) $(pdcursesdir)/attr.c + +beep.o: $(pdcursesdir)/beep.c + $(BUILD) $(pdcursesdir)/beep.c + +bkgd.o: $(pdcursesdir)/bkgd.c + $(BUILD) $(pdcursesdir)/bkgd.c + +border.o: $(pdcursesdir)/border.c + $(BUILD) $(pdcursesdir)/border.c + +clear.o: $(pdcursesdir)/clear.c + $(BUILD) $(pdcursesdir)/clear.c + +color.o: $(pdcursesdir)/color.c + $(BUILD) $(pdcursesdir)/color.c + +delch.o: $(pdcursesdir)/delch.c + $(BUILD) $(pdcursesdir)/delch.c + +deleteln.o: $(pdcursesdir)/deleteln.c + $(BUILD) $(pdcursesdir)/deleteln.c + +deprec.o: $(pdcursesdir)/deprec.c + $(BUILD) $(pdcursesdir)/deprec.c + +getch.o: $(pdcursesdir)/getch.c + $(BUILD) $(pdcursesdir)/getch.c + +getstr.o: $(pdcursesdir)/getstr.c + $(BUILD) $(pdcursesdir)/getstr.c + +getyx.o: $(pdcursesdir)/getyx.c + $(BUILD) $(pdcursesdir)/getyx.c + +inch.o: $(pdcursesdir)/inch.c + $(BUILD) $(pdcursesdir)/inch.c + +inchstr.o: $(pdcursesdir)/inchstr.c + $(BUILD) $(pdcursesdir)/inchstr.c + +initscr.o: $(pdcursesdir)/initscr.c + $(BUILD) $(pdcursesdir)/initscr.c + +inopts.o: $(pdcursesdir)/inopts.c + $(BUILD) $(pdcursesdir)/inopts.c + +insch.o: $(pdcursesdir)/insch.c + $(BUILD) $(pdcursesdir)/insch.c + +insstr.o: $(pdcursesdir)/insstr.c + $(BUILD) $(pdcursesdir)/insstr.c + +instr.o: $(pdcursesdir)/instr.c + $(BUILD) $(pdcursesdir)/instr.c + +kernel.o: $(pdcursesdir)/kernel.c + $(BUILD) $(pdcursesdir)/kernel.c + +keyname.o: $(pdcursesdir)/keyname.c + $(BUILD) $(pdcursesdir)/keyname.c + +mouse.o: $(pdcursesdir)/mouse.c + $(BUILD) $(pdcursesdir)/mouse.c + +move.o: $(pdcursesdir)/move.c + $(BUILD) $(pdcursesdir)/move.c + +outopts.o: $(pdcursesdir)/outopts.c + $(BUILD) $(pdcursesdir)/outopts.c + +overlay.o: $(pdcursesdir)/overlay.c + $(BUILD) $(pdcursesdir)/overlay.c + +pad.o: $(pdcursesdir)/pad.c + $(BUILD) $(pdcursesdir)/pad.c + +panel.o: $(pdcursesdir)/panel.c $(basedir)/panel.h + $(BUILD) $(pdcursesdir)/panel.c + +printw.o: $(pdcursesdir)/printw.c + $(BUILD) $(pdcursesdir)/printw.c + +refresh.o: $(pdcursesdir)/refresh.c + $(BUILD) $(pdcursesdir)/refresh.c + +scanw.o: $(pdcursesdir)/scanw.c + $(BUILD) $(pdcursesdir)/scanw.c + +scr_dump.o: $(pdcursesdir)/scr_dump.c + $(BUILD) $(pdcursesdir)/scr_dump.c + +scroll.o: $(pdcursesdir)/scroll.c + $(BUILD) $(pdcursesdir)/scroll.c + +slk.o: $(pdcursesdir)/slk.c + $(BUILD) $(pdcursesdir)/slk.c + +termattr.o: $(pdcursesdir)/termattr.c + $(BUILD) $(pdcursesdir)/termattr.c + +terminfo.o: $(pdcursesdir)/terminfo.c + $(BUILD) $(pdcursesdir)/terminfo.c + +touch.o: $(pdcursesdir)/touch.c + $(BUILD) $(pdcursesdir)/touch.c + +util.o: $(pdcursesdir)/util.c + $(BUILD) $(pdcursesdir)/util.c + +window.o: $(pdcursesdir)/window.c + $(BUILD) $(pdcursesdir)/window.c + +debug.o: $(pdcursesdir)/debug.c + $(BUILD) $(pdcursesdir)/debug.c + +pdcclip.o: $(x11dir)/pdcclip.c + $(BUILD) $(x11dir)/pdcclip.c + +pdcdisp.o: $(x11dir)/pdcdisp.c + $(BUILD) $(x11dir)/pdcdisp.c + +pdcgetsc.o: $(x11dir)/pdcgetsc.c + $(BUILD) $(x11dir)/pdcgetsc.c + +pdckbd.o: $(x11dir)/pdckbd.c + $(BUILD) $(x11dir)/pdckbd.c + +pdcscrn.o: $(x11dir)/pdcscrn.c + $(BUILD) $(x11dir)/pdcscrn.c + +pdcsetsc.o: $(x11dir)/pdcsetsc.c + $(BUILD) $(x11dir)/pdcsetsc.c + +pdcutil.o: $(x11dir)/pdcutil.c + $(BUILD) $(x11dir)/pdcutil.c + +pdcx11.o: $(x11dir)/pdcx11.c + $(BUILD) $(x11dir)/pdcx11.c + +ScrollBox.o: $(x11dir)/ScrollBox.c + $(BUILD) $(x11dir)/ScrollBox.c + +sb.o: $(x11dir)/sb.c + $(BUILD) $(x11dir)/sb.c + +x11.o: $(x11dir)/x11.c + $(BUILD) $(x11dir)/x11.c + +addch.sho: $(pdcursesdir)/addch.c + $(DYN_BUILD) $(pdcursesdir)/addch.c + @SAVE2O@ + +addchstr.sho: $(pdcursesdir)/addchstr.c + $(DYN_BUILD) $(pdcursesdir)/addchstr.c + @SAVE2O@ + +addstr.sho: $(pdcursesdir)/addstr.c + $(DYN_BUILD) $(pdcursesdir)/addstr.c + @SAVE2O@ + +attr.sho: $(pdcursesdir)/attr.c + $(DYN_BUILD) $(pdcursesdir)/attr.c + @SAVE2O@ + +beep.sho: $(pdcursesdir)/beep.c + $(DYN_BUILD) $(pdcursesdir)/beep.c + @SAVE2O@ + +bkgd.sho: $(pdcursesdir)/bkgd.c + $(DYN_BUILD) $(pdcursesdir)/bkgd.c + @SAVE2O@ + +border.sho: $(pdcursesdir)/border.c + $(DYN_BUILD) $(pdcursesdir)/border.c + @SAVE2O@ + +clear.sho: $(pdcursesdir)/clear.c + $(DYN_BUILD) $(pdcursesdir)/clear.c + @SAVE2O@ + +color.sho: $(pdcursesdir)/color.c + $(DYN_BUILD) $(pdcursesdir)/color.c + @SAVE2O@ + +delch.sho: $(pdcursesdir)/delch.c + $(DYN_BUILD) $(pdcursesdir)/delch.c + @SAVE2O@ + +deleteln.sho: $(pdcursesdir)/deleteln.c + $(DYN_BUILD) $(pdcursesdir)/deleteln.c + @SAVE2O@ + +deprec.sho: $(pdcursesdir)/deprec.c + $(DYN_BUILD) $(pdcursesdir)/deprec.c + @SAVE2O@ + +getch.sho: $(pdcursesdir)/getch.c + $(DYN_BUILD) $(pdcursesdir)/getch.c + @SAVE2O@ + +getstr.sho: $(pdcursesdir)/getstr.c + $(DYN_BUILD) $(pdcursesdir)/getstr.c + @SAVE2O@ + +getyx.sho: $(pdcursesdir)/getyx.c + $(DYN_BUILD) $(pdcursesdir)/getyx.c + @SAVE2O@ + +inch.sho: $(pdcursesdir)/inch.c + $(DYN_BUILD) $(pdcursesdir)/inch.c + @SAVE2O@ + +inchstr.sho: $(pdcursesdir)/inchstr.c + $(DYN_BUILD) $(pdcursesdir)/inchstr.c + @SAVE2O@ + +initscr.sho: $(pdcursesdir)/initscr.c + $(DYN_BUILD) $(pdcursesdir)/initscr.c + @SAVE2O@ + +inopts.sho: $(pdcursesdir)/inopts.c + $(DYN_BUILD) $(pdcursesdir)/inopts.c + @SAVE2O@ + +insch.sho: $(pdcursesdir)/insch.c + $(DYN_BUILD) $(pdcursesdir)/insch.c + @SAVE2O@ + +insstr.sho: $(pdcursesdir)/insstr.c + $(DYN_BUILD) $(pdcursesdir)/insstr.c + @SAVE2O@ + +instr.sho: $(pdcursesdir)/instr.c + $(DYN_BUILD) $(pdcursesdir)/instr.c + @SAVE2O@ + +kernel.sho: $(pdcursesdir)/kernel.c + $(DYN_BUILD) $(pdcursesdir)/kernel.c + @SAVE2O@ + +keyname.sho: $(pdcursesdir)/keyname.c + $(DYN_BUILD) $(pdcursesdir)/keyname.c + @SAVE2O@ + +mouse.sho: $(pdcursesdir)/mouse.c + $(DYN_BUILD) $(pdcursesdir)/mouse.c + @SAVE2O@ + +move.sho: $(pdcursesdir)/move.c + $(DYN_BUILD) $(pdcursesdir)/move.c + @SAVE2O@ + +outopts.sho: $(pdcursesdir)/outopts.c + $(DYN_BUILD) $(pdcursesdir)/outopts.c + @SAVE2O@ + +overlay.sho: $(pdcursesdir)/overlay.c + $(DYN_BUILD) $(pdcursesdir)/overlay.c + @SAVE2O@ + +pad.sho: $(pdcursesdir)/pad.c + $(DYN_BUILD) $(pdcursesdir)/pad.c + @SAVE2O@ + +panel.sho: $(pdcursesdir)/panel.c $(basedir)/panel.h + $(DYN_BUILD) $(pdcursesdir)/panel.c + @SAVE2O@ + +printw.sho: $(pdcursesdir)/printw.c + $(DYN_BUILD) $(pdcursesdir)/printw.c + @SAVE2O@ + +refresh.sho: $(pdcursesdir)/refresh.c + $(DYN_BUILD) $(pdcursesdir)/refresh.c + @SAVE2O@ + +scanw.sho: $(pdcursesdir)/scanw.c + $(DYN_BUILD) $(pdcursesdir)/scanw.c + @SAVE2O@ + +scr_dump.sho: $(pdcursesdir)/scr_dump.c + $(DYN_BUILD) $(pdcursesdir)/scr_dump.c + @SAVE2O@ + +scroll.sho: $(pdcursesdir)/scroll.c + $(DYN_BUILD) $(pdcursesdir)/scroll.c + @SAVE2O@ + +slk.sho: $(pdcursesdir)/slk.c + $(DYN_BUILD) $(pdcursesdir)/slk.c + @SAVE2O@ + +termattr.sho: $(pdcursesdir)/termattr.c + $(DYN_BUILD) $(pdcursesdir)/termattr.c + @SAVE2O@ + +terminfo.sho: $(pdcursesdir)/terminfo.c + $(DYN_BUILD) $(pdcursesdir)/terminfo.c + @SAVE2O@ + +touch.sho: $(pdcursesdir)/touch.c + $(DYN_BUILD) $(pdcursesdir)/touch.c + @SAVE2O@ + +util.sho: $(pdcursesdir)/util.c + $(DYN_BUILD) $(pdcursesdir)/util.c + @SAVE2O@ + +window.sho: $(pdcursesdir)/window.c + $(DYN_BUILD) $(pdcursesdir)/window.c + @SAVE2O@ + +debug.sho: $(pdcursesdir)/debug.c + $(DYN_BUILD) $(pdcursesdir)/debug.c + @SAVE2O@ + +pdcclip.sho: $(x11dir)/pdcclip.c + $(DYN_BUILD) $(x11dir)/pdcclip.c + @SAVE2O@ + +pdcdisp.sho: $(x11dir)/pdcdisp.c + $(DYN_BUILD) $(x11dir)/pdcdisp.c + @SAVE2O@ + +pdcgetsc.sho: $(x11dir)/pdcgetsc.c + $(DYN_BUILD) $(x11dir)/pdcgetsc.c + @SAVE2O@ + +pdckbd.sho: $(x11dir)/pdckbd.c + $(DYN_BUILD) $(x11dir)/pdckbd.c + @SAVE2O@ + +pdcscrn.sho: $(x11dir)/pdcscrn.c + $(DYN_BUILD) $(x11dir)/pdcscrn.c + @SAVE2O@ + +pdcsetsc.sho: $(x11dir)/pdcsetsc.c + $(DYN_BUILD) $(x11dir)/pdcsetsc.c + @SAVE2O@ + +pdcutil.sho: $(x11dir)/pdcutil.c + $(DYN_BUILD) $(x11dir)/pdcutil.c + @SAVE2O@ + +pdcx11.sho: $(x11dir)/pdcx11.c + $(DYN_BUILD) $(x11dir)/pdcx11.c + @SAVE2O@ + +ScrollBox.sho: $(x11dir)/ScrollBox.c + $(DYN_BUILD) $(x11dir)/ScrollBox.c + @SAVE2O@ + +sb.sho: $(x11dir)/sb.c + $(DYN_BUILD) $(x11dir)/sb.c + @SAVE2O@ + +x11.sho: $(x11dir)/x11.c + $(DYN_BUILD) $(x11dir)/x11.c + @SAVE2O@ + +firework: firework.o + $(LINK) firework.o -o $@ $(LDFLAGS) + +ozdemo: ozdemo.o + $(LINK) ozdemo.o -o $@ $(LDFLAGS) + +newtest: newtest.o + $(LINK) newtest.o -o $@ $(LDFLAGS) + +ptest: ptest.o + $(LINK) ptest.o -o $@ $(LDFLAGS) + +rain: rain.o + $(LINK) rain.o -o $@ $(LDFLAGS) + +testcurs: testcurs.o + $(LINK) testcurs.o -o $@ $(LDFLAGS) + +tuidemo: tuidemo.o tui.o + $(LINK) tui.o tuidemo.o -o $@ $(LDFLAGS) + +worm: worm.o + $(LINK) worm.o -o $@ $(LDFLAGS) + +xmas: xmas.o + $(LINK) xmas.o -o $@ $(LDFLAGS) + +firework.o: $(demodir)/firework.c + $(BUILD) $(demodir)/firework.c + +ozdemo.o: $(demodir)/ozdemo.c + $(BUILD) $(demodir)/ozdemo.c + +newtest.o: $(demodir)/newtest.c + $(BUILD) $(demodir)/newtest.c + +ptest.o: $(demodir)/ptest.c $(basedir)/panel.h + $(BUILD) $(demodir)/ptest.c + +rain.o: $(demodir)/rain.c + $(BUILD) $(demodir)/rain.c + +testcurs.o: $(demodir)/testcurs.c + $(BUILD) $(demodir)/testcurs.c + +tui.o: $(demodir)/tui.c $(demodir)/tui.h + $(BUILD) $(demodir)/tui.c + +tuidemo.o: $(demodir)/tuidemo.c + $(BUILD) $(demodir)/tuidemo.c + +worm.o: $(demodir)/worm.c + $(BUILD) $(demodir)/worm.c + +xmas.o: $(demodir)/xmas.c + $(BUILD) $(demodir)/xmas.c + +# This section provides for compiling and linking the +# ncurses test programs. + +ncurses_testdir = $(HOME)/ncurses-5.6/test + +NCURSES_TESTS= bs gdc hanoi knight tclock ncurses + +ncurses_tests: $(NCURSES_TESTS) + +ncurses_clean: + -rm -f *.o trace $(NCURSES_TESTS) + +NCFLAGS = -I. -I$(ncurses_testdir) + +bs: bs.o $(LIBCURSES) + $(LINK) bs.o -o $@ $(LDFLAGS) + +gdc: gdc.o $(LIBCURSES) + $(LINK) gdc.o -o $@ $(LDFLAGS) + +hanoi: hanoi.o $(LIBCURSES) + $(LINK) hanoi.o -o $@ $(LDFLAGS) + +knight: knight.o $(LIBCURSES) + $(LINK) knight.o -o $@ $(LDFLAGS) + +tclock: tclock.o $(LIBCURSES) + $(LINK) tclock.o -o $@ $(LDFLAGS) -lm + +view: view.o $(LIBCURSES) + $(LINK) view.o -o $@ $(LDFLAGS) + +ncurses: ncurses.o $(LIBCURSES) + $(LINK) ncurses.o -o $@ $(LDFLAGS) + +bs.o: $(ncurses_testdir)/bs.c $(PDCURSES_CURSES_H) + $(BUILD) $(NCFLAGS) $(ncurses_testdir)/bs.c + +gdc.o: $(ncurses_testdir)/gdc.c $(PDCURSES_CURSES_H) + $(BUILD) $(NCFLAGS) $(ncurses_testdir)/gdc.c + +hanoi.o: $(ncurses_testdir)/hanoi.c $(PDCURSES_CURSES_H) + $(BUILD) $(NCFLAGS) $(ncurses_testdir)/hanoi.c + +knight.o: $(ncurses_testdir)/knight.c $(PDCURSES_CURSES_H) + $(BUILD) $(NCFLAGS) $(ncurses_testdir)/knight.c + +tclock.o: $(ncurses_testdir)/tclock.c $(PDCURSES_CURSES_H) + $(BUILD) $(NCFLAGS) $(ncurses_testdir)/tclock.c + +view.o: $(ncurses_testdir)/view.c $(PDCURSES_CURSES_H) + $(BUILD) $(NCFLAGS) $(ncurses_testdir)/view.c + +ncurses.o: $(ncurses_testdir)/ncurses.c $(PDCURSES_CURSES_H) + $(BUILD) $(NCFLAGS) $(ncurses_testdir)/ncurses.c + +manual: + cd doc; $(MAKE) $(MFLAGS) $@ + +$(ZIPFILE): + (cd $(basedir); \ + zip -9y $(ZIPFILE) README.md HISTORY.md IMPLEMNT *.spec *.mif *.def \ + curses.h curspriv.h panel.h term.h pdcurses/README.md \ + pdcurses/*.c \ + demos/README.md demos/*.c demos/*.h \ + dos/README.md dos/*.c dos/*.h dos/*.mak dos/*.lrf \ + os2/README.md os2/*.c os2/*.h os2/*.mak os2/*.lrf \ + sdl1/README.md sdl1/*.c sdl1/*.h sdl1/Make* \ + win32/README.md win32/*.c win32/*.h win32/*.mak win32/*.ico win32/*.rc \ + wingui/README.md wingui/*.c wingui/*.h wingui/*.mak wingui/*.ico wingui/*.rc \ + x11/README.md x11/*.c x11/*.h x11/Makefile.* x11/*.xbm \ + x11/Makefile.in x11/config.h.in x11/configure x11/configure.ac x11/config.guess \ + x11/config.sub x11/xcurses-config.in x11/install-sh x11/aclocal.m4 \ + doc/*.txt doc/manext.c doc/Makefile) + +zip: $(ZIPFILE) + +tar: + (cd $(basedir)/..;rm -f $(PDC_DIR)) + (cd $(basedir)/..;ln -sf $(abs_basedir) $(PDC_DIR)) + (cd $(basedir)/..; `pwd`;ls -l $(PDC_DIR);tar cvf - \ + $(PDC_DIR)/README.md $(PDC_DIR)/HISTORY.md \ + $(PDC_DIR)/IMPLEMNT $(PDC_DIR)/*.spec $(PDC_DIR)/*.mif \ + $(PDC_DIR)/*.def $(PDC_DIR)/x11/Makefile.in $(PDC_DIR)/x11/aclocal.m4 \ + $(PDC_DIR)/x11/config.h.in $(PDC_DIR)/x11/configure \ + $(PDC_DIR)/x11/config.guess $(PDC_DIR)/x11/xcurses-config.in \ + $(PDC_DIR)/x11/config.sub $(PDC_DIR)/x11/configure.ac \ + $(PDC_DIR)/x11/install-sh $(PDC_DIR)/curses.h $(PDC_DIR)/curspriv.h \ + $(PDC_DIR)/panel.h $(PDC_DIR)/term.h \ + $(PDC_DIR)/pdcurses/README.md $(PDC_DIR)/pdcurses/*.c \ + $(PDC_DIR)/demos/README.md $(PDC_DIR)/demos/*.c $(PDC_DIR)/demos/*.h \ + $(PDC_DIR)/doc/*.txt $(PDC_DIR)/dos/README.md $(PDC_DIR)/dos/*.c \ + $(PDC_DIR)/doc/manext.c $(PDC_DIR)/doc/Makefile \ + $(PDC_DIR)/dos/*.h $(PDC_DIR)/dos/*.mak $(PDC_DIR)/dos/*.lrf \ + $(PDC_DIR)/os2/README.md $(PDC_DIR)/os2/*.c $(PDC_DIR)/os2/*.h $(PDC_DIR)/os2/*.mak $(PDC_DIR)/os2/*.lrf \ + $(PDC_DIR)/sdl1/README.md $(PDC_DIR)/sdl1/*.c $(PDC_DIR)/sdl1/*.h $(PDC_DIR)/sdl1/Make* \ + $(PDC_DIR)/win32/README.md $(PDC_DIR)/win32/*.c $(PDC_DIR)/win32/*.h $(PDC_DIR)/win32/*.mak $(PDC_DIR)/win32/*.ico $(PDC_DIR)/win32/*.rc \ + $(PDC_DIR)/wingui/README.md $(PDC_DIR)/wingui/*.c $(PDC_DIR)/wingui/*.h $(PDC_DIR)/wingui/*.mak $(PDC_DIR)/wingui/*.ico $(PDC_DIR)/wingui/*.rc \ + $(PDC_DIR)/x11/README.md $(PDC_DIR)/x11/*.c $(PDC_DIR)/x11/*.xbm $(PDC_DIR)/x11/*.h $(PDC_DIR)/x11/Makefile.* \ + $(PDC_DIR)/x11/debian/rules $(PDC_DIR)/x11/debian/changelog $(PDC_DIR)/x11/debian/compat $(PDC_DIR)/x11/debian/control $(PDC_DIR)/x11/debian/copyright $(PDC_DIR)/x11/debian/rules \ + | gzip -9 > $(TARBALL)) + (cd $(basedir)/..;rm -f $(PDC_DIR)) + +dist: tar + +rpm: tar $(x11dir)/PDCurses.spec + cp $(basedir)/../$(PDC_DIR).tar.gz $(RPMTOPDIR)/SOURCES + -rm $(RPMTOPDIR)/RPMS/*/PDCurses-$(VERDOT)*.rpm + -rm $(RPMTOPDIR)/RPMS/*/PDCurses-devel-$(VERDOT)*.rpm + rpmbuild -ba --clean --define "myversion $(VERDOT)" $(x11dir)/PDCurses.spec + mv $(RPMTOPDIR)/RPMS/*/PDCurses-$(VERDOT)-[0-9]*.rpm `dirname $(RPMTOPDIR)/RPMS/*/PDCurses-$(VERDOT)-[0-9]*.rpm`/`basename $(RPMTOPDIR)/RPMS/*/PDCurses-$(VERDOT)-[0-9]*.rpm .rpm`-$(MYDISTRO).rpm + mv $(RPMTOPDIR)/RPMS/*/PDCurses-devel-$(VERDOT)-[0-9]*.rpm `dirname $(RPMTOPDIR)/RPMS/*/PDCurses-devel-$(VERDOT)-[0-9]*.rpm`/`basename $(RPMTOPDIR)/RPMS/*/PDCurses-devel-$(VERDOT)-[0-9]*.rpm .rpm`-$(MYDISTRO).rpm + ls -l $(RPMTOPDIR)/RPMS/*/PDCurses*.rpm + +rpminstall: + rpm -Uv $(RPMTOPDIR)/RPMS/*/PDCurses-$(VERDOT)-[0-9]*-$(MYDISTRO).rpm + rpm -Uv $(RPMTOPDIR)/RPMS/*/PDCurses-devel-$(VERDOT)-[0-9]*-$(MYDISTRO).rpm + +deb: tar + -rm -fr tmp + -mkdir tmp + (cd tmp; \ + tar zxvf $(abs_basedir)/../$(PDC_DIR).tar.gz; \ + cd $(PDC_DIR)/x11; \ + dpkg-buildpackage -rfakeroot; \ + cd ..; \ + mv pdcurses_$(VERDOT)*.deb `basename pdcurses_$(VERDOT)*.deb .deb`-$(MYDISTRO).deb; \ + ls -l ) + +debinstall: + (cd tmp; \ + dpkg -i pdcurses_$(VERDOT)*-$(MYDISTRO).deb; ) diff --git a/3rd-party/PDCurses/x11/PDCurses.spec b/3rd-party/PDCurses/x11/PDCurses.spec new file mode 100644 index 0000000..f09add5 --- /dev/null +++ b/3rd-party/PDCurses/x11/PDCurses.spec @@ -0,0 +1,82 @@ +# $Id: PDCurses.spec,v 1.6 2013/07/23 01:35:31 mark Exp $ +%define debug_package %{nil} +%define base /usr + +Summary: Public Domain Curses for X11 +Name: PDCurses +Version: %{myversion} +Release: 1 +License: Public Domain +Group: Development/Libraries +Source: %{name}-%{version}.tar.gz +URL: http://pdcurses.org +BuildRoot: %{_tmppath}/%{name}-%{version}-root +Prefix: %base +BuildRequires: libXaw-devel + +%package devel +Summary: Public Domain Curses for X11 Development Files +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description +PDCurses for X11 is an implementation of the curses library that lets +you build text-mode curses programs as native X11 applications. +This package contains the runtime library. + +For more information, visit http://pdcurses.org + +%description devel +PDCurses for X11 is an implementation of the curses library that lets +you build text-mode curses programs as native X11 applications. +This package contains the development files. + +For more information, visit http://pdcurses.org + +%prep +%setup -q + +%build +cd x11 +./configure --prefix=%{base} --libdir=%{_libdir} --enable-libdir-change=no +make + +%install +cd x11 +make DESTDIR=$RPM_BUILD_ROOT install + +%clean +rm -rf $RPM_BUILD_ROOT +rm -rf $RPM_BUILD_DIR/%{name}-%{version} + +%files +%defattr(-,root,root) +%{_libdir}/libXCurses.so.%{version} +%{_libdir}/libXpanel.so.%{version} + +%files devel +%defattr(-,root,root) +%{_bindir}/xcurses-config +%{_libdir}/libXCurses.a +%{_libdir}/libXpanel.a +%{_libdir}/libXCurses.so +%{_libdir}/libXCurses.so.3 +%{_libdir}/libXpanel.so +%{_libdir}/libXpanel.so.3 +%{_includedir}/xcurses.h +%{_includedir}/xpanel.h +%{_includedir}/xcurses/curses.h +%{_includedir}/xcurses/panel.h +%{_includedir}/xcurses/term.h + +%post +ldconfig %{_libdir} + +%postun +ldconfig %{_libdir} + +%post devel +ldconfig %{_libdir} + +%postun devel +ldconfig %{_libdir} diff --git a/3rd-party/PDCurses/x11/README.md b/3rd-party/PDCurses/x11/README.md new file mode 100644 index 0000000..1fe74f8 --- /dev/null +++ b/3rd-party/PDCurses/x11/README.md @@ -0,0 +1,62 @@ +PDCurses for X11 +================ + +This is a port of PDCurses for X11, aka XCurses. It is designed to +allow existing curses programs to be re-compiled with PDCurses, +resulting in native X11 programs. + + +Building +-------- + +- Run "./configure". To build the wide-character version of the library, + specify "--enable-widec" as a parameter. To use X Input Methods, add + "--enable-xim". I recommend these options, but I haven't yet made + them the defaults, for the sake of backwards compatibility and due to + their new and relatively untested status. + + If your system is lacking in UTF-8 support, you can force the use of + UTF-8 instead of the system locale via "--enable-force-utf8". This is + generally more useful in Windows. + + If configure can't find your X include files or X libraries, you can + specify the paths with the arguments "--x-includes=inc_path" and/or + "--x-libraries=lib_path". + + By default, the library and demo programs are built with the optimizer + switch -O2. You can turn this off, and turn on debugging (-g), by + adding "--enable-debug" to the configure command. + +- Run "make". This should build libXCurses and all the demo programs. + +- Optionally, run "make install". curses.h and panel.h will be renamed + when installed (to xcurses.h and xpanel.h), to avoid conflicts with + any existing curses installations. Unrenamed copies of curses.h and + panel.h are installed in (by default) /usr/local/include/xcurses. + + libXpanel is just a symlink to libXCurses. Both curses and panel + functions are in the main library. + + +Distribution Status +------------------- + +As of April 13, 2006, the files in this directory are released to the +Public Domain, except for ScrollBox*, which are under essentially the +MIT X License. + + +To be Done +---------- + +- have newterm() create a new X window + +- provide a command line parsing function to enable X command line + arguments to be parsed and stripped from the arguments passed back + to the calling procedure. + + +Acknowledgements +---------------- + +X11 port was provided by Mark Hessling diff --git a/3rd-party/PDCurses/x11/ScrollBox.c b/3rd-party/PDCurses/x11/ScrollBox.c new file mode 100644 index 0000000..8325547 --- /dev/null +++ b/3rd-party/PDCurses/x11/ScrollBox.c @@ -0,0 +1,319 @@ +/* + * Copyright 1989 O'Reilly and Associates, Inc. + + The X Consortium, and any party obtaining a copy of these files from + the X Consortium, directly or indirectly, is granted, free of charge, a + full and unrestricted irrevocable, world-wide, paid up, royalty-free, + nonexclusive right and license to deal in this software and + documentation files (the "Software"), including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons who receive + copies from any such party to do so. This license includes without + limitation a license to do the foregoing actions under any patents of + the party supplying this software to the X Consortium. + */ + +/* ScrollBox.c - scrollBox composite widget */ + +#include +#include +#include + +#include "x11/ScrollBoxP.h" + +#include + +#define INITIAL_WIDTH 300 +#define INITIAL_HEIGHT 300 + +/************************************************************************ + * * + * scrollBox Resources * + * * + ************************************************************************/ + +static XtResource resources[] = +{ + { XtNhSpace, XtCHSpace, XtRDimension, sizeof(Dimension), + XtOffset(ScrollBoxWidget, scrollBox.h_space), + XtRImmediate, (XtPointer)4 }, + { XtNvSpace, XtCVSpace, XtRDimension, sizeof(Dimension), + XtOffset(ScrollBoxWidget, scrollBox.v_space), + XtRImmediate, (XtPointer)4 }, + { XtNheightInc, XtCHeightInc, XtRDimension, sizeof(Dimension), + XtOffset(ScrollBoxWidget, scrollBox.increment_height), + XtRImmediate, (XtPointer)13 }, + { XtNwidthInc, XtCWidthInc, XtRDimension, sizeof(Dimension), + XtOffset(ScrollBoxWidget, scrollBox.increment_width), + XtRImmediate, (XtPointer)7 }, +}; + +/************************************************************************ + * * + * Full class record constant * + * * + ************************************************************************/ + +static void Initialize(Widget, Widget, ArgList, Cardinal *); +static void Resize(Widget); +static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *); +static void ChangeManaged(Widget); +static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *, + XtWidgetGeometry *); +static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *, + XtWidgetGeometry *); +static void RefigureLocations(Widget); + +ScrollBoxClassRec scrollBoxClassRec = { + { + /* core_class fields */ + /* superclass */ (WidgetClass) &compositeClassRec, + /* class_name */ "scrollBox", + /* widget_size */ sizeof(ScrollBoxRec), + /* class_initialize */ NULL, + /* class_part_init */ NULL, + /* class_inited */ FALSE, + /* initialize */ Initialize, + /* initialize_hook */ NULL, + /* realize */ XtInheritRealize, + /* actions */ NULL, + /* num_actions */ 0, + /* resources */ resources, + /* num_resources */ XtNumber(resources), + /* xrm_class */ NULLQUARK, + /* compress_motion */ TRUE, + /* compress_exposure */ TRUE, + /* compress_enterleave */ TRUE, + /* visible_interest */ FALSE, + /* destroy */ NULL, + /* resize */ Resize, + /* expose */ NULL, + /* set_values */ SetValues, + /* set_values_hook */ NULL, + /* set_values_almost */ XtInheritSetValuesAlmost, + /* get_values_hook */ NULL, + /* accept_focus */ NULL, + /* version */ XtVersion, + /* callback_private */ NULL, + /* tm_table */ NULL, + /* query_geometry */ QueryGeometry, + /* display_accelerator */ XtInheritDisplayAccelerator, + /* extension */ NULL + },{ + /* composite_class fields */ + /* geometry_manager */ GeometryManager, + /* change_managed */ ChangeManaged, + /* insert_child */ XtInheritInsertChild, + /* delete_child */ XtInheritDeleteChild, + /* extension */ NULL + },{ + /* scrollBox class fields */ + /* empty */ 0, + } +}; + +WidgetClass scrollBoxWidgetClass = (WidgetClass)&scrollBoxClassRec; + + +/************************************************************************ + * * + * Private Routines * + * * + ************************************************************************/ + +/* Do a layout, either actually assigning positions, or just + calculating size. */ + +static void DoLayout(Widget w, Boolean doit) +{ + ScrollBoxWidget sbw = (ScrollBoxWidget)w; + Widget wmain, vscroll, hscroll, child; + Dimension mw, mh; /* main window */ + Dimension vh; /* vertical scrollbar length (height) */ + Dimension hw; /* horizontal scrollbar length (width) */ + Position vx; + Position hy; + Cardinal i; + + if (sbw->composite.num_children != 3) + XtAppError(XtWidgetToApplicationContext(w), + "ScrollBox: must manage exactly three widgets."); + + for (i = 0; i < sbw->composite.num_children; i++) + { + child = sbw->composite.children[i]; + + if (!XtIsManaged(child)) + XtAppError(XtWidgetToApplicationContext(w), + "ScrollBox: all three widgets must be managed."); + } + + /* Child one is the main window, two is the vertical scrollbar, + and three is the horizontal scrollbar. */ + + wmain = sbw->composite.children[0]; + vscroll = sbw->composite.children[1]; + hscroll = sbw->composite.children[2]; + + /* Size all three widgets so that space is fully utilized. */ + + mw = sbw->core.width - (2 * sbw->scrollBox.h_space) - + vscroll->core.width - (2 * vscroll->core.border_width) - + (2 * wmain->core.border_width); + + mh = sbw->core.height - (2 * sbw->scrollBox.v_space) - + hscroll->core.height - (2 * hscroll->core.border_width) - + (2 * wmain->core.border_width); + + /* Force the main window to be sized to the appropriate increment. */ + + mw = (mw / sbw->scrollBox.increment_width) * + sbw->scrollBox.increment_width; + + mh = ((mh / sbw->scrollBox.increment_height) * + sbw->scrollBox.increment_height) + + sbw->scrollBox.increment_height; + + vx = wmain->core.x + mw + sbw->scrollBox.h_space + + wmain->core.border_width + vscroll->core.border_width; + + hy = wmain->core.y + mh + sbw->scrollBox.v_space + + wmain->core.border_width + hscroll->core.border_width; + + vh = mh; /* scrollbars are always same length as main window */ + hw = mw; + + if (doit) + { + XtResizeWidget(wmain, mw, mh, 1); + + XtResizeWidget(vscroll, vscroll->core.width, vh, 1); + XtMoveWidget(vscroll, vx, vscroll->core.y); + + XtResizeWidget(hscroll, hw, hscroll->core.height, 1); + XtMoveWidget(hscroll, hscroll->core.x, hy); + } +} + +static XtGeometryResult GeometryManager(Widget w, XtWidgetGeometry *request, + XtWidgetGeometry *reply) +{ + XtWidgetGeometry allowed; + + if (request->request_mode & ~(XtCWQueryOnly | CWWidth | CWHeight)) + return XtGeometryNo; + + if (request->request_mode & CWWidth) + allowed.width = request->width; + else + allowed.width = w->core.width; + + if (request->request_mode & CWHeight) + allowed.height = request->height; + else + allowed.height = w->core.height; + + if (allowed.width == w->core.width && allowed.height == w->core.height) + return XtGeometryNo; + + if (!(request->request_mode & XtCWQueryOnly)) + RefigureLocations(w); + + return XtGeometryYes; +} + +static void RefigureLocations(Widget w) +{ + DoLayout(w, False); +} + +/* Calculate preferred size. We can't just use the current sizes + of the children, because that calculation would always end up with + our current size. Could query each child, and use that size to + recalculate a size for us, then if it ends up being larger than width + and height passed in, accept bounding box. However, we know our + children and they don't have any particular preferred geometry, + except the bigger the better. Therefore, if the parent suggested a + size, we'll take it. */ + +static XtGeometryResult QueryGeometry(Widget w, XtWidgetGeometry *request, + XtWidgetGeometry *reply_return) +{ + XtGeometryResult result=XtGeometryNo; + + request->request_mode &= CWWidth | CWHeight; + + /* parent isn't going to change w or h, so nothing to re-compute */ + + if (request->request_mode == 0) + return XtGeometryYes; + + /* if proposed size is large enough, accept it. Otherwise, suggest + our arbitrary initial size. */ + + if (request->request_mode & CWHeight) + { + if (request->height < INITIAL_HEIGHT) + { + result = XtGeometryAlmost; + reply_return->height = INITIAL_HEIGHT; + reply_return->request_mode &= CWHeight; + } + else + result = XtGeometryYes; + } + + if (request->request_mode & CWWidth) + { + if (request->width < INITIAL_WIDTH) + { + result = XtGeometryAlmost; + reply_return->width = INITIAL_WIDTH; + reply_return->request_mode &= CWWidth; + } + else + result = XtGeometryYes; + } + + return result; +} + +/* Actually layout the scrollBox */ + +static void Resize(Widget w) +{ + DoLayout(w, True); +} + +static void ChangeManaged(Widget w) +{ + DoLayout(w, True); +} + +static void Initialize(Widget request, Widget new, + ArgList args, Cardinal *num_args) +{ + ScrollBoxWidget newsbw = (ScrollBoxWidget)new; + + if (newsbw->core.width == 0) + newsbw->core.width = INITIAL_WIDTH; + + if (newsbw->core.height == 0) + newsbw->core.height = INITIAL_HEIGHT; + +} + +static Boolean SetValues(Widget current, Widget request, Widget new, + ArgList args, Cardinal *num_args) +{ + ScrollBoxWidget sbwcurrent = (ScrollBoxWidget)current; + ScrollBoxWidget sbwnew = (ScrollBoxWidget)new; + + /* need to relayout if h_space or v_space change */ + + if ((sbwnew->scrollBox.h_space != sbwcurrent->scrollBox.h_space) || + (sbwnew->scrollBox.v_space != sbwcurrent->scrollBox.v_space)) + DoLayout(new, True); + + return False; +} diff --git a/3rd-party/PDCurses/x11/ScrollBox.h b/3rd-party/PDCurses/x11/ScrollBox.h new file mode 100644 index 0000000..4e395a3 --- /dev/null +++ b/3rd-party/PDCurses/x11/ScrollBox.h @@ -0,0 +1,51 @@ +/* + * Copyright 1989 O'Reilly and Associates, Inc. + + The X Consortium, and any party obtaining a copy of these files from + the X Consortium, directly or indirectly, is granted, free of charge, a + full and unrestricted irrevocable, world-wide, paid up, royalty-free, + nonexclusive right and license to deal in this software and + documentation files (the "Software"), including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons who receive + copies from any such party to do so. This license includes without + limitation a license to do the foregoing actions under any patents of + the party supplying this software to the X Consortium. + */ + +#ifndef _XORAscrollBox_h +#define _XORAscrollBox_h + +/************************************************************************ + * * + * scrollBox Widget (subclass of CompositeClass) * + * * + ************************************************************************/ + +/* Parameters: + + Name Class RepType Default Value + ---- ----- ------- ------------- + background Background Pixel XtDefaultBackground + border BorderColor Pixel XtDefaultForeground + borderWidth BorderWidth Dimension 1 + destroyCallback Callback Pointer NULL + hSpace HSpace Dimension 4 + height Height Dimension 0 + mappedWhenManaged MappedWhenManaged Boolean True + vSpace VSpace Dimension 4 + width Width Dimension 0 + x Position Position 0 + y Position Position 0 + +*/ + + +/* Class record constants */ + +extern WidgetClass scrollBoxWidgetClass; + +typedef struct _ScrollBoxClassRec *ScrollBoxWidgetClass; +typedef struct _ScrollBoxRec *ScrollBoxWidget; + +#endif /* _XORAscrollBox_h */ diff --git a/3rd-party/PDCurses/x11/ScrollBoxP.h b/3rd-party/PDCurses/x11/ScrollBoxP.h new file mode 100644 index 0000000..a34d4ee --- /dev/null +++ b/3rd-party/PDCurses/x11/ScrollBoxP.h @@ -0,0 +1,70 @@ +/* + * Copyright 1989 O'Reilly and Associates, Inc. + + The X Consortium, and any party obtaining a copy of these files from + the X Consortium, directly or indirectly, is granted, free of charge, a + full and unrestricted irrevocable, world-wide, paid up, royalty-free, + nonexclusive right and license to deal in this software and + documentation files (the "Software"), including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons who receive + copies from any such party to do so. This license includes without + limitation a license to do the foregoing actions under any patents of + the party supplying this software to the X Consortium. + */ + +/* + * scrollBoxP.h - Private definitions for scrollBox widget + * + */ + +#ifndef _XORAscrollBoxP_h +#define _XORAscrollBoxP_h + +/************************************************************************ + * * + * scrollBox Widget Private Data * + * * + ************************************************************************/ + +#include "x11/ScrollBox.h" + +#include + +/* New fields for the scrollBox widget class record */ +typedef struct _ScrollBoxClass { + int empty; +} ScrollBoxClassPart; + +/* Full class record declaration */ +typedef struct _ScrollBoxClassRec { + CoreClassPart core_class; + CompositeClassPart composite_class; + ScrollBoxClassPart scrollBox_class; +} ScrollBoxClassRec; + +extern ScrollBoxClassRec scrollBoxClassRec; + +/* New fields for the scrollBox widget record */ +typedef struct { + Dimension h_space, v_space; + Dimension preferred_width, preferred_height; + Dimension last_query_width, last_query_height; + Dimension increment_width, increment_height; + XtGeometryMask last_query_mode; +} ScrollBoxPart; + + +/************************************************************************ + * * + * Full instance record declaration * + * * + ************************************************************************/ + +typedef struct _ScrollBoxRec { + CorePart core; + CompositePart composite; + ScrollBoxPart scrollBox; +} ScrollBoxRec; + +#endif /* _XORAscrollBoxP_h */ diff --git a/3rd-party/PDCurses/x11/aclocal.m4 b/3rd-party/PDCurses/x11/aclocal.m4 new file mode 100644 index 0000000..5a58d17 --- /dev/null +++ b/3rd-party/PDCurses/x11/aclocal.m4 @@ -0,0 +1,994 @@ +dnl --------------------------------------------------------------------------- +dnl This file offers the following macros... +dnl --------------------------------------------------------------------------- +dnl MH_IPC +dnl MH_CHECK_X_INC +dnl MH_CHECK_X_LIB +dnl MH_CHECK_X_HEADERS +dnl MH_CHECK_X_KEYDEFS +dnl MH_CHECK_X_TYPEDEF +dnl MH_CHECK_LIB +dnl MH_SHARED_LIBRARY +dnl MH_HOWTO_DYN_LINK +dnl MH_CHECK_CC_O +dnl MH_SHLPST +dnl MH_CHECK_MAX_SIGNALS +dnl MH_CHECK_OSX_ARCH +dnl MH_GET_DISTRO_NAME +dnl MH_CHECK_RPM +dnl MH_CHECK_ARCH +dnl AC_DEFINE_DIR + +dnl --------------------------------------------------------------------------- +dnl Determine if the system has System V IPC. ie sys/ipc.h and sys/shm.h +dnl headers. +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_IPC], +[ +AC_CHECK_HEADER(sys/ipc.h) +if test $ac_cv_header_sys_ipc_h = no; then + AC_MSG_ERROR(Cannot find required header file sys/ipc.h; PDCurses cannot be configured) +fi +])dnl + +dnl --------------------------------------------------------------------------- +dnl Set up the correct X header file location +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_X_INC], +[ +mh_x11_dir="" +mh_x11_xaw_dir="" + +mh_inc_dirs="$ac_x_header_dirs" + +dnl Provide for user supplying directory + +if test "x$x_includes" != xNONE ; then + mh_inc_dirs="$x_includes $mh_inc_dirs" +fi + +dnl Try to determine the directory containing X headers +dnl We will append X11 to all the paths above as an extra check + +for ac_dir in $mh_inc_dirs ; do + if test -r $ac_dir/Intrinsic.h; then + mh_x11_dir=$ac_dir + break + fi + if test -r $ac_dir/X11/Intrinsic.h; then + mh_x11_dir="$ac_dir/X11" + break + fi +done + +dnl Try to determine the directory containing Xaw headers +dnl We will append X11 to all the paths above as an extra check + +if test "$with_xaw3d" = yes; then + mh_xaw_dir="Xaw3d" +else + if test "$with_nextaw" = yes; then + mh_xaw_dir="neXtaw" + else + mh_xaw_dir="Xaw" + fi +fi +for ac_dir in $mh_inc_dirs ; do + if test -r $ac_dir/$mh_xaw_dir/Box.h; then + mh_x11_xaw_dir=$ac_dir + break + fi + if test -r $ac_dir/X11/$mh_xaw_dir/Box.h; then + mh_x11_xaw_dir="$ac_dir/X11" + break + fi +done + +if test "x$mh_x11_dir" != "x" ; then + mh_x11_dir_no_x11=`echo $mh_x11_dir | sed 's/\/X11$//'` + + if test "$mh_x11_dir_no_x11" != "$mh_x11_dir" ; then + MH_XINC_DIR="-I$mh_x11_dir -I$mh_x11_dir_no_x11" + else + MH_XINC_DIR="-I$mh_x11_dir" + fi +else + AC_MSG_ERROR(Cannot find required header file Intrinsic.h; PDCurses cannot be configured) +fi + +if test "x$mh_x11_xaw_dir" != "x"; then + if test "$mh_x11_xaw_dir" != "$mh_x11_dir" ; then + MH_XINC_DIR="-I$mh_x11_xaw_dir $MH_XINC_DIR" + fi +else + AC_MSG_ERROR(Cannot find required Xaw header file Box.h; PDCurses cannot be configured) +fi + +AC_SUBST(MH_XINC_DIR) + +])dnl + +dnl --------------------------------------------------------------------------- +dnl Set up the correct X library file location +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_X_LIB], +[ +dnl Some systems require extra libraries... + +mh_solaris_flag=no +mh_hpux9_flag=no +AC_REQUIRE([AC_CANONICAL_SYSTEM]) +case "$target" in + *solaris*) + mh_solaris_flag=yes + ;; + *pc-sco*) + extra_x_libs="Xext" + ;; + sparc*sunos*) + extra_x_libs="Xext" + if test "$ac_cv_prog_CC" = "gcc" ; then + extra_ld_flags="-Wl,-Bstatic" + extra_ld_flags2="-Wl,-Bdynamic" + else + extra_ld_flags="-Bstatic" + extra_ld_flags2="-Bdynamic" + fi + ;; + *hpux9*) + mh_hpux9_flag=yes + ;; +esac + +if test "$with_xaw3d" = yes; then + MH_X11_LIBS="Xaw3d Xmu Xt X11" +else + if test "$with_nextaw" = yes; then + MH_X11_LIBS="neXtaw Xmu Xt X11" + else + MH_X11_LIBS="Xaw Xmu Xt X11" + fi +fi +MH_X11R6_LIBS="SM ICE Xext" +mh_x11r6=no + +which dpkg-architecture > /dev/null +if test $? -eq 0; then + multiarch_libdir="/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`" +else + multiarch_libdir="" +fi + +mh_lib_dirs="$multiarch_libdir /usr/lib64 /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu $x_libraries `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`" + +dnl try to find libSM.[a,sl,so,dylib]. If we find it we are using X11R6 +for ac_dir in $mh_lib_dirs ; do + for mh_xsm in libSM.a libSM.so libSM.sl libSM.dylib; do + if test -r $ac_dir/$mh_xsm; then + mh_x11r6=yes + break 2 + fi + done +done + +if test "$mh_x11r6" = yes ; then + mh_libs="$MH_X11_LIBS $MH_X11R6_LIBS" +else + mh_libs="$MH_X11_LIBS $extra_x_libs" +fi + + +dnl Ensure that all required X libraries are found + +mh_prev_dir="" +mh_where_found="" +mh_where_found_dirs="" +mh_solaris_path="" +for mh_lib in $mh_libs; do + mh_lib_found=no + for ac_dir in $mh_lib_dirs ; do + for mh_ext in a so sl dll.a dylib; do + if test -r $ac_dir/lib$mh_lib.$mh_ext; then + if test "x$mh_prev_dir" != "x$ac_dir" ; then + if test "x$mh_prev_dir" = "x" ; then + mh_where_found="$mh_where_found found in $ac_dir" + else + mh_where_found="$mh_where_found and in $ac_dir" + fi + mh_prev_dir=$ac_dir + mh_where_found_dirs="$mh_where_found_dirs $ac_dir" + MH_XLIBS="$MH_XLIBS -L$ac_dir" + mh_solaris_path="${mh_solaris_path}:$ac_dir" + fi + MH_XLIBS="$MH_XLIBS -l$mh_lib" + mh_lib_found=yes + break 2 + fi + done + done + if test "$mh_lib_found" = no; then + AC_MSG_ERROR(Cannot find required X library; lib$mh_lib. PDCurses cannot be configured) + fi +done + +mh_solaris_path=`echo $mh_solaris_path | sed 's/^://'` +if test "$mh_solaris_flag" = yes ; then + MH_XLIBS="-R$mh_solaris_path $extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2" +else + MH_XLIBS="$extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2" +fi +if test "$mh_hpux9_flag" = yes ; then + grep -q XtSetLanguageProc $mh_x11_dir/Intrinsic.h + if test $? -eq 0 ; then + mh_found_xtshellstrings=no + for mh_acdir in $mh_where_found_dirs ; do + for mh_xaw in `ls $mh_acdir/libXaw.*` ; do + nm $mh_xaw | grep XtShellStrings | grep -qv extern + if test $? -eq 0 ; then + mh_found_xtshellstrings=yes + fi + done + done + if test "$mh_found_xtshellstrings" = no ; then + AC_MSG_WARN(The X11 development environment has not been installed correctly.) + AC_MSG_WARN(The header file; Intrinsic.h, is for X11R5 while the Athena Widget) + AC_MSG_WARN(Set library; libXaw is for X11R4. This is a common problem with) + AC_MSG_WARN(HP-UX 9.x.) + AC_MSG_ERROR(X11 installation incomplete; cannot continue) + fi + fi +fi + +AC_SUBST(MH_XLIBS) + +])dnl + +dnl --------------------------------------------------------------------------- +dnl Determine if the supplied X headers exist. +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_X_HEADERS], +[ +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $MH_XINC_DIR" +for mh_header in $1; do + AC_CHECK_HEADERS($mh_header) +done +CPPFLAGS="$save_CPPFLAGS" +])dnl + +dnl --------------------------------------------------------------------------- +dnl Determine if various key definitions exist in keysym.h +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_X_KEYDEFS], +[ +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $MH_XINC_DIR" +for mh_keydef in $1; do + AC_MSG_CHECKING(for $mh_keydef in keysym.h) + mh_upper_name="HAVE_`echo $mh_keydef | tr '[a-z]' '[A-Z]'`" + AC_TRY_COMPILE([#include ], +[int i = $mh_keydef;], + mh_have_key=yes; AC_DEFINE_UNQUOTED($mh_upper_name,1), mh_have_key=no ) + AC_MSG_RESULT($mh_have_key) +done +CPPFLAGS="$save_CPPFLAGS" +])dnl + +dnl --------------------------------------------------------------------------- +dnl Determine if supplied types have been typedefed +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_X_TYPEDEF], +[ +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $SYS_DEFS $MH_XINC_DIR" +for td in $1 ; do +AC_MSG_CHECKING(if $td is typedefed:) +AC_TRY_COMPILE( +[#include "X11/Xlib.h"], +[$td fred], + [mh_td=yes], + [mh_td=no] +) +if test "$mh_td" = yes ; then + TD_upper=`echo $td | tr a-z A-Z` + AC_DEFINE_UNQUOTED(${TD_upper}_TYPEDEFED, 1) +fi +AC_MSG_RESULT($mh_td) +done +CPPFLAGS="$save_CPPFLAGS" +])dnl + +dnl --------------------------------------------------------------------------- +dnl Check for presence of various libraries +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_LIB], +[ +MH_EXTRA_LIBS='' +for mh_lib in $1; do + if test "$on_qnx" = yes; then + AC_MSG_CHECKING(for library -l${mh_lib}) + if test -r /usr/lib/${mh_lib}3r.lib; then + AC_MSG_RESULT(found) + MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}" + else + AC_MSG_RESULT(not found) + fi + else + AC_CHECK_LIB($mh_lib,main,mh_lib_found=yes,mh_lib_found=no) + if test "$mh_lib_found" = yes; then + MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}" + fi + fi +done +])dnl + +dnl --------------------------------------------------------------------------- +dnl Work out how to create a dynamically loaded module +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_HOWTO_DYN_LINK], +[ +mh_compile='${CC-cc} -c $DYN_COMP conftest.$ac_ext 1>&AC_FD_CC' +cat > conftest.$ac_ext < conftest.$ac_ext < $aix_exports +fi + +if test "$ac_cv_header_dl_h" = "yes" -o "$ac_cv_header_dlfcn_h" = "yes" -o "$AIX_DYN" = "yes" -o "$BEOS_DYN" = "yes" -o "$DLFCNINCDIR" != "" -o "$DLFCNLIBDIR" != ""; then + EXPS="1,2,3,4,5,6,7,8,9" + for a in $SHLFILES + do + if test "$USE_ABI" = "yes" -a "$CAN_USE_ABI" = "yes"; then + SHL_TARGETS="${SHL_TARGETS} ${SHLPRE}${a}${SHLPST}.\$(ABI)" + else + SHL_TARGETS="${SHL_TARGETS} ${SHLPRE}${a}${SHLPST}" + fi + this=`echo $EXPS | cut -d, -f1` + EXPS=`echo $EXPS | cut -d, -f2-` + if test "$AIX_DYN" = "yes"; then + echo "RXPACKEXP$this=$a.exp" >> $aix_exports + echo "RXPACKEXPORTS$this=-bE:$a.exp" >> $aix_exports + fi + done +fi + +AC_SUBST(DYN_COMP) +AC_SUBST(LIBS) +AC_SUBST(LD_RXLIB1) +AC_SUBST(SHLPRE) +AC_SUBST(SHLPST) +AC_SUBST(SHL_TARGETS) +AC_SUBST(O2SAVE) +AC_SUBST(CC2O) +AC_SUBST(SAVE2O) +AC_SUBST(RXPACKEXPORTS) +AC_SUBST(BASE_INSTALL) +AC_SUBST(OTHER_INSTALLS) +AC_SUBST(BASE_BINARY) +AC_SUBST(CAN_USE_ABI) +])dnl + +dnl --------------------------------------------------------------------------- +dnl Check if C compiler supports -c -o file.ooo +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_CC_O], +[ +AC_MSG_CHECKING(whether $CC understand -c and -o together) +set dummy $CC; ac_cc="`echo [$]2 | +changequote(, )dnl + sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" +changequote([, ])dnl +AC_CACHE_VAL(ac_cv_prog_cc_${ac_cc}_c_o, +[echo 'foo(){}' > conftest.c +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +eval ac_cv_prog_cc_${ac_cc}_c_o=no +ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&AC_FD_CC' +if AC_TRY_EVAL(ac_try) && test -f conftest.ooo && AC_TRY_EVAL(ac_try); +then + ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&AC_FD_CC' + if AC_TRY_EVAL(ac_try) && test -f conftest.ooo && AC_TRY_EVAL(ac_try); + then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + fi +fi +rm -f conftest* +])dnl +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then + O2SAVE="" + SAVE2O="" + CC2O="-o $"'@' + AC_MSG_RESULT(yes) +else + O2SAVE="-mv \`basename "$'@'" .sho\`.o \`basename "$'@'" .sho\`.o.save;" + SAVE2O="-mv \`basename "$'@'" .sho\`.o "$'@'"; mv \`basename "$'@'" .sho\`.o.save \`basename "$'@'" .sho\`.o" + CC2O="" + AC_MSG_RESULT(no) +fi +]) + +dnl --------------------------------------------------------------------------- +dnl Determines the file extension for shared libraries +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_SHLPST], +[ +AC_MSG_CHECKING(shared library extension) +SHLPST=".so" +AC_REQUIRE([AC_CANONICAL_SYSTEM]) +case "$target" in + *hp-hpux*) + SHLPST=".sl" + ;; + *ibm-aix*) + SHLPST=".a" + ;; + *qnx*) + SHLPST="" + ;; + *cygwin*) + SHLPST=".dll" + ;; + *darwin*) + SHLPST=".dylib" + ;; +esac +AC_SUBST(SHLPST) +AC_MSG_RESULT($SHLPST) +]) + +dnl --------------------------------------------------------------------------- +dnl Determine the system limit for number of signals +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_MAX_SIGNALS], +[ +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $SYS_DEFS" +AC_MSG_CHECKING(for maximum signal specifier:) +AC_CACHE_VAL(mh_cv_max_signals, +mh_found="no" +for mh_sigs in $1; do + AC_TRY_COMPILE([#include ], +[return $mh_sigs;], + mh_found="yes"; mh_cv_max_signals="$mh_sigs" ) + if test "$mh_found" = "yes"; then + break; + fi +done) +CPPFLAGS="$save_CPPFLAGS" +if test "$mh_found" = "no"; then + AC_MSG_ERROR(Cannot find a system limit for number of signals. PDCurses cannot be configured on this machine.) +else + AC_DEFINE_UNQUOTED(PDC_MAX_SIGNALS,$mh_cv_max_signals) + AC_MSG_RESULT($mh_cv_max_signals) +fi +])dnl + +dnl --------------------------------------------------------------------------- +dnl Determines which -arch flags valid on Mac OSX with gcc +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_OSX_ARCH], +[ +valid_arch_flags="" +found_arch_flags="" +AC_ARG_WITH(arch, + [ --with-arch=option build universal binaries on OS X, option: one of "all 32bit 64bit intel ppc ppc64 x86_64 i386"], + [with_arch=$withval], + [with_arch=none], +) +case "$with_arch" in + none) + arch_flags="" + ;; + all) + arch_flags="-arch ppc -arch ppc64 -arch x86_64 -arch i386" + ;; + 32bit) + arch_flags="-arch ppc -arch i386" + ;; + 64bit) + arch_flags="-arch ppc64 -arch x86_64" + ;; + intel) + arch_flags="-arch i386 -arch x86_64" + ;; + *) + arch_flags="-arch $with_arch" + ;; +esac + +valid_arch_flags="" +found_arch_flags="" +if test $on_osx = "yes"; then + AC_MSG_CHECKING(for which Mac OSX -arch flags are supported for universal binaries) + for a in $arch_flags; do + save_ldflags="$LDFLAGS" + LDFLAGS="$LDFLAGS -arch $a" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include ], + [exit(0)])], + [valid_arch_flags="$valid_arch_flags -arch $a";found_arch_flags="$found_arch_flags $a"], + [a="$a"] + ) + LDFLAGS="$save_ldflags" + done + AC_MSG_RESULT($found_arch_flags) + AC_SUBST(valid_arch_flags) +fi +]) + +dnl --------------------------------------------------------------------------- +dnl Determines the Linux distribution name +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_GET_DISTRO_NAME], +[ +AC_CHECK_PROG(lsb_release, [lsb_release], yes, no) +if test "$ac_cv_prog_lsb_release" = yes; then + AC_MSG_CHECKING(OS distribution name) + MYDISTRO="`lsb_release -i | cut -f 2`-`lsb_release -r | cut -f 2`" + MYDISTRO="`echo $MYDISTRO | sed \"s/ /_/g\"`" + AC_MSG_RESULT($MYDISTRO) +else + case "$target" in + *freebsd* | *openbsd*) + MYDISTRO="`echo $target | cut -f3 -d-`" + ;; + *darwin*) + MYDISTRO="`echo $target | cut -f2-3 -d-`" + ;; + *pc-solaris2*) + MYDISTRO="`echo $target | cut -f2- -d-`" + ;; + *cygwin*) + MYDISTRO="`echo $target | cut -f2- -d-`" + ;; + *) + MYDISTRO="$target" + ;; + esac +fi +AC_SUBST(MYDISTRO) +]) + +dnl --------------------------------------------------------------------------- +dnl Determines where rpm build files are located +dnl --------------------------------------------------------------------------- +AC_DEFUN([MH_CHECK_RPM], +[ +AC_CHECK_PROG(mh_rpm_exists, rpm, yes, no ) +if test "$mh_rpm_exists" = yes; then + AC_MSG_CHECKING(where rpms are built) + RPMTOPDIR=`rpm --eval "%{_topdir}"` + AC_MSG_RESULT($RPMTOPDIR) + AC_SUBST(RPMTOPDIR) +fi +]) + +dnl +dnl Determine if the platform can handle 64 bit binaries +dnl +dnl Assumes AC_CANONICAL_SYSTEM has already been called +dnl assumes we are on a 32bit system + +AC_DEFUN([MH_CHECK_ARCH], +[ +dnl ---------------------- check 32/64 bit ----------------------- +dnl allow --with-32bit to ensure that 32bit libraries are used +AC_ARG_ENABLE(32bit, + [ --enable-32bit specify if 32bit libraries are to be used], + [bitflag32=yes], + [bitflag32=no], +) +dnl allow --with-64bit to ensure that 64bit libraries are used +AC_ARG_ENABLE(64bit, + [ --enable-64bit specify if 64bit libraries are to be used], + [bitflag64=yes], + [bitflag64=no], +) + +# +# Now do platform specific tests +# +gcc_64bit="-m64" +gcc_32bit="-m32" +on_osx="no" +osis64bit=no +bitflag="" +case "$target" in + *hp-hpux*) + ;; + *ibm-aix*) + rc=`lsconf -k | grep -c 64-bit` + if test $rc -eq 1; then + bitflag="64" + osis64bit=yes + fi + # + # AIX gcc has its own special bit switches :-( + # + gcc_64bit="-maix64" + gcc_32bit="-maix32" + ;; + *dec-osf4*) + ;; + *dec-osf*) + ;; + *sequent-dynix*) + ;; + i*86*solaris*) + ;; + *solaris*) + rc=`isainfo -v | grep -c 64-bit` + if test $rc -eq 1; then + bitflag="64" + osis64bit=yes + fi + ;; + sparc*sunos*) + ;; + *linux*|*kfreebsd*-gnu*) + mach="`uname -m`" + if test "$mach" = "x86_64" -o "$mach" = "ia86" -o "$mach" = "alpha" -o "$mach" = "ppc64" -o "$mach" = "s390x"; then + bitflag="64" + osis64bit=yes + fi + ;; + *-freebsd*) + mach="`uname -m`" + if test "$mach" = "amd64"; then + bitflag="64" + osis64bit=yes + fi + ;; + *nto-qnx*) + ;; + *qnx*) + ;; + *beos*) + ;; + *cygwin*) + ;; + *apple-darwin*) + on_osx="yes" + osx_64bit=`sysctl hw.cpu64bit_capable | cut -f2 -d' '` + if test $osx_64bit -eq 1; then + bitflag="64" + osis64bit=yes + fi + ;; +esac + +if test "x$bitflag32" = "xyes" -a "x$bitflag64" = "xyes"; then + AC_MSG_ERROR(--enable-32bit and --enable-64bit flags cannot both be specified.) +fi + +if test "x$bitflag64" = "xyes" -a "$osis64bit" = "no"; then + AC_MSG_ERROR(--enable-64bit cannot be specified on non-64bit OS.) +fi + +binarybitprefix="" +if test "x$bitflag32" = "xyes"; then + bitflag="32" + if test "$osis64bit" = "yes"; then + binarybitprefix="32" + fi +elif test "x$bitflag64" = "xyes"; then + bitflag="64" +fi +MACH_ARCH=`$ac_config_guess | cut -f1 -d-` +AC_SUBST(MACH_ARCH) +dnl +dnl following variable used to name 32bit binaries on a 64bit system +dnl allows 32bit and 64bit binaries t co-exist on a 64bit system +AC_SUBST(binarybitprefix) + +dnl --------------- allow --with-arch to specify which architectures to build universal binaries +dnl +if test "$on_osx" = "yes"; then + MH_CHECK_OSX_ARCH() +else +dnl +dnl Now set the correct compiler flags +dnl + if test "$ac_cv_prog_CC" = "gcc" -o "$ac_cv_prog_CC" = "g++"; then + if test "$bitflag" = "32"; then + CFLAGS="${CFLAGS} $gcc_32bit" + LDFLAGS="${LDFLAGS} $gcc_32bit" + elif test "$bitflag" = "64"; then + CFLAGS="${CFLAGS} $gcc_64bit" + LDFLAGS="${LDFLAGS} $gcc_64bit" + else + bitflag="32" + fi + elif test "$ac_cv_prog_CC" = "xlc" -o "$ac_cv_prog_CC" = "xlC"; then + if test "$bitflag" = "32"; then + CFLAGS="${CFLAGS} -q32" + LDFLAGS="${LDFLAGS} -q32" + elif test "$bitflag" = "64"; then + CFLAGS="${CFLAGS} -q64" + LDFLAGS="${LDFLAGS} -q64" + else + bitflag="32" + fi + fi +fi + +dnl allow --disable-libdir-change to ensure that building a .deb works +#libdir_change=yes +AC_ARG_ENABLE(libdir-change, + [ --enable-libdir-change specify --disable-libdir-change if building a .deb], + [libdir_change=$enableval], + [libdir_change=yes], +) +echo "libdir: $libdir_change" +if test "$libdir_change" = yes; then + dnl + dnl If the user hasn't specified libdir, check for specific lib dirs + dnl + if test "${libdir}" = '${exec_prefix}/lib'; then + dnl + dnl expand the active $prefix + dnl + myprefix=$prefix + AC_DEFINE_DIR(MY_PREFIX,"$myprefix") + if test "${myprefix}" = "NONE"; then + myprefix="$ac_default_prefix" + fi + dnl + dnl check for 64bit libdir + dnl + if test -d "${myprefix}/lib/x86_64-linux-gnu"; then + libdir64="${myprefix}/lib/x86_64-linux-gnu" + elif test -d "${myprefix}/lib64"; then + libdir64="${myprefix}/lib64" + else + libdir64="${myprefix}/lib" + fi + dnl + dnl check for 32bit libdir + dnl + if test -d "${myprefix}/lib/i386-linux-gnu"; then + libdir32="${myprefix}/lib/i386-linux-gnu" + elif test -d "${myprefix}/lib32"; then + libdir32="${myprefix}/lib32" + else + libdir32="${myprefix}/lib" + fi + dnl + dnl Depending on the build type, set the default libdir + dnl + if test "$bitflag" = "64"; then + libdir="$libdir64" + else + libdir="$libdir32" + fi + else + libdir64="$libdir" + libdir32="$libdir" + fi +else + libdir64="$libdir" + libdir32="$libdir" +fi +AC_SUBST(libdir64) +AC_SUBST(libdir32) +AC_SUBST(bitflag) +]) +dnl @synopsis AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION]) +dnl +dnl This macro sets VARNAME to the expansion of the DIR variable, +dnl taking care of fixing up ${prefix} and such. +dnl +dnl VARNAME is then offered as both an output variable and a C +dnl preprocessor symbol. +dnl +dnl Modified by Mark Hessling to fix eval bug +dnl +dnl Example: +dnl +dnl AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.]) +dnl +dnl @category Misc +dnl @author Stepan Kasal +dnl @author Andreas Schwab +dnl @author Guido U. Draheim +dnl @author Alexandre Oliva +dnl @version 2006-10-13 +dnl @license AllPermissive + +AC_DEFUN([AC_DEFINE_DIR], [ + prefix_NONE= + exec_prefix_NONE= + test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix + test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix +dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn +dnl refers to ${prefix}. Thus we have to use `eval' twice. + eval ac_define_dir="\"$2\"" + eval ac_define_dir="\"$ac_define_dir\"" + AC_SUBST($1, "$ac_define_dir") + AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3]) + test "$prefix_NONE" && prefix=NONE + test "$exec_prefix_NONE" && exec_prefix=NONE +]) + diff --git a/3rd-party/PDCurses/x11/big_icon.xbm b/3rd-party/PDCurses/x11/big_icon.xbm new file mode 100644 index 0000000..04b98a5 --- /dev/null +++ b/3rd-party/PDCurses/x11/big_icon.xbm @@ -0,0 +1,46 @@ +#define big_icon_width 64 +#define big_icon_height 64 +static unsigned char big_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, + 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xc1, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0xff, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, + 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0xc7, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, + 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x80, 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, + 0xc7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0, 0xc3, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0xf0, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, + 0xf1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xf8, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x7e, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, + 0xfe, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0xff, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x8f, 0xdf, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc7, + 0xcf, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe3, 0xc7, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0xf1, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, + 0xc1, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xc0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x78, + 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x78, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, + 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xff, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe0, + 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0xff, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x23, 0x50, 0x1e, + 0x7c, 0xf0, 0xe0, 0x03, 0x60, 0x26, 0x50, 0x33, 0xc6, 0x98, 0x31, 0x06, + 0x30, 0x2c, 0xd0, 0x61, 0x83, 0x0d, 0x1b, 0x0c, 0x10, 0x28, 0xd0, 0x40, + 0x01, 0x05, 0x0a, 0x08, 0x10, 0x20, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08, + 0x10, 0x20, 0x50, 0x00, 0x03, 0x04, 0x1a, 0x00, 0x10, 0x20, 0x50, 0x00, + 0x06, 0x04, 0x32, 0x00, 0x10, 0x20, 0x50, 0x00, 0x7c, 0xfc, 0xe3, 0x03, + 0x10, 0x20, 0x50, 0x00, 0xc0, 0x04, 0x00, 0x06, 0x10, 0x20, 0x50, 0x00, + 0x80, 0x05, 0x00, 0x0c, 0x10, 0x20, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08, + 0x10, 0x28, 0x50, 0x00, 0x01, 0x05, 0x0a, 0x08, 0x30, 0x6c, 0x58, 0x00, + 0x83, 0x0d, 0x1b, 0x0c, 0x60, 0xc6, 0x4c, 0x00, 0xc6, 0x98, 0x31, 0x06, + 0xc0, 0x83, 0x47, 0x00, 0x7c, 0xf0, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/3rd-party/PDCurses/x11/compose.h b/3rd-party/PDCurses/x11/compose.h new file mode 100644 index 0000000..7712847 --- /dev/null +++ b/3rd-party/PDCurses/x11/compose.h @@ -0,0 +1,201 @@ +/* Public Domain Curses */ + +/* Tables and variables for the built-in compose key system. This file + is not included when PDCurses is built with XIM support. */ + +#define MAX_COMPOSE_CHARS 14 +#define MAX_COMPOSE_PRE 60 + +static const char *compose_chars = + "`'~^,/\"AaPpSs!?0123CcRr-_<>Xx.=Yy |EeIiOoUu+NnLlgDd:*TtMmVv"; + +/* + ` : À È ÃŒ Ã’ Ù à è ì ò ù + ' : ´ à É à Ó Ú à á é í ó ú ý ´ + ~ : Ã Ñ Õ ã ñ õ + ^ : Â Ê ÃŽ Ô Û â ê î ô û ° ¹ ² ³ + , : ¸ Ç ç ¸ + / : Ø ø µ µ + " : ¨ Ä Ë à Ö Ü ä ë ï ö ü ÿ ¨ + A : Æ À à à  Å Ã… à  ª + a : æ à á ã â Ã¥ Ã¥ ã â ª + P : Þ ¶ ¶ + p : þ ¶ ¶ + S : § § § º ª + s : ß § ª ¹ ² ³ º § + ! : ¡ ¡ + ? : ¿ ¿ + 0 : ° ° + 1 : ¹ ½ ¼ ¹ + 2 : ² ² + 3 : ³ ¾ ³ + C : © Ç ¢ ¢ + c : ¢ © ç ¢ ¢ + R : ® + r : ® + - : ­ ± ¬ ­ ¯ ÷ + _ : ¯ ¯ + < : « + > : « + X : ¤ × + x : × ¤ × + . : · · · + = : Â¥ Â¥ + Y : Â¥ à ¥ + y : Â¥ ý ÿ Â¥ Â¥ + : + | : ¦ ¢ ¦ Þ þ ¦ £ + E : È É Ê Ë Ê + e : è é ê ë ê + I : ÃŒ à Î à Î + i : ì í î ï î + O : Ã’ Ó Ô Õ Ö Ø © ® Õ Ô Ã… Ã¥ + o : ° Ã… Ã¥ ¤ õ ò ó ô õ ö ø ô º + U : Ù Ú Û Ü Û + u : ù ú û ü µ û + + : ± + N : Ñ Ñ ¬ + n : ñ ñ ¬ + L : £ £ £ + l : £ £ £ + g : ¤ + D : ° à + d : ° ð + : : ÷ + * : µ µ Ã¥ Ã… + T : Þ + t : þ + M : × + m : × + V : ¦ + v : ¦ +*/ + +static const char compose_lookups[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] = +{ +/* ` */ {'A','E','I','O','U','a','e','i','o','u', 0, 0, 0, 0}, +/* ' */ {' ','A','E','I','O','U','Y','a','e','i','o','u','y', 39}, +/* ~ */ {'A','N','O','a','n','o', 0, 0, 0, 0, 0, 0, 0, 0}, +/* ^ */ {'A','E','I','O','U','a','e','i','o','u','0','1','2','3'}, +/* , */ {' ','C','c',',', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* / */ {'O','o','u','U', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* " */ {' ','A','E','I','O','U','a','e','i','o','u','y','\"', 0}, +/* A */ {'E','`', 39,'~','^','"','o','*','-','>','_', 0, 0, 0}, +/* a */ {'e','`', 39,'~','^','"','o','*','-','>','_', 0, 0, 0}, +/* P */ {' ','G','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* p */ {' ','g','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* S */ {'S','!','O','0','A', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* s */ {'s','!','a','1','2','3','0','o', 0, 0, 0, 0, 0, 0}, +/* ! */ {' ','!', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* ? */ {' ','?', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 0 */ {'^','*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 1 */ {' ','2','4','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 2 */ {' ','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 3 */ {' ','4','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* C */ {'O',',','$','|', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* c */ {'|','o',',','/','$', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* R */ {'O', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* r */ {'o', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* - */ {' ','+',',','-','^',':', 0, 0, 0, 0, 0, 0, 0, 0}, +/* _ */ {'_','^', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* < */ {'<', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* > */ {'>', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* X */ {'O','X', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* x */ {' ','o','x', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* . */ {' ','^','.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* = */ {'Y','y', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* Y */ {'=', 39,'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* y */ {'=', 39,'"','$','-', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* */ {' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* | */ {' ','c','|','P','p','^','-', 0, 0, 0, 0, 0, 0, 0}, +/* E */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* e */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* I */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* i */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* O */ {'`', 39,'^','~','"','/','C','R','-','>','A','a', 0, 0}, +/* o */ {' ','A','a','x','-','`', 39,'^','~','"','/','>','_', 0}, +/* U */ {'`', 39,'^','"','>', 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* u */ {'`', 39,'^','"',' ','>', 0, 0, 0, 0, 0, 0, 0, 0}, +/* + */ {'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* N */ {'~','-','O', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* n */ {'~','-','o', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* L */ {'$','=','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* l */ {'$','=','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* g */ {'$', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* D */ {'E','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* d */ {'e','-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* : */ {'-', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* * */ {'m','M','a','A', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* T */ {'H', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* t */ {'h', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* M */ {'U', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* m */ {'u', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* V */ {'B', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* v */ {'b', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +}; + +static const unsigned char compose_keys[MAX_COMPOSE_PRE][MAX_COMPOSE_CHARS] = +{ +/* ` */ {192,200,204,210,217,224,232,236,242,249, 0, 0, 0, 0}, +/* ' */ {180,193,201,205,211,218,221,225,233,237,243,250,253,180}, +/* ~ */ {195,209,213,227,241,245, 0, 0, 0, 0, 0, 0, 0, 0}, +/* ^ */ {194,202,206,212,219,226,234,238,244,251,176,185,178,179}, +/* , */ {184,199,231,184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* / */ {216,248,181,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* " */ {168,196,203,207,214,220,228,235,239,246,252,255,168, 0}, +/* A */ {198,192,193,195,194,196,197,197,195,194,170, 0, 0, 0}, +/* a */ {230,224,225,227,226,228,229,229,227,226,170, 0, 0, 0}, +/* P */ {222,182,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* p */ {254,182,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* S */ {167,167,167,186,170, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* s */ {223,167,170,185,178,179,186,167, 0, 0, 0, 0, 0, 0}, +/* ! */ {161,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* ? */ {191,191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 0 */ {176,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 1 */ {185,189,188,185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 2 */ {178,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* 3 */ {179,190,179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* C */ {169,199,162,162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* c */ {162,169,231,162,162, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* R */ {174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* r */ {174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* - */ {173,177,172,173,175,247, 0, 0, 0, 0, 0, 0, 0, 0}, +/* _ */ {175,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* < */ {171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* > */ {187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* X */ {164,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* x */ {215,164,215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* . */ {183,183,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* = */ {165,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* Y */ {165,221,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* y */ {165,253,255,165,165, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* */ {160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* | */ {166,162,166,222,254,166,163, 0, 0, 0, 0, 0, 0, 0}, +/* E */ {200,201,202,203,202, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* e */ {232,233,234,235,234, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* I */ {204,205,206,207,206, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* i */ {236,237,238,239,238, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* O */ {210,211,212,213,214,216,169,174,213,212,197,229, 0, 0}, +/* o */ {176,197,229,164,245,242,243,244,245,246,248,244,186, 0}, +/* U */ {217,218,219,220,219, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* u */ {249,250,251,252,181,251, 0, 0, 0, 0, 0, 0, 0, 0}, +/* + */ {177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* N */ {209,209,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* n */ {241,241,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* L */ {163,163,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* l */ {163,163,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* g */ {164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* D */ {176,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* d */ {176,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* : */ {247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* * */ {181,181,229,197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* T */ {222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* t */ {254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* M */ {215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* u */ {215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* V */ {166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +/* v */ {166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +}; + +static KeySym compose_key = 0; +static int compose_mask = 0; diff --git a/clients/gsat-1.1.0/config.guess b/3rd-party/PDCurses/x11/config.guess old mode 100755 new mode 100644 similarity index 80% rename from clients/gsat-1.1.0/config.guess rename to 3rd-party/PDCurses/x11/config.guess index 4fc21ec..396482d --- a/clients/gsat-1.1.0/config.guess +++ b/3rd-party/PDCurses/x11/config.guess @@ -1,9 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. -timestamp='2003-01-30' +timestamp='2006-07-02' # 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 @@ -17,13 +18,15 @@ timestamp='2003-01-30' # # 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. +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. + # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. @@ -53,7 +56,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -66,11 +69,11 @@ Try \`$me --help' for more information." while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -104,8 +107,9 @@ set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; @@ -122,7 +126,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' +esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) @@ -195,53 +199,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # 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 ;; + exit ;; *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:MicroBSD:*:*) - echo ${UNAME_MACHINE}-unknown-microbsd${UNAME_RELEASE} - exit 0 ;; + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then + case $UNAME_RELEASE in + *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU @@ -279,39 +262,49 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac + # A Pn.n version is a patched version. # 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. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; 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 ;; + exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 - exit 0 ;; + exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 - exit 0;; + exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; + exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; + exit ;; *:OS/390:*:*) echo i370-ibm-openedition - exit 0 ;; + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp - exit 0;; + exit ;; 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 @@ -319,29 +312,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in else echo pyramid-pyramid-bsd fi - exit 0 ;; + exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; + sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; 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 ;; + exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) @@ -350,10 +346,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in 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 ;; + exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; 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 @@ -365,10 +361,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo sparc-sun-sunos${UNAME_RELEASE} ;; esac - exit 0 ;; + exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; # 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 @@ -379,37 +375,40 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 - exit 0 ;; + exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; + exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -433,32 +432,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; + exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax - exit 0 ;; + exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix - exit 0 ;; + exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 - exit 0 ;; + exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 - exit 0 ;; + exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -474,29 +474,29 @@ EOF else echo i586-dg-dgux${UNAME_RELEASE} fi - exit 0 ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 - exit 0 ;; + exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 - exit 0 ;; + exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd - exit 0 ;; + exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; + exit ;; ????????: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 ' + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix - exit 0 ;; + exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` @@ -504,7 +504,7 @@ EOF IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build @@ -519,14 +519,18 @@ EOF exit(0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi 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 ;; + exit ;; *: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 @@ -540,28 +544,28 @@ EOF IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:*:*) echo rs6000-ibm-aix - exit 0 ;; + exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 - exit 0 ;; + exit ;; 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 + exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx - exit 0 ;; + exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 - exit 0 ;; + exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd - exit 0 ;; + exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 - exit 0 ;; + exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in @@ -623,9 +627,19 @@ EOF esac if [ ${HP_ARCH} = "hppa2.0w" ] then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else @@ -633,11 +647,11 @@ EOF fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -665,147 +679,179 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 - exit 0 ;; + exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd - exit 0 ;; + exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd - exit 0 ;; + exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix - exit 0 ;; + exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf - exit 0 ;; + exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf - exit 0 ;; + exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi - exit 0 ;; + exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites - exit 0 ;; + exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit 0 ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit 0 ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit 0 ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit 0 ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; 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 ;; + exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; *:UNICOS/mp:*:*) - echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; 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 ;; + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *: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=` - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; + exit ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:3*) - echo i586-pc-interix3 - exit 0 ;; + exit ;; + x86:Interix*:[3456]*) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T:Interix*:[3456]*) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; + exit ;; 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 ;; + exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin - exit 0 ;; + exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; *:GNU:*:*) + # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; + exit ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -822,8 +868,12 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build @@ -841,15 +891,22 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu - exit 0 ;; + exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu - exit 0 ;; + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -863,7 +920,7 @@ EOF 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 ;; + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -871,22 +928,28 @@ EOF PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac - exit 0 ;; + exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu - exit 0 ;; + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu - exit 0 ;; + exit ;; 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 @@ -904,15 +967,15 @@ EOF ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; + exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; + exit ;; "") # 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 ;; + exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build @@ -929,23 +992,33 @@ EOF LIBC=gnulibc1 # endif #else - #ifdef __INTEL_COMPILER + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; 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 ;; + exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... @@ -953,24 +1026,27 @@ EOF # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; + exit ;; 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 ;; + exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; + exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; + exit ;; 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 @@ -978,15 +1054,16 @@ EOF else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi - exit 0 ;; - i*86:*:5:[78]*) + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. 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 ;; + exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /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 ;; + exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv - exit 0 ;; + exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv - exit 0 ;; + exit ;; 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) + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*: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 | SHG2:*:4.0:3.0 | S7501*:*: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 + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; + && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 - exit 0 ;; + exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; + exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1078,68 +1155,72 @@ EOF else echo ns32k-sni-sysv fi - exit 0 ;; + exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 - exit 0 ;; + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 - exit 0 ;; + exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 - exit 0 ;; + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos - exit 0 ;; + exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; + exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 - exit 0 ;; + exit ;; 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 ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos - exit 0 ;; + exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos - exit 0 ;; + exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos - exit 0 ;; + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Darwin:*:*) - case `uname -p` in - *86) UNAME_PROCESSOR=i686 ;; - powerpc) UNAME_PROCESSOR=powerpc ;; + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; + exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then @@ -1147,22 +1228,25 @@ EOF UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; + exit ;; *:QNX:*:4*) echo i386-pc-qnx - exit 0 ;; - NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux - exit 0 ;; + exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv - exit 0 ;; + exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 @@ -1173,25 +1257,47 @@ EOF UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; + exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 - exit 0 ;; + exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex - exit 0 ;; + exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 - exit 0 ;; + exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 - exit 0 ;; + exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 - exit 0 ;; + exit ;; *:ITS:*:*) echo pdp10-unknown-its - exit 0 ;; + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1223,7 +1329,7 @@ main () #endif #if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); + printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) @@ -1312,11 +1418,12 @@ main () } EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) @@ -1325,22 +1432,22 @@ then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd - exit 0 ;; + exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; c34*) echo c34-convex-bsd - exit 0 ;; + exit ;; c38*) echo c38-convex-bsd - exit 0 ;; + exit ;; c4*) echo c4-convex-bsd - exit 0 ;; + exit ;; esac fi @@ -1351,7 +1458,9 @@ This script, last modified $timestamp, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from - ftp://ftp.gnu.org/pub/gnu/config/ + http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess +and + http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub If the version you run ($0) is already up to date, please send the following data and any information you think might be diff --git a/3rd-party/PDCurses/x11/config.h.in b/3rd-party/PDCurses/x11/config.h.in new file mode 100644 index 0000000..dc8d449 --- /dev/null +++ b/3rd-party/PDCurses/x11/config.h.in @@ -0,0 +1,100 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if you have the header file */ +#undef HAVE_DECKEYSYM_H + +/* Define to 1 if you have the `poll' function. */ +#undef HAVE_POLL + +/* Define if you have the header file */ +#undef HAVE_SUNKEYSYM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `usleep' function. */ +#undef HAVE_USLEEP + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define to 1 if you have the `vsscanf' function. */ +#undef HAVE_VSSCANF + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_BEGIN + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_DELETE + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_DOWN + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_END + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_HOME + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_INSERT + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_LEFT + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_NEXT + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_PRIOR + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_RIGHT + +/* Define if you have this defined in */ +#undef HAVE_XK_KP_UP + +/* Define if you have the header file */ +#undef HAVE_XPM_H + +/* 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 system defined limit for number of signals */ +#undef PDC_MAX_SIGNALS + +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define if you want to use neXtaw library */ +#undef USE_NEXTAW + +/* Define if you want to use Xaw3d library */ +#undef USE_XAW3D + +/* Define XPointer is typedefed in X11/Xlib.h */ +#undef XPOINTER_TYPEDEFED diff --git a/clients/gsat-1.1.0/config.sub b/3rd-party/PDCurses/x11/config.sub old mode 100755 new mode 100644 similarity index 86% rename from clients/gsat-1.1.0/config.sub rename to 3rd-party/PDCurses/x11/config.sub index 5f94062..fab0aa3 --- a/clients/gsat-1.1.0/config.sub +++ b/3rd-party/PDCurses/x11/config.sub @@ -1,9 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. -timestamp='2003-02-03' +timestamp='2006-09-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,14 +22,15 @@ timestamp='2003-02-03' # # 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. - +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. + # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # @@ -70,7 +72,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -83,11 +85,11 @@ Try \`$me --help' for more information." while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -99,7 +101,7 @@ while test $# -gt 0 ; do *local*) # First pass through any local machine types. echo $1 - exit 0;; + exit ;; * ) break ;; @@ -118,7 +120,9 @@ esac # 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*) + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -144,7 +148,7 @@ case $os in -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) + -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; @@ -169,6 +173,10 @@ case $os in -hiux*) os=-hiuxwe2 ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -185,6 +193,10 @@ case $os in # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -sco5v6*) + # 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/'` @@ -228,14 +240,17 @@ case $basic_machine in | 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 \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | 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 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -244,27 +259,33 @@ case $basic_machine in | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | mt \ | msp430 \ + | nios | nios2 \ | ns16k | ns32k \ - | openrisc | or32 \ + | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | score \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic80 | tron \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ - | x86 | xscale | xstormy16 | xtensa \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; @@ -275,6 +296,9 @@ case $basic_machine in ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; + ms1) + basic_machine=mt-unknown + ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and @@ -294,20 +318,20 @@ case $basic_machine in | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | cydra-* \ + | clipper-* | craynv-* | 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-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -316,30 +340,36 @@ case $basic_machine in | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ | msp430-* \ - | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ | ymp-* \ | z8k-*) ;; @@ -359,6 +389,9 @@ case $basic_machine in basic_machine=a29k-amd os=-udi ;; + abacus) + basic_machine=abacus-unknown + ;; adobe68k) basic_machine=m68010-adobe os=-scout @@ -373,6 +406,12 @@ case $basic_machine in basic_machine=a29k-none os=-bsd ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; amdahl) basic_machine=580-amdahl os=-sysv @@ -432,12 +471,27 @@ case $basic_machine in basic_machine=j90-cray os=-unicos ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; crds | unos) basic_machine=m68k-crds ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; da30 | da30-*) basic_machine=m68k-da30 ;; @@ -460,6 +514,10 @@ case $basic_machine in basic_machine=m88k-motorola os=-sysv3 ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx @@ -638,10 +696,6 @@ case $basic_machine in 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 @@ -654,6 +708,9 @@ case $basic_machine in basic_machine=i386-pc os=-msdos ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; mvs) basic_machine=i370-ibm os=-mvs @@ -722,10 +779,6 @@ case $basic_machine in np1) basic_machine=np1-gould ;; - nv1) - basic_machine=nv1-cray - os=-unicosmp - ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -733,9 +786,12 @@ case $basic_machine in basic_machine=hppa1.1-oki os=-proelf ;; - or32 | or32-*) + openrisc | openrisc-*) basic_machine=or32-unknown - os=-coff + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson @@ -762,24 +818,36 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; - pentiumii | pentium2) + pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; + pentium4) + basic_machine=i786-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-*) + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; pn) basic_machine=pn-gould ;; @@ -812,6 +880,10 @@ case $basic_machine in basic_machine=i586-unknown os=-pw32 ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; rom68k) basic_machine=m68k-rom68k os=-coff @@ -838,6 +910,14 @@ case $basic_machine in sb1el) basic_machine=mipsisa64sb1el-unknown ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; sequent) basic_machine=i386-sequent ;; @@ -845,6 +925,9 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; + sh64) + basic_machine=sh64-unknown + ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks @@ -919,10 +1002,6 @@ case $basic_machine in basic_machine=t90-cray os=-unicos ;; - tic4x | c4x*) - basic_machine=tic4x-unknown - os=-coff - ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff @@ -948,6 +1027,10 @@ case $basic_machine in tower | tower-32) basic_machine=m68k-ncr ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; udi29k) basic_machine=a29k-amd os=-udi @@ -991,6 +1074,10 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; xps | xps100) basic_machine=xps100-honeywell ;; @@ -1021,6 +1108,9 @@ case $basic_machine in romp) basic_machine=romp-ibm ;; + mmix) + basic_machine=mmix-knuth + ;; rs6000) basic_machine=rs6000-ibm ;; @@ -1037,13 +1127,10 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv9 | sparcv9b) + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) @@ -1116,19 +1203,23 @@ case $os in | -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* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -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* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -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* | -microbsd*) + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1146,12 +1237,15 @@ case $os in os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; @@ -1164,6 +1258,9 @@ case $os in -opened*) os=-openedition ;; + -os400*) + os=-os400 + ;; -wince*) os=-wince ;; @@ -1185,6 +1282,9 @@ case $os in -atheos*) os=-atheos ;; + -syllable*) + os=-syllable + ;; -386bsd) os=-bsd ;; @@ -1207,6 +1307,9 @@ case $os in -sinix*) os=-sysv4 ;; + -tpf*) + os=-tpf + ;; -triton*) os=-sysv3 ;; @@ -1243,6 +1346,9 @@ case $os in -kaos*) os=-kaos ;; + -zvmoe) + os=-zvmoe + ;; -none) ;; *) @@ -1265,6 +1371,12 @@ else # system, and we'll never get to this point. case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; *-acorn) os=-riscix1.2 ;; @@ -1274,6 +1386,9 @@ case $basic_machine in arm*-semi) os=-aout ;; + c4x-* | tic4x-*) + os=-coff + ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 @@ -1317,9 +1432,15 @@ case $basic_machine in *-be) os=-beos ;; + *-haiku) + os=-haiku + ;; *-ibm) os=-aix ;; + *-knuth) + os=-mmixware + ;; *-wec) os=-proelf ;; @@ -1452,9 +1573,15 @@ case $basic_machine in -mvs* | -opened*) vendor=ibm ;; + -os400*) + vendor=ibm + ;; -ptx*) vendor=sequent ;; + -tpf*) + vendor=ibm + ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; @@ -1479,7 +1606,7 @@ case $basic_machine in esac echo $basic_machine$os -exit 0 +exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff --git a/3rd-party/PDCurses/x11/configure b/3rd-party/PDCurses/x11/configure new file mode 100644 index 0000000..6456961 --- /dev/null +++ b/3rd-party/PDCurses/x11/configure @@ -0,0 +1,6700 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.68 for PDCurses 3.4. +# +# Report bugs to . +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and wmcbrine@gmail.com +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='PDCurses' +PACKAGE_TARNAME='PDCurses' +PACKAGE_VERSION='3.4' +PACKAGE_STRING='PDCurses 3.4' +PACKAGE_BUGREPORT='wmcbrine@gmail.com' +PACKAGE_URL='' + +ac_unique_file="pdcx11.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +bitflag +libdir32 +libdir64 +MY_PREFIX +binarybitprefix +MACH_ARCH +MYDISTRO +lsb_release +RPMTOPDIR +mh_rpm_exists +CAN_USE_ABI +BASE_BINARY +OTHER_INSTALLS +BASE_INSTALL +RXPACKEXPORTS +SAVE2O +CC2O +O2SAVE +SHL_TARGETS +SHLPRE +LD_RXLIB1 +DYN_COMP +SHLPST +PURIFY +PDC_WIDE +MH_XLIBS +MH_XINC_DIR +XMKMF +MH_EXTRA_LIBS +EGREP +GREP +CPP +SET_MAKE +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +RANLIB +LN_S +EEXTRA +SYS_DEFS +valid_arch_flags +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_arch +with_x +enable_debug +enable_widec +enable_xim +enable_force_utf8 +enable_purify +with_xaw3d +with_nextaw +enable_32bit +enable_64bit +enable_libdir_change +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +XMKMF' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures PDCurses 3.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PDCurses] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of PDCurses 3.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-debug turn on debugging + --enable-widec include support for wide characters + --enable-xim include support for XIM + --enable-force-utf8 override locale settings; use UTF-8 + --enable-purify link with Purify (TM) + --enable-32bit specify if 32bit libraries are to be used + --enable-64bit specify if 64bit libraries are to be used + --enable-libdir-change specify --disable-libdir-change if building a .deb + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-arch=option build universal binaries on OS X, option: one of "all 32bit 64bit intel ppc ppc64 x86_64 i386" + --with-x use the X Window System + --with-xaw3d link with Xaw3d + --with-nextaw link with neXtaw + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + XMKMF Path to xmkmf, Makefile generator for X Window System + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +PDCurses configure 3.4 +generated by GNU Autoconf 2.68 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## --------------------------------- ## +## Report this to wmcbrine@gmail.com ## +## --------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* 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_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by PDCurses $as_me 3.4, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append 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 + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > 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 + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + 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. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +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_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +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_config_headers="$ac_config_headers config.h" + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + + +on_qnx=no +on_osx=no +case "$target" in + *hp-hpux*) + SYS_DEFS="-D_HPUX_SOURCE" + ;; + *ibm-aix*) + SYS_DEFS="-D_ALL_SOURCE" + ;; + *dec-osf*) + SYS_DEFS="-D_XOPEN_SOURCE_EXTENDED" + ;; + *pc-sco*) + SYS_DEFS="-UM_XENIX -b elf" + ;; + *qnx*) + on_qnx=yes + SYS_DEFS="-Q" + ;; + *apple-darwin*) + on_osx=yes + + +valid_arch_flags="" +found_arch_flags="" + +# Check whether --with-arch was given. +if test "${with_arch+set}" = set; then : + withval=$with_arch; with_arch=$withval +else + with_arch=none +fi + +case "$with_arch" in + none) + arch_flags="" + ;; + all) + arch_flags="-arch ppc -arch ppc64 -arch x86_64 -arch i386" + ;; + 32bit) + arch_flags="-arch ppc -arch i386" + ;; + 64bit) + arch_flags="-arch ppc64 -arch x86_64" + ;; + intel) + arch_flags="-arch i386 -arch x86_64" + ;; + *) + arch_flags="-arch $with_arch" + ;; +esac + +valid_arch_flags="" +found_arch_flags="" +if test $on_osx = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which Mac OSX -arch flags are supported for universal binaries" >&5 +$as_echo_n "checking for which Mac OSX -arch flags are supported for universal binaries... " >&6; } + for a in $arch_flags; do + save_ldflags="$LDFLAGS" + LDFLAGS="$LDFLAGS -arch $a" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +exit(0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + valid_arch_flags="$valid_arch_flags -arch $a";found_arch_flags="$found_arch_flags $a" +else + a="$a" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_ldflags" + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_arch_flags" >&5 +$as_echo "$found_arch_flags" >&6; } + +fi + + SYS_DEFS="$valid_arch_flags" + EEXTRA="$valid_arch_flags" + ;; + *) + ;; +esac + + + + +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $SYS_DEFS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for maximum signal specifier:" >&5 +$as_echo_n "checking for maximum signal specifier:... " >&6; } +if ${mh_cv_max_signals+:} false; then : + $as_echo_n "(cached) " >&6 +else + mh_found="no" +for mh_sigs in NSIG __sys_nsig; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +return $mh_sigs; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + mh_found="yes"; mh_cv_max_signals="$mh_sigs" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test "$mh_found" = "yes"; then + break; + fi +done +fi + +CPPFLAGS="$save_CPPFLAGS" +if test "$mh_found" = "no"; then + as_fn_error $? "Cannot find a system limit for number of signals. PDCurses cannot be configured on this machine." "$LINENO" 5 +else + cat >>confdefs.h <<_ACEOF +#define PDC_MAX_SIGNALS $mh_cv_max_signals +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mh_cv_max_signals" >&5 +$as_echo "$mh_cv_max_signals" >&6; } +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "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 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +ac_fn_c_check_header_mongrel "$LINENO" "sys/ipc.h" "ac_cv_header_sys_ipc_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ipc_h" = xyes; then : + +fi + + +if test $ac_cv_header_sys_ipc_h = no; then + as_fn_error $? "Cannot find required header file sys/ipc.h; PDCurses cannot be configured" "$LINENO" 5 +fi + + +if test $ac_cv_header_stdc != yes; then + as_fn_error $? "Need ANSI C headers" "$LINENO" 5 +fi + + +for ac_header in fcntl.h \ + sys/time.h \ + sys/select.h \ + dlfcn.h \ + dl.h + +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi + + +MH_EXTRA_LIBS='' +for mh_lib in socket nls; do + if test "$on_qnx" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library -l${mh_lib}" >&5 +$as_echo_n "checking for library -l${mh_lib}... " >&6; } + if test -r /usr/lib/${mh_lib}3r.lib; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 +$as_echo "found" >&6; } + MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + fi + else + as_ac_Lib=`$as_echo "ac_cv_lib_$mh_lib''_main" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l$mh_lib" >&5 +$as_echo_n "checking for main in -l$mh_lib... " >&6; } +if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$mh_lib $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$as_ac_Lib=yes" +else + eval "$as_ac_Lib=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +eval ac_res=\$$as_ac_Lib + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : + mh_lib_found=yes +else + mh_lib_found=no +fi + + if test "$mh_lib_found" = yes; then + MH_EXTRA_LIBS="${MH_EXTRA_LIBS} -l${mh_lib}" + fi + fi +done + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understand -c and -o together" >&5 +$as_echo_n "checking whether $CC understand -c and -o together... " >&6; } +set dummy $CC; ac_cc="`echo $2 | + sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" +if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + echo 'foo(){}' > conftest.c +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +eval ac_cv_prog_cc_${ac_cc}_c_o=no +ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&5' +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -f conftest.ooo && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; +then + ac_try='${CC-cc} -c conftest.c -o conftest.ooo 1>&5' + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -f conftest.ooo && { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; + then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + fi +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then + O2SAVE="" + SAVE2O="" + CC2O="-o $"'@' + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + O2SAVE="-mv \`basename "$'@'" .sho\`.o \`basename "$'@'" .sho\`.o.save;" + SAVE2O="-mv \`basename "$'@'" .sho\`.o "$'@'"; mv \`basename "$'@'" .sho\`.o.save \`basename "$'@'" .sho\`.o" + CC2O="" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +return *(signal (0, 0)) (0) == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int +else + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + +for ac_func in vsscanf usleep poll vsnprintf +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +$as_echo_n "checking for X... " >&6; } + + +# Check whether --with-x was given. +if test "${with_x+set}" = set; then : + withval=$with_x; +fi + +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + case $x_includes,$x_libraries in #( + *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( + *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : + $as_echo_n "(cached) " >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + cat >Imakefile <<'_ACEOF' +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib la dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /usr/lib64 | /lib | /lib64) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -f -r conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R7/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R7 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R7/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R7 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # We can compile using X headers with no special include directory. +ac_x_includes= +else + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.i conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lX11 $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + LIBS=$ac_save_LIBS +for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl dylib la dll; do + if test -r "$ac_dir/libX11.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac +fi +;; #( + *) have_x=yes;; + esac + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 +$as_echo "$have_x" >&6; } + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 +$as_echo "libraries $x_libraries, headers $x_includes" >&6; } +fi + + +mh_x11_dir="" +mh_x11_xaw_dir="" + +mh_inc_dirs="$ac_x_header_dirs" + + +if test "x$x_includes" != xNONE ; then + mh_inc_dirs="$x_includes $mh_inc_dirs" +fi + + +for ac_dir in $mh_inc_dirs ; do + if test -r $ac_dir/Intrinsic.h; then + mh_x11_dir=$ac_dir + break + fi + if test -r $ac_dir/X11/Intrinsic.h; then + mh_x11_dir="$ac_dir/X11" + break + fi +done + + +if test "$with_xaw3d" = yes; then + mh_xaw_dir="Xaw3d" +else + if test "$with_nextaw" = yes; then + mh_xaw_dir="neXtaw" + else + mh_xaw_dir="Xaw" + fi +fi +for ac_dir in $mh_inc_dirs ; do + if test -r $ac_dir/$mh_xaw_dir/Box.h; then + mh_x11_xaw_dir=$ac_dir + break + fi + if test -r $ac_dir/X11/$mh_xaw_dir/Box.h; then + mh_x11_xaw_dir="$ac_dir/X11" + break + fi +done + +if test "x$mh_x11_dir" != "x" ; then + mh_x11_dir_no_x11=`echo $mh_x11_dir | sed 's/\/X11$//'` + + if test "$mh_x11_dir_no_x11" != "$mh_x11_dir" ; then + MH_XINC_DIR="-I$mh_x11_dir -I$mh_x11_dir_no_x11" + else + MH_XINC_DIR="-I$mh_x11_dir" + fi +else + as_fn_error $? "Cannot find required header file Intrinsic.h; PDCurses cannot be configured" "$LINENO" 5 +fi + +if test "x$mh_x11_xaw_dir" != "x"; then + if test "$mh_x11_xaw_dir" != "$mh_x11_dir" ; then + MH_XINC_DIR="-I$mh_x11_xaw_dir $MH_XINC_DIR" + fi +else + as_fn_error $? "Cannot find required Xaw header file Box.h; PDCurses cannot be configured" "$LINENO" 5 +fi + + + + + + +mh_solaris_flag=no +mh_hpux9_flag=no + +case "$target" in + *solaris*) + mh_solaris_flag=yes + ;; + *pc-sco*) + extra_x_libs="Xext" + ;; + sparc*sunos*) + extra_x_libs="Xext" + if test "$ac_cv_prog_CC" = "gcc" ; then + extra_ld_flags="-Wl,-Bstatic" + extra_ld_flags2="-Wl,-Bdynamic" + else + extra_ld_flags="-Bstatic" + extra_ld_flags2="-Bdynamic" + fi + ;; + *hpux9*) + mh_hpux9_flag=yes + ;; +esac + +if test "$with_xaw3d" = yes; then + MH_X11_LIBS="Xaw3d Xmu Xt X11" +else + if test "$with_nextaw" = yes; then + MH_X11_LIBS="neXtaw Xmu Xt X11" + else + MH_X11_LIBS="Xaw Xmu Xt X11" + fi +fi +MH_X11R6_LIBS="SM ICE Xext" +mh_x11r6=no + +which dpkg-architecture > /dev/null +if test $? -eq 0; then + multiarch_libdir="/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`" +else + multiarch_libdir="" +fi + +mh_lib_dirs="$multiarch_libdir /usr/lib64 /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu $x_libraries `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`" + +for ac_dir in $mh_lib_dirs ; do + for mh_xsm in libSM.a libSM.so libSM.sl libSM.dylib; do + if test -r $ac_dir/$mh_xsm; then + mh_x11r6=yes + break 2 + fi + done +done + +if test "$mh_x11r6" = yes ; then + mh_libs="$MH_X11_LIBS $MH_X11R6_LIBS" +else + mh_libs="$MH_X11_LIBS $extra_x_libs" +fi + + + +mh_prev_dir="" +mh_where_found="" +mh_where_found_dirs="" +mh_solaris_path="" +for mh_lib in $mh_libs; do + mh_lib_found=no + for ac_dir in $mh_lib_dirs ; do + for mh_ext in a so sl dll.a dylib; do + if test -r $ac_dir/lib$mh_lib.$mh_ext; then + if test "x$mh_prev_dir" != "x$ac_dir" ; then + if test "x$mh_prev_dir" = "x" ; then + mh_where_found="$mh_where_found found in $ac_dir" + else + mh_where_found="$mh_where_found and in $ac_dir" + fi + mh_prev_dir=$ac_dir + mh_where_found_dirs="$mh_where_found_dirs $ac_dir" + MH_XLIBS="$MH_XLIBS -L$ac_dir" + mh_solaris_path="${mh_solaris_path}:$ac_dir" + fi + MH_XLIBS="$MH_XLIBS -l$mh_lib" + mh_lib_found=yes + break 2 + fi + done + done + if test "$mh_lib_found" = no; then + as_fn_error $? "Cannot find required X library; lib$mh_lib. PDCurses cannot be configured" "$LINENO" 5 + fi +done + +mh_solaris_path=`echo $mh_solaris_path | sed 's/^://'` +if test "$mh_solaris_flag" = yes ; then + MH_XLIBS="-R$mh_solaris_path $extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2" +else + MH_XLIBS="$extra_ld_flags $MH_XLIBS $extra_libs $extra_ld_flags2" +fi +if test "$mh_hpux9_flag" = yes ; then + grep -q XtSetLanguageProc $mh_x11_dir/Intrinsic.h + if test $? -eq 0 ; then + mh_found_xtshellstrings=no + for mh_acdir in $mh_where_found_dirs ; do + for mh_xaw in `ls $mh_acdir/libXaw.*` ; do + nm $mh_xaw | grep XtShellStrings | grep -qv extern + if test $? -eq 0 ; then + mh_found_xtshellstrings=yes + fi + done + done + if test "$mh_found_xtshellstrings" = no ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The X11 development environment has not been installed correctly." >&5 +$as_echo "$as_me: WARNING: The X11 development environment has not been installed correctly." >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The header file; Intrinsic.h" >&5 +$as_echo "$as_me: WARNING: The header file; Intrinsic.h" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Set library; libXaw is for X11R4. This is a common problem with" >&5 +$as_echo "$as_me: WARNING: Set library; libXaw is for X11R4. This is a common problem with" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: HP-UX 9.x." >&5 +$as_echo "$as_me: WARNING: HP-UX 9.x." >&2;} + as_fn_error $? "X11 installation incomplete; cannot continue" "$LINENO" 5 + fi + fi +fi + + + + + +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $MH_XINC_DIR" +for mh_header in DECkeysym.h Sunkeysym.h xpm.h XF86keysym.h; do + for ac_header in $mh_header +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +done +CPPFLAGS="$save_CPPFLAGS" + + +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $MH_XINC_DIR" +for mh_keydef in XK_KP_Delete XK_KP_Insert XK_KP_End XK_KP_Down XK_KP_Next \ + XK_KP_Left XK_KP_Right XK_KP_Home XK_KP_Up XK_KP_Prior XK_KP_Begin; do + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $mh_keydef in keysym.h" >&5 +$as_echo_n "checking for $mh_keydef in keysym.h... " >&6; } + mh_upper_name="HAVE_`echo $mh_keydef | tr 'a-z' 'A-Z'`" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int i = $mh_keydef; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + mh_have_key=yes; cat >>confdefs.h <<_ACEOF +#define $mh_upper_name 1 +_ACEOF + +else + mh_have_key=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mh_have_key" >&5 +$as_echo "$mh_have_key" >&6; } +done +CPPFLAGS="$save_CPPFLAGS" + + +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $SYS_DEFS $MH_XINC_DIR" +for td in XPointer ; do +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $td is typedefed:" >&5 +$as_echo_n "checking if $td is typedefed:... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include "X11/Xlib.h" +int +main () +{ +$td fred + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + mh_td=yes +else + mh_td=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +if test "$mh_td" = yes ; then + TD_upper=`echo $td | tr a-z A-Z` + cat >>confdefs.h <<_ACEOF +#define ${TD_upper}_TYPEDEFED 1 +_ACEOF + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $mh_td" >&5 +$as_echo "$mh_td" >&6; } +done +CPPFLAGS="$save_CPPFLAGS" + +if test $ac_cv_header_xpm_h = yes; then + MH_XLIBS="$MH_XLIBS -lXpm" +fi +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; with_debug=$enableval +else + with_debug=no +fi + +cflags_g="`echo $CFLAGS | grep -c '\-g'`" +cflags_O="`echo $CFLAGS | grep -c '\-O'`" + +if test "$with_debug" = yes; then + if test "$cflags_g" = "0"; then + CFLAGS="${CFLAGS} -g" + fi + if test "$cflags_O" != "0"; then + CFLAGS="`echo ${CFLAGS} | sed -e s/-O.//`" + fi + CFLAGS="${CFLAGS} -DPDCDEBUG" +else + if test "$cflags_O" = "0"; then + CFLAGS="${CFLAGS} -O" + fi + if test "$cflags_g" != "0"; then + CFLAGS="`echo ${CFLAGS} | sed -e s/-g//`" + fi +fi +if test "$ac_cv_prog_CC" = "gcc"; then + if test "$with_debug" = yes; then + CFLAGS="${CFLAGS} -Wall" + else + CFLAGS="-O2 -Wall -fomit-frame-pointer" + fi +fi +if test "$on_qnx" = yes; then + if test "$with_debug" = yes; then + CFLAGS="-g" + else + CFLAGS="-Otax" + fi +fi + +# Check whether --enable-widec was given. +if test "${enable_widec+set}" = set; then : + enableval=$enable_widec; with_widec=$enableval +else + with_widec=no +fi + +PDC_WIDE="" +if test "$with_widec" = yes; then + PDC_WIDE="-DPDC_WIDE" + SYS_DEFS="$SYS_DEFS $PDC_WIDE" +fi + + +# Check whether --enable-xim was given. +if test "${enable_xim+set}" = set; then : + enableval=$enable_xim; with_xim=$enableval +else + with_xim=no +fi + +if test "$with_xim" = yes; then + SYS_DEFS="$SYS_DEFS -DPDC_XIM" +fi + +# Check whether --enable-force-utf8 was given. +if test "${enable_force_utf8+set}" = set; then : + enableval=$enable_force_utf8; force_utf8=$enableval +else + force_utf8=no +fi + +if test "$force_utf8" = yes; then + SYS_DEFS="$SYS_DEFS -DPDC_FORCE_UTF8" +fi + +# Check whether --enable-purify was given. +if test "${enable_purify+set}" = set; then : + enableval=$enable_purify; with_purify=$enableval +else + with_purify=no +fi + +if test "$with_purify" = yes; then + PURIFY="purify" +else + PURIFY="" +fi + + + +# Check whether --with-xaw3d was given. +if test "${with_xaw3d+set}" = set; then : + withval=$with_xaw3d; with_xaw3d=$withval +else + with_xaw3d=no +fi + +if test "$with_xaw3d" = yes; then + +$as_echo "#define USE_XAW3D 1" >>confdefs.h + +fi + + +# Check whether --with-nextaw was given. +if test "${with_nextaw+set}" = set; then : + withval=$with_nextaw; with_nextaw=$withval +else + with_nextaw=no +fi + +if test "$with_nextaw" = yes; then + +$as_echo "#define USE_NEXTAW 1" >>confdefs.h + +fi + +USE_ABI=yes + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking shared library extension" >&5 +$as_echo_n "checking shared library extension... " >&6; } +SHLPST=".so" + +case "$target" in + *hp-hpux*) + SHLPST=".sl" + ;; + *ibm-aix*) + SHLPST=".a" + ;; + *qnx*) + SHLPST="" + ;; + *cygwin*) + SHLPST=".dll" + ;; + *darwin*) + SHLPST=".dylib" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLPST" >&5 +$as_echo "$SHLPST" >&6; } + + + +AIX_DYN="no" +BEOS_DYN="no" +SHLFILE="XCurses" +SHLFILES="XCurses" +RXPACKEXPORTS="" +SHLPRE="lib" +LD_RXLIB1="" +BASE_INSTALL="installbase" +BASE_BINARY="binarybase" +# OTHER_INSTALLS is set to install a non-version numbered shared library +# by default; ie. no .\$(ABI) suffix. Set OTHER_INSTALLS="installabilib" if you +# are building a version numbered shared library. +OTHER_INSTALLS="installlib" + + +case "$target" in + *hp-hpux*) + SYS_DEFS="-D_HPUX_SOURCE" + LD_RXLIB1="ld -b -q -n" + ;; + *ibm-aix*) + SYS_DEFS="-D_ALL_SOURCE -DAIX" + AIX_DYN="yes" + DYN_COMP="-DDYNAMIC" + LD_RXLIB1="ld -bnoentry -bM:SRE" + RXPACKEXPORTS="-bE:$SHLFILE.exp" + RXPACKEXP="$SHLFILE.exp" + ;; + *dec-osf*) + if test "$ac_cv_prog_CC" = "gcc"; then + SYS_DEFS="-D_POSIX_SOURCE -D_XOPEN_SOURCE" + else + SYS_DEFS="-D_POSIX_SOURCE -D_XOPEN_SOURCE -Olimit 800" + fi + LD_RXLIB1="ld -shared" + ;; + *sequent-dynix*|*esix*|*dgux*) + LD_RXLIB1="ld -G" + ;; + *solaris*) + if test "$ac_cv_prog_CC" = "gcc"; then + LD_RXLIB1="gcc -shared" + else + LD_RXLIB1="ld -G" + fi + ;; + sparc*sunos*) + SYS_DEFS="-DSUNOS -DSUNOS_STRTOD_BUG" + LD_RXLIB1="ld" + ;; + *atheos*|*nto-qnx*) + LD_RXLIB1="${CC} -shared" + ;; + *linux*|*kfreebsd*-gnu*) + LD_RXLIB1="${CC} -shared -Wl,-soname,\$(@)" + CAN_USE_ABI="yes" + if test "$USE_ABI" = "yes"; then + OTHER_INSTALLS="installabilib" + fi + ;; + *freebsd*) + LD_RXLIB1="ld -Bdynamic -Bshareable" + ;; + *pc-sco*) + LD_RXLIB1="ld -dy -G" + ;; + *beos*) + LD_RXLIB1="${CC} -Wl,-shared -nostart -Xlinker -soname=\$(@)" + BEOS_DYN="yes" + ;; + *qnx*) + SHLPRE="" + DYN_COMP="-Q" # force no check for dynamic loading + SHLFILE="" + ;; + *cygwin) + SHLPRE="" + DYN_COMP="-DDYNAMIC" + LD_RXLIB1="dllwrap --def \$(srcdir)/../win32/pdcurses.def --target i386-cygwin32 --dllname \$(@)" +# cygwininstall target MUST install the shared library itself because +# it puts it into $(bindir) not $(libdir) as all other platforms + ;; + *darwin*) + DYN_COMP="-fno-common" + LD_RXLIB1="${CC} -flat_namespace -undefined suppress -dynamiclib -install_name=\$(@)" + ;; + *) + ;; +esac + + +if test "$DYN_COMP" = ""; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler flags for a dynamic object" >&5 +$as_echo_n "checking compiler flags for a dynamic object... " >&6; } + +cat > conftest.$ac_ext <&5 + (eval $mh_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + DYN_COMP="" + else + slash="\\" + mh_dyncomp="`egrep -c $slash$a conftest.tmp`" + if test "$mh_dyncomp" = "0"; then + DYN_COMP="$a -DDYNAMIC" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $a" >&5 +$as_echo "$a" >&6; } + break + else + DYN_COMP="" + fi + fi + done + if test "$DYN_COMP" = ""; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none of $mh_cv_flags supported" >&5 +$as_echo "none of $mh_cv_flags supported" >&6; } + fi + if test "$LD_RXLIB1" = ""; then + +mh_compile='${CC-cc} -c $DYN_COMP conftest.$ac_ext 1>&5' +cat > conftest.$ac_ext <&5 + (eval $mh_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest.o; then + mh_dyn_link='ld -shared -o conftest.rxlib conftest.o -lc 1>&5' +# mh_dyn_link='${CC} -Wl,-shared -o conftest.rxlib conftest.o -lc 1>&AC_FD_CC' + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$mh_dyn_link\""; } >&5 + (eval $mh_dyn_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest.rxlib; then + LD_RXLIB1="ld -shared" +# LD_RXLIB1="${CC} -Wl,-shared" + SHLPRE="lib" + SHLPST=".so" + else + mh_dyn_link='ld -G -o conftest.rxlib conftest.o 1>&5' +# mh_dyn_link='${CC} -Wl,-G -o conftest.rxlib conftest.o 1>&AC_FD_CC' + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$mh_dyn_link\""; } >&5 + (eval $mh_dyn_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest.rxlib; then + LD_RXLIB1="ld -G" +# LD_RXLIB1="${CC} -Wl,-G" + SHLPRE="lib" + SHLPST=".so" + else + LD_RXLIB1="" + SHLPRE="" + SHLPST="" + fi + fi +fi +rm -f conftest* + + fi + CFLAGS=$save_cflags + rm -f conftest.* +fi + + +SHL_TARGETS="" + +if test "$AIX_DYN" = "yes"; then + aix_exports="config.exports.aix" + echo "" > $aix_exports +fi + +if test "$ac_cv_header_dl_h" = "yes" -o "$ac_cv_header_dlfcn_h" = "yes" -o "$AIX_DYN" = "yes" -o "$BEOS_DYN" = "yes" -o "$DLFCNINCDIR" != "" -o "$DLFCNLIBDIR" != ""; then + EXPS="1,2,3,4,5,6,7,8,9" + for a in $SHLFILES + do + if test "$USE_ABI" = "yes" -a "$CAN_USE_ABI" = "yes"; then + SHL_TARGETS="${SHL_TARGETS} ${SHLPRE}${a}${SHLPST}.\$(ABI)" + else + SHL_TARGETS="${SHL_TARGETS} ${SHLPRE}${a}${SHLPST}" + fi + this=`echo $EXPS | cut -d, -f1` + EXPS=`echo $EXPS | cut -d, -f2-` + if test "$AIX_DYN" = "yes"; then + echo "RXPACKEXP$this=$a.exp" >> $aix_exports + echo "RXPACKEXPORTS$this=-bE:$a.exp" >> $aix_exports + fi + done +fi + + + + + + + + + + + + + + + + + + +# Extract the first word of "rpm", so it can be a program name with args. +set dummy rpm; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_mh_rpm_exists+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$mh_rpm_exists"; then + ac_cv_prog_mh_rpm_exists="$mh_rpm_exists" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_mh_rpm_exists="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_mh_rpm_exists" && ac_cv_prog_mh_rpm_exists="no " +fi +fi +mh_rpm_exists=$ac_cv_prog_mh_rpm_exists +if test -n "$mh_rpm_exists"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mh_rpm_exists" >&5 +$as_echo "$mh_rpm_exists" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "$mh_rpm_exists" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where rpms are built" >&5 +$as_echo_n "checking where rpms are built... " >&6; } + RPMTOPDIR=`rpm --eval "%{_topdir}"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RPMTOPDIR" >&5 +$as_echo "$RPMTOPDIR" >&6; } + +fi + + +# Extract the first word of "lsb_release", so it can be a program name with args. +set dummy lsb_release; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_lsb_release+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$lsb_release"; then + ac_cv_prog_lsb_release="$lsb_release" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_lsb_release="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_lsb_release" && ac_cv_prog_lsb_release="no" +fi +fi +lsb_release=$ac_cv_prog_lsb_release +if test -n "$lsb_release"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lsb_release" >&5 +$as_echo "$lsb_release" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "$ac_cv_prog_lsb_release" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking OS distribution name" >&5 +$as_echo_n "checking OS distribution name... " >&6; } + MYDISTRO="`lsb_release -i | cut -f 2`-`lsb_release -r | cut -f 2`" + MYDISTRO="`echo $MYDISTRO | sed \"s/ /_/g\"`" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MYDISTRO" >&5 +$as_echo "$MYDISTRO" >&6; } +else + case "$target" in + *freebsd* | *openbsd*) + MYDISTRO="`echo $target | cut -f3 -d-`" + ;; + *darwin*) + MYDISTRO="`echo $target | cut -f2-3 -d-`" + ;; + *pc-solaris2*) + MYDISTRO="`echo $target | cut -f2- -d-`" + ;; + *cygwin*) + MYDISTRO="`echo $target | cut -f2- -d-`" + ;; + *) + MYDISTRO="$target" + ;; + esac +fi + + + +# Check whether --enable-32bit was given. +if test "${enable_32bit+set}" = set; then : + enableval=$enable_32bit; bitflag32=yes +else + bitflag32=no +fi + +# Check whether --enable-64bit was given. +if test "${enable_64bit+set}" = set; then : + enableval=$enable_64bit; bitflag64=yes +else + bitflag64=no +fi + + +# +# Now do platform specific tests +# +gcc_64bit="-m64" +gcc_32bit="-m32" +on_osx="no" +osis64bit=no +bitflag="" +case "$target" in + *hp-hpux*) + ;; + *ibm-aix*) + rc=`lsconf -k | grep -c 64-bit` + if test $rc -eq 1; then + bitflag="64" + osis64bit=yes + fi + # + # AIX gcc has its own special bit switches :-( + # + gcc_64bit="-maix64" + gcc_32bit="-maix32" + ;; + *dec-osf4*) + ;; + *dec-osf*) + ;; + *sequent-dynix*) + ;; + i*86*solaris*) + ;; + *solaris*) + rc=`isainfo -v | grep -c 64-bit` + if test $rc -eq 1; then + bitflag="64" + osis64bit=yes + fi + ;; + sparc*sunos*) + ;; + *linux*|*kfreebsd*-gnu*) + mach="`uname -m`" + if test "$mach" = "x86_64" -o "$mach" = "ia86" -o "$mach" = "alpha" -o "$mach" = "ppc64" -o "$mach" = "s390x"; then + bitflag="64" + osis64bit=yes + fi + ;; + *-freebsd*) + mach="`uname -m`" + if test "$mach" = "amd64"; then + bitflag="64" + osis64bit=yes + fi + ;; + *nto-qnx*) + ;; + *qnx*) + ;; + *beos*) + ;; + *cygwin*) + ;; + *apple-darwin*) + on_osx="yes" + osx_64bit=`sysctl hw.cpu64bit_capable | cut -f2 -d' '` + if test $osx_64bit -eq 1; then + bitflag="64" + osis64bit=yes + fi + ;; +esac + +if test "x$bitflag32" = "xyes" -a "x$bitflag64" = "xyes"; then + as_fn_error $? "--enable-32bit and --enable-64bit flags cannot both be specified." "$LINENO" 5 +fi + +if test "x$bitflag64" = "xyes" -a "$osis64bit" = "no"; then + as_fn_error $? "--enable-64bit cannot be specified on non-64bit OS." "$LINENO" 5 +fi + +binarybitprefix="" +if test "x$bitflag32" = "xyes"; then + bitflag="32" + if test "$osis64bit" = "yes"; then + binarybitprefix="32" + fi +elif test "x$bitflag64" = "xyes"; then + bitflag="64" +fi +MACH_ARCH=`$ac_config_guess | cut -f1 -d-` + + + +if test "$on_osx" = "yes"; then + +valid_arch_flags="" +found_arch_flags="" + +# Check whether --with-arch was given. +if test "${with_arch+set}" = set; then : + withval=$with_arch; with_arch=$withval +else + with_arch=none +fi + +case "$with_arch" in + none) + arch_flags="" + ;; + all) + arch_flags="-arch ppc -arch ppc64 -arch x86_64 -arch i386" + ;; + 32bit) + arch_flags="-arch ppc -arch i386" + ;; + 64bit) + arch_flags="-arch ppc64 -arch x86_64" + ;; + intel) + arch_flags="-arch i386 -arch x86_64" + ;; + *) + arch_flags="-arch $with_arch" + ;; +esac + +valid_arch_flags="" +found_arch_flags="" +if test $on_osx = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which Mac OSX -arch flags are supported for universal binaries" >&5 +$as_echo_n "checking for which Mac OSX -arch flags are supported for universal binaries... " >&6; } + for a in $arch_flags; do + save_ldflags="$LDFLAGS" + LDFLAGS="$LDFLAGS -arch $a" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +exit(0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + valid_arch_flags="$valid_arch_flags -arch $a";found_arch_flags="$found_arch_flags $a" +else + a="$a" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_ldflags" + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_arch_flags" >&5 +$as_echo "$found_arch_flags" >&6; } + +fi + +else + if test "$ac_cv_prog_CC" = "gcc" -o "$ac_cv_prog_CC" = "g++"; then + if test "$bitflag" = "32"; then + CFLAGS="${CFLAGS} $gcc_32bit" + LDFLAGS="${LDFLAGS} $gcc_32bit" + elif test "$bitflag" = "64"; then + CFLAGS="${CFLAGS} $gcc_64bit" + LDFLAGS="${LDFLAGS} $gcc_64bit" + else + bitflag="32" + fi + elif test "$ac_cv_prog_CC" = "xlc" -o "$ac_cv_prog_CC" = "xlC"; then + if test "$bitflag" = "32"; then + CFLAGS="${CFLAGS} -q32" + LDFLAGS="${LDFLAGS} -q32" + elif test "$bitflag" = "64"; then + CFLAGS="${CFLAGS} -q64" + LDFLAGS="${LDFLAGS} -q64" + else + bitflag="32" + fi + fi +fi + +#libdir_change=yes +# Check whether --enable-libdir-change was given. +if test "${enable_libdir_change+set}" = set; then : + enableval=$enable_libdir_change; libdir_change=$enableval +else + libdir_change=yes +fi + +echo "libdir: $libdir_change" +if test "$libdir_change" = yes; then + if test "${libdir}" = '${exec_prefix}/lib'; then + myprefix=$prefix + + prefix_NONE= + exec_prefix_NONE= + test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix + test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix + eval ac_define_dir="\""$myprefix"\"" + eval ac_define_dir="\"$ac_define_dir\"" + MY_PREFIX="$ac_define_dir" + + cat >>confdefs.h <<_ACEOF +#define MY_PREFIX "$ac_define_dir" +_ACEOF + + test "$prefix_NONE" && prefix=NONE + test "$exec_prefix_NONE" && exec_prefix=NONE + + if test "${myprefix}" = "NONE"; then + myprefix="$ac_default_prefix" + fi + if test -d "${myprefix}/lib/x86_64-linux-gnu"; then + libdir64="${myprefix}/lib/x86_64-linux-gnu" + elif test -d "${myprefix}/lib64"; then + libdir64="${myprefix}/lib64" + else + libdir64="${myprefix}/lib" + fi + if test -d "${myprefix}/lib/i386-linux-gnu"; then + libdir32="${myprefix}/lib/i386-linux-gnu" + elif test -d "${myprefix}/lib32"; then + libdir32="${myprefix}/lib32" + else + libdir32="${myprefix}/lib" + fi + if test "$bitflag" = "64"; then + libdir="$libdir64" + else + libdir="$libdir32" + fi + else + libdir64="$libdir" + libdir32="$libdir" + fi +else + libdir64="$libdir" + libdir32="$libdir" +fi + + + + + +ac_config_files="$ac_config_files Makefile xcurses-config" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# 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 + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by PDCurses $as_me 3.4, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +PDCurses config.status 3.4 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "xcurses-config") CONFIG_FILES="$CONFIG_FILES xcurses-config" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + 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 +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# 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 || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + +$as_echo "#define PDC_MAX_SIGNALS /**/" >>confdefs.h + + + +$as_echo "#define HAVE_DECKEYSYM_H /**/" >>confdefs.h + + + +$as_echo "#define HAVE_SUNKEYSYM_H /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XF86KEYSYM_H /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XPM_H /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_DELETE /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_INSERT /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_END /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_DOWN /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_NEXT /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_LEFT /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_RIGHT /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_HOME /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_UP /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_PRIOR /**/" >>confdefs.h + + + +$as_echo "#define HAVE_XK_KP_BEGIN /**/" >>confdefs.h + + + +$as_echo "#define USE_XAW3D /**/" >>confdefs.h + + + +$as_echo "#define USE_NEXTAW /**/" >>confdefs.h + + + +$as_echo "#define XPOINTER_TYPEDEFED /**/" >>confdefs.h + diff --git a/3rd-party/PDCurses/x11/configure.ac b/3rd-party/PDCurses/x11/configure.ac new file mode 100644 index 0000000..3f5e1a0 --- /dev/null +++ b/3rd-party/PDCurses/x11/configure.ac @@ -0,0 +1,295 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT([PDCurses], [3.4], [wmcbrine@gmail.com], [PDCurses]) +AC_CONFIG_SRCDIR([pdcx11.h]) + +AC_SUBST(prefix) + +AC_PROG_CC + +AC_CONFIG_HEADER(config.h) +dnl Checks for system first +AC_CANONICAL_SYSTEM([]) + +on_qnx=no +on_osx=no +case "$target" in + *hp-hpux*) + SYS_DEFS="-D_HPUX_SOURCE" + ;; + *ibm-aix*) + SYS_DEFS="-D_ALL_SOURCE" + ;; + *dec-osf*) + SYS_DEFS="-D_XOPEN_SOURCE_EXTENDED" + ;; + *pc-sco*) + SYS_DEFS="-UM_XENIX -b elf" + ;; + *qnx*) + on_qnx=yes + SYS_DEFS="-Q" + ;; + *apple-darwin*) + on_osx=yes + MH_CHECK_OSX_ARCH() + SYS_DEFS="$valid_arch_flags" + EEXTRA="$valid_arch_flags" + ;; + *) + ;; +esac +AC_SUBST(SYS_DEFS) +AC_SUBST(EEXTRA) + +MH_CHECK_MAX_SIGNALS(NSIG __sys_nsig) + +dnl Check for other programs. +AC_PROG_LN_S +AC_PROG_RANLIB +AC_PROG_INSTALL +AC_PROG_MAKE_SET + +dnl ensure that the system has System V IPC support +MH_IPC + +if test $ac_cv_header_stdc != yes; then + AC_MSG_ERROR([Need ANSI C headers]) +fi + +dnl Checks for libraries. + +dnl we check for dlfcn.h or dl.h so we know if we can build shared objects +AC_CHECK_HEADERS(fcntl.h \ + sys/time.h \ + sys/select.h \ + dlfcn.h \ + dl.h +) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_TIME +MH_CHECK_LIB(socket nls) +AC_SUBST(MH_EXTRA_LIBS) +MH_CHECK_CC_O + +dnl Checks for library functions. +AC_TYPE_SIGNAL +AC_CHECK_FUNCS(vsscanf usleep poll vsnprintf) + +dnl Check for X includes and X libraries +AC_PATH_X +MH_CHECK_X_INC +MH_CHECK_X_LIB +MH_CHECK_X_HEADERS(DECkeysym.h Sunkeysym.h xpm.h XF86keysym.h) +MH_CHECK_X_KEYDEFS(XK_KP_Delete XK_KP_Insert XK_KP_End XK_KP_Down XK_KP_Next \ + XK_KP_Left XK_KP_Right XK_KP_Home XK_KP_Up XK_KP_Prior XK_KP_Begin) +MH_CHECK_X_TYPEDEF(XPointer) +dnl +dnl extra for xpm library +if test $ac_cv_header_xpm_h = yes; then + MH_XLIBS="$MH_XLIBS -lXpm" +fi +dnl ---------- allow --enable-debug to compile in debug mode --------- +AC_ARG_ENABLE(debug, + [ --enable-debug turn on debugging], + [with_debug=$enableval], + [with_debug=no], +) +cflags_g="`echo $CFLAGS | grep -c '\-g'`" +cflags_O="`echo $CFLAGS | grep -c '\-O'`" + +if test "$with_debug" = yes; then + if test "$cflags_g" = "0"; then + CFLAGS="${CFLAGS} -g" + fi + if test "$cflags_O" != "0"; then + CFLAGS="`echo ${CFLAGS} | sed -e s/-O.//`" + fi + CFLAGS="${CFLAGS} -DPDCDEBUG" +else + if test "$cflags_O" = "0"; then + CFLAGS="${CFLAGS} -O" + fi + if test "$cflags_g" != "0"; then + CFLAGS="`echo ${CFLAGS} | sed -e s/-g//`" + fi +fi +if test "$ac_cv_prog_CC" = "gcc"; then + if test "$with_debug" = yes; then + CFLAGS="${CFLAGS} -Wall" + else + CFLAGS="-O2 -Wall -fomit-frame-pointer" + fi +fi +if test "$on_qnx" = yes; then + if test "$with_debug" = yes; then + CFLAGS="-g" + else + CFLAGS="-Otax" + fi +fi + +dnl --------------- check for wide character support ----------------- +dnl allow --enable-widec to include wide character support +AC_ARG_ENABLE(widec, + [ --enable-widec include support for wide characters], + [with_widec=$enableval], + [with_widec=no], +) +PDC_WIDE="" +if test "$with_widec" = yes; then + PDC_WIDE="-DPDC_WIDE" + SYS_DEFS="$SYS_DEFS $PDC_WIDE" +fi +AC_SUBST(PDC_WIDE) + +dnl -------------------- check for XIM support ----------------------- +dnl allow --enable-xim to include XIM support +AC_ARG_ENABLE(xim, + [ --enable-xim include support for XIM], + [with_xim=$enableval], + [with_xim=no], +) +if test "$with_xim" = yes; then + SYS_DEFS="$SYS_DEFS -DPDC_XIM" +fi + +dnl ------------------------ force UTF-8? ---------------------------- +dnl allow --enable-force-utf8 to override locale settings +AC_ARG_ENABLE(force-utf8, + [ --enable-force-utf8 override locale settings; use UTF-8], + [force_utf8=$enableval], + [force_utf8=no], +) +if test "$force_utf8" = yes; then + SYS_DEFS="$SYS_DEFS -DPDC_FORCE_UTF8" +fi + +dnl ----------------- check for Purify support ----------------------- +dnl allow --enable-purify to enable linking with Purify +AC_ARG_ENABLE(purify, + [ --enable-purify link with Purify (TM)], + [with_purify=$enableval], + [with_purify=no], +) +if test "$with_purify" = yes; then + PURIFY="purify" +else + PURIFY="" +fi +AC_SUBST(PURIFY) + +dnl --------------------- check for Xaw3d library -------------------- +dnl allow --with-xaw3d to link with PDCurses +AC_ARG_WITH(xaw3d, + [ --with-xaw3d link with Xaw3d], + [with_xaw3d=$withval], + [with_xaw3d=no], +) +if test "$with_xaw3d" = yes; then + AC_DEFINE([USE_XAW3D], [1], + [Define if you want to use Xaw3d library] + ) +fi + +dnl --------------------- check for neXtaw library ------------------- +dnl allow --with-nextaw to link with PDCurses +AC_ARG_WITH(nextaw, + [ --with-nextaw link with neXtaw], + [with_nextaw=$withval], + [with_nextaw=no], +) +if test "$with_nextaw" = yes; then + AC_DEFINE([USE_NEXTAW], [1], + [Define if you want to use neXtaw library] + ) +fi + +dnl -------------- check how to make shared libraries ---------------- +dnl Force the ability of shared library usage +USE_ABI=yes +MH_SHARED_LIBRARY(XCurses) + +MH_CHECK_RPM() +MH_GET_DISTRO_NAME() +MH_CHECK_ARCH + +AC_CONFIG_FILES([Makefile xcurses-config]) +AC_OUTPUT + +AC_DEFINE([PDC_MAX_SIGNALS], [], + [Define as the system defined limit for number of signals] +) + +AC_DEFINE([HAVE_DECKEYSYM_H], [], + [Define if you have the header file] +) + +AC_DEFINE([HAVE_SUNKEYSYM_H], [], + [Define if you have the header file] +) + +AC_DEFINE([HAVE_XF86KEYSYM_H], [], + [Define if you have the header file] +) + +AC_DEFINE([HAVE_XPM_H], [], + [Define if you have the header file] +) + +AC_DEFINE([HAVE_XK_KP_DELETE], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_INSERT], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_END], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_DOWN], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_NEXT], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_LEFT], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_RIGHT], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_HOME], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_UP], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_PRIOR], [], + [Define if you have this defined in ] +) + +AC_DEFINE([HAVE_XK_KP_BEGIN], [], + [Define if you have this defined in ] +) + +AC_DEFINE([USE_XAW3D], [], + [Define if you want to use Xaw3d library] +) + +AC_DEFINE([USE_NEXTAW], [], + [Define if you want to use neXtaw library] +) + +AC_DEFINE([XPOINTER_TYPEDEFED], [], + [Define XPointer is typedefed in X11/Xlib.h] +) diff --git a/3rd-party/PDCurses/x11/debian/changelog b/3rd-party/PDCurses/x11/debian/changelog new file mode 100644 index 0000000..fb284d3 --- /dev/null +++ b/3rd-party/PDCurses/x11/debian/changelog @@ -0,0 +1,6 @@ +pdcurses (3.4-1) unstable; urgency=low + + * Initial deb package + * See HISTORY file for full changelog + + -- Mark Hessling Mon, 22 Jul 2013 12:00:00 +1000 diff --git a/3rd-party/PDCurses/x11/debian/compat b/3rd-party/PDCurses/x11/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/3rd-party/PDCurses/x11/debian/compat @@ -0,0 +1 @@ +5 diff --git a/3rd-party/PDCurses/x11/debian/control b/3rd-party/PDCurses/x11/debian/control new file mode 100644 index 0000000..7b3740a --- /dev/null +++ b/3rd-party/PDCurses/x11/debian/control @@ -0,0 +1,11 @@ +Source: pdcurses +Section: devel +Priority: optional +Maintainer: Mark Hessling +Build-Depends: debhelper (>= 5), autotools-dev +Standards-Version: 3.7.2 + +Package: pdcurses +Architecture: any +Depends: ${shlibs:Depends} +Description: Public Domand CUrses library for multiple platforms. diff --git a/3rd-party/PDCurses/x11/debian/copyright b/3rd-party/PDCurses/x11/debian/copyright new file mode 100644 index 0000000..fb7a485 --- /dev/null +++ b/3rd-party/PDCurses/x11/debian/copyright @@ -0,0 +1,27 @@ +This package was debianized by Mark Hessling on +Mon, 22 Jul 2013 13:18:35 +1000. + +Upstream Author: + + William Mcbrine + +Copyright: + + Public Domain + +License: + + The core package is in the public domain, but small portions of PDCurses + are subject to copyright under various licenses. Each directory + contains a README file, with a section titled "Distribution Status" + which describes the status of the files in that directory. + + If you use PDCurses in an application, an acknowledgement would be + appreciated, but is not mandatory. If you make corrections or + enhancements to PDCurses, please forward them to the current maintainer + for the benefit of other users. + + This software is provided AS IS with NO WARRANTY whatsoever. + +The Debian packaging is Public Domain + diff --git a/3rd-party/PDCurses/x11/debian/rules b/3rd-party/PDCurses/x11/debian/rules new file mode 100644 index 0000000..7e73654 --- /dev/null +++ b/3rd-party/PDCurses/x11/debian/rules @@ -0,0 +1,98 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + + +config.status: configure + dh_testdir + # Add here commands to configure the package. +ifneq "$(wildcard /usr/share/misc/config.sub)" "" + cp -f /usr/share/misc/config.sub config.sub +endif +ifneq "$(wildcard /usr/share/misc/config.guess)" "" + cp -f /usr/share/misc/config.guess config.guess +endif + ./configure --enable-libdir-change=no --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" --enable-force-utf8 --enable-widec + + +build: build-stamp + +build-stamp: config.status + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) distclean + rm -f config.sub config.guess + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/pdcurses + $(MAKE) prefix=$(CURDIR)/debian/pdcurses/usr install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/clients/gsat-1.1.0/install-sh b/3rd-party/PDCurses/x11/install-sh old mode 100755 new mode 100644 similarity index 51% rename from clients/gsat-1.1.0/install-sh rename to 3rd-party/PDCurses/x11/install-sh index e9de238..fb9e848 --- a/clients/gsat-1.1.0/install-sh +++ b/3rd-party/PDCurses/x11/install-sh @@ -1,4 +1,4 @@ -#!/bin/sh +#! /bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). @@ -27,6 +27,9 @@ # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. +# +# Modified 1 Feb 2000 MHES to cater for mkdir -p +# doit="${DOITPROG-}" @@ -50,109 +53,109 @@ chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" +mkdircmd="$mkdirprog -p" 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;; + -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 "install: no input file specified" - exit 1 + echo "install: no input file specified" + exit 1 else - true + true fi if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=mkdir - fi + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + 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 +# might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + 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 - true - fi + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi fi ## this sed command emulates the dirname command @@ -163,7 +166,7 @@ dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then -defaultIFS=' +defaultIFS=' ' IFS="${IFS-${defaultIFS}}" @@ -176,58 +179,58 @@ IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift + pathcomp="${pathcomp}${1}" + shift - if [ ! -d "${pathcomp}" ] ; + if [ ! -d "${pathcomp}" ] ; then - $mkdirprog "${pathcomp}" - else - true - fi + $mkdircmd "${pathcomp}" + else + true + fi - pathcomp="${pathcomp}/" + pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then - $doit $instcmd $dst && + $doit $instcmd $dst && - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; 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 + 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 - true - fi + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi # Make a temp file name in the proper directory. - dsttmp=$dstdir/#inst.$$# + dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name - $doit $instcmd $src $dsttmp && + $doit $instcmd $src $dsttmp && - trap "rm -f ${dsttmp}" 0 && + trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits @@ -235,17 +238,16 @@ else # 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 true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile fi && - exit 0 diff --git a/3rd-party/PDCurses/x11/little_icon.xbm b/3rd-party/PDCurses/x11/little_icon.xbm new file mode 100644 index 0000000..d3e777e --- /dev/null +++ b/3rd-party/PDCurses/x11/little_icon.xbm @@ -0,0 +1,14 @@ +#define little_icon_width 32 +#define little_icon_height 32 +static unsigned char little_icon_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x30, 0x00, 0x00, 0xfc, 0x31, 0x00, 0x00, 0x8c, 0x33, 0x00, + 0x00, 0x0c, 0x33, 0x00, 0x00, 0x0c, 0x33, 0x00, 0x00, 0x8c, 0x33, 0x00, + 0x00, 0xcc, 0x39, 0x00, 0x00, 0xec, 0x3c, 0x00, 0x00, 0x7c, 0x3e, 0x00, + 0x00, 0x3c, 0x37, 0x00, 0x00, 0x9c, 0x33, 0x00, 0x00, 0xcc, 0x31, 0x00, + 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x31, 0x00, + 0x00, 0x8c, 0x3f, 0x00, 0x00, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2a, 0xc6, 0x18, 0x52, 0x5a, 0x29, 0x25, + 0x42, 0x0a, 0x21, 0x05, 0x42, 0x0a, 0xe6, 0x18, 0x42, 0x0a, 0x28, 0x20, + 0x52, 0x0a, 0x29, 0x25, 0x8c, 0x09, 0xc6, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/3rd-party/PDCurses/x11/ncurses_cfg.h b/3rd-party/PDCurses/x11/ncurses_cfg.h new file mode 100644 index 0000000..8b28ff7 --- /dev/null +++ b/3rd-party/PDCurses/x11/ncurses_cfg.h @@ -0,0 +1,45 @@ +/* This file is only used with the ncurses test programs. + * + * Have ncurses-5.6 unpacked in your $(HOME) (you don't need to build + * it), or edit ncurses_testdir appropriately in the Makefile. Configure + * and build PDCurses for X11. (Sorry, other ports won't work yet.) + * Change to this directory, and: + * + * "make ncurses_tests" to start. + * "make ncurses_clean" when you're done. + * + * Builds: bs gdc hanoi knight tclock ncurses + */ + +#define NCURSES_MOUSE_VERSION 2 + +#include "../config.h" +#include + +#define ExitProgram exit + +#define HAVE_CURSES_VERSION 1 +#define HAVE_GETBEGX 1 +#define HAVE_GETCURX 1 +#define HAVE_GETMAXX 1 +#define HAVE_GETNSTR 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_GETWIN 1 +#define HAVE_LIBPANEL 1 +#define HAVE_LOCALE_H 1 +#define HAVE_NAPMS 1 +#define HAVE_PANEL_H 1 +#define HAVE_PUTWIN 1 +#define HAVE_SLK_COLOR 1 +#define HAVE_SLK_INIT 1 +#define HAVE_WRESIZE 1 + +#ifdef PDC_WIDE +# define USE_WIDEC_SUPPORT 1 +#endif + +/* Fool ncurses.c so it gives us all the tests, and doesn't redefine + ACS_ chars +*/ + +#define NCURSES_VERSION PDCURSES diff --git a/3rd-party/PDCurses/x11/pdcclip.c b/3rd-party/PDCurses/x11/pdcclip.c new file mode 100644 index 0000000..20de260 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcclip.c @@ -0,0 +1,173 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +#include + +/*man-start************************************************************** + +clipboard +--------- + +### Synopsis + + int PDC_getclipboard(char **contents, long *length); + int PDC_setclipboard(const char *contents, long length); + int PDC_freeclipboard(char *contents); + int PDC_clearclipboard(void); + +### Description + + PDC_getclipboard() gets the textual contents of the system's + clipboard. This function returns the contents of the clipboard + in the contents argument. It is the responsibilitiy of the + caller to free the memory returned, via PDC_freeclipboard(). + The length of the clipboard contents is returned in the length + argument. + + PDC_setclipboard copies the supplied text into the system's + clipboard, emptying the clipboard prior to the copy. + + PDC_clearclipboard() clears the internal clipboard. + +### Return Values + + indicator of success/failure of call. + PDC_CLIP_SUCCESS the call was successful + PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for + the clipboard contents + PDC_CLIP_EMPTY the clipboard contains no text + PDC_CLIP_ACCESS_ERROR no clipboard support + +### Portability + X/Open BSD SYS V + PDC_getclipboard - - - + PDC_setclipboard - - - + PDC_freeclipboard - - - + PDC_clearclipboard - - - + +**man-end****************************************************************/ + +int PDC_getclipboard(char **contents, long *length) +{ +#ifdef PDC_WIDE + wchar_t *wcontents; +#endif + int result = 0; + int len; + + PDC_LOG(("PDC_getclipboard() - called\n")); + + XCursesInstructAndWait(CURSES_GET_SELECTION); + + if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0) + XCursesExitCursesProcess(5, "exiting from PDC_getclipboard"); + + if (result == PDC_CLIP_SUCCESS) + { + if (XC_read_socket(xc_display_sock, &len, sizeof(int)) < 0) + XCursesExitCursesProcess(5, "exiting from PDC_getclipboard"); +#ifdef PDC_WIDE + wcontents = malloc((len + 1) * sizeof(wchar_t)); + *contents = malloc(len * 3 + 1); + + if (!wcontents || !*contents) +#else + *contents = malloc(len + 1); + + if (!*contents) +#endif + XCursesExitCursesProcess(6, "exiting from PDC_getclipboard - " + "synchronization error"); + + if (len) + { + if (XC_read_socket(xc_display_sock, +#ifdef PDC_WIDE + wcontents, len * sizeof(wchar_t)) < 0) +#else + *contents, len) < 0) +#endif + XCursesExitCursesProcess(5, "exiting from PDC_getclipboard"); + } + +#ifdef PDC_WIDE + wcontents[len] = 0; + len = PDC_wcstombs(*contents, wcontents, len * 3); + free(wcontents); +#endif + (*contents)[len] = '\0'; + *length = len; + } + + return result; +} + +int PDC_setclipboard(const char *contents, long length) +{ +#ifdef PDC_WIDE + wchar_t *wcontents; +#endif + int rc; + + PDC_LOG(("PDC_setclipboard() - called\n")); + +#ifdef PDC_WIDE + wcontents = malloc((length + 1) * sizeof(wchar_t)); + if (!wcontents) + return PDC_CLIP_MEMORY_ERROR; + + length = PDC_mbstowcs(wcontents, contents, length); +#endif + XCursesInstruct(CURSES_SET_SELECTION); + + /* Write, then wait for X to do its stuff; expect return code. */ + + if (XC_write_socket(xc_display_sock, &length, sizeof(long)) >= 0) + { + if (XC_write_socket(xc_display_sock, +#ifdef PDC_WIDE + wcontents, length * sizeof(wchar_t)) >= 0) + { + free(wcontents); +#else + contents, length) >= 0) + { +#endif + if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0) + return rc; + } + } + + XCursesExitCursesProcess(5, "exiting from PDC_setclipboard"); + + return PDC_CLIP_ACCESS_ERROR; /* not reached */ +} + +int PDC_freeclipboard(char *contents) +{ + PDC_LOG(("PDC_freeclipboard() - called\n")); + + free(contents); + return PDC_CLIP_SUCCESS; +} + +int PDC_clearclipboard(void) +{ + int rc; + long len = 0; + + PDC_LOG(("PDC_clearclipboard() - called\n")); + + XCursesInstruct(CURSES_CLEAR_SELECTION); + + /* Write, then wait for X to do its stuff; expect return code. */ + + if (XC_write_socket(xc_display_sock, &len, sizeof(long)) >= 0) + if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0) + return rc; + + XCursesExitCursesProcess(5, "exiting from PDC_clearclipboard"); + + return PDC_CLIP_ACCESS_ERROR; /* not reached */ +} diff --git a/3rd-party/PDCurses/x11/pdcdisp.c b/3rd-party/PDCurses/x11/pdcdisp.c new file mode 100644 index 0000000..39c1a83 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcdisp.c @@ -0,0 +1,85 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +#include + +#ifdef CHTYPE_LONG + +#ifdef PDC_WIDE + #define USE_UNICODE_ACS_CHARS 1 +#else + #define USE_ISO8859_CHARSET +#endif + +#include "acs_defs.h" + +#endif + +int PDC_display_cursor(int oldrow, int oldcol, int newrow, int newcol, + int visibility) +{ + char buf[30]; + int idx, pos; + + PDC_LOG(("%s:PDC_display_cursor() - called: NEW row %d col %d, vis %d\n", + XCLOGMSG, newrow, newcol, visibility)); + + if (visibility == -1) + { + /* Only send the CURSES_DISPLAY_CURSOR message, no data */ + + idx = CURSES_DISPLAY_CURSOR; + memcpy(buf, &idx, sizeof(int)); + idx = sizeof(int); + } + else + { + idx = CURSES_CURSOR; + memcpy(buf, &idx, sizeof(int)); + + idx = sizeof(int); + pos = oldrow + (oldcol << 8); + memcpy(buf + idx, &pos, sizeof(int)); + + idx += sizeof(int); + pos = newrow + (newcol << 8); + memcpy(buf + idx, &pos, sizeof(int)); + + idx += sizeof(int); + } + + if (XC_write_socket(xc_display_sock, buf, idx) < 0) + XCursesExitCursesProcess(1, "exiting from PDC_display_cursor"); + + return OK; +} + +/* position hardware cursor at (y, x) */ + +void PDC_gotoyx(int row, int col) +{ + PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col)); + + PDC_display_cursor(SP->cursrow, SP->curscol, row, col, SP->visibility); +} + +/* update the given physical line to look like the corresponding line in + curscr */ + +void PDC_transform_line(int lineno, int x, int len, const chtype *srcp) +{ + PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno)); + + XC_get_line_lock(lineno); + + memcpy(Xcurscr + XCURSCR_Y_OFF(lineno) + (x * sizeof(chtype)), srcp, + len * sizeof(chtype)); + + *(Xcurscr + XCURSCR_START_OFF + lineno) = x; + *(Xcurscr + XCURSCR_LENGTH_OFF + lineno) = len; + + XC_release_line_lock(lineno); + + XCursesInstructAndWait(CURSES_REFRESH); +} diff --git a/3rd-party/PDCurses/x11/pdcgetsc.c b/3rd-party/PDCurses/x11/pdcgetsc.c new file mode 100644 index 0000000..462d468 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcgetsc.c @@ -0,0 +1,28 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +/* return width of screen/viewport */ + +int PDC_get_columns(void) +{ + PDC_LOG(("PDC_get_columns() - called\n")); + + return XCursesCOLS; +} + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ + return 0; +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ + PDC_LOG(("PDC_get_rows() - called\n")); + + return XCursesLINES; +} diff --git a/3rd-party/PDCurses/x11/pdckbd.c b/3rd-party/PDCurses/x11/pdckbd.c new file mode 100644 index 0000000..cc594b2 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdckbd.c @@ -0,0 +1,109 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +/*man-start************************************************************** + +pdckbd +------ + +### Synopsis + + unsigned long PDC_get_input_fd(void); + +### Description + + PDC_get_input_fd() returns the file descriptor that PDCurses + reads its input from. It can be used for select(). + +### Portability + X/Open BSD SYS V + PDC_get_input_fd - - - + +**man-end****************************************************************/ + +/* check if a key or mouse event is waiting */ + +bool PDC_check_key(void) +{ + struct timeval socket_timeout = {0}; + int s; + + /* Is something ready to be read on the socket ? Must be a key. */ + + FD_ZERO(&xc_readfds); + FD_SET(xc_key_sock, &xc_readfds); + + if ((s = select(FD_SETSIZE, (FD_SET_CAST)&xc_readfds, NULL, + NULL, &socket_timeout)) < 0) + XCursesExitCursesProcess(3, "child - exiting from " + "PDC_check_key select failed"); + + PDC_LOG(("%s:PDC_check_key() - returning %s\n", XCLOGMSG, + s ? "TRUE" : "FALSE")); + + return !!s; +} + +/* return the next available key or mouse event */ + +int PDC_get_key(void) +{ + unsigned long newkey = 0; + int key = 0; + + if (XC_read_socket(xc_key_sock, &newkey, sizeof(unsigned long)) < 0) + XCursesExitCursesProcess(2, "exiting from PDC_get_key"); + + pdc_key_modifiers = (newkey >> 24) & 0xFF; + key = (int)(newkey & 0x00FFFFFF); + + if (key == KEY_MOUSE && SP->key_code) + { + if (XC_read_socket(xc_key_sock, &pdc_mouse_status, + sizeof(MOUSE_STATUS)) < 0) + XCursesExitCursesProcess(2, "exiting from PDC_get_key"); + } + + PDC_LOG(("%s:PDC_get_key() - key %d returned\n", XCLOGMSG, key)); + + return key; +} + +unsigned long PDC_get_input_fd(void) +{ + PDC_LOG(("PDC_get_input_fd() - called\n")); + + return xc_key_sock; +} + +void PDC_set_keyboard_binary(bool on) +{ + PDC_LOG(("PDC_set_keyboard_binary() - called\n")); +} + +/* discard any pending keyboard or mouse input -- this is the core + routine for flushinp() */ + +void PDC_flushinp(void) +{ + PDC_LOG(("PDC_flushinp() - called\n")); + + while (PDC_check_key()) + PDC_get_key(); +} + +bool PDC_has_mouse(void) +{ + return TRUE; +} + +int PDC_mouse_set(void) +{ + return OK; +} + +int PDC_modifiers_set(void) +{ + return OK; +} diff --git a/3rd-party/PDCurses/x11/pdcscrn.c b/3rd-party/PDCurses/x11/pdcscrn.c new file mode 100644 index 0000000..32b15d6 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcscrn.c @@ -0,0 +1,258 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +/* special purpose function keys */ + +static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 0, 0, 0, 0 }; + +/* COLOR_PAIR to attribute encoding table. */ + +short *xc_atrtab = (short *)NULL; + +/* close the physical screen */ + +void PDC_scr_close(void) +{ + PDC_LOG(("PDC_scr_close() - called\n")); +} + +void PDC_scr_free(void) +{ + XCursesExit(); + + xc_atrtab = (short *)NULL; +} + +/* open the physical screen -- allocate SP, miscellaneous intialization */ + +int PDC_scr_open(int argc, char **argv) +{ + extern bool sb_started; + + PDC_LOG(("PDC_scr_open() - called\n")); + + if ((XCursesInitscr(argc, argv) == ERR) || !SP) + return ERR; + + SP->cursrow = SP->curscol = 0; + SP->orig_attr = FALSE; + SP->sb_on = sb_started; + SP->sb_total_y = 0; + SP->sb_viewport_y = 0; + SP->sb_cur_y = 0; + SP->sb_total_x = 0; + SP->sb_viewport_x = 0; + SP->sb_cur_x = 0; + + return OK; +} + +/* the core of resize_term() */ + +int PDC_resize_screen(int nlines, int ncols) +{ + PDC_LOG(("PDC_resize_screen() - called. Lines: %d Cols: %d\n", + nlines, ncols)); + + if( !stdscr) /* window hasn't been created yet; we're */ + { /* specifying its size before doing so */ + XCursesLINES = nlines; + XCursesCOLS = ncols; + return OK; + } + + if (nlines || ncols || !SP->resized) + return ERR; + + shmdt((char *)Xcurscr); + XCursesInstructAndWait(CURSES_RESIZE); + + if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, + SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0) + { + perror("Cannot allocate shared memory for curscr"); + kill(xc_otherpid, SIGKILL); + return ERR; + } + + XCursesLINES = SP->lines; + XCursesCOLS = SP->cols; + + PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d SP->lines %d " + "SP->cols %d\n", XCLOGMSG, shmid_Xcurscr, + shmkey_Xcurscr, SP->lines, SP->cols)); + + Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0); + xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF); + + SP->resized = FALSE; + + return OK; +} + +void PDC_reset_prog_mode(void) +{ + PDC_LOG(("PDC_reset_prog_mode() - called.\n")); +} + +void PDC_reset_shell_mode(void) +{ + PDC_LOG(("PDC_reset_shell_mode() - called.\n")); +} + +void PDC_restore_screen_mode(int i) +{ +} + +void PDC_save_screen_mode(int i) +{ +} + +void PDC_init_pair(short pair, short fg, short bg) +{ + xc_atrtab[pair * 2] = fg; + xc_atrtab[pair * 2 + 1] = bg; +} + +int PDC_pair_content(short pair, short *fg, short *bg) +{ + *fg = xc_atrtab[pair * 2]; + *bg = xc_atrtab[pair * 2 + 1]; + + return OK; +} + +bool PDC_can_change_color(void) +{ + return TRUE; +} + +int PDC_color_content(short color, short *red, short *green, short *blue) +{ + XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF); + + tmp->pixel = color; + + XCursesInstructAndWait(CURSES_GET_COLOR); + + *red = ((double)(tmp->red) * 1000 / 65535) + 0.5; + *green = ((double)(tmp->green) * 1000 / 65535) + 0.5; + *blue = ((double)(tmp->blue) * 1000 / 65535) + 0.5; + + return OK; +} + +int PDC_init_color(short color, short red, short green, short blue) +{ + XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF); + + tmp->pixel = color; + + tmp->red = ((double)red * 65535 / 1000) + 0.5; + tmp->green = ((double)green * 65535 / 1000) + 0.5; + tmp->blue = ((double)blue * 65535 / 1000) + 0.5; + + XCursesInstructAndWait(CURSES_SET_COLOR); + + return OK; +} + +/*man-start************************************************************** + +Function keys +------------- + +### Synopsis + + int PDC_set_function_key( const unsigned function, const int new_key); + +### Description + + Allows one to set a 'shut down' key, and reassign hotkeys used for + pasting from the clipboard and enlarging and decreasing the font size, + and for using the font selection dialog (on platforms where these + things are possible and implemented). For example, calling + + PDC_set_function_key( FUNCTION_KEY_SHUT_DOWN, ALT_Q); + + would reset PDCurses such that, if the user clicks on the 'close' box, + Alt-Q would be added to the key queue. This would give the app the + opportunity to shut things down gracefully, perhaps asking "are you + sure", and/or "save changes or discard or cancel", rather than just + having the window close (the default behavior). + + Similarly, one can set FUNCTION_KEY_ABORT to a key which, when pressed, + will cause the program to abort gracelessly (no key returned to the + application). One would normally use this to enable/disable Ctrl-C or + Ctrl-Break. + +### Return Value + + Returns key code previously set for that function, or -1 if the + function does not actually exist. + +### Portability + + PDCurses-only function. + +**man-end****************************************************************/ + +int PDC_set_function_key( const unsigned function, const int new_key) +{ + int old_key = -1; + + if (function < PDC_MAX_FUNCTION_KEYS) + { + old_key = PDC_shutdown_key[function]; + PDC_shutdown_key[function] = new_key; + } + if (function == FUNCTION_KEY_SHUT_DOWN) + { + SP->exit_key = new_key; + } + return(old_key); +} + + +/*man-start************************************************************** + +Resize limits +------------- + +### Synopsis + + void PDC_set_resize_limits( const int new_min_lines, + const int new_max_lines, + const int new_min_cols, + const int new_max_cols); + +### Description + + For platforms supporting resizable windows (SDLx, WinGUI, X11). Some + programs may be unprepared for a resize event; for these, calling + this function with the max and min limits equal ensures that no + user resizing can be done. Other programs may require at least a + certain number, and/or no more than a certain number, of columns + and/or lines. + +### Portability + + PDCurses-only function. + +**man-end****************************************************************/ + +/* Note that at least at present, only WinGUI pays any attention to +resize limits. */ + +int PDC_min_lines = 25, PDC_min_cols = 80; +int PDC_max_lines = 25, PDC_max_cols = 80; + +void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines, + const int new_min_cols, const int new_max_cols) +{ + PDC_min_lines = max( new_min_lines, 2); + PDC_max_lines = max( new_max_lines, PDC_min_lines); + PDC_min_cols = max( new_min_cols, 2); + PDC_max_cols = max( new_max_cols, PDC_min_cols); +} diff --git a/3rd-party/PDCurses/x11/pdcsetsc.c b/3rd-party/PDCurses/x11/pdcsetsc.c new file mode 100644 index 0000000..c7c7a41 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcsetsc.c @@ -0,0 +1,95 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +#include + +/*man-start************************************************************** + +pdcsetsc +-------- + +### Synopsis + + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + +### Description + + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + +### Portability + X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + +int PDC_curs_set(int visibility) +{ + int ret_vis = SP->visibility; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + if (visibility != -1) + SP->visibility = visibility; + + PDC_display_cursor(SP->cursrow, SP->curscol, SP->cursrow, + SP->curscol, visibility); + + return ret_vis; +} + +void PDC_set_title(const char *title) +{ + int len; + + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); + + len = strlen(title) + 1; /* write nul character */ + + XCursesInstruct(CURSES_TITLE); + + if (XC_write_display_socket_int(len) >= 0) + if (XC_write_socket(xc_display_sock, title, len) >= 0) + return; + + XCursesExitCursesProcess(1, "exiting from PDC_set_title"); +} + + /* If PDC_really_blinking is TRUE, then text with the A_BLINK */ + /* attribute will actually blink. Otherwise, such text will */ + /* be shown with higher color intensity (the R, G, and B values */ + /* are averaged with pure white). See pdcdisp.c for details of */ + /* how this is done. */ + /* Unlike on other PDCurses platforms, this doesn't require */ + /* decreasing the number of colors by half. Also, the choice */ + /* indicated by 'blinkon' will actually be respected, so OK is */ + /* always returned (most platforms don't actually support */ + /* blinking). */ + /* The default behavior is to not show A_BLINK text as */ + /* blinking, i.e., PDC_really_blinking = FALSE. Blinking text */ + /* can be pretty annoying to some people. You should probably */ + /* call PDC_set_blink( TRUE) only if there is something to which */ + /* the user _must_ pay attention; say, "the nuclear reactor */ + /* is about to melt down". Otherwise, the bolder, brighter */ + /* text should be attention-getting enough. */ + +int PDC_set_blink(bool blinkon) +{ + if (pdc_color_started) /* We've got 256 colors in this version */ + COLORS = 256; + + XCursesInstruct( blinkon ? CURSES_BLINK_ON : CURSES_BLINK_OFF); + return OK; +} diff --git a/3rd-party/PDCurses/x11/pdcutil.c b/3rd-party/PDCurses/x11/pdcutil.c new file mode 100644 index 0000000..0852db3 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcutil.c @@ -0,0 +1,52 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +#if defined(HAVE_POLL) && !defined(HAVE_USLEEP) +# include +#endif + +void PDC_beep(void) +{ + PDC_LOG(("PDC_beep() - called\n")); + + XCursesInstruct(CURSES_BELL); +} + +void PDC_napms(int ms) +{ + PDC_LOG(("PDC_napms() - called: ms=%d\n", ms)); + +#if defined(HAVE_USLEEP) + + usleep(1000 * ms); + +#elif defined(HAVE_POLL) + { + struct pollfd fd; + fd.fd = -1; + fd.events = 0; + poll(&fd, 1, ms); + } +#endif +} + +const char *PDC_sysname(void) +{ + return "X11"; +} + +PDC_version_info PDC_version = { PDC_PORT_WINGUI, + PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE, + sizeof( chtype), +#ifdef PDC_WIDE + TRUE, +#else + FALSE, +#endif +#ifdef PDC_FORCE_UTF8 + TRUE, +#else + FALSE, +#endif + }; diff --git a/3rd-party/PDCurses/x11/pdcx11.c b/3rd-party/PDCurses/x11/pdcx11.c new file mode 100644 index 0000000..f901af5 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcx11.c @@ -0,0 +1,316 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +#include +#include + +/*** Functions that are called by both processes ***/ + +unsigned char *Xcurscr; + +int XCursesProcess = 1; +int shmidSP; +int shmid_Xcurscr; +int shmkeySP; +int shmkey_Xcurscr; +int xc_otherpid; +int XCursesLINES = 24; +int XCursesCOLS = 80; +int xc_display_sock; +int xc_key_sock; +int xc_display_sockets[2]; +int xc_key_sockets[2]; +int xc_exit_sock; + +fd_set xc_readfds; + +static void _dummy_function(void) +{ + PDC_napms( 1); +} + +void XC_get_line_lock(int row) +{ + /* loop until we can write to the line -- Patch by: + Georg Fuchs, georg.fuchs@rz.uni-regensburg.de */ + + while (*(Xcurscr + XCURSCR_FLAG_OFF + row)) + _dummy_function(); + + *(Xcurscr + XCURSCR_FLAG_OFF + row) = 1; +} + +void XC_release_line_lock(int row) +{ + *(Xcurscr + XCURSCR_FLAG_OFF + row) = 0; +} + +int XC_write_socket(int sock_num, const void *buf, int len) +{ + int start = 0, rc; + + PDC_LOG(("%s:XC_write_socket called: sock_num %d len %d\n", + XCLOGMSG, sock_num, len)); + +#ifdef MOUSE_DEBUG + if (sock_num == xc_key_sock) + printf("%s:XC_write_socket(key) len: %d\n", XCLOGMSG, len); +#endif + while (1) + { + rc = write(sock_num, (const char *)buf + start, len); + + if (rc < 0 || rc == len) + return rc; + + len -= rc; + start = rc; + } +} + +int XC_read_socket(int sock_num, void *buf, int len) +{ + int start = 0, length = len, rc; + + PDC_LOG(("%s:XC_read_socket called: sock_num %d len %d\n", + XCLOGMSG, sock_num, len)); + + while (1) + { + rc = read(sock_num, (char *)buf + start, length); + +#ifdef MOUSE_DEBUG + if (sock_num == xc_key_sock) + printf("%s:XC_read_socket(key) rc %d errno %d " + "resized: %d\n", XCLOGMSG, rc, errno, SP->resized); +#endif + if (rc < 0 && sock_num == xc_key_sock && errno == EINTR + && SP->resized != FALSE) + { + MOUSE_LOG(("%s:continuing\n", XCLOGMSG)); + + rc = 0; + + if (SP->resized > 1) + SP->resized = TRUE; + else + SP->resized = FALSE; + + memcpy(buf, &rc, sizeof(int)); + + return 0; + } + + if (rc <= 0 || rc == length) + return rc; + + length -= rc; + start = rc; + } +} + +int XC_write_display_socket_int(int x) +{ + return XC_write_socket(xc_display_sock, &x, sizeof(int)); +} + +#ifdef PDCDEBUG +void XC_say(const char *msg) +{ + PDC_LOG(("%s:%s", XCLOGMSG, msg)); +} +#endif + +/*** Functions that are called by the "curses" process ***/ + +int XCursesInstruct(int flag) +{ + PDC_LOG(("%s:XCursesInstruct() - called flag %d\n", XCLOGMSG, flag)); + + /* Send a request to X */ + + if (XC_write_display_socket_int(flag) < 0) + XCursesExitCursesProcess(4, "exiting from XCursesInstruct"); + + return OK; +} + +int XCursesInstructAndWait(int flag) +{ + int result; + + XC_LOG(("XCursesInstructAndWait() - called\n")); + + /* tell X we want to do something */ + + XCursesInstruct(flag); + + /* wait for X to say the refresh has occurred*/ + + if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0) + XCursesExitCursesProcess(5, "exiting from XCursesInstructAndWait"); + + if (result != CURSES_CONTINUE) + XCursesExitCursesProcess(6, "exiting from XCursesInstructAndWait" + " - synchronization error"); + + return OK; +} + +static int _setup_curses(void) +{ + int wait_value; + + XC_LOG(("_setup_curses called\n")); + + close(xc_display_sockets[1]); + close(xc_key_sockets[1]); + + xc_display_sock = xc_display_sockets[0]; + xc_key_sock = xc_key_sockets[0]; + + FD_ZERO(&xc_readfds); + + XC_read_socket(xc_display_sock, &wait_value, sizeof(int)); + + if (wait_value != CURSES_CHILD) + return ERR; + + /* Set LINES and COLS now so that the size of the shared memory + segment can be allocated */ + + if ((shmidSP = shmget(shmkeySP, sizeof(SCREEN) + XCURSESSHMMIN, 0700)) < 0) + { + perror("Cannot allocate shared memory for SCREEN"); + kill(xc_otherpid, SIGKILL); + return ERR; + } + + SP = (SCREEN*)shmat(shmidSP, 0, 0); + + XCursesLINES = SP->lines; + LINES = XCursesLINES - SP->linesrippedoff - SP->slklines; + XCursesCOLS = COLS = SP->cols; + + if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, + SP->XcurscrSize + XCURSESSHMMIN, 0700)) < 0) + { + perror("Cannot allocate shared memory for curscr"); + kill(xc_otherpid, SIGKILL); + return ERR; + } + + PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d LINES %d COLS %d\n", + XCLOGMSG, shmid_Xcurscr, shmkey_Xcurscr, LINES, COLS)); + + Xcurscr = (unsigned char *)shmat(shmid_Xcurscr, 0, 0); + xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF); + + XC_LOG(("cursesprocess exiting from Xinitscr\n")); + + /* Always trap SIGWINCH if the C library supports SIGWINCH */ + + XCursesSetSignal(SIGWINCH, XCursesSigwinchHandler); + + atexit(XCursesExit); + + return OK; +} + +int XCursesInitscr(int argc, char *argv[]) +{ + int pid, rc; + + XC_LOG(("XCursesInitscr() - called\n")); + + shmkeySP = getpid(); + + if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_display_sockets) < 0) + { + fprintf(stderr, "ERROR: cannot create display socketpair\n"); + return ERR; + } + + if (socketpair(AF_UNIX, SOCK_STREAM, 0, xc_key_sockets) < 0) + { + fprintf(stderr, "ERROR: cannot create key socketpair\n"); + return ERR; + } + + pid = fork(); + + switch(pid) + { + case -1: + fprintf(stderr, "ERROR: cannot fork()\n"); + return ERR; + break; + + case 0: /* child */ + shmkey_Xcurscr = getpid(); +#ifdef XISPARENT + XCursesProcess = 0; + rc = _setup_curses(); +#else + XCursesProcess = 1; + xc_otherpid = getppid(); + rc = XCursesSetupX(argc, argv); +#endif + break; + + default: /* parent */ + shmkey_Xcurscr = pid; +#ifdef XISPARENT + XCursesProcess = 1; + xc_otherpid = pid; + rc = XCursesSetupX(argc, argv); +#else + XCursesProcess = 0; + rc = _setup_curses(); +#endif + } + + return rc; +} + +static void _cleanup_curses_process(int rc) +{ + PDC_LOG(("%s:_cleanup_curses_process() - called: %d\n", XCLOGMSG, rc)); + + shutdown(xc_display_sock, 2); + close(xc_display_sock); + + shutdown(xc_key_sock, 2); + close(xc_key_sock); + + shmdt((char *)SP); + shmdt((char *)Xcurscr); + + if (rc) + _exit(rc); +} + +void XCursesExitCursesProcess(int rc, char *msg) +{ + PDC_LOG(("%s:XCursesExitCursesProcess() - called: %d %s\n", + XCLOGMSG, rc, msg)); + + endwin(); + _cleanup_curses_process(rc); +} + +void XCursesExit(void) +{ + static bool called = FALSE; + + XC_LOG(("XCursesExit() - called\n")); + + if (FALSE == called) + { + XCursesInstruct(CURSES_EXIT); + _cleanup_curses_process(0); + + called = TRUE; + } +} diff --git a/3rd-party/PDCurses/x11/pdcx11.h b/3rd-party/PDCurses/x11/pdcx11.h new file mode 100644 index 0000000..869c907 --- /dev/null +++ b/3rd-party/PDCurses/x11/pdcx11.h @@ -0,0 +1,191 @@ +/* Public Domain Curses */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#include +#include +#include + +#include +#include +#ifdef HAVE_FCNTL_H +# include +#endif +#ifdef HAVE_SYS_SELECT_H +# include /* AIX needs this for FD_ZERO etc macros */ +#endif +#include +#include + +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include +#include + +#ifdef USE_XAW3D +# include +# include +#elif defined(USE_NEXTAW) +# include +# include +#else +# include +# include +#endif +#include "x11/ScrollBox.h" + +#include "Xmu/StdSel.h" +#include "Xmu/Atoms.h" + +#include +#include + +#define XCURSCR_Y_SIZE (XCursesLINES * XCursesCOLS * sizeof(chtype)) +#define XCURSCR_FLAG_SIZE (XCursesLINES * sizeof(int)) +#define XCURSCR_START_SIZE (XCursesLINES * sizeof(int)) +#define XCURSCR_LENGTH_SIZE (XCursesLINES * sizeof(int)) +#define XCURSCR_ATRTAB_SIZE (PDC_COLOR_PAIRS * 2 * sizeof(short)) +#define XCURSCR_SIZE (XCURSCR_FLAG_SIZE + XCURSCR_START_SIZE + \ + XCURSCR_LENGTH_SIZE + XCURSCR_Y_SIZE + XCURSCR_ATRTAB_SIZE + \ + sizeof(XColor)) + +#define XCURSCR_Y_OFF(y) ((y) * XCursesCOLS * sizeof(chtype)) +#define XCURSCR_FLAG_OFF (XCURSCR_Y_OFF(0) + XCURSCR_Y_SIZE) +#define XCURSCR_START_OFF (XCURSCR_FLAG_OFF + XCURSCR_FLAG_SIZE) +#define XCURSCR_LENGTH_OFF (XCURSCR_START_OFF + XCURSCR_START_SIZE) +#define XCURSCR_ATRTAB_OFF (XCURSCR_LENGTH_OFF + XCURSCR_LENGTH_SIZE) +#define XCURSCR_XCOLOR_OFF (XCURSCR_ATRTAB_OFF + XCURSCR_ATRTAB_SIZE) + +typedef struct +{ + int lines; + int cols; + Pixel cursorColor; + Pixel colorBlack; + Pixel colorRed; + Pixel colorGreen; + Pixel colorYellow; + Pixel colorBlue; + Pixel colorMagenta; + Pixel colorCyan; + Pixel colorWhite; + Pixel colorBoldBlack; + Pixel colorBoldRed; + Pixel colorBoldGreen; + Pixel colorBoldYellow; + Pixel colorBoldBlue; + Pixel colorBoldMagenta; + Pixel colorBoldCyan; + Pixel colorBoldWhite; + Pixel pointerForeColor; + Pixel pointerBackColor; + XFontStruct *normalFont; + XFontStruct *italicFont; + XFontStruct *boldFont; + char *bitmap; +#ifdef HAVE_XPM_H + char *pixmap; +#endif + char *composeKey; + Cursor pointer; + int shmmin; + int borderWidth; + int borderColor; + int clickPeriod; + int doubleClickPeriod; + int scrollbarWidth; + int cursorBlinkRate; + char *textCursor; +} XCursesAppData; + +extern XCursesAppData xc_app_data; + +#define XCURSESSHMMIN xc_app_data.shmmin + +#define XCLOGMSG (XCursesProcess ? " X" : "CURSES") + +void XC_get_line_lock(int); +void XC_release_line_lock(int); + +int PDC_display_cursor(int, int, int, int, int); + +void XCursesExitCursesProcess(int, char *); +int XCursesInstruct(int); +int XCursesInstructAndWait(int); +int XCursesInitscr(int, char **); + +int XC_write_socket(int, const void *, int); +int XC_read_socket(int, void *, int); +int XC_write_display_socket_int(int); + +int XCursesSetupX(int argc, char *argv[]); +RETSIGTYPE XCursesSigwinchHandler(int signo); + +#ifdef _HPUX_SOURCE +# define FD_SET_CAST int * +#else +# define FD_SET_CAST fd_set * +#endif + +extern fd_set xc_readfds; + +extern unsigned char *Xcurscr; +extern int XCursesProcess; +extern int shmidSP; +extern int shmid_Xcurscr; +extern int shmkeySP; +extern int shmkey_Xcurscr; +extern int xc_otherpid; +extern int XCursesLINES; +extern int XCursesCOLS; +extern int xc_display_sock; +extern int xc_key_sock; +extern int xc_display_sockets[2]; +extern int xc_key_sockets[2]; +extern int xc_exit_sock; + +typedef RETSIGTYPE (*signal_handler)(); + +signal_handler XCursesSetSignal(int, signal_handler); + +#ifdef PDCDEBUG +void XC_say(const char *msg); +# define XC_LOG(x) XC_say x +#else +# define XC_LOG(x) +#endif + +#ifdef MOUSE_DEBUG +# define MOUSE_LOG(x) printf x +#else +# define MOUSE_LOG(x) +#endif + +enum +{ + CURSES_CLEAR_SELECTION, CURSES_DISPLAY_CURSOR, CURSES_SET_SELECTION, + CURSES_GET_SELECTION, CURSES_TITLE, CURSES_REFRESH_SCROLLBAR, + CURSES_RESIZE, CURSES_BELL, CURSES_CONTINUE, CURSES_CURSOR, + CURSES_CHILD, CURSES_REFRESH, CURSES_GET_COLOR, CURSES_SET_COLOR, + CURSES_BLINK_ON, CURSES_BLINK_OFF, CURSES_EXIT +}; + +extern short *xc_atrtab; diff --git a/3rd-party/PDCurses/x11/sb.c b/3rd-party/PDCurses/x11/sb.c new file mode 100644 index 0000000..10f8c9b --- /dev/null +++ b/3rd-party/PDCurses/x11/sb.c @@ -0,0 +1,155 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +/*man-start************************************************************** + +sb +-- + +### Synopsis + + int sb_init(void) + int sb_set_horz(int total, int viewport, int cur) + int sb_set_vert(int total, int viewport, int cur) + int sb_get_horz(int *total, int *viewport, int *cur) + int sb_get_vert(int *total, int *viewport, int *cur) + int sb_refresh(void); + +### Description + + These functions manipulate the scrollbar. + +### Return Value + + All functions return OK on success and ERR on error. + +### Portability + X/Open BSD SYS V + sb_init - - - + sb_set_horz - - - + sb_set_vert - - - + sb_get_horz - - - + sb_get_vert - - - + sb_refresh - - - + +**man-end****************************************************************/ + +bool sb_started = FALSE; + +/* sb_init() is the sb initialization routine. + This must be called before initscr(). */ + +int sb_init(void) +{ + PDC_LOG(("sb_init() - called\n")); + + if (SP) + return ERR; + + sb_started = TRUE; + + return OK; +} + +/* sb_set_horz() - Used to set horizontal scrollbar. + + total = total number of columns + viewport = size of viewport in columns + cur = current column in total */ + +int sb_set_horz(int total, int viewport, int cur) +{ + PDC_LOG(("sb_set_horz() - called: total %d viewport %d cur %d\n", + total, viewport, cur)); + + if (!SP) + return ERR; + + SP->sb_total_x = total; + SP->sb_viewport_x = viewport; + SP->sb_cur_x = cur; + + return OK; +} + +/* sb_set_vert() - Used to set vertical scrollbar. + + total = total number of columns on line + viewport = size of viewport in columns + cur = current column in total */ + +int sb_set_vert(int total, int viewport, int cur) +{ + PDC_LOG(("sb_set_vert() - called: total %d viewport %d cur %d\n", + total, viewport, cur)); + + if (!SP) + return ERR; + + SP->sb_total_y = total; + SP->sb_viewport_y = viewport; + SP->sb_cur_y = cur; + + return OK; +} + +/* sb_get_horz() - Used to get horizontal scrollbar. + + total = total number of lines + viewport = size of viewport in lines + cur = current line in total */ + +int sb_get_horz(int *total, int *viewport, int *cur) +{ + PDC_LOG(("sb_get_horz() - called\n")); + + if (!SP) + return ERR; + + if (total) + *total = SP->sb_total_x; + if (viewport) + *viewport = SP->sb_viewport_x; + if (cur) + *cur = SP->sb_cur_x; + + return OK; +} + +/* sb_get_vert() - Used to get vertical scrollbar. + + total = total number of lines + viewport = size of viewport in lines + cur = current line in total */ + +int sb_get_vert(int *total, int *viewport, int *cur) +{ + PDC_LOG(("sb_get_vert() - called\n")); + + if (!SP) + return ERR; + + if (total) + *total = SP->sb_total_y; + if (viewport) + *viewport = SP->sb_viewport_y; + if (cur) + *cur = SP->sb_cur_y; + + return OK; +} + +/* sb_refresh() - Used to draw the scrollbars. */ + +int sb_refresh(void) +{ + PDC_LOG(("sb_refresh() - called\n")); + + if (!SP) + return ERR; + + XCursesInstruct(CURSES_REFRESH_SCROLLBAR); + + return OK; +} diff --git a/3rd-party/PDCurses/x11/x11.c b/3rd-party/PDCurses/x11/x11.c new file mode 100644 index 0000000..4087f54 --- /dev/null +++ b/3rd-party/PDCurses/x11/x11.c @@ -0,0 +1,3692 @@ +/* Public Domain Curses */ + +#include "pdcx11.h" + +#ifdef HAVE_DECKEYSYM_H +# include +#endif + +#ifdef HAVE_SUNKEYSYM_H +# include +#endif + +#ifdef HAVE_XPM_H +# include +#endif + +#if defined PDC_XIM +# include +#endif + +#ifdef HAVE_XF86KEYSYM_H +# include +#endif + +#include +#include + +#ifndef XPOINTER_TYPEDEFED +typedef char * XPointer; +#endif + +#ifndef MAX_PATH +# define MAX_PATH 256 +#endif + +XCursesAppData xc_app_data; + +#if NeedWidePrototypes +# define PDC_SCROLLBAR_TYPE double +#else +# define PDC_SCROLLBAR_TYPE float +#endif + +#define MAX_COLORS 256 /* maximum of "normal" colors */ +#define COLOR_CURSOR MAX_COLORS /* color of cursor */ +#define COLOR_BORDER MAX_COLORS + 1 /* color of border */ + +#define XCURSESDISPLAY (XtDisplay(drawing)) +#define XCURSESWIN (XtWindow(drawing)) + +/* Default icons for XCurses applications. */ + +#include "big_icon.xbm" +#include "little_icon.xbm" + +#define CURSOR_BLINK_RATE 500 + /* Used to be set in xc_app_data.cursorBlinkRate */ + +static void _selection_off(void); +static void _display_cursor(int, int, int, int); +static void _redraw_cursor(void); +static void _exit_process(int, int, char *); +static void _send_key_to_curses(unsigned long, MOUSE_STATUS *, bool); + +static void XCursesButton(Widget, XEvent *, String *, Cardinal *); +static void XCursesHandleString(Widget, XEvent *, String *, Cardinal *); +static void XCursesKeyPress(Widget, XEvent *, String *, Cardinal *); +static void XCursesPasteSelection(Widget, XButtonEvent *); + +static struct +{ + KeySym keycode; + bool numkeypad; + unsigned short normal; + unsigned short shifted; + unsigned short control; + unsigned short alt; +} key_table[] = +{ +/* keycode keypad normal shifted control alt*/ + {';', FALSE, ';', ':', CTL_SEMICOLON, ALT_SEMICOLON }, + {'=', FALSE, '=', '+', CTL_EQUAL, ALT_EQUAL }, + {',', FALSE, ',', '<', CTL_COMMA, ALT_COMMA }, + {'-', FALSE, '-', '_', CTL_MINUS, ALT_MINUS }, + {'.', FALSE, '.', '>', CTL_STOP, ALT_STOP }, + {'/', FALSE, '/', '?', CTL_FSLASH, ALT_FSLASH }, + {'`', FALSE, '`', '~', CTL_BQUOTE, ALT_BQUOTE }, + +/* keycode keypad normal shifted control alt*/ + {XK_Left, FALSE, KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT}, + {XK_Right, FALSE, KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT}, + {XK_Up, FALSE, KEY_UP, KEY_SUP, CTL_UP, ALT_UP}, + {XK_Down, FALSE, KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN}, + {XK_Home, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME}, +/* Sun Type 4 keyboard */ + {XK_R7, FALSE, KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME}, + {XK_End, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END}, +/* Sun Type 4 keyboard */ + {XK_R13, FALSE, KEY_END, KEY_SEND, CTL_END, ALT_END}, + {XK_Prior, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP}, +/* Sun Type 4 keyboard */ + {XK_R9, FALSE, KEY_PPAGE, KEY_SPREVIOUS,CTL_PGUP, ALT_PGUP}, + {XK_Next, FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN}, +/* Sun Type 4 keyboard */ + {XK_R15, FALSE, KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN}, + {XK_Insert, FALSE, KEY_IC, KEY_SIC, CTL_INS, ALT_INS}, + {XK_Delete, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL}, + {XK_F1, FALSE, KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37)}, + {XK_F2, FALSE, KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38)}, + {XK_F3, FALSE, KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39)}, + {XK_F4, FALSE, KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40)}, + {XK_F5, FALSE, KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41)}, + {XK_F6, FALSE, KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42)}, + {XK_F7, FALSE, KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43)}, + {XK_F8, FALSE, KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44)}, + {XK_F9, FALSE, KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45)}, + {XK_F10, FALSE, KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46)}, + {XK_F11, FALSE, KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47)}, + {XK_F12, FALSE, KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48)}, + {XK_F13, FALSE, KEY_F(13), KEY_F(25), KEY_F(37), KEY_F(49)}, + {XK_F14, FALSE, KEY_F(14), KEY_F(26), KEY_F(38), KEY_F(50)}, + {XK_F15, FALSE, KEY_F(15), KEY_F(27), KEY_F(39), KEY_F(51)}, + {XK_F16, FALSE, KEY_F(16), KEY_F(28), KEY_F(40), KEY_F(52)}, + {XK_F17, FALSE, KEY_F(17), KEY_F(29), KEY_F(41), KEY_F(53)}, + {XK_F18, FALSE, KEY_F(18), KEY_F(30), KEY_F(42), KEY_F(54)}, + {XK_F19, FALSE, KEY_F(19), KEY_F(31), KEY_F(43), KEY_F(55)}, + {XK_F20, FALSE, KEY_F(20), KEY_F(32), KEY_F(44), KEY_F(56)}, + {XK_BackSpace, FALSE, 0x08, 0x08, CTL_BKSP, ALT_BKSP}, + {XK_Tab, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB}, +#if defined(XK_ISO_Left_Tab) + {XK_ISO_Left_Tab, FALSE, 0x09, KEY_BTAB, CTL_TAB, ALT_TAB}, +#endif + {XK_Select, FALSE, KEY_SELECT, KEY_SELECT, KEY_SELECT, KEY_SELECT}, + {XK_Print, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT}, + {XK_Find, FALSE, KEY_FIND, KEY_SFIND, KEY_FIND, KEY_FIND}, + {XK_Pause, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND}, + {XK_Clear, FALSE, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR, KEY_CLEAR}, + {XK_Cancel, FALSE, KEY_CANCEL, KEY_SCANCEL, KEY_CANCEL, KEY_CANCEL}, + {XK_Break, FALSE, KEY_BREAK, KEY_BREAK, KEY_BREAK, KEY_BREAK}, + {XK_Help, FALSE, KEY_HELP, KEY_SHELP, KEY_LHELP, KEY_HELP}, + {XK_L4, FALSE, KEY_UNDO, KEY_SUNDO, KEY_UNDO, KEY_UNDO}, + {XK_L6, FALSE, KEY_COPY, KEY_SCOPY, KEY_COPY, KEY_COPY}, + {XK_L9, FALSE, KEY_FIND, KEY_SFIND, KEY_FIND, KEY_FIND}, + {XK_Menu, FALSE, KEY_OPTIONS, KEY_SOPTIONS, KEY_OPTIONS, KEY_OPTIONS}, + {XK_Super_R, FALSE, KEY_COMMAND, KEY_SCOMMAND, KEY_COMMAND, KEY_COMMAND}, + {XK_Super_L, FALSE, KEY_COMMAND, KEY_SCOMMAND, KEY_COMMAND, KEY_COMMAND}, +#ifdef HAVE_SUNKEYSYM_H + {SunXK_F36, FALSE, KEY_F(41), KEY_F(43), KEY_F(45), KEY_F(47)}, + {SunXK_F37, FALSE, KEY_F(42), KEY_F(44), KEY_F(46), KEY_F(48)}, +#endif +#ifdef HAVE_DECKEYSYM_H + {DXK_Remove, FALSE, KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL}, +#endif + {XK_Escape, FALSE, 0x1B, 0x1B, 0x1B, ALT_ESC}, + {XK_KP_Enter, TRUE, PADENTER, PADENTER, CTL_PADENTER,ALT_PADENTER}, + {XK_KP_Add, TRUE, PADPLUS, '+', CTL_PADPLUS, ALT_PADPLUS}, + {XK_KP_Subtract,TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS}, + {XK_KP_Multiply,TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR}, +/* Sun Type 4 keyboard */ + {XK_R6, TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR}, + {XK_KP_Divide, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH}, +/* Sun Type 4 keyboard */ + {XK_R5, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH}, + {XK_KP_Decimal,TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP}, + {XK_KP_0, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0}, + {XK_KP_1, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1}, + {XK_KP_2, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2}, + {XK_KP_3, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3}, + {XK_KP_4, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4}, + {XK_KP_5, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5}, +/* Sun Type 4 keyboard */ + {XK_R11, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5}, + {XK_KP_6, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6}, + {XK_KP_7, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7}, + {XK_KP_8, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8}, + {XK_KP_9, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9}, +/* the following added to support Sun Type 5 keyboards */ + {XK_F21, FALSE, KEY_SUSPEND, KEY_SSUSPEND, KEY_SUSPEND, KEY_SUSPEND}, + {XK_F22, FALSE, KEY_PRINT, KEY_SPRINT, KEY_PRINT, KEY_PRINT}, + {XK_F24, TRUE, PADMINUS, '-', CTL_PADMINUS,ALT_PADMINUS}, +/* Sun Type 4 keyboard */ + {XK_F25, TRUE, PADSLASH, '/', CTL_PADSLASH,ALT_PADSLASH}, +/* Sun Type 4 keyboard */ + {XK_F26, TRUE, PADSTAR, '*', CTL_PADSTAR, ALT_PADSTAR}, + {XK_F27, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7}, + {XK_F29, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9}, + {XK_F31, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5}, + {XK_F35, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3}, +#ifdef HAVE_XK_KP_DELETE + {XK_KP_Delete, TRUE, PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP}, +#endif +#ifdef HAVE_XK_KP_INSERT + {XK_KP_Insert, TRUE, PAD0, '0', CTL_PAD0, ALT_PAD0}, +#endif +#ifdef HAVE_XK_KP_END + {XK_KP_End, TRUE, KEY_C1, '1', CTL_PAD1, ALT_PAD1}, +#endif +#ifdef HAVE_XK_KP_DOWN + {XK_KP_Down, TRUE, KEY_C2, '2', CTL_PAD2, ALT_PAD2}, +#endif +#ifdef HAVE_XK_KP_NEXT + {XK_KP_Next, TRUE, KEY_C3, '3', CTL_PAD3, ALT_PAD3}, +#endif +#ifdef HAVE_XK_KP_LEFT + {XK_KP_Left, TRUE, KEY_B1, '4', CTL_PAD4, ALT_PAD4}, +#endif +#ifdef HAVE_XK_KP_BEGIN + {XK_KP_Begin, TRUE, KEY_B2, '5', CTL_PAD5, ALT_PAD5}, +#endif +#ifdef HAVE_XK_KP_RIGHT + {XK_KP_Right, TRUE, KEY_B3, '6', CTL_PAD6, ALT_PAD6}, +#endif +#ifdef HAVE_XK_KP_HOME + {XK_KP_Home, TRUE, KEY_A1, '7', CTL_PAD7, ALT_PAD7}, +#endif +#ifdef HAVE_XK_KP_UP + {XK_KP_Up, TRUE, KEY_A2, '8', CTL_PAD8, ALT_PAD8}, +#endif +#ifdef HAVE_XK_KP_PRIOR + {XK_KP_Prior, TRUE, KEY_A3, '9', CTL_PAD9, ALT_PAD9}, +#endif + +#ifdef XF86XK_Back + {XF86XK_Back, FALSE, KEY_BROWSER_BACK, KEY_SBROWSER_BACK, + KEY_CBROWSER_BACK, KEY_ABROWSER_BACK }, +#endif + +#ifdef XF86XK_Forward + {XF86XK_Forward, FALSE, KEY_BROWSER_FWD, KEY_SBROWSER_FWD, + KEY_CBROWSER_FWD, KEY_ABROWSER_FWD }, +#endif + +#ifdef XF86XK_Reload + {XF86XK_Reload, FALSE, KEY_BROWSER_REF, KEY_SBROWSER_REF, + KEY_CBROWSER_REF, KEY_ABROWSER_REF }, +#endif + +#ifdef XF86XK_Search + {XF86XK_Search, FALSE, KEY_SEARCH, KEY_SSEARCH, + KEY_CSEARCH, KEY_ASEARCH }, +#endif + +#ifdef XF86XK_Favorites + {XF86XK_Favorites, FALSE, KEY_FAVORITES, KEY_SFAVORITES, + KEY_CFAVORITES, KEY_AFAVORITES }, +#endif + +#ifdef XF86XK_AudioPlay + {XF86XK_AudioPlay, FALSE, KEY_PLAY_PAUSE, KEY_SPLAY_PAUSE, + KEY_CPLAY_PAUSE, KEY_APLAY_PAUSE }, +#endif + +#ifdef XF86XK_AudioStop + {XF86XK_AudioStop, FALSE, KEY_MEDIA_STOP, KEY_SMEDIA_STOP, + KEY_CMEDIA_STOP, KEY_AMEDIA_STOP }, +#endif + +#ifdef XF86XK_AudioPrev + {XF86XK_AudioPrev, FALSE, KEY_PREV_TRACK, KEY_SPREV_TRACK, + KEY_CPREV_TRACK, KEY_APREV_TRACK }, +#endif + +#ifdef XF86XK_AudioNext + {XF86XK_AudioNext, FALSE, KEY_NEXT_TRACK, KEY_SNEXT_TRACK, + KEY_CNEXT_TRACK, KEY_ANEXT_TRACK }, +#endif + +#ifdef XF86XK_Tools + {XF86XK_Tools, FALSE, KEY_MEDIA_SELECT, KEY_SMEDIA_SELECT, + KEY_CMEDIA_SELECT, KEY_AMEDIA_SELECT }, +#endif + + {0, 0, 0, 0, 0, 0} +}; + +#ifndef PDC_XIM +# include "compose.h" +#endif + +#define BITMAPDEPTH 1 + +unsigned long pdc_key_modifiers = 0L; + +static GC normal_gc, bold_gc, block_cursor_gc, rect_cursor_gc, italic_gc, border_gc; +static int font_height, font_width, font_ascent, font_descent, + window_width, window_height; +static int resize_window_width = 0, resize_window_height = 0; +static char *bitmap_file = NULL; +#ifdef HAVE_XPM_H +static char *pixmap_file = NULL; +#endif +static KeySym keysym = 0; +static int PDC_blink_state = 1; +static int PDC_really_blinking = FALSE; /* see 'pdcsetsc.c' */ + +#ifndef PDC_XIM +static int state_mask[8] = +{ + ShiftMask, + LockMask, + ControlMask, + Mod1Mask, + Mod2Mask, + Mod3Mask, + Mod4Mask, + Mod5Mask +}; +#endif + +static Atom wm_atom[2]; +static String class_name = "XCurses"; +static XtAppContext app_context; +static Widget topLevel, drawing, scrollBox, scrollVert, scrollHoriz; +static int received_map_notify = 0; +static bool mouse_selection = FALSE; +static chtype *tmpsel = NULL; +static unsigned long tmpsel_length = 0; +static int selection_start_x = 0, selection_start_y = 0, + selection_end_x = 0, selection_end_y = 0; +static Pixmap icon_bitmap; +#ifdef HAVE_XPM_H +static Pixmap icon_pixmap; +static Pixmap icon_pixmap_mask; +#endif +static bool window_entered = TRUE; +static char *program_name; + +/* Macros just for app_resources */ + +#ifdef PDC_WIDE +# define DEFFONT "-misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1" +# define DEFBOLDFONT "-misc-fixed-bold-r-normal--13-120-75-75-c-70-iso10646-1" +# define DEFITALICFONT "-misc-fixed-medium-o-normal--13-120-75-75-c-70-iso10646-1" +#else +# define DEFFONT "-misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1" +# define DEFBOLDFONT "-misc-fixed-bold-r-normal--13-120-75-75-c-70-iso8859-1" +# define DEFITALICFONT "-misc-fixed-medium-o-normal--13-120-75-75-c-70-iso8859-1" +#endif + +#define APPDATAOFF(n) XtOffsetOf(XCursesAppData, n) + +#define RINT(name1, name2, value) { \ + #name1, #name2, XtRInt, \ + sizeof(int), APPDATAOFF(name1), XtRImmediate, \ + (XtPointer)value \ + } + +#define RPIXEL(name1, name2, value) { \ + #name1, #name2, XtRPixel, \ + sizeof(Pixel), APPDATAOFF(name1), XtRString, \ + (XtPointer)#value \ + } + +#define RCOLOR(name, value) RPIXEL(color##name, Color##name, value) + + +#define RSTRINGP(name1, name2, param) { \ + #name1, #name2, XtRString, \ + MAX_PATH, APPDATAOFF(name1), XtRString, (XtPointer)param \ + } + +#define RSTRING(name1, name2) RSTRINGP(name1, name2, "") + +#define RFONT(name1, name2, value) { \ + #name1, #name2, XtRFontStruct, \ + sizeof(XFontStruct), APPDATAOFF(name1), XtRString, \ + (XtPointer)value \ + } + +#define RCURSOR(name1, name2, value) { \ + #name1, #name2, XtRCursor, \ + sizeof(Cursor), APPDATAOFF(name1), XtRString, \ + (XtPointer)#value \ + } + +static XtResource app_resources[] = +{ + RINT(lines, Lines, 24), + RINT(cols, Cols, 80), + + RPIXEL(cursorColor, CursorColor, Red), + + RCOLOR(Black, Black), + RCOLOR(Red, red3), + RCOLOR(Green, green3), + RCOLOR(Yellow, yellow3), + RCOLOR(Blue, blue3), + RCOLOR(Magenta, magenta3), + RCOLOR(Cyan, cyan3), + RCOLOR(White, Grey), + + RCOLOR(BoldBlack, grey40), + RCOLOR(BoldRed, red1), + RCOLOR(BoldGreen, green1), + RCOLOR(BoldYellow, yellow1), + RCOLOR(BoldBlue, blue1), + RCOLOR(BoldMagenta, magenta1), + RCOLOR(BoldCyan, cyan1), + RCOLOR(BoldWhite, White), + + RFONT(normalFont, NormalFont, DEFFONT), + RFONT(italicFont, ItalicFont, DEFITALICFONT), + RFONT(boldFont, BoldFont, DEFBOLDFONT), + + RSTRING(bitmap, Bitmap), +#ifdef HAVE_XPM_H + RSTRING(pixmap, Pixmap), +#endif + RSTRINGP(composeKey, ComposeKey, "Multi_key"), + + RCURSOR(pointer, Pointer, xterm), + + RPIXEL(pointerForeColor, PointerForeColor, Black), + RPIXEL(pointerBackColor, PointerBackColor, White), + + RINT(shmmin, Shmmin, 0), + RINT(borderWidth, BorderWidth, 0), + + RPIXEL(borderColor, BorderColor, Black), + + RINT(doubleClickPeriod, DoubleClickPeriod, (PDC_CLICK_PERIOD * 2)), + RINT(clickPeriod, ClickPeriod, PDC_CLICK_PERIOD), + RINT(scrollbarWidth, ScrollbarWidth, 15), + RINT(cursorBlinkRate, CursorBlinkRate, 0), + + RSTRING(textCursor, TextCursor) +}; + + +#undef RCURSOR +#undef RFONT +#undef RSTRING +#undef RCOLOR +#undef RPIXEL +/* #undef RINT */ +/* #undef APPDATAOFF */ +#undef DEFFONT +#undef DEFBOLDFONT +#undef DEFITALICFONT + +/* Macros for options */ + +#define COPT(name) {"-" #name, "*" #name, XrmoptionSepArg, NULL} +#define CCOLOR(name) COPT(color##name) + +static XrmOptionDescRec options[] = +{ + COPT(lines), COPT(cols), COPT(normalFont), COPT(italicFont), + COPT(bitmap), COPT(boldFont), +#ifdef HAVE_XPM_H + COPT(pixmap), +#endif + COPT(pointer), COPT(shmmin), COPT(composeKey), COPT(clickPeriod), + COPT(doubleClickPeriod), COPT(scrollbarWidth), + COPT(pointerForeColor), COPT(pointerBackColor), + COPT(cursorBlinkRate), COPT(cursorColor), COPT(textCursor), + + CCOLOR(Black), CCOLOR(Red), CCOLOR(Green), CCOLOR(Yellow), + CCOLOR(Blue), CCOLOR(Magenta), CCOLOR(Cyan), CCOLOR(White), + + CCOLOR(BoldBlack), CCOLOR(BoldRed), CCOLOR(BoldGreen), + CCOLOR(BoldYellow), CCOLOR(BoldBlue), CCOLOR(BoldMagenta), + CCOLOR(BoldCyan), CCOLOR(BoldWhite) +}; + +#undef CCOLOR +#undef COPT + +static XtActionsRec action_table[] = +{ + {"XCursesButton", (XtActionProc)XCursesButton}, + {"XCursesKeyPress", (XtActionProc)XCursesKeyPress}, + {"XCursesPasteSelection", (XtActionProc)XCursesPasteSelection}, + {"string", (XtActionProc)XCursesHandleString} +}; + +static bool after_first_curses_request = FALSE; +static Pixel colors[MAX_COLORS + 2]; + +#ifdef PDC_XIM +static XIM Xim = NULL; +static XIC Xic = NULL; +#endif + +/* TODO : For mouse motion reporting (with no buttons down), +we'll need to add + ": XCursesButton() \n" +to the following. Plus quite a bit of code to evade the fact that +all motion events in Linux are given with button 0. */ + +static const char *default_translations = +{ + ": XCursesKeyPress() \n" \ + ": XCursesKeyPress() \n" \ + ": XCursesButton() \n" \ + ": XCursesButton() \n" \ + ": XCursesButton()" +}; + +static int _to_utf8(char *outcode, chtype code) +{ +#ifdef PDC_WIDE + if (code & A_ALTCHARSET && !(code & 0xff80)) + code = acs_map[code & 0x7f]; +#endif + code &= A_CHARTEXT; + + if (code < 0x80) + { + outcode[0] = code; + return 1; + } + else + if (code < 0x800) + { + outcode[0] = ((code & 0x07c0) >> 6) | 0xc0; + outcode[1] = (code & 0x003f) | 0x80; + return 2; + } + else if( code < 0x10000) + { + outcode[0] = ((code & 0xf000) >> 12) | 0xe0; + outcode[1] = ((code & 0x0fc0) >> 6) | 0x80; + outcode[2] = (code & 0x003f) | 0x80; + return 3; + } + else /* SMP: Unicode past 64K */ + { + outcode[0] = (code >> 18) | 0xf0; + outcode[1] = ((code >> 12) & 0x3f) | 0x80; + outcode[2] = ((code >> 6) & 0x3f) | 0x80; + outcode[3] = ( code & 0x3f) | 0x80; + return 4; + } +} + +static int _from_utf8(wchar_t *pwc, const char *s, size_t n) +{ + wchar_t key; + int i = -1; + const unsigned char *string; + + if (!s || (n < 1)) + return -1; + + if (!*s) + return 0; + + string = (const unsigned char *)s; + + key = string[0]; + + /* Simplistic UTF-8 decoder -- minimal validation */ + + if (key & 0x80) + { + if ((key & 0xe0) == 0xc0) + { + if (1 < n) + { + key = ((key & 0x1f) << 6) | (string[1] & 0x3f); + i = 2; + } + } + else if ((key & 0xf0) == 0xe0) /* Unicode from 0x800 to 0xffff */ + { + if (2 < n) + { + key = ((key & 0x0f) << 12) | + ((string[1] & 0x3f) << 6) | (string[2] & 0x3f); + i = 3; + } + } + else if ((key & 0xf8) == 0xf0) /* SMP: Unicode past 64K */ + { + if (3 < n) + { + key = ((key & 0x07) << 18) | ((string[1] & 0x3f) << 12) | + ((string[2] & 0x3f) << 6) | (string[3] & 0x3f); + i = 4; + } + } + else + fprintf(stderr, "Invalid UTF8\n"); + } + else + i = 1; + + if (i) + *pwc = key; + + return i; +} + +#ifndef X_HAVE_UTF8_STRING +static Atom XA_UTF8_STRING(Display *dpy) +{ + static AtomPtr p = NULL; + + if (!p) + p = XmuMakeAtom("UTF8_STRING"); + + return XmuInternAtom(dpy, p); +} +#endif + +signal_handler XCursesSetSignal(int signo, signal_handler action) +{ +#if defined(SA_INTERRUPT) || defined(SA_RESTART) + struct sigaction sigact, osigact; + + sigact.sa_handler = action; + + sigact.sa_flags = +# ifdef SA_INTERRUPT +# ifdef SA_RESTART + SA_INTERRUPT | SA_RESTART; +# else + SA_INTERRUPT; +# endif +# else /* must be SA_RESTART */ + SA_RESTART; +# endif + sigemptyset(&sigact.sa_mask); + + if (sigaction(signo, &sigact, &osigact)) + return SIG_ERR; + + return osigact.sa_handler; + +#else /* not SA_INTERRUPT or SA_RESTART, use plain signal */ + return signal(signo, action); +#endif +} + +RETSIGTYPE XCursesSigwinchHandler(int signo) +{ + PDC_LOG(("%s:XCursesSigwinchHandler() - called: SIGNO: %d\n", + XCLOGMSG, signo)); + + /* Patch by: Georg Fuchs, georg.fuchs@rz.uni-regensburg.de + 02-Feb-1999 */ + + SP->resized += 1; + + /* Always trap SIGWINCH if the C library supports SIGWINCH */ + +#ifdef SIGWINCH + XCursesSetSignal(SIGWINCH, XCursesSigwinchHandler); +#endif +} + +/* Convert character positions x and y to pixel positions, stored in + xpos and ypos */ + +static void _make_xy(int x, int y, int *xpos, int *ypos) +{ + *xpos = (x * font_width) + xc_app_data.borderWidth; + *ypos = xc_app_data.normalFont->ascent + (y * font_height) + + xc_app_data.borderWidth; +} + + /* This function 'intensifies' a color by shifting it toward white. */ + /* It used to average the input color with white. Then it did a */ + /* weighted average: 2/3 of the input color, 1/3 white, for a */ + /* lower "intensification" level. */ + /* Then Mark Hessling suggested that the output level should */ + /* remap zero to 85 (= 255 / 3, so one-third intensity), and input */ + /* of 192 or greater should be remapped to 255 (full intensity). */ + /* Assuming we want a linear response between zero and 192, that */ + /* leads to output = 85 + input * (255-85)/192. */ + /* This should lead to proper handling of bold text in legacy */ + /* apps, where "bold" means "high intensity". */ + /* NOTE that this is basically a clone of code in wingui/pdcdisp.c. */ + /* The same basic logic should eventually be used in SDL, I think. */ + +static Pixel intensified_color( Pixel ival) +{ + int rgb, i; + Pixel oval = 0; + + for( i = 0; i < 3; i++, ival >>= 8) + { + rgb = (int)( ival & 0xff); + if( rgb >= 192) + rgb = 255; + else + rgb = 85 + rgb * (255 - 85) / 192; + oval |= ((Pixel)rgb << (i * 8)); + } + return( oval); +} + + /* For use in adjusting colors for A_DIMmed characters. Just */ + /* knocks down the intensity of R, G, and B by 1/3. */ + +static Pixel dimmed_color( Pixel ival) +{ + unsigned i; + Pixel oval = 0; + + for( i = 0; i < 3; i++, ival >>= 8) + { + unsigned rgb = (unsigned)( ival & 0xff); + + rgb -= (rgb / 3); + oval |= ((Pixel)rgb << (i * 8)); + } + return( oval); +} + +/* see 'addch.c' for an explanation of how combining chars are handled. */ +/* Though note that right now, it doesn't work at all; we'll have to */ +/* arrange shared memory or communication between the X process and the */ +/* "host" process... to be done later. */ + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + #ifdef PDC_WIDE + #define USING_COMBINING_CHARACTER_SCHEME + int PDC_expand_combined_characters( const cchar_t c, cchar_t *added); /* addch.c */ + #endif + + /* PDC_get_rgb_values(), extract_packed_rgb(), intensified_component(), */ + /* intensified_color(), and dimmed_color() each exist in x11/x11.c, */ + /* wingui/pdcdisp.c, and sdl2/pdcdisp.c in forms slightly modified for */ + /* each platform. But they all look pretty much alike. */ + + /* PDCurses stores RGBs in fifteen bits, five bits each */ + /* for red, green, blue. A Pixel uses eight bits per */ + /* channel. Hence the following. */ +static Pixel extract_packed_rgb( const chtype color) +{ + const int red = (int)( (color << 3) & 0xf8); + const int green = (int)( (color >> 2) & 0xf8); + const int blue = (int)( (color >> 7) & 0xf8); + + return( ((Pixel)red << 16) | ((Pixel)green << 8) | (Pixel)blue); +} +#endif + + +void PDC_get_rgb_values( const chtype srcp, + Pixel *foreground_rgb, Pixel *background_rgb) +{ + bool reverse_colors = ((srcp & A_REVERSE) ? TRUE : FALSE); + bool intensify_backgnd = FALSE; + +#if defined( CHTYPE_LONG) && CHTYPE_LONG >= 2 + if( srcp & A_RGB_COLOR) + { + /* Extract RGB from 30 bits of the color field */ + *background_rgb = extract_packed_rgb( srcp >> PDC_COLOR_SHIFT); + *foreground_rgb = extract_packed_rgb( srcp >> (PDC_COLOR_SHIFT + 15)); + } + else +#endif + { + short foreground_index, background_index; + + PDC_pair_content( PAIR_NUMBER( srcp), &foreground_index, &background_index); + *foreground_rgb = colors[foreground_index]; + *background_rgb = colors[background_index]; + } + + if( srcp & A_BLINK) + { + if( !PDC_really_blinking) /* convert 'blinking' to 'bold' */ + intensify_backgnd = TRUE; + else if( PDC_blink_state) + reverse_colors = !reverse_colors; + } + if( reverse_colors) + { + const Pixel temp = *foreground_rgb; + + *foreground_rgb = *background_rgb; + *background_rgb = temp; + } + + if( srcp & A_BOLD) + *foreground_rgb = intensified_color( *foreground_rgb); + if( intensify_backgnd) + *background_rgb = intensified_color( *background_rgb); + if( srcp & A_DIM) + *foreground_rgb = dimmed_color( *foreground_rgb); + if( srcp & A_DIM) + *background_rgb = dimmed_color( *background_rgb); +} + +/* Output a block of characters with common attributes */ + +static int _new_packet( const chtype attr, const bool rev, const int len, + const int col, const int row, +#ifdef PDC_WIDE + XChar2b *text) +#else + char *text) +#endif +{ + XRectangle bounds; + GC gc; + int xpos, ypos; + Pixel foreground_rgb, background_rgb; + +#ifdef PDC_WIDE + text[len].byte1 = text[len].byte2 = 0; +#else + text[len] = '\0'; +#endif + + /* Determine which GC to use - normal or italic */ + if ( attr & A_ITALIC ) + { + gc = italic_gc; + } + else if ( attr & A_BOLD ) + { + gc = bold_gc; + } + else + { + gc = normal_gc; + } + + /* Draw it */ + + PDC_get_rgb_values( attr, &foreground_rgb, &background_rgb); + if( rev) + { + const Pixel swap_val = foreground_rgb; + + foreground_rgb = background_rgb; + background_rgb = swap_val; + } + XSetForeground(XCURSESDISPLAY, gc, foreground_rgb); + XSetBackground(XCURSESDISPLAY, gc, background_rgb); + + _make_xy(col, row, &xpos, &ypos); + + bounds.x = xpos; + bounds.y = ypos - font_ascent; + bounds.width = font_width * len; + bounds.height = font_height; + + XSetClipRectangles(XCURSESDISPLAY, gc, 0, 0, &bounds, 1, Unsorted); + +#ifdef PDC_WIDE + XDrawImageString16( +#else + XDrawImageString( +#endif + XCURSESDISPLAY, XCURSESWIN, gc, xpos, ypos, text, len); + + /* Underline, etc. */ + + if (attr & (A_LEFTLINE|A_RIGHTLINE|A_UNDERLINE|A_OVERLINE|A_STRIKEOUT)) + { + int k; + + if (SP->line_color != -1) + XSetForeground(XCURSESDISPLAY, gc, colors[SP->line_color]); + + if (attr & A_UNDERLINE) /* UNDER */ + XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc, + xpos, ypos + xc_app_data.normalFont->descent-1, xpos + font_width * len, ypos + xc_app_data.normalFont->descent-1); +/* xpos, ypos + 1, xpos + font_width * len, ypos + 1);*/ + + if (attr & A_OVERLINE) + XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc, + xpos, ypos - font_ascent, xpos + font_width * len, ypos - font_ascent); + + if (attr & A_STRIKEOUT) + XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc, + xpos, ypos + (font_descent - font_ascent) / 2, + xpos + font_width * len, ypos + (font_descent - font_ascent) / 2); + + if (attr & A_LEFTLINE) /* LEFT */ + for (k = 0; k < len; k++) + { + int x = xpos + font_width * k; + XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc, + x, ypos - font_ascent, x, ypos + font_descent); + } + + if (attr & A_RIGHTLINE) /* RIGHT */ + for (k = 0; k < len; k++) + { + int x = xpos + font_width * (k + 1) - 1; + XDrawLine(XCURSESDISPLAY, XCURSESWIN, gc, + x, ypos - font_ascent, x, ypos + font_descent); + } + } + + PDC_LOG(("%s:_new_packet() - row: %d col: %d " + "num_cols: %d fore: %d back: %d text:<%s>\n", + XCLOGMSG, row, col, len, foreground_rgb, background_rgb, text)); + + return OK; +} + +/* The core display routine -- update one line of text */ + +static int _display_text(const chtype *ch, int row, int col, + int num_cols, bool highlight) +{ +#ifdef PDC_WIDE + XChar2b text[513]; +#else + char text[513]; +#endif + chtype old_attr, attr; + int i, j; + + PDC_LOG(("%s:_display_text() - called: row: %d col: %d " + "num_cols: %d\n", XCLOGMSG, row, col, num_cols)); + + if (!num_cols) + return OK; + + old_attr = *ch & A_ATTRIBUTES; + + for (i = 0, j = 0; j < num_cols; j++) + { + chtype curr = ch[j]; + + attr = curr & A_ATTRIBUTES; + +#ifdef CHTYPE_LONG + if (attr & A_ALTCHARSET && !(curr & 0xff80)) + { + attr ^= A_ALTCHARSET; + curr = acs_map[curr & 0x7f]; + } +#endif + +#ifndef PDC_WIDE + /* Special handling for ACS_BLOCK */ + + if (!(curr & A_CHARTEXT)) + { + curr |= ' '; + attr ^= A_REVERSE; + } +#endif + if (attr != old_attr || i > 100) + { + if (_new_packet(old_attr, highlight, i, col, row, text) == ERR) + return ERR; + + old_attr = attr; + col += i; + i = 0; + } + +#ifdef PDC_WIDE + curr &= A_CHARTEXT; + if( curr <= 0xffff) /* BMP Unicode */ + { + if( !curr) + curr = ' '; + text[i].byte1 = (curr & 0xff00) >> 8; + text[i++].byte2 = curr & 0x00ff; + } + else /* SMP & combining chars */ + { + const chtype MAX_UNICODE = 0x110000; + + if( curr < MAX_UNICODE) /* Supplemental Multilingual Plane */ + { /* (SMP); store w/surrogates */ + const unsigned short part1 = (unsigned short) + (0xd800 | ((curr - 0x10000) >> 10)); + const unsigned short part2 = (unsigned short) + (0xdc00 | (curr & 0x3ff)); + + text[i].byte1 = part1 >> 8; + text[i++].byte2 = part1 & 0xff; + text[i].byte1 = part2 >> 8; + text[i++].byte2 = part2 & 0xff; + } +#ifdef USING_COMBINING_CHARACTER_SCHEME + else if( curr > MAX_UNICODE) + { +#ifdef GOT_COMBINING_CHARS_IN_X + cchar_t added[10]; + int n_combined = 0; + + while( (curr = PDC_expand_combined_characters( curr, + &added[n_combined])) > MAX_UNICODE) + n_combined++; + while( n_combined >= 0) + { + text[i].byte1 = added[n_combined] >> 8; + text[i++].byte2 = added[n_combined] & 0xff; + n_combined--; + } +#else + text[i].byte1 = 0; + text[i++].byte2 = '?'; +#endif + } +#endif + } +#else /* non-wide case */ + text[i++] = curr & 0xff; +#endif + } + + return _new_packet(old_attr, highlight, i, col, row, text); +} + +static void _get_gc(GC *gc, XFontStruct *font_info, int fore, int back) +{ + XGCValues values; + + /* Create default Graphics Context */ + + *gc = XCreateGC(XCURSESDISPLAY, XCURSESWIN, 0L, &values); + + /* specify font */ + + XSetFont(XCURSESDISPLAY, *gc, font_info->fid); + +#ifdef WHY_IS_THIS_HERE + XSetForeground(XCURSESDISPLAY, *gc, colors[fore]); + XSetBackground(XCURSESDISPLAY, *gc, colors[back]); +#endif +} + +#define RGB( R, G, B) (((unsigned long)(R)) << 16 \ + | ((unsigned long)(G) << 8) | (unsigned long)(B)) + +static void _initialize_colors(void) +{ + int i, r, g, b; + + colors[COLOR_BLACK] = xc_app_data.colorBlack; + colors[COLOR_RED] = xc_app_data.colorRed; + colors[COLOR_GREEN] = xc_app_data.colorGreen; + colors[COLOR_YELLOW] = xc_app_data.colorYellow; + colors[COLOR_BLUE] = xc_app_data.colorBlue; + colors[COLOR_MAGENTA] = xc_app_data.colorMagenta; + colors[COLOR_CYAN] = xc_app_data.colorCyan; + colors[COLOR_WHITE] = xc_app_data.colorWhite; + + colors[COLOR_BLACK + 8] = xc_app_data.colorBoldBlack; + colors[COLOR_RED + 8] = xc_app_data.colorBoldRed; + colors[COLOR_GREEN + 8] = xc_app_data.colorBoldGreen; + colors[COLOR_YELLOW + 8] = xc_app_data.colorBoldYellow; + colors[COLOR_BLUE + 8] = xc_app_data.colorBoldBlue; + colors[COLOR_MAGENTA + 8] = xc_app_data.colorBoldMagenta; + colors[COLOR_CYAN + 8] = xc_app_data.colorBoldCyan; + colors[COLOR_WHITE + 8] = xc_app_data.colorBoldWhite; + i = 16; + /* 256-color xterm extended palette: 216 colors in a + 6x6x6 color cube, plus 24 (not 50) shades of gray */ + for( r = 0; r < 6; r++) + for( g = 0; g < 6; g++) + for( b = 0; b < 6; b++) + colors[i++] = RGB( r ? r * 40 + 55 : 0, + g ? g * 40 + 55 : 0, + b ? b * 40 + 55 : 0); + for( i = 0; i < 24; i++) + colors[i + 232] = RGB( i * 10 + 8, i * 10 + 8, i * 10 + 8); + + colors[COLOR_CURSOR] = xc_app_data.cursorColor; + colors[COLOR_BORDER] = xc_app_data.borderColor; +} + +static void _refresh_scrollbar(void) +{ + XC_LOG(("_refresh_scrollbar() - called\n")); + + if (SP->sb_on) + { + PDC_SCROLLBAR_TYPE total_y = SP->sb_total_y; + PDC_SCROLLBAR_TYPE total_x = SP->sb_total_x; + + if (total_y) + XawScrollbarSetThumb(scrollVert, + (PDC_SCROLLBAR_TYPE)(SP->sb_cur_y) / total_y, + (PDC_SCROLLBAR_TYPE)(SP->sb_viewport_y) / total_y); + + if (total_x) + XawScrollbarSetThumb(scrollHoriz, + (PDC_SCROLLBAR_TYPE)(SP->sb_cur_x) / total_x, + (PDC_SCROLLBAR_TYPE)(SP->sb_viewport_x) / total_x); + } +} + +static void _set_cursor_color(chtype *ch, short *fore, short *back) +{ + int attr; + short f, b; + + attr = PAIR_NUMBER(*ch); + + if (attr) + { + PDC_pair_content(attr, &f, &b); + *fore = 7 - (f % 8); + *back = 7 - (b % 8); + } + else + { + if (*ch & A_REVERSE) + { + *back = COLOR_BLACK; + *fore = COLOR_WHITE; + } + else + { + *back = COLOR_WHITE; + *fore = COLOR_BLACK; + } + } +} + +static void _get_icon(void) +{ + XIconSize *icon_size; + int size_count = 0; + Status rc; + unsigned char *bitmap_bits = NULL; + unsigned icon_bitmap_width = 0, icon_bitmap_height = 0, + file_bitmap_width = 0, file_bitmap_height = 0; + + XC_LOG(("_get_icon() - called\n")); + + icon_size = XAllocIconSize(); + + rc = XGetIconSizes(XtDisplay(topLevel), + RootWindowOfScreen(XtScreen(topLevel)), + &icon_size, &size_count); + + /* if the WM can advise on icon sizes... */ + + if (rc && size_count) + { + int i, max_height = 0, max_width = 0; + + PDC_LOG(("%s:size_count: %d rc: %d\n", XCLOGMSG, size_count, rc)); + + for (i = 0; i < size_count; i++) + { + if (icon_size[i].max_width > max_width) + max_width = icon_size[i].max_width; + if (icon_size[i].max_height > max_height) + max_height = icon_size[i].max_height; + + PDC_LOG(("%s:min: %d %d\n", XCLOGMSG, + icon_size[i].min_width, icon_size[i].min_height)); + + PDC_LOG(("%s:max: %d %d\n", XCLOGMSG, + icon_size[i].max_width, icon_size[i].max_height)); + + PDC_LOG(("%s:inc: %d %d\n", XCLOGMSG, + icon_size[i].width_inc, icon_size[i].height_inc)); + } + + if (max_width >= big_icon_width && max_height >= big_icon_height) + { + icon_bitmap_width = big_icon_width; + icon_bitmap_height = big_icon_height; + bitmap_bits = (unsigned char *)big_icon_bits; + } + else + { + icon_bitmap_width = little_icon_width; + icon_bitmap_height = little_icon_height; + bitmap_bits = (unsigned char *)little_icon_bits; + } + + } + else /* use small icon */ + { + icon_bitmap_width = little_icon_width; + icon_bitmap_height = little_icon_height; + bitmap_bits = (unsigned char *)little_icon_bits; + } + + XFree(icon_size); + +#ifdef HAVE_XPM_H + if (xc_app_data.pixmap && xc_app_data.pixmap[0]) /* supplied pixmap */ + { + XpmReadFileToPixmap(XtDisplay(topLevel), + RootWindowOfScreen(XtScreen(topLevel)), + (char *)xc_app_data.pixmap, + &icon_pixmap, &icon_pixmap_mask, NULL); + return; + } +#endif + + if (xc_app_data.bitmap && xc_app_data.bitmap[0]) /* supplied bitmap */ + { + int x_hot = 0, y_hot = 0; + + rc = XReadBitmapFile(XtDisplay(topLevel), + RootWindowOfScreen(XtScreen(topLevel)), + (char *)xc_app_data.bitmap, + &file_bitmap_width, &file_bitmap_height, + &icon_bitmap, &x_hot, &y_hot); + + switch(rc) + { + case BitmapOpenFailed: + fprintf(stderr, "bitmap file %s: not found\n", + xc_app_data.bitmap); + break; + case BitmapFileInvalid: + fprintf(stderr, "bitmap file %s: contents invalid\n", + xc_app_data.bitmap); + break; + default: + return; + } + } + + icon_bitmap = XCreateBitmapFromData(XtDisplay(topLevel), + RootWindowOfScreen(XtScreen(topLevel)), + (char *)bitmap_bits, icon_bitmap_width, icon_bitmap_height); +} + +static void _draw_border(void) +{ + /* Draw the border if required */ + + if (xc_app_data.borderWidth) + XDrawRectangle(XCURSESDISPLAY, XCURSESWIN, border_gc, + xc_app_data.borderWidth / 2, + xc_app_data.borderWidth / 2, + window_width - xc_app_data.borderWidth, + window_height - xc_app_data.borderWidth); +} + +/* Redraw the entire screen */ + +static void _display_screen(void) +{ + int row; + + XC_LOG(("_display_screen() - called\n")); + + for (row = 0; row < XCursesLINES; row++) + { + XC_get_line_lock(row); + + _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row)), + row, 0, COLS, FALSE); + + XC_release_line_lock(row); + if( row == SP->cursrow && SP->visibility) + _redraw_cursor(); + } + + _draw_border(); +} + +/* Draw changed portions of the screen */ + +static void _refresh_screen(void) +{ + int row, start_col, num_cols; + + XC_LOG(("_refresh_screen() - called\n")); + + for (row = 0; row < XCursesLINES; row++) + { + num_cols = (int)*(Xcurscr + XCURSCR_LENGTH_OFF + row); + + if (num_cols) + { + XC_get_line_lock(row); + + start_col = (int)*(Xcurscr + XCURSCR_START_OFF + row); + + _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row) + + (start_col * sizeof(chtype))), row, start_col, + num_cols, FALSE); + + *(Xcurscr + XCURSCR_LENGTH_OFF + row) = 0; + + XC_release_line_lock(row); + if( row == SP->cursrow && SP->visibility) + _redraw_cursor(); + } + } + + _selection_off(); +} + +static void _handle_expose(Widget w, XtPointer client_data, XEvent *event, + Boolean *unused) +{ + XC_LOG(("_handle_expose() - called\n")); + + /* ignore all Exposes except last */ + + if (event->xexpose.count) + return; + + if (after_first_curses_request && received_map_notify) + _display_screen(); +} + +static void _handle_nonmaskable(Widget w, XtPointer client_data, XEvent *event, + Boolean *unused) +{ + XClientMessageEvent *client_event = (XClientMessageEvent *)event; + + PDC_LOG(("%s:_handle_nonmaskable called: xc_otherpid %d event %d\n", + XCLOGMSG, xc_otherpid, event->type)); + + if (event->type == ClientMessage) + { + XC_LOG(("ClientMessage received\n")); + + /* This code used to include handling of WM_SAVE_YOURSELF, but + it resulted in continual failure of THE on my Toshiba laptop. + Removed on 3-3-2001. Now only exits on WM_DELETE_WINDOW. */ + + if ((Atom)client_event->data.s[0] == wm_atom[0]) + { + /* if we specified an exit key return it, otherwise exit the process */ + if ( SP->exit_key ) + _send_key_to_curses(SP->exit_key, NULL, TRUE); + else + _exit_process(0, SIGKILL, ""); + } + } +} + +static int override_cursor = -1; + +#define CURSOR_UNBLINKING_RECTANGLE 0x303 + +static void XCursesKeyPress(Widget w, XEvent *event, String *params, + Cardinal *nparams) +{ + enum { STATE_NORMAL, STATE_COMPOSE, STATE_CHAR }; + +#ifdef PDC_XIM + Status status; + wchar_t buffer[120]; +#else + unsigned char buffer[120]; + XComposeStatus compose; + static int compose_state = STATE_NORMAL; + static int compose_index = 0; + int char_idx = 0; +#endif + unsigned long key = 0; + int buflen = 40; + int i, count; + unsigned long modifier = 0; + bool key_code = FALSE; + static XEvent prev_event; + static int repeat_count = 0; + + XC_LOG(("XCursesKeyPress() - called\n")); + + /* Handle modifier keys first; ignore other KeyReleases */ + if( event->type == KeyPress && prev_event.type == KeyRelease + && event->xkey.time == prev_event.xkey.time + && event->xkey.keycode == prev_event.xkey.keycode) + { + repeat_count++; + } + else if( event->type == KeyPress) + repeat_count = 0; + prev_event = *event; + + if (event->type == KeyRelease) + { + /* The keysym value was set by a previous call to this function + with a KeyPress event (or reset by the mouse event handler) */ + + if (SP->return_key_modifiers && +#ifndef PDC_XIM + keysym != compose_key && +#endif + IsModifierKey(keysym)) + { + switch (keysym) { + case XK_Shift_L: + key = KEY_SHIFT_L; + break; + case XK_Shift_R: + key = KEY_SHIFT_R; + break; + case XK_Control_L: + key = KEY_CONTROL_L; + break; + case XK_Control_R: + key = KEY_CONTROL_R; + break; + case XK_Alt_L: + key = KEY_ALT_L; + break; + case XK_Alt_R: + key = KEY_ALT_R; + } + + if (key) + _send_key_to_curses(key, NULL, TRUE); + } + + return; + } + + buffer[0] = '\0'; + +#ifdef PDC_XIM + count = XwcLookupString(Xic, &(event->xkey), buffer, buflen, + &keysym, &status); +#else + count = XLookupString(&(event->xkey), (char *)buffer, buflen, + &keysym, &compose); +#endif + + /* translate keysym into curses key code */ + + PDC_LOG(("%s:Key mask: %x\n", XCLOGMSG, event->xkey.state)); + +#ifdef PDCDEBUG + for (i = 0; i < 4; i++) + PDC_debug("%s:Keysym %x %d\n", XCLOGMSG, + XKeycodeToKeysym(XCURSESDISPLAY, event->xkey.keycode, i), i); +#endif + +#ifndef PDC_XIM + + /* Check if the key just pressed is the user-specified compose + key; if it is, set the compose state and exit. */ + + if (keysym == compose_key) + { + /* Change the shape of the cursor to an outline rectangle to + indicate we are in "compose" status */ + + override_cursor = CURSOR_UNBLINKING_RECTANGLE; + compose_state = STATE_COMPOSE; + return; + } + + switch (compose_state) + { + case STATE_COMPOSE: + if (IsModifierKey(keysym)) + return; + + if (event->xkey.state & compose_mask) + { + compose_state = STATE_NORMAL; + override_cursor = -1; + break; + } + + if (buffer[0] && count == 1) + key = buffer[0]; + + compose_index = -1; + + for (i = 0; i < (int)strlen(compose_chars); i++) + if (compose_chars[i] == key) + { + compose_index = i; + break; + } + + if (compose_index == -1) + { + compose_state = STATE_NORMAL; + compose_index = 0; + override_cursor = -1; + break; + } + + compose_state = STATE_CHAR; + return; + + case STATE_CHAR: + if (IsModifierKey(keysym)) + return; + + if (event->xkey.state & compose_mask) + { + compose_state = STATE_NORMAL; + override_cursor = -1; + break; + } + + if (buffer[0] && count == 1) + key = buffer[0]; + + char_idx = -1; + + for (i = 0; i < MAX_COMPOSE_CHARS; i++) + if (compose_lookups[compose_index][i] == key) + { + char_idx = i; + break; + } + + if (char_idx == -1) + { + compose_state = STATE_NORMAL; + compose_index = 0; + override_cursor = -1; + break; + } + + _send_key_to_curses(compose_keys[compose_index][char_idx], + NULL, FALSE); + + compose_state = STATE_NORMAL; + compose_index = 0; + override_cursor = -1; + + return; + } + +#endif /* PDC_XIM */ + + /* To get here we are procesing "normal" keys */ + + PDC_LOG(("%s:Keysym %x %d\n", XCLOGMSG, + XKeycodeToKeysym(XCURSESDISPLAY, event->xkey.keycode, key), key)); + + /* 0x10: usually, numlock modifier */ + + if (event->xkey.state & Mod2Mask) + modifier |= PDC_KEY_MODIFIER_NUMLOCK; + + /* 0x01: shift modifier */ + + if (event->xkey.state & ShiftMask) + modifier |= PDC_KEY_MODIFIER_SHIFT; + + /* 0x04: control modifier */ + + if (event->xkey.state & ControlMask) + modifier |= PDC_KEY_MODIFIER_CONTROL; + + /* 0x08: usually, alt modifier */ + + if (event->xkey.state & Mod1Mask) + modifier |= PDC_KEY_MODIFIER_ALT; + + if( repeat_count) + modifier |= PDC_KEY_MODIFIER_REPEAT; + + for (i = 0; key_table[i].keycode; i++) + { + if (key_table[i].keycode == keysym) + { + PDC_LOG(("%s:State %x\n", XCLOGMSG, event->xkey.state)); + + /* ControlMask: 0x04: control modifier + Mod1Mask: 0x08: usually, alt modifier + Mod2Mask: 0x10: usually, numlock modifier + ShiftMask: 0x01: shift modifier */ + + if ((event->xkey.state & ShiftMask) || + (key_table[i].numkeypad && + (event->xkey.state & Mod2Mask))) + { + key = key_table[i].shifted; + } + else if (event->xkey.state & ControlMask) + { + key = key_table[i].control; + } + else if (event->xkey.state & Mod1Mask) + { + key = key_table[i].alt; + } + + /* To get here, we ignore all other modifiers */ + + else + key = key_table[i].normal; + + key_code = (key > 0x100); + break; + } + } + + if (!key && buffer[0] && count == 1) + key = buffer[0]; + + PDC_LOG(("%s:Key: %s (%lx) pressed - %lx Mod: %x\n", XCLOGMSG, + XKeysymToString(keysym), keysym, key, event->xkey.state)); + + /* Handle ALT letters and numbers */ + + /* enable Alt key without numlock on */ + if (event->xkey.state & Mod1Mask) + { + if (key >= 'A' && key <= 'Z') + { + key += ALT_A - 'A'; + key_code = TRUE; + } + + if (key >= 'a' && key <= 'z') + { + key += ALT_A - 'a'; + key_code = TRUE; + } + + if (key >= '0' && key <= '9') + { + key += ALT_0 - '0'; + key_code = TRUE; + } + } + + /* After all that, send the key back to the application if is + NOT zero. */ + + if (key) + { + static long unicode_value = -1L; + + if( key == 21 && modifier == /* Ctrl-Shift-U hit: Unicode entry */ + (PDC_KEY_MODIFIER_SHIFT | PDC_KEY_MODIFIER_CONTROL)) + unicode_value = 0L; + if( unicode_value >= 0L) + { + int offset = 0; + + override_cursor = CURSOR_UNBLINKING_RECTANGLE; + if( key >= '0' && key <= '9') + offset = '0'; + if( key >= 'a' && key <= 'f') + offset = 'a' - 10; + if( key >= 'A' && key <= 'F') + offset = 'A' - 10; + if( offset) + { + unicode_value <<= 4; + unicode_value |= (long)( key - offset); + } + if( key == 13 || key == PADENTER) + { + key = unicode_value; + unicode_value = -1L; + modifier = 0; + key_code = FALSE; + override_cursor = -1; + } + else /* still in unicode entry mode */ + return; + } + + if (SP->save_key_modifiers) + key |= (modifier << 24); + + _send_key_to_curses(key, NULL, key_code); + } +} + +static void XCursesHandleString(Widget w, XEvent *event, String *params, + Cardinal *nparams) +{ + unsigned char *ptr; + + if (*nparams != 1) + return; + + ptr = (unsigned char *)*params; + + if (ptr[0] == '0' && ptr[1] == 'x' && ptr[2] != '\0') + { + unsigned char c; + unsigned long total = 0; + + for (ptr += 2; (c = tolower(*ptr)); ptr++) + { + total <<= 4; + + if (c >= '0' && c <= '9') + total += c - '0'; + else + if (c >= 'a' && c <= 'f') + total += c - ('a' - 10); + else + break; + } + + if (c == '\0') + _send_key_to_curses(total, NULL, FALSE); + } + else + for (; *ptr; ptr++) + _send_key_to_curses((unsigned long)*ptr, NULL, FALSE); +} + +static void _paste_string(Widget w, XtPointer data, Atom *selection, Atom *type, + XtPointer value, unsigned long *length, int *format) +{ + unsigned long i, key; + unsigned char *string = value; + + XC_LOG(("_paste_string() - called\n")); + + if (!*type || !*length || !string) + return; + + for (i = 0; string[i] && (i < (*length)); i++) + { + key = string[i]; + + if (key == 10) /* new line - convert to ^M */ + key = 13; + + _send_key_to_curses(key, NULL, FALSE); + } + + XtFree(value); +} + +static void _paste_utf8(Widget w, XtPointer event, Atom *selection, Atom *type, + XtPointer value, unsigned long *length, int *format) +{ + wchar_t key; + size_t i = 0, len; + char *string = value; + + XC_LOG(("_paste_utf8() - called\n")); + + if (!*type || !*length) + { + XtGetSelectionValue(w, XA_PRIMARY, XA_STRING, _paste_string, + event, ((XButtonEvent *)event)->time); + return; + } + + len = *length; + + if (!string) + return; + + while (string[i] && (i < len)) + { + int retval = _from_utf8(&key, string + i, len - i); + + if (retval < 1) + return; + + if (key == 10) /* new line - convert to ^M */ + key = 13; + + _send_key_to_curses(key, NULL, FALSE); + + i += retval; + } + + XtFree(value); +} + +static void XCursesPasteSelection(Widget w, XButtonEvent *button_event) +{ + XC_LOG(("XCursesPasteSelection() - called\n")); + + XtGetSelectionValue(w, XA_PRIMARY, XA_UTF8_STRING(XtDisplay(w)), + _paste_utf8, (XtPointer)button_event, + button_event->time); +} + +static Boolean _convert_proc(Widget w, Atom *selection, Atom *target, + Atom *type_return, XtPointer *value_return, + unsigned long *length_return, int *format_return) +{ + XC_LOG(("_convert_proc() - called\n")); + + if (*target == XA_TARGETS(XtDisplay(topLevel))) + { + XSelectionRequestEvent *req = XtGetSelectionRequest(w, + *selection, (XtRequestId)NULL); + + Atom *targetP; + XPointer std_targets; + unsigned long std_length; + + XmuConvertStandardSelection(topLevel, req->time, selection, + target, type_return, &std_targets, + &std_length, format_return); + + *length_return = std_length + 2; + *value_return = XtMalloc(sizeof(Atom) * (*length_return)); + + targetP = *(Atom**)value_return; + *targetP++ = XA_STRING; + *targetP++ = XA_UTF8_STRING(XtDisplay(topLevel)); + + memmove((void *)targetP, (const void *)std_targets, + sizeof(Atom) * std_length); + + XtFree((char *)std_targets); + *type_return = XA_ATOM; + *format_return = sizeof(Atom) * 8; + + return True; + } + else if (*target == XA_UTF8_STRING(XtDisplay(topLevel)) || + *target == XA_STRING) + { + bool utf8 = !(*target == XA_STRING); + char *data = XtMalloc(tmpsel_length * 3 + 1); + chtype *tmp = tmpsel; + int ret_length = 0; + + if (utf8) + { + while (*tmp) + ret_length += _to_utf8(data + ret_length, *tmp++); + } + else + while (*tmp) + data[ret_length++] = *tmp++ & 0xff; + + data[ret_length++] = '\0'; + + *value_return = data; + *length_return = ret_length; + *format_return = 8; + *type_return = *target; + + return True; + } + else + { + return XmuConvertStandardSelection(topLevel, CurrentTime, + selection, target, type_return, (XPointer*)value_return, + length_return, format_return); + } +} + +static void _lose_ownership(Widget w, Atom *type) +{ + XC_LOG(("_lose_ownership() - called\n")); + + if (tmpsel) + free(tmpsel); + + tmpsel = NULL; + tmpsel_length = 0; + _selection_off(); +} + +static void _show_selection(int start_x, int start_y, int end_x, int end_y, + bool highlight) +{ + int i, num_cols, start_col, row; + + PDC_LOG(("%s:_show_selection() - called StartX: %d StartY: %d " + "EndX: %d EndY: %d Highlight: %d\n", XCLOGMSG, + start_x, start_y, end_x, end_y, highlight)); + + for (i = 0; i < end_y - start_y + 1; i++) + { + if (start_y == end_y) /* only one line */ + { + start_col = start_x; + num_cols = end_x - start_x + 1; + row = start_y; + } + else if (!i) /* first line */ + { + start_col = start_x; + num_cols = COLS - start_x; + row = start_y; + } + else if (start_y + i == end_y) /* last line */ + { + start_col = 0; + num_cols = end_x + 1; + row = end_y; + } + else /* full line */ + { + start_col = 0; + num_cols = COLS; + row = start_y + i; + } + + XC_get_line_lock(row); + + _display_text((const chtype *)(Xcurscr + XCURSCR_Y_OFF(row) + + (start_col * sizeof(chtype))), row, start_col, + num_cols, highlight); + + XC_release_line_lock(row); + } +} + +static void _selection_off(void) +{ + XC_LOG(("_selection_off() - called\n")); + + if( mouse_selection) + { + _display_screen(); + + selection_start_x = selection_start_y = selection_end_x = + selection_end_y = 0; + + mouse_selection = FALSE; + } +} + +static void _selection_on(int x, int y) +{ + XC_LOG(("_selection_on() - called\n")); + + selection_start_x = selection_end_x = x; + selection_start_y = selection_end_y = y; +} + +static void _selection_extend(int x, int y) +{ + int temp, current_start, current_end, current_start_x, + current_end_x, current_start_y, current_end_y, new_start, + new_end, new_start_x, new_end_x, new_start_y, new_end_y; + + XC_LOG(("_selection_extend() - called\n")); + + mouse_selection = TRUE; + + /* convert x/y coordinates into start/stop */ + + current_start = (selection_start_y * COLS) + selection_start_x; + current_end = (selection_end_y * COLS) + selection_end_x; + + if (current_start > current_end) + { + current_start_x = selection_end_x; + current_start_y = selection_end_y; + current_end_x = selection_start_x; + current_end_y = selection_start_y; + temp = current_start; + current_start = current_end; + current_end = temp; + } + else + { + current_end_x = selection_end_x; + current_end_y = selection_end_y; + current_start_x = selection_start_x; + current_start_y = selection_start_y; + } + + /* Now we have the current selection as a linear expression. + Convert the new position to a linear expression. */ + + selection_end_x = x; + selection_end_y = y; + + /* convert x/y coordinates into start/stop */ + + new_start = (selection_start_y * COLS) + selection_start_x; + new_end = (selection_end_y * COLS) + selection_end_x; + + if (new_start > new_end) + { + new_start_x = selection_end_x; + new_start_y = selection_end_y; + new_end_x = selection_start_x; + new_end_y = selection_start_y; + temp = new_start; + new_start = new_end; + new_end = temp; + } + else + { + new_end_x = selection_end_x; + new_end_y = selection_end_y; + new_start_x = selection_start_x; + new_start_y = selection_start_y; + } + + if (new_end > current_end) + _show_selection(current_end_x, current_end_y, new_end_x, + new_end_y, TRUE); + else if (new_end < current_end) + _show_selection(new_end_x, new_end_y, current_end_x, + current_end_y, FALSE); + else if (new_start < current_start) + _show_selection(new_start_x, new_start_y, current_start_x, + current_start_y, TRUE); + else if (new_start > current_start) + _show_selection(current_start_x, current_start_y, + new_start_x, new_start_y, FALSE); + else + _show_selection(current_start_x, current_start_y, + new_start_x, new_start_y, TRUE); +} + +static void _selection_set(void) +{ + int i, j, start, end, start_x, end_x, start_y, end_y, num_cols, + start_col, row, num_chars, ch, last_nonblank, length, newlen; + chtype *ptr = NULL; + + XC_LOG(("_selection_set() - called\n")); + + /* convert x/y coordinates into start/stop */ + + start = (selection_start_y * COLS) + selection_start_x; + end = (selection_end_y * COLS) + selection_end_x; + + if (start == end) + { + if (tmpsel) + free(tmpsel); + + tmpsel = NULL; + tmpsel_length = 0; + + return; + } + + if (start > end) + { + start_x = selection_end_x; + start_y = selection_end_y; + end_x = selection_start_x; + end_y = selection_start_y; + length = start - end + 1; + } + else + { + end_x = selection_end_x; + end_y = selection_end_y; + start_x = selection_start_x; + start_y = selection_start_y; + length = end - start + 1; + } + + newlen = length + end_y - start_y + 2; + + if (length > (int)tmpsel_length) + { + if (!tmpsel_length) + tmpsel = malloc(newlen * sizeof(chtype)); + else + tmpsel = realloc(tmpsel, newlen * sizeof(chtype)); + } + + if (!tmpsel) + { + tmpsel_length = 0; + return; + } + + tmpsel_length = length; + num_chars = 0; + + for (i = 0; i < end_y - start_y + 1; i++) + { + + if (start_y == end_y) /* only one line */ + { + start_col = start_x; + num_cols = end_x - start_x + 1; + row = start_y; + } + else if (!i) /* first line */ + { + start_col = start_x; + num_cols = COLS - start_x; + row = start_y; + } + else if (start_y + i == end_y) /* last line */ + { + start_col = 0; + num_cols = end_x + 1; + row = end_y; + } + else /* full line */ + { + start_col = 0; + num_cols = COLS; + row = start_y + i; + } + + XC_get_line_lock(row); + + ptr = (chtype *)(Xcurscr + XCURSCR_Y_OFF(row) + + start_col * sizeof(chtype)); + + if (i < end_y - start_y) + { + last_nonblank = 0; + + for (j = 0; j < num_cols; j++) + { + ch = (int)(ptr[j] & A_CHARTEXT); + if (ch != (int)' ') + last_nonblank = j; + } + } + else + last_nonblank = num_cols - 1; + + for (j = 0; j <= last_nonblank; j++) + tmpsel[num_chars++] = ptr[j]; + + XC_release_line_lock(row); + + if (i < end_y - start_y) + tmpsel[num_chars++] = '\n'; + } + + tmpsel[num_chars] = '\0'; + tmpsel_length = num_chars; +} + +#define CURSOR_INVISIBLE 0 +#define CURSOR_NORMAL 1 +#define CURSOR_BLOCK 2 +#define CURSOR_RECTANGLE 3 +#define CURSOR_VLINE 4 +#define CURSOR_HALF_BLOCK 5 + +static void _display_cursor(int old_row, int old_x, int new_row, int new_x) +{ + int xpos, ypos, i, cursor_to_show; + chtype *ch; + short fore = 0, back = 0; + + PDC_LOG(("%s:_display_cursor() - draw char at row: %d col %d\n", + XCLOGMSG, old_row, old_x)); + + /* if the cursor position is outside the boundary of the screen, + ignore the request */ + + if (old_row >= XCursesLINES || old_x >= COLS || + new_row >= XCursesLINES || new_x >= COLS) + return; + + /* display the character at the current cursor position */ + PDC_LOG(("%s:_display_cursor() - draw char at row: %d col %d\n", + XCLOGMSG, old_row, old_x)); + + _display_text((const chtype *)(Xcurscr + (XCURSCR_Y_OFF(old_row) + + (old_x * sizeof(chtype)))), old_row, old_x, 1, FALSE); + + /* display the cursor at the new cursor position */ + + /* use lower 8 bits for 1/2 cycle (or if not in window) */ + if( PDC_blink_state || !window_entered) + cursor_to_show = (SP->visibility & 0xff); + else /* ...& upper 8 bits on other 1/2 cycle */ + cursor_to_show = (SP->visibility >> 8); + if( override_cursor >= 0) + cursor_to_show = (PDC_blink_state ? override_cursor & 0xff + : override_cursor >> 8); + if( !cursor_to_show) + return; /* cursor not displayed, no more to do */ + + _make_xy(new_x, new_row, &xpos, &ypos); + + ch = (chtype *)(Xcurscr + XCURSCR_Y_OFF(new_row) + new_x * sizeof(chtype)); + + _set_cursor_color(ch, &fore, &back); + XSetForeground(XCURSESDISPLAY, rect_cursor_gc, colors[back]); + + switch( cursor_to_show) + { + case CURSOR_VLINE: + for (i = 1; i <= 2; i++) + XDrawLine(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc, + xpos + i, ypos - xc_app_data.normalFont->ascent, + xpos + i, ypos - xc_app_data.normalFont->ascent + + font_height - 1); + break; + case CURSOR_NORMAL: + case CURSOR_HALF_BLOCK: + { + int n_lines = xc_app_data.normalFont->descent; + + ypos += n_lines - 1; + if( cursor_to_show == CURSOR_HALF_BLOCK) + n_lines += xc_app_data.normalFont->ascent / 2; + else + n_lines += 2; + for( i = 0; i < n_lines; i++, ypos--) + XDrawLine(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc, + xpos, ypos, xpos + font_width, ypos); + break; + } + case CURSOR_RECTANGLE: + XDrawRectangle(XCURSESDISPLAY, XCURSESWIN, rect_cursor_gc, + xpos + 1, ypos - font_height + + xc_app_data.normalFont->descent + 1, + font_width - 2, font_height - 2); + break; + case CURSOR_BLOCK: + default: + { + /* cursor visibility high */ +#ifdef PDC_WIDE + XChar2b buf[2]; + + buf[0].byte1 = (*ch & 0xff00) >> 8; + buf[0].byte2 = *ch & 0x00ff; + + buf[1].byte1 = buf[1].byte2 = 0; +#else + char buf[2]; + + buf[0] = *ch & 0xff; + buf[1] = '\0'; +#endif + XSetForeground(XCURSESDISPLAY, block_cursor_gc, colors[fore]); + XSetBackground(XCURSESDISPLAY, block_cursor_gc, colors[back]); +#ifdef PDC_WIDE + XDrawImageString16( +#else + XDrawImageString( +#endif + XCURSESDISPLAY, XCURSESWIN, block_cursor_gc, + xpos, ypos, buf, 1); + } + break; + } + + PDC_LOG(("%s:_display_cursor() - draw cursor at row %d col %d\n", + XCLOGMSG, new_row, new_x)); +} + +static void _redraw_cursor(void) +{ + _display_cursor(SP->cursrow, SP->curscol, SP->cursrow, SP->curscol); +} + +static void _handle_enter_leave(Widget w, XtPointer client_data, + XEvent *event, Boolean *unused) +{ + XC_LOG(("_handle_enter_leave called\n")); + + switch(event->type) + { + case EnterNotify: + XC_LOG(("EnterNotify received\n")); + + window_entered = TRUE; + break; + + case LeaveNotify: + XC_LOG(("LeaveNotify received\n")); + + window_entered = FALSE; + + /* Display the cursor so it stays on while the window is + not current */ + +// _redraw_cursor(); + break; + + default: + PDC_LOG(("%s:_handle_enter_leave - unknown event %d\n", + XCLOGMSG, event->type)); + } +} + +static void _send_key_to_curses(unsigned long key, MOUSE_STATUS *ms, + bool key_code) +{ + PDC_LOG(("%s:_send_key_to_curses() - called: sending %d\n", + XCLOGMSG, key)); + + SP->key_code = key_code; + + if (XC_write_socket(xc_key_sock, &key, sizeof(unsigned long)) < 0) + _exit_process(1, SIGKILL, "exiting from _send_key_to_curses"); + + if (ms) + { + MOUSE_LOG(("%s:writing mouse stuff\n", XCLOGMSG)); + + if (XC_write_socket(xc_key_sock, ms, sizeof(MOUSE_STATUS)) < 0) + _exit_process(1, SIGKILL, "exiting from _send_key_to_curses"); + } +} + +#ifdef A_OVERLINE +#define A_ALL_LINES (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE | A_OVERLINE | A_STRIKEOUT) +#else +#define A_ALL_LINES (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE) +#endif + +/* Note that the logic used to avoid unnecessary drawing is heavily +borrowed from the HandleTimer function in wingui/pdcscrn.c. The +comments there may be helpful. */ + +static void _blink_cursor(XtPointer unused, XtIntervalId *id) +{ + XC_LOG(("_blink_cursor() - called:\n")); + + int i; + static int previously_really_blinking = 0; + static int prev_line_color = -1; + chtype attr_to_seek = 0; + + if( prev_line_color != SP->line_color) + attr_to_seek = A_ALL_LINES; + if( PDC_really_blinking || previously_really_blinking) + attr_to_seek |= A_BLINK; + prev_line_color = SP->line_color; + previously_really_blinking = PDC_really_blinking; + PDC_blink_state ^= 1; + if( attr_to_seek) + for( i = 0; i < SP->lines; i++) + { + const chtype *line; + int j = 0, n_chars; + + XC_get_line_lock( i); + line = (const chtype *)(Xcurscr + XCURSCR_Y_OFF( i)); + + /* skip over starting text that isn't blinking: */ + while( j < SP->cols && !(*line & attr_to_seek)) + { + j++; + line++; + } + n_chars = SP->cols - j; + /* then skip over text at the end that's not blinking: */ + while( n_chars && !(line[n_chars - 1] & attr_to_seek)) + n_chars--; + if( n_chars) + _display_text( line, i, j, n_chars, 0); + XC_release_line_lock( i); + } + + _redraw_cursor(); + + XtAppAddTimeOut(app_context, CURSOR_BLINK_RATE, + _blink_cursor, NULL); +} + +static void XCursesButton(Widget w, XEvent *event, String *params, + Cardinal *nparams) +{ + int button_no; + static int last_button_no = 0; + static Time last_button_press_time = 0; + MOUSE_STATUS save_mouse_status; + bool send_key = TRUE; + static bool remove_release; + static bool handle_real_release; + + XC_LOG(("XCursesButton() - called\n")); + + keysym = 0; /* suppress any modifier key return */ + + save_mouse_status = Mouse_status; + button_no = event->xbutton.button; + + /* It appears that under X11R6 (at least on Linux), that an + event_type of ButtonMotion does not include the mouse button in + the event. The following code is designed to cater for this + situation. */ + + if (!button_no) + button_no = last_button_no; + + last_button_no = button_no; + + Mouse_status.changes = 0; + + switch(event->type) + { + case ButtonPress: + /* Handle button 4 and 5, which are normally mapped to the wheel + mouse scroll up and down, and button 6 and 7, which are + normally mapped to the wheel mouse scroll left and right */ + + if (button_no >= 4 && button_no <= 7) + { + /* Send the KEY_MOUSE to curses program */ + + memset(&Mouse_status, 0, sizeof(Mouse_status)); + + switch(button_no) + { + case 4: + Mouse_status.changes = PDC_MOUSE_WHEEL_UP; + break; + case 5: + Mouse_status.changes = PDC_MOUSE_WHEEL_DOWN; + break; + case 6: + Mouse_status.changes = PDC_MOUSE_WHEEL_LEFT; + break; + case 7: + Mouse_status.changes = PDC_MOUSE_WHEEL_RIGHT; + } + + MOUSE_X_POS = MOUSE_Y_POS = -1; + _send_key_to_curses(KEY_MOUSE, &Mouse_status, TRUE); + remove_release = TRUE; + + return; + } + + if (button_no == 2 && + (!SP->_trap_mbe || (event->xbutton.state & ShiftMask))) + { + XCursesPasteSelection(drawing, (XButtonEvent *)event); + remove_release = TRUE; + + return; + } + + remove_release = False; + handle_real_release = False; + + MOUSE_LOG(("\nButtonPress\n")); + + if ((event->xbutton.time - last_button_press_time) < + xc_app_data.doubleClickPeriod) + { + const short curr_status = BUTTON_STATUS( button_no); + + MOUSE_X_POS = save_mouse_status.x; + MOUSE_Y_POS = save_mouse_status.y; + if( curr_status == BUTTON_DOUBLE_CLICKED + || curr_status == BUTTON_TRIPLE_CLICKED) + BUTTON_STATUS(button_no) = BUTTON_TRIPLE_CLICKED; + else + BUTTON_STATUS(button_no) = BUTTON_DOUBLE_CLICKED; + + _selection_off(); + remove_release = True; + } + else + { + napms(SP->mouse_wait); + event->type = ButtonRelease; + XSendEvent(event->xbutton.display, event->xbutton.window, + True, 0, event); + last_button_press_time = event->xbutton.time; + + return; + } + + last_button_press_time = event->xbutton.time; + break; + + case MotionNotify: + MOUSE_LOG(("\nMotionNotify: y: %d x: %d Width: %d " + "Height: %d\n", event->xbutton.y, event->xbutton.x, + font_width, font_height)); + + MOUSE_X_POS = (event->xbutton.x - xc_app_data.borderWidth) / + font_width; + MOUSE_Y_POS = (event->xbutton.y - xc_app_data.borderWidth) / + font_height; + + if (button_no == 1 && + (!SP->_trap_mbe || (event->xbutton.state & ShiftMask))) + { + _selection_extend(MOUSE_X_POS, MOUSE_Y_POS); + send_key = FALSE; + } + else + _selection_off(); + + /* Throw away mouse movements if they are in the same character + position as the last mouse event, or if we are currently in + the middle of a double click event. */ + + if ((MOUSE_X_POS == save_mouse_status.x && + MOUSE_Y_POS == save_mouse_status.y) || + save_mouse_status.button[button_no - 1] == BUTTON_DOUBLE_CLICKED) + { + send_key = FALSE; + break; + } + + Mouse_status.changes |= PDC_MOUSE_MOVED; + break; + + case ButtonRelease: + if (remove_release) + { + MOUSE_LOG(("Release at: %ld - removed\n", event->xbutton.time)); + return; + } + else + { + MOUSE_X_POS = (event->xbutton.x - xc_app_data.borderWidth) / + font_width; + MOUSE_Y_POS = (event->xbutton.y - xc_app_data.borderWidth) / + font_height; + + if (!handle_real_release) + { + if ((event->xbutton.time - last_button_press_time) < + SP->mouse_wait && + (event->xbutton.time != last_button_press_time)) + { + /* The "real" release was shorter than usleep() time; + therefore generate a click event */ + + MOUSE_LOG(("Release at: %ld - click\n", + event->xbutton.time)); + + BUTTON_STATUS(button_no) = BUTTON_CLICKED; + + if (button_no == 1 && mouse_selection && + (!SP->_trap_mbe || (event->xbutton.state & ShiftMask))) + { + send_key = FALSE; + + if (XtOwnSelection(topLevel, XA_PRIMARY, + event->xbutton.time, _convert_proc, + _lose_ownership, NULL) == False) + _selection_off(); + } + else + _selection_off(); + + /* Ensure the "pseudo" release event is ignored */ + + remove_release = True; + handle_real_release = False; + break; + } + else + { + /* Button release longer than usleep() time; + therefore generate a press and wait for the real + release to occur later. */ + + MOUSE_LOG(("Generated Release at: %ld - " + "press & release\n", event->xbutton.time)); + + BUTTON_STATUS(button_no) = BUTTON_PRESSED; + + if (button_no == 1 && + (!SP->_trap_mbe || (event->xbutton.state & ShiftMask))) + { + _selection_off(); + _selection_on(MOUSE_X_POS, MOUSE_Y_POS); + } + + handle_real_release = True; + break; + } + } + else + { + MOUSE_LOG(("Release at: %ld - released\n", + event->xbutton.time)); + } + } + + MOUSE_LOG(("\nButtonRelease\n")); + + BUTTON_STATUS(button_no) = BUTTON_RELEASED; + + if (button_no == 1 && mouse_selection && + (!SP->_trap_mbe || (event->xbutton.state & ShiftMask))) + { + send_key = FALSE; + + if (XtOwnSelection(topLevel, XA_PRIMARY, + event->xbutton.time, _convert_proc, + _lose_ownership, NULL) == False) + _selection_off(); + + _selection_set(); + } + else + _selection_off(); + + break; + } + + /* Set up the mouse status fields in preparation for sending */ + + Mouse_status.changes |= 1 << (button_no - 1); + + if (Mouse_status.changes & PDC_MOUSE_MOVED && + BUTTON_STATUS(button_no) == BUTTON_PRESSED) + BUTTON_STATUS(button_no) = BUTTON_MOVED; + + if (event->xbutton.state & ShiftMask) + BUTTON_STATUS(button_no) |= BUTTON_SHIFT; + if (event->xbutton.state & ControlMask) + BUTTON_STATUS(button_no) |= BUTTON_CONTROL; + if (event->xbutton.state & Mod1Mask) + BUTTON_STATUS(button_no) |= BUTTON_ALT; + + /* If we are ignoring the event, or the mouse position is outside + the bounds of the screen (because of the border), return here */ + + MOUSE_LOG(("Button: %d x: %d y: %d Button status: %x " + "Mouse status: %x\n", button_no, MOUSE_X_POS, MOUSE_Y_POS, + BUTTON_STATUS(button_no), Mouse_status.changes)); + + MOUSE_LOG(("Send: %d Button1: %x Button2: %x Button3: %x %d %d\n", + send_key, BUTTON_STATUS(1), BUTTON_STATUS(2), + BUTTON_STATUS(3), XCursesLINES, XCursesCOLS)); + + if (!send_key || MOUSE_X_POS < 0 || MOUSE_X_POS >= XCursesCOLS || + MOUSE_Y_POS < 0 || MOUSE_Y_POS >= XCursesLINES) + return; + + /* Send the KEY_MOUSE to curses program */ + + _send_key_to_curses(KEY_MOUSE, &Mouse_status, TRUE); +} + +static void _scroll_up_down(Widget w, XtPointer client_data, + XtPointer call_data) +{ + int pixels = (long) call_data; + int total_y = SP->sb_total_y * font_height; + int viewport_y = SP->sb_viewport_y * font_height; + int cur_y = SP->sb_cur_y * font_height; + + /* When pixels is negative, right button pressed, move data down, + thumb moves up. Otherwise, left button pressed, pixels positive, + move data up, thumb down. */ + + cur_y += pixels; + + /* limit panning to size of overall */ + + if (cur_y < 0) + cur_y = 0; + else + if (cur_y > (total_y - viewport_y)) + cur_y = total_y - viewport_y; + + SP->sb_cur_y = cur_y / font_height; + + XawScrollbarSetThumb(w, (double)((double)cur_y / (double)total_y), + (double)((double)viewport_y / (double)total_y)); + + /* Send a key: if pixels negative, send KEY_SCROLL_DOWN */ + + _send_key_to_curses(KEY_SF, NULL, TRUE); +} + +static void _scroll_left_right(Widget w, XtPointer client_data, + XtPointer call_data) +{ + int pixels = (long) call_data; + int total_x = SP->sb_total_x * font_width; + int viewport_x = SP->sb_viewport_x * font_width; + int cur_x = SP->sb_cur_x * font_width; + + cur_x += pixels; + + /* limit panning to size of overall */ + + if (cur_x < 0) + cur_x = 0; + else + if (cur_x > (total_x - viewport_x)) + cur_x = total_x - viewport_x; + + SP->sb_cur_x = cur_x / font_width; + + XawScrollbarSetThumb(w, (double)((double)cur_x / (double)total_x), + (double)((double)viewport_x / (double)total_x)); + + _send_key_to_curses(KEY_SR, NULL, TRUE); +} + +static void _thumb_up_down(Widget w, XtPointer client_data, + XtPointer call_data) +{ + double percent = *(double *) call_data; + double total_y = (double)SP->sb_total_y; + double viewport_y = (double)SP->sb_viewport_y; + int cur_y = SP->sb_cur_y; + + /* If the size of the viewport is > overall area simply return, + as no scrolling is permitted. */ + + if (SP->sb_viewport_y >= SP->sb_total_y) + return; + + if ((SP->sb_cur_y = (int)((double)total_y * percent)) >= + (total_y - viewport_y)) + SP->sb_cur_y = total_y - viewport_y; + + XawScrollbarSetThumb(w, (double)(cur_y / total_y), + (double)(viewport_y / total_y)); + + _send_key_to_curses(KEY_SF, NULL, TRUE); +} + +static void _thumb_left_right(Widget w, XtPointer client_data, + XtPointer call_data) +{ + double percent = *(double *) call_data; + double total_x = (double)SP->sb_total_x; + double viewport_x = (double)SP->sb_viewport_x; + int cur_x = SP->sb_cur_x; + + if (SP->sb_viewport_x >= SP->sb_total_x) + return; + + if ((SP->sb_cur_x = (int)((float)total_x * percent)) >= + (total_x - viewport_x)) + SP->sb_cur_x = total_x - viewport_x; + + XawScrollbarSetThumb(w, (double)(cur_x / total_x), + (double)(viewport_x / total_x)); + + _send_key_to_curses(KEY_SR, NULL, TRUE); +} + +static void _exit_process(int rc, int sig, char *msg) +{ + if (rc || sig) + fprintf(stderr, "%s:_exit_process() - called: rc:%d sig:%d <%s>\n", + XCLOGMSG, rc, sig, msg); + + shmdt((char *)SP); + shmdt((char *)Xcurscr); + shmctl(shmidSP, IPC_RMID, 0); + shmctl(shmid_Xcurscr, IPC_RMID, 0); + + if (bitmap_file) + { + XFreePixmap(XCURSESDISPLAY, icon_bitmap); + free(bitmap_file); + } + +#ifdef HAVE_XPM_H + if (pixmap_file) + { + XFreePixmap(XCURSESDISPLAY, icon_pixmap); + XFreePixmap(XCURSESDISPLAY, icon_pixmap_mask); + free(pixmap_file); + } +#endif + XFreeGC(XCURSESDISPLAY, normal_gc); + XFreeGC(XCURSESDISPLAY, italic_gc); + XFreeGC(XCURSESDISPLAY, bold_gc); + XFreeGC(XCURSESDISPLAY, block_cursor_gc); + XFreeGC(XCURSESDISPLAY, rect_cursor_gc); + XFreeGC(XCURSESDISPLAY, border_gc); +#ifdef PDC_XIM + XDestroyIC(Xic); +#endif + + shutdown(xc_display_sock, 2); + close(xc_display_sock); + + shutdown(xc_exit_sock, 2); + close(xc_exit_sock); + + shutdown(xc_key_sock, 2); + close(xc_key_sock); + + if (sig) + kill(xc_otherpid, sig); /* to kill parent process */ + + _exit(rc); +} + +static void _resize(void) +{ + short save_atrtab[PDC_COLOR_PAIRS * 2]; + + after_first_curses_request = FALSE; + + SP->lines = XCursesLINES = ((resize_window_height - + (2 * xc_app_data.borderWidth)) / font_height); + + LINES = XCursesLINES - SP->linesrippedoff - SP->slklines; + + SP->cols = COLS = XCursesCOLS = ((resize_window_width - + (2 * xc_app_data.borderWidth)) / font_width); + + window_width = resize_window_width; + window_height = resize_window_height; + + _draw_border(); + + /* Detach and drop the current shared memory segment and create and + attach to a new segment */ + + memcpy(save_atrtab, xc_atrtab, sizeof(save_atrtab)); + + SP->XcurscrSize = XCURSCR_SIZE; + shmdt((char *)Xcurscr); + shmctl(shmid_Xcurscr, IPC_RMID, 0); + + if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, + SP->XcurscrSize + XCURSESSHMMIN, 0700 | IPC_CREAT)) < 0) + { + perror("Cannot allocate shared memory for curscr"); + + _exit_process(4, SIGKILL, "exiting from _process_curses_requests"); + } + + Xcurscr = (unsigned char*)shmat(shmid_Xcurscr, 0, 0); + memset(Xcurscr, 0, SP->XcurscrSize); + xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF); + memcpy(xc_atrtab, save_atrtab, sizeof(save_atrtab)); +} + +/* For PDC_set_title() */ + +static void _set_title(void) +{ + char title[1024]; /* big enough for window title */ + int pos; + + if ((XC_read_socket(xc_display_sock, &pos, sizeof(int)) < 0) || + (XC_read_socket(xc_display_sock, title, pos) < 0)) + { + _exit_process(5, SIGKILL, "exiting from _set_title"); + } + + XtVaSetValues(topLevel, XtNtitle, title, NULL); +} + +/* For color_content() */ + +static void _get_color(void) +{ + XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF); + int index = tmp->pixel; + Colormap cmap = DefaultColormap(XCURSESDISPLAY, + DefaultScreen(XCURSESDISPLAY)); + + if (index < 0 || index >= MAX_COLORS) + _exit_process(4, SIGKILL, "exiting from _get_color"); + + tmp->pixel = colors[index]; + XQueryColor(XCURSESDISPLAY, cmap, tmp); +} + +/* For init_color() */ + +static void _set_color(void) +{ + XColor *tmp = (XColor *)(Xcurscr + XCURSCR_XCOLOR_OFF); + int index = tmp->pixel; + Colormap cmap = DefaultColormap(XCURSESDISPLAY, + DefaultScreen(XCURSESDISPLAY)); + + if (index < 0 || index >= MAX_COLORS) + _exit_process(4, SIGKILL, "exiting from _set_color"); + + if (XAllocColor(XCURSESDISPLAY, cmap, tmp)) + { + colors[index] = tmp->pixel; + + _display_screen(); + } +} + +/* For PDC_getclipboard() */ + +static void _get_selection(Widget w, XtPointer data, Atom *selection, + Atom *type, XtPointer value, + unsigned long *length, int *format) +{ + unsigned char *src = value; + int pos, len = *length; + + XC_LOG(("_get_selection() - called\n")); + + if (!value && !len) + { + if (XC_write_display_socket_int(PDC_CLIP_EMPTY) < 0) + _exit_process(4, SIGKILL, "exiting from _get_selection"); + } + else + { + /* Here all is OK, send PDC_CLIP_SUCCESS, then length, then + contents */ + + if (XC_write_display_socket_int(PDC_CLIP_SUCCESS) < 0) + _exit_process(4, SIGKILL, "exiting from _get_selection"); + + if (XC_write_display_socket_int(len) < 0) + _exit_process(4, SIGKILL, "exiting from _get_selection"); + + for (pos = 0; pos < len; pos++) + { +#ifdef PDC_WIDE + wchar_t c; +#else + unsigned char c; +#endif + c = *src++; + + if (XC_write_socket(xc_display_sock, &c, sizeof(c)) < 0) + _exit_process(4, SIGKILL, "exiting from _get_selection"); + } + } +} + +#ifdef PDC_WIDE +static void _get_selection_utf8(Widget w, XtPointer data, Atom *selection, + Atom *type, XtPointer value, + unsigned long *length, int *format) +{ + int len = *length; + + XC_LOG(("_get_selection_utf8() - called\n")); + + if (!*type || !*length) + { + XtGetSelectionValue(w, XA_PRIMARY, XA_STRING, _get_selection, + (XtPointer)NULL, 0); + return; + } + + if (!value && !len) + { + if (XC_write_display_socket_int(PDC_CLIP_EMPTY) >= 0) + return; + } + else + { + wchar_t *wcontents = malloc((len + 1) * sizeof(wchar_t)); + char *src = value; + int i = 0; + + while (*src && i < (*length)) + { + int retval = _from_utf8(wcontents + i, src, len); + + src += retval; + len -= retval; + i++; + } + + wcontents[i] = 0; + len = i; + + /* Here all is OK, send PDC_CLIP_SUCCESS, then length, then + contents */ + + if (XC_write_display_socket_int(PDC_CLIP_SUCCESS) >= 0) + if (XC_write_display_socket_int(len) >= 0) + if (XC_write_socket(xc_display_sock, + wcontents, len * sizeof(wchar_t)) >= 0) + { + free(wcontents); + return; + } + } + + _exit_process(4, SIGKILL, "exiting from _get_selection_utf8"); +} +#endif + +/* For PDC_setclipboard() */ + +static void _set_selection(void) +{ + long length, pos; + int status; + + if (XC_read_socket(xc_display_sock, &length, sizeof(long)) < 0) + _exit_process(5, SIGKILL, "exiting from _set_selection"); + + if (length > (long)tmpsel_length) + { + if (!tmpsel_length) + tmpsel = malloc((length + 1) * sizeof(chtype)); + else + tmpsel = realloc(tmpsel, (length + 1) * sizeof(chtype)); + } + + if (!tmpsel) + if (XC_write_display_socket_int(PDC_CLIP_MEMORY_ERROR) < 0) + _exit_process(4, SIGKILL, "exiting from _set_selection"); + + for (pos = 0; pos < length; pos++) + { +#ifdef PDC_WIDE + wchar_t c; +#else + unsigned char c; +#endif + if (XC_read_socket(xc_display_sock, &c, sizeof(c)) < 0) + _exit_process(5, SIGKILL, "exiting from _set_selection"); + + tmpsel[pos] = c; + } + + tmpsel_length = length; + tmpsel[length] = 0; + + if (XtOwnSelection(topLevel, XA_PRIMARY, CurrentTime, + _convert_proc, _lose_ownership, NULL) == False) + { + status = PDC_CLIP_ACCESS_ERROR; + free(tmpsel); + tmpsel = NULL; + tmpsel_length = 0; + } + else + status = PDC_CLIP_SUCCESS; + + _selection_off(); + + if (XC_write_display_socket_int(status) < 0) + _exit_process(4, SIGKILL, "exiting from _set_selection"); +} + +/* The curses process is waiting; tell it to continue */ + +static void _resume_curses(void) +{ + if (XC_write_display_socket_int(CURSES_CONTINUE) < 0) + _exit_process(4, SIGKILL, "exiting from _process_curses_requests"); +} + +/* The curses process sent us a message */ + +static void _process_curses_requests(XtPointer client_data, int *fid, + XtInputId *id) +{ + struct timeval socket_timeout = {0}; + int s; + int old_row, new_row; + int old_x, new_x; + int pos, num_cols; + + char buf[12]; /* big enough for 2 integers */ + + XC_LOG(("_process_curses_requests() - called\n")); + + if (!received_map_notify) + return; + + FD_ZERO(&xc_readfds); + FD_SET(xc_display_sock, &xc_readfds); + + if ((s = select(FD_SETSIZE, (FD_SET_CAST)&xc_readfds, NULL, + NULL, &socket_timeout)) < 0) + _exit_process(2, SIGKILL, "exiting from _process_curses_requests" + " - select failed"); + + if (!s) /* no requests pending - should never happen! */ + return; + + if (FD_ISSET(xc_display_sock, &xc_readfds)) + { + /* read first integer to determine total message has been + received */ + + XC_LOG(("_process_curses_requests() - before XC_read_socket()\n")); + + if (XC_read_socket(xc_display_sock, &num_cols, sizeof(int)) < 0) + _exit_process(3, SIGKILL, "exiting from _process_curses_requests" + " - first read"); + + XC_LOG(("_process_curses_requests() - after XC_read_socket()\n")); + + after_first_curses_request = TRUE; + + switch(num_cols) + { + case CURSES_EXIT: /* request from curses to stop */ + XC_LOG(("CURSES_EXIT received from child\n")); + _exit_process(0, 0, "XCursesProcess requested to exit by child"); + break; + + case CURSES_BELL: + XC_LOG(("CURSES_BELL received from child\n")); + XBell(XCURSESDISPLAY, 50); + break; + + /* request from curses to confirm completion of display */ + + case CURSES_REFRESH: + XC_LOG(("CURSES_REFRESH received from child\n")); + _refresh_screen(); + _resume_curses(); + break; + + case CURSES_REFRESH_SCROLLBAR: + _refresh_scrollbar(); + break; + + case CURSES_BLINK_ON: + PDC_really_blinking = TRUE; + break; + + case CURSES_BLINK_OFF: + PDC_really_blinking = FALSE; + break; + + case CURSES_CURSOR: + XC_LOG(("CURSES_CURSOR received from child\n")); + + if (XC_read_socket(xc_display_sock, buf, sizeof(int) * 2) < 0) + _exit_process(5, SIGKILL, "exiting from CURSES_CURSOR " + "_process_curses_requests"); + + memcpy(&pos, buf, sizeof(int)); + old_row = pos & 0xFF; + old_x = pos >> 8; + + memcpy(&pos, buf + sizeof(int), sizeof(int)); + new_row = pos & 0xFF; + new_x = pos >> 8; + + /* Only redraw the cursor if it's actually moved. */ + /* Otherwise, it'll get refreshed at the next cycle. */ + if( old_row != new_row || old_x != new_x) + _display_cursor(old_row, old_x, new_row, new_x); + break; + + case CURSES_DISPLAY_CURSOR: + if(PDC_blink_state) + { + XC_LOG(("CURSES_DISPLAY_CURSOR received from child. Vis. now: 1\n")); + } + else + { + XC_LOG(("CURSES_DISPLAY_CURSOR received from child. Vis. now: 0\n")); + } + break; + + case CURSES_TITLE: + XC_LOG(("CURSES_TITLE received from child\n")); + _set_title(); + break; + + case CURSES_RESIZE: + XC_LOG(("CURSES_RESIZE received from child\n")); + _resize(); + _resume_curses(); + break; + + case CURSES_GET_SELECTION: + XC_LOG(("CURSES_GET_SELECTION received from child\n")); + + _resume_curses(); + + XtGetSelectionValue(topLevel, XA_PRIMARY, +#ifdef PDC_WIDE + XA_UTF8_STRING(XtDisplay(topLevel)), + _get_selection_utf8, +#else + XA_STRING, _get_selection, +#endif + (XtPointer)NULL, 0); + + break; + + case CURSES_SET_SELECTION: + XC_LOG(("CURSES_SET_SELECTION received from child\n")); + _set_selection(); + break; + + case CURSES_CLEAR_SELECTION: + XC_LOG(("CURSES_CLEAR_SELECTION received from child\n")); + _resume_curses(); + _selection_off(); + break; + + case CURSES_GET_COLOR: + XC_LOG(("CURSES_GET_COLOR recieved from child\n")); + _get_color(); + _resume_curses(); + break; + + case CURSES_SET_COLOR: + XC_LOG(("CURSES_SET_COLOR recieved from child\n")); + _set_color(); + _resume_curses(); + break; + + default: + PDC_LOG(("%s:Unknown request %d\n", XCLOGMSG, num_cols)); + } + } +} + +static void _handle_structure_notify(Widget w, XtPointer client_data, + XEvent *event, Boolean *unused) +{ + XC_LOG(("_handle_structure_notify() - called\n")); + + switch(event->type) + { + case ConfigureNotify: + XC_LOG(("ConfigureNotify received\n")); + + /* Window has been resized, change width and height to send to + place_text and place_graphics in next Expose. Also will need + to kill (SIGWINCH) curses process if screen size changes. */ + + resize_window_width = event->xconfigure.width; + resize_window_height = event->xconfigure.height; + + after_first_curses_request = FALSE; + +#ifdef SIGWINCH + SP->resized = 1; + + kill(xc_otherpid, SIGWINCH); +#endif + _send_key_to_curses(KEY_RESIZE, NULL, TRUE); + break; + + case MapNotify: + XC_LOG(("MapNotify received\n")); + + received_map_notify = 1; + + _draw_border(); + break; + + default: + PDC_LOG(("%s:_handle_structure_notify - unknown event %d\n", + XCLOGMSG, event->type)); + } +} + +static RETSIGTYPE _handle_signals(int signo) +{ + int flag = CURSES_EXIT; + + PDC_LOG(("%s:_handle_signals() - called: %d\n", XCLOGMSG, signo)); + + /* Patch by: Georg Fuchs */ + + XCursesSetSignal(signo, _handle_signals); + +#ifdef SIGTSTP + if (signo == SIGTSTP) + { + pause(); + return; + } +#endif +#ifdef SIGCONT + if (signo == SIGCONT) + return; +#endif +#ifdef SIGCLD + if (signo == SIGCLD) + return; +#endif +#ifdef SIGTTIN + if (signo == SIGTTIN) + return; +#endif +#ifdef SIGWINCH + if (signo == SIGWINCH) + return; +#endif + + /* End of patch by: Georg Fuchs */ + + XCursesSetSignal(signo, SIG_IGN); + + /* Send a CURSES_EXIT to myself */ + + if (XC_write_socket(xc_exit_sock, &flag, sizeof(int)) < 0) + _exit_process(7, signo, "exiting from _handle_signals"); +} + +#ifdef PDC_XIM +static void _dummy_handler(Widget w, XtPointer client_data, + XEvent *event, Boolean *unused) +{ +} +#endif + +int XCursesSetupX(int argc, char *argv[]) +{ + char *myargv[] = {"PDCurses", NULL}; + char override_text[2][10]; + char **new_argv = NULL; + extern bool sb_started; + + int italic_font_valid, bold_font_valid; + int italic_font_width, italic_font_height; + int bold_font_width, bold_font_height; + XColor pointerforecolor, pointerbackcolor; + XrmValue rmfrom, rmto; + int i; + int minwidth, minheight; + + XC_LOG(("XCursesSetupX called\n")); + + if (!argv) + { + argv = myargv; + argc = 1; + } + + program_name = argv[0]; + if( XCursesLINES != 24 || XCursesCOLS != 80) + { /* a call to resize() was made before initscr() */ + int pass; + + new_argv = (char **)calloc( argc + 5, sizeof( char *)); + for( i = 0; i < argc; i++) + new_argv[i] = argv[i]; + argv = new_argv; + for( pass = 0; pass < 2; pass++) + { + const char *override = (pass ? "-cols" : "-lines"); + + i = 0; + while( i < argc && strcmp( argv[i], override)) + i++; + argv[i] = (char *)override; + argv[i + 1] = override_text[pass]; + sprintf( override_text[pass], "%d", + (pass ? XCursesCOLS : XCursesLINES)); + if( i == argc) /* this is new (usual case) */ + argc += 2; + } + } + + /* Keep open the 'write' end of the socket so the XCurses process + can send a CURSES_EXIT to itself from within the signal handler */ + + xc_exit_sock = xc_display_sockets[0]; + xc_display_sock = xc_display_sockets[1]; + + close(xc_key_sockets[0]); + xc_key_sock = xc_key_sockets[1]; + + /* Trap all signals when XCurses is the child process, but only if + they haven't already been ignored by the application. */ + + for (i = 0; i < PDC_MAX_SIGNALS; i++) + if (XCursesSetSignal(i, _handle_signals) == SIG_IGN) + XCursesSetSignal(i, SIG_IGN); + + /* Start defining X Toolkit things */ + +#if XtSpecificationRelease > 4 + XtSetLanguageProc(NULL, (XtLanguageProc)NULL, NULL); +#endif + + /* Exit if no DISPLAY variable set */ + + if (!getenv("DISPLAY")) + { + fprintf(stderr, "Error: no DISPLAY variable set\n"); + kill(xc_otherpid, SIGKILL); + return ERR; + } + + /* Initialise the top level widget */ + + topLevel = XtVaAppInitialize(&app_context, class_name, options, + XtNumber(options), &argc, argv, NULL, NULL); + if( new_argv) + free( new_argv); + + XtVaGetApplicationResources(topLevel, &xc_app_data, app_resources, + XtNumber(app_resources), NULL); + + /* Check application resource values here */ + + font_width = xc_app_data.normalFont->max_bounds.rbearing - + xc_app_data.normalFont->min_bounds.lbearing; + + font_height = xc_app_data.normalFont->max_bounds.ascent + + xc_app_data.normalFont->max_bounds.descent; + + font_ascent = xc_app_data.normalFont->max_bounds.ascent; + font_descent = xc_app_data.normalFont->max_bounds.descent; + + /* Check that the italic font and normal fonts are the same size */ + /* italic fonts can have negative lbearings! */ + if ( xc_app_data.italicFont->min_bounds.lbearing < 0 ) + italic_font_width = xc_app_data.italicFont->max_bounds.rbearing + xc_app_data.italicFont->min_bounds.lbearing; + else + italic_font_width = xc_app_data.italicFont->max_bounds.rbearing - xc_app_data.italicFont->min_bounds.lbearing; + italic_font_height = xc_app_data.italicFont->max_bounds.ascent + xc_app_data.italicFont->max_bounds.descent; + italic_font_valid = (font_width == italic_font_width) && (font_height == italic_font_height); + + /* Check that the bold font and normal fonts are the same size */ + if ( xc_app_data.boldFont->min_bounds.lbearing < 0 ) + bold_font_width = xc_app_data.boldFont->max_bounds.rbearing + xc_app_data.boldFont->min_bounds.lbearing; + else + bold_font_width = xc_app_data.boldFont->max_bounds.rbearing - xc_app_data.boldFont->min_bounds.lbearing; + bold_font_height = xc_app_data.boldFont->max_bounds.ascent + xc_app_data.boldFont->max_bounds.descent; + bold_font_valid = (font_width == bold_font_width) && (font_height == bold_font_height); + + /* Calculate size of display window */ + + XCursesCOLS = xc_app_data.cols; + XCursesLINES = xc_app_data.lines; + + window_width = font_width * XCursesCOLS + + 2 * xc_app_data.borderWidth; + + window_height = font_height * XCursesLINES + + 2 * xc_app_data.borderWidth; + + minwidth = font_width * 2 + xc_app_data.borderWidth * 2; + minheight = font_height * 2 + xc_app_data.borderWidth * 2; + + /* Set up the icon for the application; the default is an internal + one for PDCurses. Then set various application level resources. */ + + _get_icon(); + +#ifdef HAVE_XPM_H + if (xc_app_data.pixmap && xc_app_data.pixmap[0]) + XtVaSetValues(topLevel, XtNminWidth, minwidth, XtNminHeight, + minheight, XtNbaseWidth, xc_app_data.borderWidth * 2, + XtNbaseHeight, xc_app_data.borderWidth * 2, + XtNiconPixmap, icon_pixmap, + XtNiconMask, icon_pixmap_mask, NULL); + else +#endif + XtVaSetValues(topLevel, XtNminWidth, minwidth, XtNminHeight, + minheight, XtNbaseWidth, xc_app_data.borderWidth * 2, + XtNbaseHeight, xc_app_data.borderWidth * 2, + XtNiconPixmap, icon_bitmap, NULL); + + /* Create a BOX widget in which to draw */ + + if (xc_app_data.scrollbarWidth && sb_started) + { + scrollBox = XtVaCreateManagedWidget(program_name, + scrollBoxWidgetClass, topLevel, XtNwidth, + window_width + xc_app_data.scrollbarWidth, + XtNheight, window_height + xc_app_data.scrollbarWidth, + XtNwidthInc, font_width, XtNheightInc, font_height, NULL); + + drawing = XtVaCreateManagedWidget(program_name, + boxWidgetClass, scrollBox, XtNwidth, + window_width, XtNheight, window_height, XtNwidthInc, + font_width, XtNheightInc, font_height, NULL); + + scrollVert = XtVaCreateManagedWidget("scrollVert", + scrollbarWidgetClass, scrollBox, XtNorientation, + XtorientVertical, XtNheight, window_height, XtNwidth, + xc_app_data.scrollbarWidth, NULL); + + XtAddCallback(scrollVert, XtNscrollProc, _scroll_up_down, drawing); + XtAddCallback(scrollVert, XtNjumpProc, _thumb_up_down, drawing); + + scrollHoriz = XtVaCreateManagedWidget("scrollHoriz", + scrollbarWidgetClass, scrollBox, XtNorientation, + XtorientHorizontal, XtNwidth, window_width, XtNheight, + xc_app_data.scrollbarWidth, NULL); + + XtAddCallback(scrollHoriz, XtNscrollProc, _scroll_left_right, drawing); + XtAddCallback(scrollHoriz, XtNjumpProc, _thumb_left_right, drawing); + } + else + { + drawing = XtVaCreateManagedWidget(program_name, boxWidgetClass, + topLevel, XtNwidth, window_width, XtNheight, window_height, + XtNwidthInc, font_width, XtNheightInc, font_height, NULL); + + XtVaSetValues(topLevel, XtNwidthInc, font_width, XtNheightInc, + font_height, NULL); + } + + /* Process any default translations */ + + XtAugmentTranslations(drawing, + XtParseTranslationTable(default_translations)); + XtAppAddActions(app_context, action_table, XtNumber(action_table)); + + /* Process the supplied colors */ + + _initialize_colors(); + + /* Now have LINES and COLS. Set these in the shared SP so the curses + program can find them. */ + + LINES = XCursesLINES; + COLS = XCursesCOLS; + + if ((shmidSP = shmget(shmkeySP, sizeof(SCREEN) + XCURSESSHMMIN, + 0700 | IPC_CREAT)) < 0) + { + perror("Cannot allocate shared memory for SCREEN"); + kill(xc_otherpid, SIGKILL); + return ERR; + } + + SP = (SCREEN*)shmat(shmidSP, 0, 0); + memset(SP, 0, sizeof(SCREEN)); + SP->XcurscrSize = XCURSCR_SIZE; + SP->lines = XCursesLINES; + SP->cols = XCursesCOLS; + + SP->mouse_wait = xc_app_data.clickPeriod; + SP->audible = TRUE; + + PDC_LOG(("%s:SHM size for curscr %d\n", XCLOGMSG, SP->XcurscrSize)); + + if ((shmid_Xcurscr = shmget(shmkey_Xcurscr, SP->XcurscrSize + + XCURSESSHMMIN, 0700 | IPC_CREAT)) < 0) + { + perror("Cannot allocate shared memory for curscr"); + kill(xc_otherpid, SIGKILL); + shmdt((char *)SP); + shmctl(shmidSP, IPC_RMID, 0); + return ERR; + } + + Xcurscr = (unsigned char *)shmat(shmid_Xcurscr, 0, 0); + memset(Xcurscr, 0, SP->XcurscrSize); + xc_atrtab = (short *)(Xcurscr + XCURSCR_ATRTAB_OFF); + + PDC_LOG(("%s:shmid_Xcurscr %d shmkey_Xcurscr %d LINES %d COLS %d\n", + XCLOGMSG, shmid_Xcurscr, shmkey_Xcurscr, LINES, COLS)); + + /* Add Event handlers to the drawing widget */ + + XtAddEventHandler(drawing, ExposureMask, False, _handle_expose, NULL); + XtAddEventHandler(drawing, StructureNotifyMask, False, + _handle_structure_notify, NULL); + XtAddEventHandler(drawing, EnterWindowMask | LeaveWindowMask, False, + _handle_enter_leave, NULL); + XtAddEventHandler(topLevel, 0, True, _handle_nonmaskable, NULL); + + /* Add input handler from xc_display_sock (requests from curses + program) */ + + XtAppAddInput(app_context, xc_display_sock, (XtPointer)XtInputReadMask, + _process_curses_requests, NULL); + + /* start the Timeout event for blinking the cursor (and blinking text) */ + + XtAppAddTimeOut(app_context, CURSOR_BLINK_RATE, + _blink_cursor, NULL); + + /* Leave telling the curses process that it can start to here so + that when the curses process makes a request, the Xcurses + process can service the request. */ + + XC_write_display_socket_int(CURSES_CHILD); + + XtRealizeWidget(topLevel); + + /* Handle trapping of the WM_DELETE_WINDOW property */ + + wm_atom[0] = XInternAtom(XtDisplay(topLevel), "WM_DELETE_WINDOW", False); + + XSetWMProtocols(XtDisplay(topLevel), XtWindow(topLevel), wm_atom, 1); + + /* Create the Graphics Context for drawing. This MUST be done AFTER + the associated widget has been realized. */ + + XC_LOG(("before _get_gc\n")); + + _get_gc(&normal_gc, xc_app_data.normalFont, COLOR_WHITE, COLOR_BLACK); + + _get_gc(&italic_gc, italic_font_valid ? xc_app_data.italicFont : + xc_app_data.normalFont, COLOR_WHITE, COLOR_BLACK); + + _get_gc(&bold_gc, bold_font_valid ? xc_app_data.boldFont : + xc_app_data.normalFont, COLOR_WHITE, COLOR_BLACK); + + _get_gc(&block_cursor_gc, xc_app_data.normalFont, + COLOR_BLACK, COLOR_CURSOR); + + _get_gc(&rect_cursor_gc, xc_app_data.normalFont, + COLOR_CURSOR, COLOR_BLACK); + + _get_gc(&border_gc, xc_app_data.normalFont, COLOR_BORDER, COLOR_BLACK); + + XSetLineAttributes(XCURSESDISPLAY, rect_cursor_gc, 2, + LineSolid, CapButt, JoinMiter); + + XSetLineAttributes(XCURSESDISPLAY, border_gc, xc_app_data.borderWidth, + LineSolid, CapButt, JoinMiter); + + /* Set the cursor for the application */ + + XDefineCursor(XCURSESDISPLAY, XCURSESWIN, xc_app_data.pointer); + rmfrom.size = sizeof(Pixel); + rmto.size = sizeof(XColor); + + rmto.addr = (XPointer)&pointerforecolor; + rmfrom.addr = (XPointer)&(xc_app_data.pointerForeColor); + XtConvertAndStore(drawing, XtRPixel, &rmfrom, XtRColor, &rmto); + + rmfrom.size = sizeof(Pixel); + rmto.size = sizeof(XColor); + + rmfrom.addr = (XPointer)&(xc_app_data.pointerBackColor); + rmto.addr = (XPointer)&pointerbackcolor; + XtConvertAndStore(drawing, XtRPixel, &rmfrom, XtRColor, &rmto); + + XRecolorCursor(XCURSESDISPLAY, xc_app_data.pointer, + &pointerforecolor, &pointerbackcolor); + +#ifndef PDC_XIM + + /* Convert the supplied compose key to a Keysym */ + + compose_key = XStringToKeysym(xc_app_data.composeKey); + + if (compose_key && IsModifierKey(compose_key)) + { + int i, j; + KeyCode *kcp; + XModifierKeymap *map; + KeyCode compose_keycode = XKeysymToKeycode(XCURSESDISPLAY, compose_key); + + map = XGetModifierMapping(XCURSESDISPLAY); + kcp = map->modifiermap; + + for (i = 0; i < 8; i++) + { + for (j = 0; j < map->max_keypermod; j++, kcp++) + { + if (!*kcp) + continue; + + if (compose_keycode == *kcp) + { + compose_mask = state_mask[i]; + break; + } + } + + if (compose_mask) + break; + } + + XFreeModifiermap(map); + } + +#else + Xim = XOpenIM(XCURSESDISPLAY, NULL, NULL, NULL); + + if (Xim) + { + Xic = XCreateIC(Xim, XNInputStyle, + XIMPreeditNothing | XIMStatusNothing, + XNClientWindow, XCURSESWIN, NULL); + } + + if (Xic) + { + long im_event_mask; + + XGetICValues(Xic, XNFilterEvents, &im_event_mask, NULL); + if (im_event_mask) + XtAddEventHandler(drawing, im_event_mask, False, + _dummy_handler, NULL); + + XSetICFocus(Xic); + } + else + { + perror("ERROR: Cannot create input context"); + kill(xc_otherpid, SIGKILL); + shmdt((char *)SP); + shmdt((char *)Xcurscr); + shmctl(shmidSP, IPC_RMID, 0); + shmctl(shmid_Xcurscr, IPC_RMID, 0); + return ERR; + } + +#endif + + /* Wait for events */ + { + XEvent event; + + for (;;) /* forever */ + { + XtAppNextEvent(app_context, &event); + XtDispatchEvent(&event); + } + } + + return OK; /* won't get here */ +} diff --git a/3rd-party/PDCurses/x11/xcurses-config.in b/3rd-party/PDCurses/x11/xcurses-config.in new file mode 100644 index 0000000..50c1372 --- /dev/null +++ b/3rd-party/PDCurses/x11/xcurses-config.in @@ -0,0 +1,81 @@ +#! /bin/sh +# +# The idea to this kind of setup info script was stolen from numerous +# other packages, such as neon, libxml and gnome. +# + +verdot=3.4 + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@/xcurses + +usage() +{ + echo "Usage: xcurses-config [OPTION]" + echo "" + echo "Available values for OPTION include:" + echo "" + echo " --help display this help and exit" + echo " --cflags pre-processor and compiler flags" + echo " [-I$includedir @PDC_WIDE@]" + echo " --libs library linking information" + echo " [-L$libdir -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@" + echo " --libs-static static library linking information (libXCurses only)" + echo " [$libdir/libXCurses.a @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@" + echo " --prefix PDCurses install prefix" + echo " [$prefix]" + echo " --version output version information" + echo " [$verdot]" + exit $1 +} + +if test $# -eq 0; then + usage 1 +fi + +while test $# -gt 0; do + case "$1" in + # this deals with options in the style + # --option=value and extracts the value part + # [not currently used] + -*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) value= ;; + esac + + case "$1" in + --prefix) + echo $prefix + ;; + + --version) + echo $verdot + exit 0 + ;; + + --help) + usage 0 + ;; + + --cflags) + echo -I$includedir @PDC_WIDE@ + ;; + + --libs) + echo -L$libdir -lXCurses @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@ + ;; + + --libs-static) + echo $libdir/libXCurses.a @LDFLAGS@ @MH_XLIBS@ @MH_EXTRA_LIBS@ + ;; + + *) + usage + exit 1 + ;; + esac + shift +done + +exit 0 diff --git a/3rd-party/termiWin/termiWin.c b/3rd-party/termiWin/termiWin.c new file mode 100644 index 0000000..55443cd --- /dev/null +++ b/3rd-party/termiWin/termiWin.c @@ -0,0 +1,530 @@ +/* termiWin.c +* +* Copyright (C) 2017 Christian Visintin - christian.visintin1997@gmail.com +* +* This file is part of "termiWin: a termios porting for Windows" +* +* termiWin 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 3 of the License, or +* (at your option) any later version. +* +* termiWin is distributed in the hope that 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 termiWin. If not, see . +* +*/ + +#include "termiWin.h" + +#ifdef _WIN32 +#include +#include + +typedef struct COM { + HANDLE hComm; + int fd; //Actually it's completely useless + char* port; +} COM; + +DCB SerialParams = { 0 }; //Initializing DCB structure +struct COM com; +COMMTIMEOUTS timeouts = { 0 }; //Initializing COMMTIMEOUTS structure + +//LOCAL functions + +//nbyte 0->7 + +int getByte(tcflag_t flag, int nbyte, int nibble) { + + int byte; + if (nibble == 1) + byte = (flag >> (8 * (nbyte)) & 0x0f); + else + byte = (flag >> (8 * (nbyte)) & 0xf0); + return byte; +} + +//INPUT FUNCTIONS + +int getIXOptions(tcflag_t flag) { + +#define i_IXOFF 0x01 +#define i_IXON 0x02 +#define i_IXOFF_IXON 0x03 +#define i_PARMRK 0x04 +#define i_PARMRK_IXOFF 0x05 +#define i_PARMRK_IXON 0x06 +#define i_PARMRK_IXON_IXOFF 0x07 + + int byte = getByte(flag, 1, 1); + + return byte; +} + +//LOCALOPT FUNCTIONS + +int getEchoOptions(tcflag_t flag) { + +#define l_NOECHO 0x00 +#define l_ECHO 0x01 +#define l_ECHO_ECHOE 0x03 +#define l_ECHO_ECHOK 0x05 +#define l_ECHO_ECHONL 0x09 +#define l_ECHO_ECHOE_ECHOK 0x07 +#define l_ECHO_ECHOE_ECHONL 0x0b +#define l_ECHO_ECHOE_ECHOK_ECHONL 0x0f +#define l_ECHO_ECHOK_ECHONL 0x0d +#define l_ECHOE 0x02 +#define l_ECHOE_ECHOK 0x06 +#define l_ECHOE_ECHONL 0x0a +#define l_ECHOE_ECHOK_ECHONL 0x0e +#define l_ECHOK 0x04 +#define l_ECHOK_ECHONL 0x0c +#define l_ECHONL 0x08 + + int byte = getByte(flag, 1, 1); + return byte; +} + +int getLocalOptions(tcflag_t flag) { + +#define l_ICANON 0x10 +#define l_ICANON_ISIG 0x50 +#define l_ICANON_IEXTEN 0x30 +#define l_ICANON_NOFLSH 0x90 +#define l_ICANON_ISIG_IEXTEN 0x70 +#define l_ICANON_ISIG_NOFLSH 0xd0 +#define l_ICANON_IEXTEN_NOFLSH 0xb0 +#define l_ICANON_ISIG_IEXTEN_NOFLSH 0xf0 +#define l_ISIG 0x40 +#define l_ISIG_IEXTEN 0x60 +#define l_ISIG_NOFLSH 0xc0 +#define l_ISIG_IEXTEN_NOFLSH 0xe0 +#define l_IEXTEN 0x20 +#define l_IEXTEN_NOFLSH 0xa0 +#define l_NOFLSH 0x80 + + int byte = getByte(flag, 1, 0); + return byte; +} + +int getToStop(tcflag_t flag) { + +#define l_TOSTOP 0x01 + + int byte = getByte(flag, 1, 1); + return byte; +} + +//CONTROLOPT FUNCTIONS + +int getCharSet(tcflag_t flag) { + + //FLAG IS MADE UP OF 8 BYTES, A FLAG IS MADE UP OF A NIBBLE -> 4 BITS, WE NEED TO EXTRACT THE SECOND NIBBLE (1st) FROM THE FIFTH BYTE (6th). + int byte = getByte(flag, 1, 1); + + switch (byte) { + + case 0X0: + return CS5; + break; + + case 0X4: + return CS6; + break; + + case 0X8: + return CS7; + break; + + case 0Xc: + return CS8; + break; + + default: + return CS8; + break; + } +} + +int getControlOptions(tcflag_t flag) { + +#define c_ALL_ENABLED 0xd0 +#define c_PAREVEN_CSTOPB 0x50 +#define c_PAREVEN_NOCSTOPB 0x40 +#define c_PARODD_NOCSTOPB 0xc0 +#define c_NOPARENB_CSTOPB 0x10 +#define c_ALL_DISABLED 0x00 + + int byte = getByte(flag, 1, 0); + return byte; +} + +//LIBFUNCTIONS + +int tcgetattr(int fd, struct termios* termios_p) { + + if (fd != com.fd) return -1; + int ret = 0; + + ret = GetCommState(com.hComm, &SerialParams); + + return 0; +} + +int tcsetattr(int fd, int optional_actions, const struct termios* termios_p) { + + if (fd != com.fd) return -1; + int ret = 0; + + //Store flags into local variables + tcflag_t iflag = termios_p->c_iflag; + tcflag_t lflag = termios_p->c_lflag; + tcflag_t cflag = termios_p->c_cflag; + tcflag_t oflag = termios_p->c_oflag; + + //iflag + + int IX = getIXOptions(iflag); + + if ((IX == i_IXOFF_IXON) || (IX == i_PARMRK_IXON_IXOFF)) { + + SerialParams.fOutX = TRUE; + SerialParams.fInX = TRUE; + SerialParams.fTXContinueOnXoff = TRUE; + } + + //lflag + int EchoOpt = getEchoOptions(lflag); + int l_opt = getLocalOptions(lflag); + int tostop = getToStop(lflag); + + //Missing parameters... + + //cflags + + int CharSet = getCharSet(cflag); + int c_opt = getControlOptions(cflag); + + switch (CharSet) { + + case CS5: + SerialParams.ByteSize = 5; + break; + + case CS6: + SerialParams.ByteSize = 6; + break; + + case CS7: + SerialParams.ByteSize = 7; + break; + + case CS8: + SerialParams.ByteSize = 8; + break; + } + + switch (c_opt) { + + case c_ALL_ENABLED: + SerialParams.Parity = ODDPARITY; + SerialParams.StopBits = TWOSTOPBITS; + break; + + case c_ALL_DISABLED: + SerialParams.Parity = NOPARITY; + SerialParams.StopBits = ONESTOPBIT; + break; + + case c_PAREVEN_CSTOPB: + SerialParams.Parity = EVENPARITY; + SerialParams.StopBits = TWOSTOPBITS; + break; + + case c_PAREVEN_NOCSTOPB: + SerialParams.Parity = EVENPARITY; + SerialParams.StopBits = ONESTOPBIT; + break; + + case c_PARODD_NOCSTOPB: + SerialParams.Parity = ODDPARITY; + SerialParams.StopBits = ONESTOPBIT; + break; + + case c_NOPARENB_CSTOPB: + SerialParams.Parity = NOPARITY; + SerialParams.StopBits = TWOSTOPBITS; + break; + } + + //aflags + + /* + int OP; + if(oflag == OPOST) + else ... + */ + //Missing parameters... + + //special characters + + if (termios_p->c_cc[VEOF] != 0) SerialParams.EofChar = (char)termios_p->c_cc[VEOF]; + if (termios_p->c_cc[VINTR] != 0) SerialParams.EvtChar = (char)termios_p->c_cc[VINTR]; + + if (termios_p->c_cc[VMIN] == 1) { //Blocking + + timeouts.ReadIntervalTimeout = 0; // in milliseconds + timeouts.ReadTotalTimeoutConstant = 0; // in milliseconds + timeouts.ReadTotalTimeoutMultiplier = 0; // in milliseconds + timeouts.WriteTotalTimeoutConstant = 0; // in milliseconds + timeouts.WriteTotalTimeoutMultiplier = 0; // in milliseconds + + } else { //Non blocking + + timeouts.ReadIntervalTimeout = termios_p->c_cc[VTIME] * 100; // in milliseconds + timeouts.ReadTotalTimeoutConstant = termios_p->c_cc[VTIME] * 100; // in milliseconds + timeouts.ReadTotalTimeoutMultiplier = termios_p->c_cc[VTIME] * 100; // in milliseconds + timeouts.WriteTotalTimeoutConstant = termios_p->c_cc[VTIME] * 100; // in milliseconds + timeouts.WriteTotalTimeoutMultiplier = termios_p->c_cc[VTIME] * 100; // in milliseconds + } + + SetCommTimeouts(com.hComm, &timeouts); + + //EOF + + ret = SetCommState(com.hComm, &SerialParams); + if (ret != 0) + return 0; + else + return -1; +} + +int tcsendbreak(int fd, int duration) { + + if (fd != com.fd) return -1; + + int ret = 0; + ret = TransmitCommChar(com.hComm, '\x00'); + if (ret != 0) + return 0; + else + return -1; +} + +int tcdrain(int fd) { + + if (fd != com.fd) return -1; + return FlushFileBuffers(com.hComm); +} + +int tcflush(int fd, int queue_selector) { + + if (fd != com.fd) return -1; + int rc = 0; + + switch (queue_selector) { + + case TCIFLUSH: + rc = PurgeComm(com.hComm, PURGE_RXCLEAR); + break; + + case TCOFLUSH: + rc = PurgeComm(com.hComm, PURGE_TXCLEAR); + break; + + case TCIOFLUSH: + rc = PurgeComm(com.hComm, PURGE_RXCLEAR); + rc *= PurgeComm(com.hComm, PURGE_TXCLEAR); + break; + + default: + rc = 0; + break; + } + + if (rc != 0) + return 0; + else + return -1; +} + +int tcflow(int fd, int action) { + + if (fd != com.fd) return -1; + int rc = 0; + + switch (action) { + + case TCOOFF: + rc = PurgeComm(com.hComm, PURGE_TXABORT); + break; + + case TCOON: + rc = ClearCommBreak(com.hComm); + break; + + case TCIOFF: + rc = PurgeComm(com.hComm, PURGE_RXABORT); + break; + + case TCION: + rc = ClearCommBreak(com.hComm); + break; + + default: + rc = 0; + break; + } + + if (rc != 0) + return 0; + else + return -1; +} + +void cfmakeraw(struct termios* termios_p) { + + SerialParams.ByteSize = 8; + SerialParams.StopBits = ONESTOPBIT; + SerialParams.Parity = NOPARITY; +} + +speed_t cfgetispeed(const struct termios* termios_p) { + + return SerialParams.BaudRate; +} + +speed_t cfgetospeed(const struct termios* termios_p) { + + return SerialParams.BaudRate; +} + +int cfsetispeed(struct termios* termios_p, speed_t speed) { + + SerialParams.BaudRate = speed; + return 0; +} + +int cfsetospeed(struct termios* termios_p, speed_t speed) { + + SerialParams.BaudRate = speed; + return 0; +} + +int cfsetspeed(struct termios* termios_p, speed_t speed) { + + SerialParams.BaudRate = speed; + return 0; +} + +int selectSerial(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout) { + + SetCommMask(com.hComm, EV_RXCHAR); + DWORD dwEventMask; + WaitCommEvent(com.hComm, &dwEventMask, NULL); + + if (dwEventMask == EV_RXCHAR) + return com.fd; + else + return -1; +} + +int readFromSerial(int fd, char* buffer, int count) { + + if (fd != com.fd) return -1; + int rc = 0; + int ret; + + ret = ReadFile(com.hComm, buffer, count, &rc, NULL); + + if (ret == 0) + return -1; + else + return rc; +} + +int writeToSerial(int fd, char* buffer, int count) { + + if (fd != com.fd) return -1; + int rc = 0; + int ret; + + ret = WriteFile(com.hComm, buffer, count, &rc, NULL); + + if (ret == 0) + return -1; + else + return rc; +} + +int openSerial(char* portname, int opt) { + + if (strlen(portname) < 4) return -1; + + //COMxx + size_t portSize = 0; + if (strlen(portname) > 4) { + portSize = sizeof(char) * strlen("\\\\.\\COM10") + 1; + com.port = calloc(1, portSize); +#ifdef _MSC_VER + strncat_s(com.port, portSize, "\\\\.\\", strlen("\\\\.\\")); +#else + strncat(com.port, "\\\\.\\", strlen("\\\\.\\")); +#endif + } + //COMx + else { + portSize = sizeof(char) * 5; + com.port = calloc(1, portSize); + } + +#ifdef _MSC_VER + strncat_s(com.port, portSize, portname, 4); +#else + strncat(com.port, portname, 4); +#endif + + switch (opt) { + + case O_RDWR: + com.hComm = CreateFile(com.port, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + break; + + case O_RDONLY: + com.hComm = CreateFile(com.port, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + break; + + case O_WRONLY: + com.hComm = CreateFile(com.port, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + break; + } + + if (com.hComm == INVALID_HANDLE_VALUE) { + return -1; + } + com.fd = atoi(portname + 3); // COMx and COMxx + SerialParams.DCBlength = sizeof(SerialParams); + return com.fd; +} + +int closeSerial(int fd) { + + int ret = CloseHandle(com.hComm); + if (ret != 0) + return 0; + else + return -1; +} + +//Returns hComm from the COM structure +HANDLE getHandle() { + return com.hComm; +} + +#endif diff --git a/3rd-party/termiWin/termiWin.h b/3rd-party/termiWin/termiWin.h new file mode 100644 index 0000000..66a30b8 --- /dev/null +++ b/3rd-party/termiWin/termiWin.h @@ -0,0 +1,197 @@ +/* termiWin.h +* +* Copyright (C) 2017 Christian Visintin - christian.visintin1997@gmail.com +* +* This file is part of "termiWin: a termios porting for Windows" +* +* termiWin 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 3 of the License, or +* (at your option) any later version. +* +* termiWin is distributed in the hope that 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 termiWin. If not, see . +* +*/ + +#ifndef TERMIWIN_H_ +#define TERMIWIN_H_ + +#define TERMIWIN_VERSION "1.2.0" +#define TERMIWIN_MAJOR_VERSION 1 +#define TERMIWIN_MINOR_VERSION 2 + +#ifdef _WIN32 + +#define WIN32_LEAN_AND_MEAN +#include +#include +#pragma comment(lib, "Ws2_32.lib") + +/*Redefining functions from winsock to termiWin. This is very important since winsock2 defines functions such as close as closesocket we have to redefine it*/ + +#ifndef TERMIWIN_DONOTREDEFINE +#define read readFromSerial +#define write writeToSerial +#define select selectSerial +#define open openSerial +#define close closeSerial +#endif + +//Serial options - Linux -> Windows + +/*setAttr flags - ~ in front of flags -> deny them*/ + +//iFlag + +#define INPCK 0x00004000 /*If this bit is set, input parity checking is enabled. If it is not set, no checking at all is done for parity errors on input; the characters are simply passed through to the application.*/ +#define IGNPAR 0x00001000 /*If this bit is set, any byte with a framing or parity error is ignored. This is only useful if INPCK is also set.*/ +#define PARMRK 0x00040000 /*If this bit is set, input bytes with parity or framing errors are marked when passed to the program. This bit is meaningful only when INPCK is set and IGNPAR is not set.*/ +#define ISTRIP 0x00008000 /*If this bit is set, valid input bytes are stripped to seven bits; otherwise, all eight bits are available for programs to read. */ +#define IGNBRK 0x00000400 /*If this bit is set, break conditions are ignored. */ +#define BRKINT 0x00000100 /*If this bit is set and IGNBRK is not set, a break condition clears the terminal input and output queues and raises a SIGINT signal for the foreground process group associated with the terminal. */ +#define IGNCR 0x00000800 /*If this bit is set, carriage return characters ('\r') are discarded on input. Discarding carriage return may be useful on terminals that send both carriage return and linefeed when you type the RET key. */ +#define ICRNL 0x00000200 /*If this bit is set and IGNCR is not set, carriage return characters ('\r') received as input are passed to the application as newline characters ('\n').*/ +#define INLCR 0x00002000 /*If this bit is set, newline characters ('\n') received as input are passed to the application as carriage return characters ('\r').*/ +#define IXOFF 0x00010000 /*If this bit is set, start/stop control on input is enabled. In other words, the computer sends STOP and START characters as necessary to prevent input from coming in faster than programs are reading it. The idea is that the actual terminal hardware that is generating the input data responds to a STOP character by suspending transmission, and to a START character by resuming transmission.*/ +#define IXON 0x00020000 /*If this bit is set, start/stop control on output is enabled. In other words, if the computer receives a STOP character, it suspends output until a START character is received. In this case, the STOP and START characters are never passed to the application program. If this bit is not set, then START and STOP can be read as ordinary characters.*/ + +//lFlag + +#define ICANON 0x00001000 /*This bit, if set, enables canonical input processing mode. Otherwise, input is processed in noncanonical mode. */ +#define ECHO 0x00000100 /*If this bit is set, echoing of input characters back to the terminal is enabled.*/ +#define ECHOE 0x00000200 /*If this bit is set, echoing indicates erasure of input with the ERASE character by erasing the last character in the current line from the screen. Otherwise, the character erased is re-echoed to show what has happened (suitable for a printing terminal). */ +#define ECHOK 0x00000400 /*This bit enables special display of the KILL character by moving to a new line after echoing the KILL character normally. The behavior of ECHOKE (below) is nicer to look at.*/ +#define ECHONL 0x00000800 /*If this bit is set and the ICANON bit is also set, then the newline ('\n') character is echoed even if the ECHO bit is not set. */ +#define ISIG 0x00004000 /*This bit controls whether the INTR, QUIT, and SUSP characters are recognized. The functions associated with these characters are performed if and only if this bit is set. Being in canonical or noncanonical input mode has no effect on the interpretation of these characters. */ +#define IEXTEN 0x00002000 /*On BSD systems and GNU/Linux and GNU/Hurd systems, it enables the LNEXT and DISCARD characters.*/ +#define NOFLSH 0x00008000 /*Normally, the INTR, QUIT, and SUSP characters cause input and output queues for the terminal to be cleared. If this bit is set, the queues are not cleared. */ +#define TOSTOP 0x00010000 /*If this bit is set and the system supports job control, then SIGTTOU signals are generated by background processes that attempt to write to the terminal.*/ + +//cFlag + +#define CSTOPB 0x00001000 /*If this bit is set, two stop bits are used. Otherwise, only one stop bit is used. */ +#define PARENB 0x00004000 /*If this bit is set, generation and detection of a parity bit are enabled*/ +#define PARODD 0x00008000 /*This bit is only useful if PARENB is set. If PARODD is set, odd parity is used, otherwise even parity is used. */ +#define CSIZE 0x00000c00 /*This is a mask for the number of bits per character. */ +#define CS5 0x00000000 /*This specifies five bits per byte. */ +#define CS6 0x00000400 /*This specifies six bits per byte. */ +#define CS7 0x00000800 /*This specifies seven bits per byte. */ +#define CS8 0x00000c00 /*This specifies eight bits per byte. */ +#define CLOCAL 0x00000000 /*Ignore modem control lines -> ignore data carrier detected - not implementable in windows*/ +#define CREAD 0x00000000 /*Enable receiver - if is not set no character will be received*/ + +//oFlag + +#define OPOST 0x00000100 /*If this bit is set, output data is processed in some unspecified way so that it is displayed appropriately on the terminal device. This typically includes mapping newline characters ('\n') onto carriage return and linefeed pairs. */ + +//cc + +#define VEOF 0 +#define VEOL 1 +#define VERASE 2 +#define VINTR 3 +#define VKILL 4 +#define VMIN 5 /*If set to 0, serial communication is NOT-BLOCKING, otherwise is BLOCKING*/ +#define VQUIT 6 +#define VSTART 7 +#define VSTOP 8 +#define VSUSP 9 +#define VTIME 10 + +//END OF setAttr flags + +/*Controls*/ +#define TIOMBIC DTR_CONTROL_DISABLE +#define TIOMBIS DTR_CONTROL_ENABLE +#define CRTSCTS RTS_CONTROL_ENABLE + +/*Others*/ +#define NCCS 11 + +//Baud speed +#define B110 CBR_110 +#define B300 CBR_300 +#define B600 CBR_600 +#define B1200 CBR_2400 +#define B2400 CBR_2400 +#define B4800 CBR_4800 +#define B9600 CBR_9600 +#define B19200 CBR_19200 +#define B38400 CBR_38400 +#define B57600 CBR_57600 +#define B115200 CBR_115200 + +/*Attributes optional_actions*/ +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +/*TCFLUSH options*/ +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +/*TCFLOW optons*/ + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +//typdef +typedef unsigned tcflag_t; /*This is an unsigned integer type used to represent the various bit masks for terminal flags.*/ +typedef unsigned cc_t; /*This is an unsigned integer type used to represent characters associated with various terminal control functions.*/ +typedef unsigned speed_t; /*used for terminal baud rates*/ + +typedef struct termios +{ + + tcflag_t c_iflag; /*input modes*/ + tcflag_t c_oflag; /*output modes*/ + tcflag_t c_cflag; /*control modes*/ + tcflag_t c_lflag; /*local modes*/ + cc_t c_cc[NCCS]; /*special character*/ + +} termios; + +//Serial configuration functions + +int tcgetattr(int fd, struct termios *termios_p); +int tcsetattr(int fd, int optional_actions, const struct termios *termios_p); +int tcsendbreak(int fd, int duration); +int tcdrain(int fd); +int tcflush(int fd, int queue_selector); +int tcflow(int fd, int action); +void cfmakeraw(struct termios *termios_p); +speed_t cfgetispeed(const struct termios *termios_p); +speed_t cfgetospeed(const struct termios *termios_p); +int cfsetispeed(struct termios *termios_p, speed_t speed); +int cfsetospeed(struct termios *termios_p, speed_t speed); +int cfsetspeed(struct termios * termios_p, speed_t speed); + +//Write/Read/Open/Close/Select Functions + +int selectSerial(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); +int readFromSerial(int fd, char* buffer, int count); +int writeToSerial(int fd, char* buffer, int count); +int openSerial(char* portname, int opt); +int closeSerial(int fd); + +//get Handle out of the COM structure +HANDLE getHandle(); + + + +#endif + +#ifndef _WIN32 +#pragma message("-Warning: termiWin requires a Windows system!") +#endif + +#endif diff --git a/3rd-party/termiWin/termios.h b/3rd-party/termiWin/termios.h new file mode 100644 index 0000000..cbdca22 --- /dev/null +++ b/3rd-party/termiWin/termios.h @@ -0,0 +1,27 @@ +/* termios.h +* +* Copyright (C) 2017 Christian Visintin - christian.visintin1997@gmail.com +* +* This file is part of "termiWin: a termios porting for Windows" +* +* termiWin 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 3 of the License, or +* (at your option) any later version. +* +* termiWin is distributed in the hope that 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 termiWin. If not, see . +* +*/ + +#ifndef TERMIOS_H +#define TERMIOS_H + +#include "termiWin.h" + +#endif diff --git a/CHANGES b/CHANGES deleted file mode 100644 index 60d8f82..0000000 --- a/CHANGES +++ /dev/null @@ -1,627 +0,0 @@ -Release 2.2.5: -By John A. Magliacane (05-May-2018): - -* Fixed coding bugs identified by GCC v8.1.0. - -* Re-arranged GCC arguments in installer.c for better - compatibility with more recent versions of GCC. - -* Added a -dp command-line option to PREDICT to - provide quick Doppler shift estimates in CSV format. - (Thanks Joeal Subash) - -* Updated the documentation to reflect the changes. ----------------------------------------------------------------------------- - -Release 2.2.4: -By John A. Magliacane (12-Mar-2018): - -* Fixed a bug affecting the -f switch that sometimes caused - a failure to return proper output. (Tnx: Andrej Lajovic) - -* Fixed a bug in installer.c that sometimes caused a failure - to properly install PREDICT's executable into /usr/local/bin - by default. - -* Added header to gsat-1.1.0/src/callbacks.c ----------------------------------------------------------------------------- - -Release 2.2.3: -By John A. Magliacane (15-Apr-2006): - -* PREDICT now handles -u, -t, and -q command-line options - (hopefully) better than before. When these options are used - and no default TLE and QTH files are found under the user's - home directory, PREDICT is no longer placed into "new user" - mode. This should ease the use of PREDICT in non-interactive - applications (in automated scripts, etc.) where a $HOME - environment is lacking or not desired. Only if a user - has no QTH and TLE files under their home directory, and - has passed no -q and -t arguments to PREDICT will that - user now be considered a "new user". - -* New command-line options were added to PREDICT. The -east - option causes PREDICT to display longitudes in degrees east - rather than in degrees west. The -south option displays - latitudes in degrees south rather than in degrees north. - -west and -north options, which are the normal defaults, - are also included for completeness. (Tnx: Takeshi-Okazaki, - MTSAT-1R Chief Aeronautical Mission Engineer) - -* RS-232 output in PREDICT and Moontracker has been improved - to prevent the transmission of extraneous bytes past the - end-of-line characters. (Tnx: SP7HAA) - -* Since the bzero() function is being deprecated, all bzero() - function calls were replaced by memset() in all affected code. - -* The accuracy of PREDICT's real-time clock displays have been - improved. - -* A problem was corrected where the GET_SAT_POS socket command - would return results as if the GET_SAT command were also - sent to PREDICT. (Tnx: David Hutchinson, G8SQH) - -* PREDICT now returns a response ("Huh?") to clients that send - unrecognized commands via the UDP socket interface instead - of sending nothing. - -* The GET_DOPPLER socket command now returns Doppler shift - information even if the satellite in question is below the - local horizon. - -* A keyboard interactive socket interface demonstration program - was added ("demo-i" under clients/samples). - -* "earthtrack" was updated to handle changes in xplanet version - 1.0 and later. - -* A small bug in the orbital prediction [P] and visual calendar [V] - modes of PREDICT was fixed. Before the fix, the sunlight/visibility - symbol (*, +) displayed in these modes would sometimes list the - point of LOS as a '*' when it should have been a '+' at the - conclusion of a visible pass. - -* Array overflow conditions in predict.c's Print() and Daynum2String() - functions were identified and fixed. - -* Several very minor coding changes were made to allow warning-free - compilation under GCC 4.x.x. - ----------------------------------------------------------------------------- - -Release 2.2.2: -By John A. Magliacane (14-Mar-2003): - -* PREDICT's main menu was expanded to handle the additional program - options. The main menu also now displays the text "Server Mode" - when the program is invoked in socket server mode. - -* Orbital phase, eclipse depth, and squint angle data has been appended - to the information returned to UDP client applications in response - to the GET_SAT command. - -* The Moon's declination, Greenwich hour angle, and right ascension - have been appended to the information returned to UDP clients in - response to the GET_MOON command. - -* The Sun's declination, Greenwich hour angle, and right ascension - have been appended to the information returned to UDP clients in - response to the GET_SUN command. - -* PREDICT now returns orbital data in NASA Two-Line format to UDP - clients in response to the GET_TLE command. - -* Added a new UDP socket command (GET_MODE) to return PREDICT's - current tracking mode (single, multi, none) to networked clients. - If PREDICT is operating in Single Satellite tracking mode, then the - name of the satellite currently being tracked is returned by GET_MODE. - -* Fixed a bug that caused GET_SAT requests to fail after GET_DOPPLER - requests were issued. (Tnx: KF6RFX) - -* Fixed a bug in "earthtrack" where latitude and longitude options sent - to "xplanet" were reversed under certain circumstances. (Tnx: ZL2BSJ) - -* In Main Menu option [G] (Edit Ground Station Information), ground - station latitude and longitude may now be entered in degree, minute, - second (DMS) format in addition to decimal degrees. - -* Moon tracking code replaced with a more precise algorithm based - on Meeus' method. - -* Added a lunar prediction mode that predicts passes of the Moon. - -* Added a solar prediction mode that predicts passes of the Sun. - -* Added "MoonTracker", a small background utility that directs - an AZ/EL antenna array toward the position of the Moon. - -* The "vocalizer" feature was greatly improved. Sound samples are - now read from ubiquitious .wav files, making it easier for users - to create samples of their own, even in languages other than English. - PREDICT now articulates numeric values in their entirety (ie: - "three hundred forty nine") instead of articulating each digit - individually ("three four nine") as was done previously. Alarms - and additional announcements were added to alert a visual observer - when a spacecraft is visible, when it enters into sunlight, and - when it enters into eclipse. - -* Added "fodtrack", written by Luc Langermann, LX1GT. This utility - permits AZ/EL antenna control using the Fodtrack hardware interface - via the parallel port. - -* Several other coding changes were made. Linux-specific code was - removed in an effort to allow easier compilation under FreeBSD, - MacOS X, and other Unixes in general. - -* Program documentation was updated to reflect the changes and new - features available in this version of PREDICT. - ----------------------------------------------------------------------------- - -Release 2.2.1: -By John A. Magliacane (14-Oct-2002): - -* Fixed a problem that caused PREDICT to display the last satellite - twice in listings when less than the maximum number of satellites - existed in predict.tle. - -* Fixed a problem that caused a Doppler shift of zero to be - reported by PREDICT via the UDP interface in MultiTracking mode. - -* Several other minor "tweaks" were made. - ----------------------------------------------------------------------------- - -Release 2.2.0: (a.k.a. The Columbus Day Release) -By John A. Magliacane (12-Oct-2002): - -* PREDICT's satellite tracking algorithm was replaced by a more precise - model based on a translation into 'C' of Dr. T.S. Kelso's SGP4/SDP4 - FORTRAN and Pascal routines by Neoklis Kyriazis, 5B4AZ, and made available - under the GNU General Public License through his "satcom-08" program. - -* PREDICT now imports, exports, and permits editing of TLE element set - numbers, International Designators, and Bstar and nddot/6 drag terms - in addition to all the remaining orbital data found in a two-line - element set. - -* Earthtrack was modified so that when multi-tracking satellites, - range circles are displayed 5 minutes prior to AOS through LOS. - -* Maximum allowable callsign length was increased to 15 characters to - permit groundstation names to be used in place of 6 character callsigns. - -* Vocalizer will no longer send audio to the soundcard if the soundcard - cannot be set to the proper sampling rate and word size. - -* The Single Tracking mode was completely redesigned to allow interactive - selection of satellite transponder, provide real-time Doppler-compensated - uplink and downlink frequency information, and support for a transponder - database. Spacecraft antenna squint angle, propagation delay, echo, - and satellite eclipse depth information are also now available. See - the NEWS file for additional information. - -* Orbital predictions now report squint angles instead of orbit - numbers if ALAT/ALON data is available in the transponder database. - -* A Visual BASIC Windows-based client application has been contributed - by Steve Fraser, VK5ASF. Steve also contributed some small coding - changes that allow PREDICT to be successfully invoked by rc.local - upon startup. - -* Bent Bagger, OZ6BL, contributed a small change to get_response() in - the client demo.c program. The modification recognizes the absence - of a PREDICT server, and displays an appropriate error message. - The previous method set an alarm and waited for a timeout to occur. - -* A bug in the configure script was fixed. - -* Lots of other small coding changes were made. - ----------------------------------------------------------------------------- - -Release 2.1.6: (a.k.a. The 11th Anniversary Release) -By John A. Magliacane (08-Jul-2002): - -* Buffering added to I/O functions in the vocalizer utility - for better efficiency and less CPU load. - -* Fixed errors in main() (predict.c) that prevented the - vocalizer utility from ever being invoked by PREDICT. - -* Modified the earthtrack utility for compatibility with - versions of xplanet more recent than 0.82. - -* Serial port configuration for antenna rotator interface control - is now automatically set within PREDICT to the EasyComm 2 protocol - standard (9600 bps, 8N1, no handshaking) when the -a or -a1 - command-line options are invoked. - -* -a1 command-line option added. It works like the -a option, except - it sends tracking data to the specified serial port at least once - per second, whether the data has changed since the last transmission - or not. These "keepalives" are required for interfaces such as the - ones by Suding Associates, Inc. that throttle back to manual mode if - updates aren't received on a regular and frequent basis. - -* "gsat" by Xavier Crehueras, EB3CZS, has been updated to version 1.0.0. - The new version adds Doppler control for beacon frequencies, support - for a satellite frequency database, and automatic frequency selection. - In addition, an azimuth/elevation graphic window is now included, - and automatic rotator control via plugins is now supported. - -* The destination directory for PREDICT's executables may now be - specified to something other than the regular default (/usr/local/bin) - when ./configure is invoked. See the README file for details. - -* Main menu option [I] (Program Information) was changed to provide - information about which files were loaded by PREDICT, if a soundcard - is present, if network server mode is enabled, if rotator AutoTracking - is enabled, and if so, what serial port is used, how often is data sent, - etc. - -* The documentation was updated, and several other small coding - changes were made. - ----------------------------------------------------------------------------- - -Release 2.1.5: (a.k.a. The "Palindrome Year" Release) -By John A. Magliacane (03-Jan-2002): - -* -n command-line switch was added by Xavier Crehueras, EB3CZS, - to permit an alternate network port to be specified when - running PREDICT in server mode. This flexibility permits - multiple instances of PREDICT to run in server mode on a - single host without interaction. Each instance of PREDICT - can then operate from a different orbital database, and - supply the tracking data generated to different clients. - -* -p command-line switch was added to permit a set of orbital - predictions for a single pass to be generated by PREDICT and - obtained solely through the command line. The output may be - directed to a file if a name is specified through the -o switch. - -* The output of the -f command-line was modified to be consistent - with that of the the newly added -p switch. Options to the -f - switch were enhanced to permit a list of satellite positions to - be generated in resolutions of one every second or one every - minute. - -* The GET_SAT_POS socket command now provides date/time information - in both ASCII and Unix Time, as well as range, orbit number, and - sunlight visibility information in addition to azimuth, elevation, - and sub-satellite point latitude and longitude (which are now - ints instead of floats). - -* A new socket command called PREDICT was added to provide orbital - prediction information through the socket interface. - -* Due to a warning given by gcc version 2.95.3, the use - of tmpnam() was replaced by mkstemp() in predict.c. - -* Modified the "kepupdate" script to download Keplerian element data - from celestrak.com using the wget command and the http protocol - since celestrak.com no longer provides Keplerians via anonymous ftp. - -* The xpredict script was modified to include more virtual terminal - selections. - -* Version 0.9.0 of "gsat" by Xavier Crehueras, EB3CZS, is included. - Several new features, including automatic Doppler correction via - plugins, is included. Details for writing and customizing plugins - is provided. - -* Added a new "-x" command line option to "earthtrack" to allow passing - extra parameters directly to xearth and xplanet (contributed by Tom - Busch, WB8WOR). - -* The documentation was updated, and several other small coding - changes were made. - ----------------------------------------------------------------------------- - -Release 2.1.4: -by John A. Magliacane (28-Jun-2001): - -* Fixed an array overflow problem in the Solar Illumination - Prediction mode. - -* Pressing [R] in either the Single or Multi-Tracking mode forces - PREDICT to re-read the orbital database. This can be useful if - the database is updated manually or by means other than through - PREDICT's update options while PREDICT is still running, and - eliminates the need to re-start the program under such conditions. - -* Real-time tracking is no longer attempted for satellites that - appear to have decayed from orbit. - -* Several new options were added to the -f command-line switch. If no - starting or ending date/time is specified, a single line of output - corresponding to the current date/time is produced. If the starting - date/time is replaced by a number (n) preceded by a '+' symbol (ie. - +10), output is produced starting at the current date/time, and - ending at the current date/time plus 'n' seconds. - -* Multiple Keplerian element data files may now be used as arguments - for the -u command-line switch. (predict -u file1 file2 file3) - -* Several network client applications were added or otherwise revised. - "earthtrack" was modified to work not only with xearth, but with - xplanet as well. When used with xplanet, earthtrack provides - photo-realistic views of the earth from the perspective of the - spacecraft being tracked by PREDICT. Very nice! An updated version - of gsat (version 0.8.0) is also included, as well as a small utility - to force a reload of PREDICT's orbital database through the UDP - interface. - -* The configuration and compilation process has been modified slightly - to reduce confusion during installation. Please check the README file - for instructions! - -* An updated Linux Software Map entry was issued, and the new version - of PREDICT was uploaded to: - - ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.4.tar.gz - and - ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.4.tar.gz - ----------------------------------------------------------------------------- - -Release 2.1.3: (a.k.a. "The New Millennium Edition") -by John A. Magliacane (06-Jan-2001): - -* Fixed several small math errors. One goes back to some very old - (and widely used) satellite tracking code! Thanks to Jordi Mas - for pointing them out and providing corrections. Thanks also to - Andreas Trotschel for pointing out an error in the size of the - global output[] array. - -* Portions of the MultiTrack() and SingleTrack() functions were - re-coded for greater simplicity and to permit some new socket - features to be added. - -* Added many new socket commands: - - RELOAD_TLE: forces a running version of PREDICT to - re-read its orbital database on the fly. - - GET_SUN: returns the current azimuth and elevation - headings of the Sun. - - GET_MOON: returns the current azimuth and elevation - headings of the Moon. - - GET_QTH: returns the ground station's callsign, latitude, - longitude, and altitude above sea level. - - GET_VERSION: returns PREDICT's version number. - - GET_TLE: returns Keplerian orbital data for a satellite - based on its name or object number. - - GET_TIME: returns the current UTC date/time as reported by the - server in the form of the number of seconds since - 00:00:00 UTC on January 1, 1970 (Unix Time). - - GET_TIME$: returns the current UTC date/time as reported by - the server in the form of Fri Dec 22 22:37:05 2000. - - GET_SAT_POS: returns the latitude, longitude, azimuth and elevation - headings for a satellite at the time (or starting and - ending times) specified. - - The GET_SAT command now returns the current slant-range to the satellite - (in kilometers), the satellite's altitude, orbital velocity, current orbit - number, and sunlight visibility information in addition to the tracking - data previously provided. The "Next AOS" parameter previously returned - has been changed to "Next Event Time", which corresponds to the Next AOS - time if the satellite is not in range, or the LOS Time for satellites - that are in range. Geostationary satellites, or satellites in orbits - that do not permit passes above the ground station return a 0 for - "Next Event Time". - - The GET_LIST command now returns ALL the satellite names in PREDICT's - orbital database as a single string, and must be parsed by the client - to pull out individual names. Earlier versions of PREDICT returned - only one name at a time when the GET_LIST command was invoked. In - addition, satellite names returned by GET_LIST are now full-length - strings, and are no longer abbreviated by the program in any way. - -* The GET_DOPPLER command no longer echos back the name of the - satellite for which the Doppler information was requested. - -* The socket documentation and "demo.c" program were significantly - updated. - -* "demo.pl" written in Perl by Rich Parry, W9IF, is included to act - as a template for those interested in writing client applications - in Perl. - -* The main program documentation was re-organized around a common - document written in groff, thereby providing a system man page - as well as postscript, PDF, and ASCII documents having identical - content. The HTML documentation was eliminated. - -* Added a new command-line option: -a When followed by a serial port - device (eg: predict -a /dev/ttyS0), PREDICT sends real-time tracking - data to the serial port specified in the form of: "AZ241.0 EL26.0\r\n" - (EasyComm standard) when in the single satellite tracking mode. - Updates are sent as the values for azimuth and elevation change over - time. This feature is used to permit PREDICT to control an antenna - rotator through an interface developed by Vicenzo Mezzalira, IW3FOL - . Thanks to Vittorio Benvenuti, I3VFJ - for contributing this code to PREDICT. - -* Added a new command-line option: -f When followed by a satellite - name or object number, a date/time (in Unix Time), or a starting - and ending date/time, the corresponding latitude, longitude, azimuth, - and elevation headings of the satellite are returned by the program. - This permits PREDICT to be invoked within other applications that - need to determine the location of a satellite at a particular point - in time, such as the location of where a CCD camera image was taken - by a Pacsat satellite based on its timestamp. - -* Added a new line to the xpredict script to allow it to run under - newer Linux distributions. Users need to select (uncomment) one - of the lines in the script depending on their termcap settings. - -* Included the source code for the xforms-based graphical real-time - satellite tracking display program "map" by Ivan Galysh, KD4HBO - under clients/map. - -* Included the source code for the GTK-based graphical real-time - satellite tracking display program "gsat" by Xavier Crehueras, - EB3CZS under clients/gsat. - -* Included the source code for "earthtrack", a utility that permits the - real-time display of satellite locations using the "xearth" program. - It is located under clients/earthtrack. - -* An updated Linux Software Map entry was issued, and the new version - of PREDICT was uploaded to: - - ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.3.tar.gz - and - ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.3.tar.gz - ----------------------------------------------------------------------------- - -Release 2.1.2: -by John A. Magliacane (17-Jun-2000): - -* Several small bugs in the KepCheck() and SaveTLE() functions of predict.c - were identified and repaired. The problems centered on the fact that - unsigned chars were used to accumulate TLE checksums. Occasionally, - the checksums exceeded the capacity of an unsigned char, and rolled - over through zero as a result. These variables were changed to - unsigned integers. - -* A small problem in the AutoUpdate() function in predict.c was identified - and fixed. Occasionally, Keplerian data for a satellite would not - update if it had the same reference epoch as that in PREDICT's - orbital database. This problem was the result of extremely small - rounding errors introduced by the complier that caused intermittent - logic errors when trying to compare two double precision floats for - equality. This problem was solved by changing these variables from - doubles to floats. - -* The array "filename" in the function sayfile() in vocalizer.c was - increased in size from 40 to 80 bytes. Before the change, this array - could overflow, causing a halt in the vocalizer routine on some machines - before the proper end of the articulated message. - -* A #define was added to the geosat.c program to declare a value of PI - for those compilers/platforms that require it being defined. - -* The -T option in the xpredict script was changed to -title. - -* An updated Linux Software Map entry was issued, and the new version - of PREDICT was uploaded to: - - ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.2.tar.gz - and - ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.2.tar.gz - ----------------------------------------------------------------------------- - -Release 2.1.1: -by John A. Magliacane (03-Apr-2000): - -* A few bugs in the "installer" program were fixed. - -* The Keplerian "torture test" in predict.c was a bit too brutal for - some element sets. The check for a '-' on position 59 of TLE line 1 - was eliminated since some element sets have a '+' in that position. - -* An updated Linux Software Map entry was issued, and the new version - of PREDICT was uploaded to: - - ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.1.tar.gz - and - ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.1.tar.gz - ----------------------------------------------------------------------------- - -Release 2.1.0: -by John A. Magliacane (01-Apr-2000): - -* A solar illumination feature was added to predict the percentage - of time a satellite spends in sunlight per day. - -* Orbital predictions for satellites that appear to have decayed - since the last Keplerian orbital update are no longer attempted - by the program. - -* Date and time used to start orbital predictions may now be - abbreviated to Day/Month/Year only (00:00:00 is assumed). - -* System clock/calendar is now read to millisecond precision, - permitting more "lively" real-time tracking mode displays. - -* "vocalizer" code was changed to use a slightly different (better) - approach towards initializing and sending data to the system - soundcard. - -* Socket-based server code was contributed by Ivan Galysh, KD4HBO. - It allows PREDICT to export real-time tracking data for all 24 - satellites to external client programs, such as automatic antenna - rotator controllers, graphical map display programs, or TX/RX - tuning controllers. The server features are activated by invoking - PREDICT with a -s switch. Communication between server and clients - is by way of the UDP protocol. Real-time data is exported by PREDICT - in both the single satellite and multi-satellite tracking modes. - -* The command-line parsing code was modified to prevent segmentation - faults from occurring if command-line options are incorrectly issued. - -* Some minor coding changes were made. - -* An updated Linux Software Map entry was issued, and the new version - of PREDICT was uploaded to: - - ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.0.tar.gz - and - ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.0.tar.gz - ----------------------------------------------------------------------------- - -Release 2.0.1: -by John A. Magliacane (02-Jan-2000): - -* Added this file. :-) - -* Replaced the printw() calls with addstr() calls in the Print() function. - This may end the segmentation faults previously encountered when using - ncurses versions earlier than 4.2. - -* Increased the capacity for supporting callsigns longer than 5 characters, - even though I thought I had designed the program to handle 6! Through - a series of "well-planned errors", callsigns longer than 5 characters - caused all other QTH data entered through main menu option [G] to be - set to zero. Also modified the ReadDataFiles() function to chop off - the character appended to the callsign. - -* Drastically changed the installation program. Instead of having the - installation program modify the source code for predict and vocalizer - depending on the system hardware and installation directory chosen by - the user, the installation program now writes all necessary information - to a pair of .h files that are #included in the source code for both - programs. (Why I didn't think of it earlier, I'll never know...) - -* Ported source code (with all the 2.0.1 modifications) to DOS using - Caldera's DR-DOS 7.02 and a DJGPP 32-bit software developing environment. - The vocalizer routines were intentionally left out (DOS can't multi-task). - The initial DOS version has been set to 2.0.1d rather than 2.0.0 to reflect - the small bug fixes it contains over the original Linux version, with - the 'd' representing the fact that it's a DOS version. The DOS version - contains full source code plus a pre-compiled binary for Intel CPUs - as well as a protected mode driver. It was uploaded to: - - ftp://ftp.amsat.org/amsat/software/PC/tracking/predict2.zip - -* Uploaded the latest release to: - - ftp://ftp.amsat.org/amsat/software/Linux/predict-2.0.1.tar.gz - diff --git a/CREDITS b/CREDITS deleted file mode 100644 index a567671..0000000 --- a/CREDITS +++ /dev/null @@ -1,49 +0,0 @@ - ************* - * Credits * - ************* - -SGP4/SDP4 models and sun/moon position algorithms used in this -version of PREDICT were derived from "satcom-08", written by -Neoklis Kyriazis, 5B4AZ, and released in 2002 under the GNU -General Public License. Parts of "satcom-08" were derived -through a translation into 'C' of SGP4 and SDP4 code written -originally in FORTRAN and Pascal by Dr. T.S. Kelso. Dr. Kelso's -code is available on his web site at http://www.celestrak.com/. - -Socket-based server code and the "map" client application were -contributed by Ivan Galysh, KD4HBO on 10-Jan-2000. - -PIC/TRACK antenna rotator control code was contributed by -Vittorio Benvenuti, I3VFJ on 13-Jul-2000. - -The "gsat" client was contributed by Xavier Crehueras, EB3CZS. - -The Perl client demonstration program was contributed by Rich -Parry, W9IF. - -The WinPredictClient was contributed by Steve Fraser, VK5ASF. - -The concept of using "xearth" as a graphical display for PREDICT -was originally conceived by Wade Hampton (that later developed -into "earthtrack"). - -Many others have contributed code to the project, including -Bent Bagger OZ6BL, Tom Busch WB8WOR, Steve Fraser VK5ASF, -Xavier Crehueras, EB3CZS, Takeshi-Okazaki (Satellite Engineer -for MTSAT-1R (HIMAWARI 6)), and others. - -Calculations for squint angle were adopted from trk-0.4.1 by Lapo -Pieri, IK5NAX. - -Joeal Subash contributed code for the new "QuickDoppler" feature. - -PREDICT is also the product of many others who have contributed -bug reports, bug fixes, helpful suggestions, and positive support. - - --- -John A. Magliacane, KD2BD -Lead Developer -kd2bd@amsat.org -May 2018 - diff --git a/HISTORY b/HISTORY deleted file mode 100644 index 1a41579..0000000 --- a/HISTORY +++ /dev/null @@ -1,31 +0,0 @@ - ====================== - The History of PREDICT - ====================== - -Work on PREDICT started on May 26, 1991 with the purpose of creating a -replacement for QUIKTRAK software that ran on the Commodore 64 home -computer. PREDICT was originally written in C and compiled using a -"Super C" compiler. After the program was completed and found to be -useful, PREDICT was then ported to several Unix machines and then to -DOS using a Borland Turbo C++ compiler. The DOS version was completed -in May 1994 and was the first version of PREDICT released to the public. -PREDICT was later ported to the Linux operating system in 1995 and -released as freeware as a pre-compiled a.out dynamically linked -binary in 1996. - -Through years of daily use, PREDICT was found to be reliable and accurate, -and only minor changes were made to the program until 1999 when major -portions were re-written from scratch and many new features were added. - -The release of PREDICT version 2.0.0 in December 1999 represents the -second major release of the program. - -Further details regarding the history of PREDICT are available in the -July 2000 (Science and Engineering) issue of "Linux Journal" magazine. - -The release of PREDICT version 2.2.0 in October 2002 represents the -third major release of the program. - -This version of PREDICT was written under Slackware Linux on a 100 MHz -Pentium-based PC with 16 megabytes of RAM using the "vi" editor. - diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 94a9ed0..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. 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 -them 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 prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. 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. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey 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; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If 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 convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU 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 that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - 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. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -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. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - 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 -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 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, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program 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, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU 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 Lesser General -Public License instead of this License. But first, please read -. diff --git a/README b/README deleted file mode 100644 index 273b975..0000000 --- a/README +++ /dev/null @@ -1,83 +0,0 @@ - ========================= - PREDICT QUICK START GUIDE - ========================= - -SYSTEM REQUIREMENTS -=================== -This program requires ncurses version 4.2 or higher. Earlier versions have -been known to cause segmentation faults and/or odd display colors with this -program. ncurses may be obtained via: - - https://www.gnu.org/software/ncurses/ - - -The Linux pthreads library is also required. Both of these libraries are -usually available in modern Linux distributions. - - -UNPACKING -========= -The PREDICT archive can be unpacked in any directory for which read access -is provided for all system users (such as /usr/src or /usr/local/src for -Slackware Linux). As root, move the tar file to such a directory and -issue the command: - - tar xvfz predict-2.2.4.tar.gz - -to unpack the file. - - -COMPILATION -=========== -PREDICT's compilation and installation procedure differs slightly from -that of most software, but should easy enough to understand and follow. -First, move (cd) into the predict directory and execute the included -"configure" script by typing: - - ./configure - -as root at your command prompt. This script compiles and runs the install -program that configures the source code for PREDICT. It then compiles and -installs PREDICT by creating symbolic links between the executables created -in the installation directory and /usr/local/bin. If a destination directory -other than /usr/local/bin is desired, invoke configure with the desired -directory as an argument on the command line: - - ./configure /usr/bin - -NOTE: "configure" may stall if the system soundcard is in use. Some -window managers (sometimes KDE) take control of the soundcard, and prevent -the configure script from opening /dev/dsp and checking its existence. - - -FIRST TIME USE -============== -First time users will be asked to enter their groundstation latitude and -longitude in decimal degrees or in degree, minute, second (DMS) format. -Normally, PREDICT handles longitudes in decimal degrees WEST (0-360 -degrees), and latitudes in decimal degrees NORTH. This behavior can be -modified by passing the -east or -south command line switches to PREDICT -when it is invoked. Your station's altitude in meters above mean sea -level, a recent set of Keplerian orbital data for the satellites of -interest, and an accurately set system clock are also required if -successful real-time satellite tracking is also desired. Sources -for such data include http://www.celestrak.com/, -http://www.space-track.org, and http://www.amsat.org/. - - -FOR FURTHER INFORMATION -======================= -Please consult the files under the "docs" subdirectory for more -directions on the use and capabilities of PREDICT. - -The latest news and information regarding PREDICT software is -available at: http://www.qsl.net/kd2bd/predict.html. - - -Happy Tracking! - --- -John, KD2BD -kd2bd@amsat.org -March 2018 - diff --git a/README.md b/README.md deleted file mode 100644 index 5432ef3..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# predict -Satellite tracking, orbital prediction, open-source software diff --git a/Windows_Build_Instructions.txt b/Windows_Build_Instructions.txt new file mode 100644 index 0000000..c5c209f --- /dev/null +++ b/Windows_Build_Instructions.txt @@ -0,0 +1,72 @@ +WINDOWS BUILD INSTRUCTIONS + +The detailed instructions below build the software on C: volume, under the directory "C:\tmpbuild". +Note that the directory will be quietly deleted, if it exists. + +The instructions below assume your Windows 64-bit system does NOT have a working MinGW compiler. +Following the steps below will provide you with a working recent (2018) MinGW compiler. +Windows PATH variable is not set therefore you must point your 'command prompt' to the correct location each time. + +Compiler/version/platform: MinGW Build 7.3.0 (64-bit) +Compiler (zipped directory) dowload URL: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.3.0/threads-posix/seh/x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z/download +Compiler installation (unzip) instructions: + step 1: download ZIPped compiler archive from the URL above. + step 2: unzip it to a location on your system (e.g.: "C:\dev\compilers\" ). + step 3: open a new command prompt window and add compiler's path (to the current command prompt window only) with, e.g.: SET PATH=%PATH%;C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\ + step 4: test it with: x86_64-w64-mingw32-gcc.exe --version + Note: for a permanent PATH change, see instructions in your favorite search engine. + Note: with the above instructions, you should end up with EXE files at the following full paths: + "C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\mingw32-make.exe" + "C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc.exe" + "C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc-ar.exe" + +#################### +C: && CD \ && RD /Q /S tmpbuild & MKDIR tmpbuild && CD tmpbuild +git clone --single-branch --branch windows https://github.com/gdinit/predict.git +CD predict +#################### +CD 3rd-party\termiWin +RD /Q /S build & MKDIR build +set CC= +set LIBEXE= +SET PATH=%PATH%;C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\ +"C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc.exe" -D TERMIWIN_DONOTREDEFINE -Wall -g -c termiWin.c -o build\termiWin.o +DIR build +CD ..\..\ +#################### +CD 3rd-party\PDCurses\wincon +# compile using manually supplied make & gcc +# first, unset vars (otherwise Makefile might activate an older mingw installation. linker might fail due to version mismatch) +set CC= +set LIBEXE= +set AR= +set PREFIX= +# set vars (to point to the compiler & utils we would like to use) +set CC="C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc.exe" +set LIBEXE="C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc-ar.exe" +set AR="C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc-ar.exe" +set PREFIX=x86_64-w64-mingw32- +#################### +//Makefile.mng -- Modification #1: +add a new line as line #140, as detailed below: +original line #140 --> $(LIBCURSES) : $(LIBDEPS) +the new line #140 we're inserting --> LIBEXE = "C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc-ar.exe" +#################### +//Makefile.mng -- Modification #2: +original tui demo exe section (about line 161): (NOTE THAT THIS IS TUIDEMO.EXE and not TUIDEMO.O) + tuidemo.exe: tuidemo.o tui.o + $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES) $(EXELIBS) +new tui demo exe section: (NOTE THAT THIS IS TUIDEMO.EXE and not TUIDEMO.O) + tuidemo.exe: tuidemo.o tui.o + $(CC) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES) $(EXELIBS) +#################### +"C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\mingw32-make.exe" CC="C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc.exe" -f Makefile.mng +# this last step is just to test & confirm PDcurses is working fine +#press ALT+X to exit demo. +tuidemo +CD ..\..\..\ +#################### +COPY 3rd-party\PDCurses\wincon\pdcurses.a 3rd-party\PDCurses\wincon\libpdcurses.a +"C:\dev\compilers\mingw.x86_64.7.3.0-release-posix-seh-rt_v5-rev0\bin\x86_64-w64-mingw32-gcc.exe" -o predict.exe predict.c 3rd-party\termiWin\build\termiWin.o -I3rd-party\termiWin -I3rd-party/PDCurses -I3rd-party/PDCurses/wincon -L3rd-party/PDCurses/wincon -lpdcurses +predict +#################### diff --git a/build b/build deleted file mode 100755 index f4b79dd..0000000 --- a/build +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# Script to manually compile PREDICT -# -if [ -a predict.h ]; then - echo -n "Building PREDICT version `cat .version`... " - cc -Wall -O3 -s -fomit-frame-pointer predict.c -lm -lncurses -pthread -o predict - echo "Done!" -else - ./configure -fi diff --git a/changes.txt b/changes.txt new file mode 100644 index 0000000..3b22c82 --- /dev/null +++ b/changes.txt @@ -0,0 +1,134 @@ +Release 2.2.1d: +by John A. Magliacane (04-Nov-2002): + +* PREDICT's orbital model has been replaced by more precise + SGP4/SDP4 algorithms for increased tracking and orbital + prediction accuracy. + +* The Single Satellite Tracking Mode has been re-written to permit + support for a transponder database. It is now possible to select + precise Doppler-corrected uplink and/or downlink frequencies + interactively when tracking satellites in real-time. (No more + hunting around the transponder to find your downlink!) + +* Numeric co-processor emulation linked during the compilation phase + to permit operation on older machines lacking a co-processor (such + as 80486SX and 80386-based PCs). + +* Several new command-line options added to permit simplified satellite + location and orbital prediction to be conducted either via the + command-line, or from within other programs. This makes it possible, + for example, for another program to invoke PREDICT to calculate the + location of a satellite when the timestamp of a CCD image is determined. + +* The -u command-line switch has been modified to allow multiple file + names to be used when updating PREDICT's orbital database from the + command-line. + +* Solar eclipse angle depths, propagation delay, and echo duration are + now provided by PREDICT. If ALAT/ALON coordinates are known, squint + angles are also provided in both the Single Satellite Tracking mode + and orbital prediction output screens. + +* Added serial-port rotator control support for the PIC/TRACK, + EasyTrak Jr., or other EasyComm2-compatible rotator controllers. + (A suitable DOS serial port driver is still lacking, however.) + +* Main Menu option [I] now provides information on the files loaded + by PREDICT, the status of the AutoTracking function, the COM port + used by the tracking interface, etc. + +* Compilation was performed with an updated compiler (gcc 3.2). + +* The documentation was updated, and many other coding changes were + made. See the NEWS.TXT file for additional information. + + +Release 2.0.5d: +by John A. Magliacane (18-Nov-2001): + +* Modified the AosHappens() function to prevent a division-by-zero + error that would occur if used on a satellite containing no valid + TLE data. This error caused the MultiTracking mode to crash if + the predict.tle orbital database contained less than 24 satellites. + +* Real-time tracking is no longer performed for satellites that + appear to have decayed from orbit. + +* Fixed an array overflow problem in the Solar Illumination + Prediction Mode. + +* Updated documentation. Added PDF and HTML versions. + +* Some other minor coding changes were made. + + +Release 2.0.4d: +by John A. Magliacane (04-Jan-2001): + +* Fixed several small math errors. One goes back to some very old + (and widely used) satellite tracking code! Thanks to Jordi Mas + for pointing them out and providing corrections. Thanks also to + Andreas Trotschel for pointing out an error in the size of the + global output[] array. + +* Portions of the MultiTrack() and SingleTrack() functions were + re-coded for greater simplicity. + +* A bug in parsing the command-line options was fixed. + + +Release 2.0.3d: +by John A. Magliacane (17-Jun-2000): + +* Several small bugs in the KepCheck() and SaveTLE() functions of predict.c + were identified and repaired. The problems centered on the fact that + unsigned chars were used to accumulate TLE checksums. Occasionally, + the checksums exceeded the capacity of an unsigned char, and rolled + over through zero as a result. These variables were changed to + unsigned integers. + +* A small problem in the AutoUpdate() function in predict.c was identified + and fixed. Occasionally, Keplerian data for a satellite would not + update if it had the same reference epoch as that in PREDICT's + orbital database. This problem was the result of extremely small + rounding errors introduced by the complier that caused intermittent + logic errors when trying to compare two double precision floats for + equality. This problem was solved by changing these variables from + doubles to floats. + +* The Keplerian "torture test" was a bit too brutal for some element sets. + The check for a '-' on position 59 of TLE line 1 was eliminated since + some element sets have a '+' in that position. + + +Release 2.0.2d: +by John A. Magliacane (01-Apr-2000): + +* A solar illumination feature was added to predict the percentage + of time a satellite spends in sunlight per day. + +* Orbital predictions for satellites that appear to have decayed + since the last Keplerian orbital update are no longer attempted + by the program. + +* Date and time used to start orbital predictions may now be + abbreviated to Day/Month/Year only (00:00:00 is assumed). + The default remains the current date and time. + +* System clock/calendar is now read to millisecond precision, + permitting more "lively" real-time tracking mode displays. + +* The UTC timezone offset now may be set correctly for users living + in half hour timezones. + +* Internal timezone calculations are no longer confused by environmental + variable TZ. If TZ is properly set to a timezone name (as required + by some other satellite tracking programs), the TZ setting is used by + PREDICT instead of the UTC timezone offset specified in the predict.qth + file. + +* The command-line parsing code was modified to prevent segmentation + faults from occurring if command-line options are incorrectly issued. + +* Some other minor coding changes were made. diff --git a/clean b/clean deleted file mode 100755 index 0a12bb2..0000000 --- a/clean +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -# Script to prepare for a clean distribution. -# -rm -f predict predict.h -rm -f vocalizer/vocalizer.h vocalizer/vocalizer -rm -f clients/samples/demo -rm -f utils/moontracker/moontracker -rm -f utils/geosat/geosat -cd clients - rm -f map/map - cd gsat-1.1.0 - make clean - cd .. - rm -f earthtrack/earthtrack - rm -f kep_reload/kep_reload - cd .. -cp -p $HOME/.predict/predict.tle default/predict.tle -cp -p $HOME/.predict/predict.db default/predict.db -echo "Done!" diff --git a/clients/WinPredictClient/README.txt b/clients/WinPredictClient/README.txt deleted file mode 100644 index 64c4f02..0000000 --- a/clients/WinPredictClient/README.txt +++ /dev/null @@ -1,15 +0,0 @@ -This demo client is for a Windows client communicating with a Linux -server running Predict. You need the VB development environment. (Note: -this was developed under VB6, but other versions may handle it OK) - -Open a new project, and add frmWinPredictClient to it, and also set this -as the Projects Startup object. You'll also need the Microsoft Winsock -Control selected in Project/Components. Then click Run (or Compile if -you wish). - -Note: the command line may be set to contain the name of the Predict host, -in which case the program will not prompt for that name, but immediately -try to get the satellite list. - -This was developed by Steve Fraser, vk5asf (sfraser AT sierra.apana.org.au) - diff --git a/clients/WinPredictClient/frmWinPredictClient.frm b/clients/WinPredictClient/frmWinPredictClient.frm deleted file mode 100644 index ee1b29b..0000000 --- a/clients/WinPredictClient/frmWinPredictClient.frm +++ /dev/null @@ -1,273 +0,0 @@ -VERSION 5.00 -Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX" -Begin VB.Form frmWinPredictClient - Caption = "WinPredictClient" - ClientHeight = 5175 - ClientLeft = 60 - ClientTop = 345 - ClientWidth = 6495 - LinkTopic = "Form1" - ScaleHeight = 5175 - ScaleWidth = 6495 - StartUpPosition = 3 'Windows Default - Begin VB.CommandButton cmdConnect - Caption = "Get List" - Enabled = 0 'False - Height = 375 - Left = 4080 - TabIndex = 7 - Top = 120 - Width = 855 - End - Begin MSWinsockLib.Winsock wsckPredict - Left = 1200 - Top = 4200 - _ExtentX = 741 - _ExtentY = 741 - _Version = 393216 - Protocol = 1 - End - Begin VB.Timer timRefresh - Enabled = 0 'False - Left = 480 - Top = 4200 - End - Begin VB.TextBox txtAzEl - Height = 2535 - Left = 240 - MultiLine = -1 'True - ScrollBars = 2 'Vertical - TabIndex = 6 - Top = 1560 - Visible = 0 'False - Width = 6015 - End - Begin VB.CommandButton cmdNextPass - Caption = "Next Pass" - Enabled = 0 'False - Height = 375 - Left = 5040 - TabIndex = 5 - Top = 840 - Width = 855 - End - Begin VB.CommandButton cmdCurrent - Caption = "Current" - Enabled = 0 'False - Height = 375 - Left = 4080 - TabIndex = 4 - Top = 840 - Width = 855 - End - Begin VB.ComboBox cmbSatList - Enabled = 0 'False - Height = 315 - Left = 1680 - TabIndex = 2 - Top = 840 - Width = 1935 - End - Begin VB.TextBox txtConnectTo - Height = 375 - Left = 1680 - TabIndex = 1 - Text = "my-linux-box" - Top = 120 - Width = 1935 - End - Begin VB.Label lblSatList - Caption = "Select Satellite:" - Height = 375 - Left = 360 - TabIndex = 3 - Top = 840 - Width = 1215 - End - Begin VB.Label lblConnectTo - Caption = "PREDICT host:" - Height = 255 - Left = 360 - TabIndex = 0 - Top = 240 - Width = 1095 - End -End -Attribute VB_Name = "frmWinPredictClient" -Attribute VB_GlobalNameSpace = False -Attribute VB_Creatable = False -Attribute VB_PredeclaredId = True -Attribute VB_Exposed = False -Option Explicit -' the following line must match whatever the predict server uses -Const PredictPort = 1210 -Const GetSatList = "GET_LIST" -Const GetSatPos = "GET_SAT_POS" ' plus satellite name -Const GetNextPass = "PREDICT" ' plus satellute name -Dim strWsckData As String -Dim bGettingList As Boolean -Dim bGettingNextPass As Boolean -Dim bGettingCurrent As Boolean -Dim strUnixDate As String -Dim strPredictHost As String - - -Private Sub cmbSatList_Click() -If cmbSatList.ListIndex >= 0 Then - cmdCurrent.Enabled = True - cmdNextPass.Enabled = True -End If -End Sub - -Private Sub cmdConnect_Click() - -strWsckData = vbLf -bGettingList = True -strUnixDate = "" -wsckPredict.SendData GetSatList - -While Len(strWsckData) = 1 - DoEvents -Wend -LoadItems -cmdConnect.Enabled = False -bGettingList = False -End Sub - -Private Sub cmdCurrent_Click() - strUnixDate = "" - If bGettingCurrent = False Then - bGettingCurrent = True - strWsckData = "" - txtAzEl.Text = "" - timRefresh.Interval = 1 'ms - timRefresh.Enabled = True - cmdCurrent.Caption = "Stop" - cmdNextPass.Enabled = False - cmbSatList.Enabled = False - Else - cmdCurrent.Caption = "Current" - timRefresh.Enabled = False - bGettingCurrent = False - txtAzEl.Visible = False - cmdNextPass.Enabled = True - cmbSatList.Enabled = True - End If -End Sub - -Private Sub cmdNextPass_Click() - If bGettingNextPass = False Then - bGettingNextPass = True - cmdCurrent.Enabled = False - strWsckData = "" - txtAzEl.Text = "Processing.......please wait" - wsckPredict.SendData GetNextPass + " " + _ - Chr(34) + cmbSatList.Text + Chr(34) _ - + " " + strUnixDate + vbLf - While Len(strWsckData) = 0 _ - And InStr(1, strWsckData, Chr(26)) < 1 ' wait for ctrl-z - DoEvents - Wend - txtAzEl.Text = "" - bGettingNextPass = False - txtAzEl.Visible = True - txtAzEl.Height = 2500 - DisplayResponse - cmdCurrent.Enabled = True - strWsckData = "" - End If -End Sub - -Private Sub Form_Load() -' if host is supplied on command line, we'll automatically connect -strPredictHost = Command -bGettingList = False -bGettingNextPass = False -bGettingCurrent = False -If Len(strPredictHost) > 0 Then - txtConnectTo.Text = strPredictHost - 'cmdConnect_Click - strWsckData = vbLf - bGettingList = True - strUnixDate = "" - wsckPredict.SendData GetSatList - - While Len(strWsckData) = 1 - DoEvents - Wend - LoadItems - cmdConnect.Enabled = False - bGettingList = False -End If -End Sub - -Private Sub timRefresh_Timer() -strWsckData = "" -txtAzEl.Text = "" -wsckPredict.SendData GetSatPos + " " + Chr(34) + cmbSatList.Text + Chr(34) + vbLf - -While Len(strWsckData) = 0 - DoEvents -Wend -txtAzEl.Visible = True -txtAzEl.Height = 500 -DisplayResponse -timRefresh.Interval = 1000 'ms -timRefresh.Enabled = True -End Sub - -Private Sub txtConnectTo_Change() -If Len(txtConnectTo.Text) > 0 Then - cmdConnect.Enabled = True - wsckPredict.RemoteHost = txtConnectTo.Text - wsckPredict.RemotePort = PredictPort - wsckPredict.LocalPort = PredictPort -Else - cmdConnect.Enabled = False -End If -End Sub - -Private Sub wsckPredict_DataArrival(ByVal bytesTotal As Long) - -Dim strData As String - wsckPredict.GetData strData, vbString - strWsckData = strWsckData & strData - -End Sub -Private Sub DisplayResponse() -Dim iStrg As Integer -strUnixDate = "" -'bDoingDate = False -For iStrg = 1 To Len(strWsckData) -DoEvents -If Mid$(strWsckData, iStrg, 1) <> vbLf Then - txtAzEl.Text = txtAzEl.Text & Mid$(strWsckData, iStrg, 1) -Else - txtAzEl.Text = txtAzEl.Text & vbCrLf - If Len(strWsckData) > iStrg + 11 _ - And Val(Mid$(strWsckData, iStrg + 1, 10)) > 0 Then - strUnixDate = CStr(2 + Val(Mid$(strWsckData, iStrg + 1, 10))) - End If -End If -Next iStrg -DoEvents -End Sub -Private Sub LoadItems() -Dim iPtr As Integer -Dim strItem As String -strItem = "" -For iPtr = 1 To Len(strWsckData) - If Mid$(strWsckData, iPtr, 1) = vbLf Then - If Len(strItem) > 0 Then - cmbSatList.AddItem strItem - End If - strItem = "" - Else - strItem = strItem & Mid$(strWsckData, iPtr, 1) - End If -Next iPtr -txtConnectTo.Enabled = False -cmbSatList.Text = "Select Satellite" -cmbSatList.Enabled = True -End Sub - diff --git a/clients/earthtrack/INSTALL b/clients/earthtrack/INSTALL deleted file mode 100644 index 7e872bf..0000000 --- a/clients/earthtrack/INSTALL +++ /dev/null @@ -1,40 +0,0 @@ -Building and Installating "earthtrack" -====================================== - -To build "earthtrack", simply invoke the "build" script as follows: - - ./build - -You do not need to be root to build "earthtrack". - -To run "earthtrack" globally on a multiuser system, it must be -installed in a publically accessible directory within the $PATH -of your users. To so this, simply invoke the "install" script -from this directory as follows: - - ./install - -This must be done as root. - -Once the program has been installed, it may be modified and rebuilt -at any time by invoking the "build" script once again. It is not -necessary to re-run "install" script or su to root every time -the program is modified. HOWEVER, you may wish to protect -the installation directory used by this program to prevent -unauthorized modification and compilation of the source -code when installed on a multiuser system. - -If you are root, and are installing "earthtrack" for the first time, -you may build and install this application with just one command by -involking the "install" script as follows: - - ./install - -See the README file for more information on the use and capabilities -of this program. - - -Happy Tracking! - -73, de John, KD2BD - diff --git a/clients/earthtrack/README b/clients/earthtrack/README deleted file mode 100644 index 8420f2f..0000000 --- a/clients/earthtrack/README +++ /dev/null @@ -1,138 +0,0 @@ - =========================================================================== - Using PREDICT with "xearth" and "xplanet" to track your favorite satellites - =========================================================================== - -"earthtrack" is a socket-based application that polls PREDICT for live -tracking data, and plots positions of satellites on world maps generated -by "xearth" and "xplanet". - -The concept of using "xearth" as a graphical display for PREDICT was -originally conceived by Wade Hampton who wrote an "xearth" interface -as an integral part of PREDICT's main program code. However, it was -decided that a better approach would be to separate the "xearth" interface -code from PREDICT by treating it as a socket-based client application. -As a result, "earthtrack" was born. The functionality of "earthtrack" -has since been expanded to work with "xplanet" as well. - -"xearth" is available via the World Wide Web at: - - http://www.cs.colorado.edu/~tuna/xearth/index.html - -"xplanet" is available via the World Wide Web at: - - http://xplanet.sourceforge.net/ - -Compile and install these applications as per their instructions. -OpenGL and Mesa libraries are not required to run "xplanet" with -"earthtrack" and PREDICT. - -Build "earthtrack" by executing the "build" script in this -directory (type: ./build). You need to be root so the executables -can be linked to /usr/local/bin. NOTE: "earthtrack" is linked to -both "earthtrack" and "earthtrack2" in /usr/local/bin. Executing -"earthtrack" will invoke a display using "xearth", while executing -"earthtrack2" will invoke a display using "xplanet", even though -the same binary is executed in either case. - -"earthtrack" uses "xearth" to produce an orthographic image of the -earth upon which satellite names are placed over their respective -sub-satellite points. The globe can be centered either over your -groundstation location (default), or over the location any satellite -being tracked by PREDICT. The second method allows you to "fly with -the satellite" as it circles the globe. The map is updated every 20 -seconds. By default, "earthtrack" connects to the PREDICT server -running on "localhost". These defaults may be overridden through -several command-line switches. - -The -h switch allows a different PREDICT server name to be specified. -The -x switch option allows additional command-line parameters to be -passed to either xearth or xplanet through earthtrack. (Note that -the argument that follows the -x switch must be enclosed in "quotes".) -The -u switch allows a different map update interval to be specified, -and the -c switch allows the map to be centered on a specific satellite. - -For example: - - earthtrack -c ISS -u 15 -h predictserver.org - -allows earthtrack to invoke "xearth" as a display, centering the map -on the location of satellite "ISS", using host "predictserver.org" -as the host running PREDICT in server mode. The satellite name -specified must be the same as PREDICT displays in Multi-Tracking -mode. If a space appears in the name, then the entire name must -be enclosed in double quotes. - -"xplanet" uses highly detailed photo-realistic maps of the world -available from a variety of sources to produce spectacular views -of the earth, and offers many features not available with "xearth". -Some of these additional features are invoked by "earthtrack2". -For example, if an uppercase -C is used rather than a lowercase --c for the map center switch, such as in the following example: - - earthtrack2 -C ISS - -The map is not only centered on the location of the ISS, but the -map is also zoomed into an area slightly larger than the footprint -of the satellite. A range circle is also drawn on the map to -indicate the actual footprint of the spacecraft at the current -time. - -If a map centered on the groundstation location is desired, then -footprint range circles for neighboring satellites are drawn on the -map. Range circles are drawn for satellites between 5 minutes prior -to AOS through the point of LOS. Such a display may be created simply -by executing "earthtrack2" without any switches: - - earthtrack2 - -or with the -h switch to identify the remote host running PREDICT in -server mode: - - earthtrack2 -h predictserver.org - -If the satellite being tracked is in sunlight, then the satellite -name and range circle are displayed in white. If the satellite -is in darkness, then the color blue is used. If the satellite -is optically visible to the groundstation, then yellow is used. - -It is important to note that "xplanet" requires considerably more -CPU power and RAM than does "xearth". Therefore, it may take -considerably longer than 20 seconds to update each map display -when running "earthtrack2" on slower machines. If this is the -case, then "earthtrack2" executes no delay between "xplanet" -map updates. Run "earthtrack2" through "nice" to reduce its -priority and associted CPU demand if desired. - -"earthtrack2" may also be used to generate graphics files for -use in web server environments. For example: - - earthtrack2 -c ISS -x "-geometry 800x600 -output graphic.gif" - -will invoke "xplanet" to produce an 800x600 GIF image of the world -centered on the sub-satellite point of the ISS with a name of -"graphic.gif". (NOTE: xplanet must be compiled with free-type -font support to allow labels to be placed in the generated -graphics files.) This feature, along with capabilities -demonstrated in the ~/predict/clients/samples directory, -can be used to develop satellite tracking and orbital -prediction content for a web server. - -"earthtrack" and "earthtrack2" exit when their connection to -the PREDICT server is broken, such as would occur if PREDICT -is terminated while "earthtrack" is still running. Either -application may be run as background processes by placing -an ampersand (&) at the end of the command line. - -For more creative uses of PREDICT and earthtrack, see John -Heaton, G1YYH's PREDICT and earthtrack modification web page -at: - - http://voyager.mcc.ac.uk/Predict/ - - -Happy Tracking! - --- -73, de John, KD2BD -July 2002 - diff --git a/clients/earthtrack/build b/clients/earthtrack/build deleted file mode 100755 index 7ee5e18..0000000 --- a/clients/earthtrack/build +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Script to compile earthtrack -# -echo -n "Compiling earthtrack... " -cc -Wall -O3 -s -fomit-frame-pointer -lm earthtrack.c -o earthtrack -echo "Done!" - diff --git a/clients/earthtrack/earthtrack-old.c b/clients/earthtrack/earthtrack-old.c deleted file mode 100644 index 6e2845a..0000000 --- a/clients/earthtrack/earthtrack-old.c +++ /dev/null @@ -1,578 +0,0 @@ -/***************************************************************************\ -* * -* EARTHTRACK: A Real-Time Satellite Tracking Display Client for PREDICT * -* Original concept by Wade Hampton. This implimentation was written * -* by John A. Magliacane, KD2BD in November 2000. The -x switch code * -* was contributed by Tom Busch, WB8WOR in October 2001. * -* * -* To build: "cc -Wall -O3 -s -lm earthtrack -o earthtrack" * -* then: "ln -s earthtrack earthtrack2". Invoke earthtrack * -* to run with xearth. Invoke earthtrack2 to run with xplanet. * -* * -***************************************************************************** -* * -* This code was last modified by KD2BD on 28-Feb-2003. * -* * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -\***************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef PI -#define PI 3.141592653589793 -#endif - -char string[625], error; -double R0=6378.16, TWOPI=6.283185307179586, HALFPI=1.570796326794896, - deg2rad=1.74532925199e-02; -FILE *markerfd=NULL, *greatarcfd=NULL; - -void handler() -{ - /* This is a function that is called when the response function - times out. This is in case the server fails to respond. */ - - signal(SIGALRM,handler); -} - -int connectsock(char *host, char *service, char *protocol) -{ - /* This function is used to connect to the server. "host" is the - name of the computer on which PREDICT is running in server mode. - "service" is the name of the socket port. "protocol" is the - socket protocol (UDP). */ - - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - bzero((char *)&sin,sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=pse->s_port; - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - printf("Can't get services\n"); - return -1; - } - - if ((phe=gethostbyname(host))) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE) - { - printf("Can't get host: %c%s%c!\n",34,host,34); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) - { - printf("Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) - { - printf("Can't connect to socket.\n"); - return -1; - } - - return s; -} - -void get_response(int sock, char *buf) -{ - /* This function gets a response from the - server in the form of a character string. */ - - int n; - - n=read(sock,buf,625); - - if (n<0) - { - if (errno==EINTR) - return; - - if (errno==ECONNREFUSED) - { - fprintf(stderr, "Connection refused - server not running\n"); - exit (1); - } - } - - buf[n]='\0'; -} - -char *send_command(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and returns the result of the command - as a pointer to a character string. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - { - error=1; - string[0]=0; - } - - else - { - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Get the response */ - get_response(sk,string); - - /* Close the connection */ - close(sk); - } - - return string; -} - -double arccos(x,y) -double x, y; -{ - /* This function implements the arccosine function, - returning a value between 0 and two pi. */ - - double result=0.0; - - if (y>0.0) - result=acos(x/y); - - if (y<0.0) - result=PI+acos(x/y); - - return result; -} - -double convertlong(longitude) -double longitude; -{ - /* This function converts west longitudes (0-360 degrees) - to a value between -180 and 180 degrees, as required - by xearth and xplanet. */ - - if (longitude<180.0) - longitude=-longitude; - - else if (longitude>180.0) - longitude=360.0-longitude; - - return longitude; -} - -char *vis2color(visibility) -{ - /* This function generates a character string based on the - visibility information returned by PREDICT. It is used - to set the colors of the markers and range circles - plotted by xearth and xplanet. */ - - switch (visibility) - { - case 'D': - strcpy(string,"color=white # In sunlight"); - break; - - case 'N': - strcpy(string,"color=blue # In darkness"); - break; - - case 'V': - strcpy(string,"color=yellow # Optically visible"); - break; - } - - return(string); -} - -void rangecircle(ssplat,ssplong,footprint,visibility) -double ssplat, ssplong, footprint; -char visibility; -{ - /* This function generates a sequence of latitude and - longitude positions used to plot range circles of - satellites based on the spacecraft's sub-satellite - latitude, longitude, and footprint. The visibility - information is used to set the range circle to an - appropriate color. Output is written to ~/.greatarcfile, - and read and processed by xplanet. */ - - double beta, den, num, rangelat, rangelong, azimuth; - int azi; - - ssplat=ssplat*deg2rad; - ssplong=ssplong*deg2rad; - beta=(0.5*footprint)/R0; - - for (azi=0; azi<360; azi++) - { - azimuth=deg2rad*(double)azi; - rangelat=asin(sin(ssplat)*cos(beta)+cos(azimuth)*sin(beta)*cos(ssplat)); - num=cos(beta)-(sin(ssplat)*sin(rangelat)); - den=cos(ssplat)*cos(rangelat); - - if (azi==0 && (beta > HALFPI-ssplat)) - rangelong=ssplong+PI; - - else if (azi==180 && (beta > HALFPI+ssplat)) - rangelong=ssplong+PI; - - else if (fabs(num/den)>1.0) - rangelong=ssplong; - - else - { - if ((180-azi)>=0) - rangelong=ssplong-arccos(num,den); - else - rangelong=ssplong+arccos(num,den); - } - - while (rangelong<0.0) - rangelong+=TWOPI; - - while (rangelong>TWOPI) - rangelong-=TWOPI; - - rangelat=rangelat/deg2rad; - rangelong=rangelong/deg2rad; - - rangelong=convertlong(rangelong); - - /* Write range circle data to greatarcfile */ - - fprintf(greatarcfd,"%8.3f %8.3f ",rangelat,rangelong); - - if (azi%2) - fprintf(greatarcfd,"%s\n",vis2color(visibility)); - } -} - -int main(argc,argv) -char argc, *argv[]; -{ - int x, y, z, updateinterval, satnum=0, radius=50, sleeptime=20; - char buf[128], command[255], satlist[625], satname[26], - satnamelist[26][26], callsign[15], markerfile[50], - greatarcfile[50], configfile[50], sat2track[30], - hostname[50], color[35], xtra[50], xplanet=0, - xearth=0, visibility, circledrawn=0, zoom=0; - float az, el, slat, slong, qthlat, - qthlong, footprint, range, altitude, - velocity, mapcenterlat, mapcenterlong; - long next_event_time, orbitnum, starttime, endtime, current_time; - time_t t; - FILE *fd=NULL; - - /* Parse command-line arguments */ - - z=strlen(argv[0]); - - for (x=z-10, y=0; x120) - updateinterval=20; - - error=0; /* Another reasonable default :-) */ - - /* Write xearth/xplanet working files - to the user's home directory */ - - sprintf(markerfile,"%s/.markerfile",getenv("HOME")); - sprintf(greatarcfile,"%s/.greatarcfile",getenv("HOME")); - sprintf(configfile,"%s/.xplanetconfig",getenv("HOME")); - - if (xplanet) - { - fd=fopen(configfile,"w"); - fprintf(fd,"marker_file=%s\n",markerfile); - fprintf(fd,"arc_file=%s\n",greatarcfile); - fclose(fd); - } - - /* Get QTH info from PREDICT */ - - strcpy(buf, send_command(hostname,"GET_QTH")); - sscanf(buf,"%s%f%f",callsign,&qthlat,&qthlong); - - qthlong=convertlong(qthlong); - - mapcenterlat=qthlat; - mapcenterlong=qthlong; - - /* Get the list of satellite names from PREDICT */ - - strcpy(satlist, send_command(hostname,"GET_LIST")); - - if (satlist[0]!=0) - { - /* Parse the response of GET_LIST, and place each - name in the character array satnamelist[]. */ - - for (x=0, y=0, z=0; y0.0) - { - mapcenterlat=slat; - mapcenterlong=convertlong(slong); - rangecircle(slat,slong,footprint,visibility); - circledrawn=1; - - if (zoom) - radius=(int)(100.0*(R0/footprint)); - else - radius=50; - - if (radius<50) - radius=50; - } - - if (range>0.0) - { - if (xplanet) - strcpy(color,vis2color(visibility)); - else - color[0]=0; - - fprintf(markerfd,"%8.3f %8.3f %c%s%c %s\n",slat,convertlong(slong),34,satnamelist[z],34,color); - - - /* Get current time from PREDICT server */ - - strcpy(buf, send_command(hostname,"GET_TIME")); - sscanf(buf,"%ld",¤t_time); - - /* Draw range circle if satellite is in range, - or will be in range within 5 minutes. */ - - if (xplanet && zoom==0 && (el>=0.0 || ((next_event_time-current_time)<300))) - { - rangecircle(slat,slong,footprint,visibility); - circledrawn=1; - } - } - } - - fclose(greatarcfd); - fclose(markerfd); - - if (error==0) - { - t=time(NULL); - starttime=(long)t; - - if (xearth) - sprintf(command,"xearth -proj orth -grid -night 30 -bigstars 40 -markerfile %s -pos %cfixed %f %f%c %s -once",markerfile,34,mapcenterlat,mapcenterlong,34,xtra); - - if (xplanet) - { - if (circledrawn) - sprintf(command,"xplanet -config %s -proj orth -longitude %f -latitude %f -radius %d %s",configfile,mapcenterlong,mapcenterlat,radius,xtra); - else - sprintf(command,"xplanet -config %s -proj orth -latitude %f -longitude %f %s",configfile,mapcenterlat,mapcenterlong,xtra); - } - - if (xplanet|xearth) - { - error=system(command); - t=time(NULL); - endtime=(long)t; - - sleeptime=updateinterval-(int)(endtime-starttime); - - if (sleeptime>0) - sleep(sleeptime); - } - } - } - - if (error) - { - unlink(markerfile); - - if (xplanet) - { - unlink(greatarcfile); - /* unlink(configfile); */ - } - } - - exit(0); -} diff --git a/clients/earthtrack/earthtrack-really-old.c b/clients/earthtrack/earthtrack-really-old.c deleted file mode 100644 index 9ab3cb3..0000000 --- a/clients/earthtrack/earthtrack-really-old.c +++ /dev/null @@ -1,565 +0,0 @@ -/***************************************************************************\ -* * -* EARTHTRACK: A Real-Time Satellite Tracking Display Client for PREDICT * -* Original concept by Wade Hampton. This implimentation was written * -* by John A. Magliacane, KD2BD in November 2000. The -x switch code * -* was contributed by Tom Busch, WB8WOR in October 2001. * -* * -* To build: "cc -Wall -O3 -s -lm earthtrack -o earthtrack" * -* then: "ln -s earthtrack earthtrack2". Invoke earthtrack * -* to run with xearth. Invoke earthtrack2 to run with xplanet. * -* * -***************************************************************************** -* * -* This code was last modified by KD2BD on 28-Feb-2003. * -* * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -\***************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef PI -#define PI 3.141592653589793 -#endif - -char string[625], error; -double R0=6378.16, TWOPI=6.283185307179586, HALFPI=1.570796326794896, - deg2rad=1.74532925199e-02; -FILE *markerfd=NULL, *greatarcfd=NULL; - -void handler() -{ - /* This is a function that is called when the response function - times out. This is in case the server fails to respond. */ - - signal(SIGALRM,handler); -} - -int connectsock(char *host, char *service, char *protocol) -{ - /* This function is used to connect to the server. "host" is the - name of the computer on which PREDICT is running in server mode. - "service" is the name of the socket port. "protocol" is the - socket protocol (UDP). */ - - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - bzero((char *)&sin,sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=pse->s_port; - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - printf("Can't get services\n"); - return -1; - } - - if ((phe=gethostbyname(host))) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE) - { - printf("Can't get host: %c%s%c!\n",34,host,34); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) - { - printf("Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) - { - printf("Can't connect to socket.\n"); - return -1; - } - - return s; -} - -void get_response(int sock, char *buf) -{ - /* This function gets a response from the - server in the form of a character string. */ - - int n; - - n=read(sock,buf,625); - - if (n<0) - { - if (errno==EINTR) - return; - - if (errno==ECONNREFUSED) - { - fprintf(stderr, "Connection refused - server not running\n"); - exit (1); - } - } - - buf[n]='\0'; -} - -char *send_command(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and returns the result of the command - as a pointer to a character string. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - { - error=1; - string[0]=0; - } - - else - { - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Get the response */ - get_response(sk,string); - - /* Close the connection */ - close(sk); - } - - return string; -} - -double arccos(x,y) -double x, y; -{ - /* This function implements the arccosine function, - returning a value between 0 and two pi. */ - - double result=0.0; - - if (y>0.0) - result=acos(x/y); - - if (y<0.0) - result=PI+acos(x/y); - - return result; -} - -double convertlong(longitude) -double longitude; -{ - /* This function converts west longitudes (0-360 degrees) - to a value between -180 and 180 degrees, as required - by xearth and xplanet. */ - - if (longitude<180.0) - longitude=-longitude; - - else if (longitude>180.0) - longitude=360.0-longitude; - - return longitude; -} - -char *vis2color(visibility) -{ - /* This function generates a character string based on the - visibility information returned by PREDICT. It is used - to set the colors of the markers and range circles - plotted by xearth and xplanet. */ - - switch (visibility) - { - case 'D': - strcpy(string,"color=white # In sunlight"); - break; - - case 'N': - strcpy(string,"color=blue # In darkness"); - break; - - case 'V': - strcpy(string,"color=yellow # Optically visible"); - break; - } - - return(string); -} - -void rangecircle(ssplat,ssplong,footprint,visibility) -double ssplat, ssplong, footprint; -char visibility; -{ - /* This function generates a sequence of latitude and - longitude positions used to plot range circles of - satellites based on the spacecraft's sub-satellite - latitude, longitude, and footprint. The visibility - information is used to set the range circle to an - appropriate color. Output is written to ~/.greatarcfile, - and read and processed by xplanet. */ - - double beta, den, num, rangelat, rangelong, azimuth; - int azi; - - ssplat=ssplat*deg2rad; - ssplong=ssplong*deg2rad; - beta=(0.5*footprint)/R0; - - for (azi=0; azi<360; azi++) - { - azimuth=deg2rad*(double)azi; - rangelat=asin(sin(ssplat)*cos(beta)+cos(azimuth)*sin(beta)*cos(ssplat)); - num=cos(beta)-(sin(ssplat)*sin(rangelat)); - den=cos(ssplat)*cos(rangelat); - - if (azi==0 && (beta > HALFPI-ssplat)) - rangelong=ssplong+PI; - - else if (azi==180 && (beta > HALFPI+ssplat)) - rangelong=ssplong+PI; - - else if (fabs(num/den)>1.0) - rangelong=ssplong; - - else - { - if ((180-azi)>=0) - rangelong=ssplong-arccos(num,den); - else - rangelong=ssplong+arccos(num,den); - } - - while (rangelong<0.0) - rangelong+=TWOPI; - - while (rangelong>TWOPI) - rangelong-=TWOPI; - - rangelat=rangelat/deg2rad; - rangelong=rangelong/deg2rad; - - rangelong=convertlong(rangelong); - - /* Write range circle data to greatarcfile */ - - fprintf(greatarcfd,"%8.3f %8.3f ",rangelat,rangelong); - - if (azi%2) - fprintf(greatarcfd,"%s\n",vis2color(visibility)); - } -} - -int main(argc,argv) -char argc, *argv[]; -{ - int x, y, z, updateinterval, satnum=0, radius=50, sleeptime=20; - char buf[128], command[255], satlist[625], satname[26], - satnamelist[26][26], callsign[15], markerfile[50], - greatarcfile[50], sat2track[30], hostname[50], color[35], - xtra[50], xplanet=0, xearth=0, visibility, circledrawn=0, - zoom=0; - float az, el, slat, slong, qthlat, - qthlong, footprint, range, altitude, - velocity, mapcenterlat, mapcenterlong; - long next_event_time, orbitnum, starttime, endtime, current_time; - time_t t; - - /* Parse command-line arguments */ - - z=strlen(argv[0]); - - for (x=z-10, y=0; x120) - updateinterval=20; - - error=0; /* Another reasonable default :-) */ - - /* Write xearth/xplanet working files - to the user's home directory */ - - sprintf(markerfile,"%s/.markerfile",getenv("HOME")); - sprintf(greatarcfile,"%s/.greatarcfile",getenv("HOME")); - - /* Get QTH info from PREDICT */ - - strcpy(buf, send_command(hostname,"GET_QTH")); - sscanf(buf,"%s%f%f",callsign,&qthlat,&qthlong); - - qthlong=convertlong(qthlong); - - mapcenterlat=qthlat; - mapcenterlong=qthlong; - - /* Get the list of satellite names from PREDICT */ - - strcpy(satlist, send_command(hostname,"GET_LIST")); - - if (satlist[0]!=0) - { - /* Parse the response of GET_LIST, and place each - name in the character array satnamelist[]. */ - - for (x=0, y=0, z=0; y0.0) - { - mapcenterlat=slat; - mapcenterlong=convertlong(slong); - rangecircle(slat,slong,footprint,visibility); - circledrawn=1; - - if (zoom) - radius=(int)(100.0*(R0/footprint)); - else - radius=50; - - if (radius<50) - radius=50; - } - - if (range>0.0) - { - if (xplanet) - strcpy(color,vis2color(visibility)); - else - color[0]=0; - - fprintf(markerfd,"%8.3f %8.3f %c%s%c %s\n",slat,convertlong(slong),34,satnamelist[z],34,color); - - - /* Get current time from PREDICT server */ - - strcpy(buf, send_command(hostname,"GET_TIME")); - sscanf(buf,"%ld",¤t_time); - - /* Draw range circle if satellite is in range, - or will be in range within 5 minutes. */ - - if (xplanet && zoom==0 && (el>=0.0 || ((next_event_time-current_time)<300))) - { - rangecircle(slat,slong,footprint,visibility); - circledrawn=1; - } - } - } - - fclose(greatarcfd); - fclose(markerfd); - - if (error==0) - { - t=time(NULL); - starttime=(long)t; - - if (xearth) - sprintf(command,"xearth -proj orth -grid -night 30 -bigstars 40 -markerfile %s -pos %cfixed %f %f%c %s -once",markerfile,34,mapcenterlat,mapcenterlong,34,xtra); - - if (xplanet) - { - if (circledrawn) - sprintf(command,"xplanet -proj orth -markerfile %s -greatarcfile %s -longitude %f -latitude %f -radius %d %s",markerfile,greatarcfile,mapcenterlong,mapcenterlat,radius,xtra); - else - sprintf(command,"xplanet -proj orth -markerfile %s -latitude %f -longitude %f %s",markerfile,mapcenterlat,mapcenterlong,xtra); - } - - if (xplanet|xearth) - { - error=system(command); - t=time(NULL); - endtime=(long)t; - - sleeptime=updateinterval-(int)(endtime-starttime); - - if (sleeptime>0) - sleep(sleeptime); - } - } - } - - if (error) - { - unlink(markerfile); - - if (xplanet) - unlink(greatarcfile); - } - - exit(0); -} diff --git a/clients/earthtrack/earthtrack.c b/clients/earthtrack/earthtrack.c deleted file mode 100644 index 259e6a3..0000000 --- a/clients/earthtrack/earthtrack.c +++ /dev/null @@ -1,659 +0,0 @@ -/***************************************************************************\ -* * -* EARTHTRACK: A Real-Time Satellite Tracking Display Client for PREDICT * -* Original concept by Wade Hampton. This implimentation was written * -* by John A. Magliacane, KD2BD in November 2000. The -x switch code * -* was contributed by Tom Busch, WB8WOR in October 2001. * -* * -* To build: "cc -Wall -O3 -s -lm earthtrack -o earthtrack" * -* then: "ln -s earthtrack earthtrack2". Invoke earthtrack * -* to run with xearth. Invoke earthtrack2 to run with xplanet * -* version 1.0 or above. * -* * -***************************************************************************** -* * -* This code was last modified by KD2BD on 04-May-2018. * -* * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -\***************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef PI -#define PI 3.141592653589793 -#endif - -char string[625], error; -double R0=6378.16, TWOPI=6.283185307179586, - HALFPI=1.570796326794896, deg2rad=1.74532925199e-02; -FILE *markerfd=NULL, *greatarcfd=NULL; - -void handler() -{ - /* This is a function that is called when the response function - times out. This is in case the server fails to respond. */ - - signal(SIGALRM,handler); -} - -int connectsock(char *host, char *service, char *protocol) -{ - /* This function is used to connect to the server. "host" is the - name of the computer on which PREDICT is running in server mode. - "service" is the name of the socket port. "protocol" is the - socket protocol (UDP). */ - - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - memset((char *)&sin, 0, sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=pse->s_port; - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - printf("Can't get services\n"); - return -1; - } - - if ((phe=gethostbyname(host))) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE) - { - printf("Can't get host: %c%s%c!\n",34,host,34); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) - { - printf("Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) - { - printf("Can't connect to socket.\n"); - return -1; - } - - return s; -} - -void get_response(int sock, char *buf) -{ - /* This function gets a response from the - server in the form of a character string. */ - - int n; - - n=read(sock,buf,625); - - if (n<0) - { - if (errno==EINTR) - return; - - if (errno==ECONNREFUSED) - { - fprintf(stderr, "Connection refused - PREDICT server not running\n"); - exit (1); - } - } - - buf[n]='\0'; -} - -char *send_command(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and returns the result of the command - as a pointer to a character string. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - { - error=1; - string[0]=0; - } - - else - { - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Get the response */ - get_response(sk,string); - - /* Close the connection */ - close(sk); - } - - return string; -} - -double arccos(x,y) -double x, y; -{ - /* This function implements the arccosine function, - returning a value between 0 and two pi. */ - - double result=0.0; - - if (y>0.0) - result=acos(x/y); - - if (y<0.0) - result=PI+acos(x/y); - - return result; -} - -double convertlong(longitude) -double longitude; -{ - /* This function converts west longitudes (0-360 degrees) - to a value between -180 and 180 degrees, as required - by xearth and xplanet. */ - - if (longitude<180.0) - longitude=-longitude; - - else if (longitude>180.0) - longitude=360.0-longitude; - - return longitude; -} - -char *vis2color(visibility) -int visibility; -{ - /* This function generates a character string based on the - visibility information returned by PREDICT. It is used - to set the colors of the markers and range circles - plotted by xearth and xplanet. */ - - switch (visibility) - { - case 'D': - strcpy(string,"color=white"); - break; - - case 'N': - strcpy(string,"color=blue"); - break; - - case 'V': - strcpy(string,"color=yellow"); - break; - } - - return(string); -} - -void rangecircle(ssplat,ssplong,footprint,visibility) -double ssplat, ssplong, footprint; -char visibility; -{ - /* This function generates a sequence of latitude and - longitude positions used to plot range circles of - satellites based on the spacecraft's sub-satellite - latitude, longitude, and footprint. The visibility - information is used to set the range circle to an - appropriate color. Output is written to ~/.greatarcfile, - and read and processed by xplanet. */ - - double beta, den, num, rangelat, rangelong, azimuth; - int azi; - - ssplat=ssplat*deg2rad; - ssplong=ssplong*deg2rad; - beta=(0.5*footprint)/R0; - - for (azi=0; azi<360; azi++) - { - azimuth=deg2rad*(double)azi; - rangelat=asin(sin(ssplat)*cos(beta)+cos(azimuth)*sin(beta)*cos(ssplat)); - num=cos(beta)-(sin(ssplat)*sin(rangelat)); - den=cos(ssplat)*cos(rangelat); - - if (azi==0 && (beta > HALFPI-ssplat)) - rangelong=ssplong+PI; - - else if (azi==180 && (beta > HALFPI+ssplat)) - rangelong=ssplong+PI; - - else if (fabs(num/den)>1.0) - rangelong=ssplong; - - else - { - if ((180-azi)>=0) - rangelong=ssplong-arccos(num,den); - else - rangelong=ssplong+arccos(num,den); - } - - while (rangelong<0.0) - rangelong+=TWOPI; - - while (rangelong>TWOPI) - rangelong-=TWOPI; - - rangelat=rangelat/deg2rad; - rangelong=rangelong/deg2rad; - - rangelong=convertlong(rangelong); - - /* Write range circle data to greatarcfile */ - - fprintf(greatarcfd,"%8.3f %8.3f ",rangelat,rangelong); - - if (azi%2) - fprintf(greatarcfd,"%s\n",vis2color(visibility)); - } -} - -char AppendFile(source, destination) -char *source; -char *destination; -{ - /* This function appends file "source" to file "destination" - in 64k chunks. A 1 is returned if there is a problem writing - to the destination file. A 2 indicates a problem reading - the source file. */ - - int x, sd, dd; - char error=0, buffer[65536]; - - sd=open(source,O_RDONLY); - - if (sd!=-1) - { - dd=open(destination,O_WRONLY | O_CREAT | O_APPEND, 0644); - - if (dd!=-1) - { - x=read(sd,&buffer,65536); - - while (x) - { - write(dd,&buffer,x); - x=read(sd,&buffer,65536); - } - - close(dd); - } - else - error=1; - - close(sd); - } - else - error+=2; - - return error; -} - -int main(argc,argv) -char argc, *argv[]; -{ - int x, y, z, updateinterval, satnum=0, radius=50, sleeptime=20; - char buf[128], command[255], satlist[625], /* satname[26], */ - satnamelist[26][26], callsign[15], markerfile[50], - greatarcfile[50], configfile[50], sat2track[30], - hostname[50], color[35], xtra[50], xplanet=0, - xearth=0, visibility, circledrawn=0, zoom=0; - float az, el, slat, slong, qthlat, - qthlong, footprint, range, altitude, - velocity, mapcenterlat, mapcenterlong; - long next_event_time, orbitnum, starttime, endtime, current_time; - time_t t; - FILE *fd=NULL; - - /* Parse command-line arguments */ - - z=strlen(argv[0]); - - for (x=z-10, y=0; x120) - updateinterval=20; - - error=0; /* Another reasonable default :-) */ - - /* Write xearth/xplanet working files - to the user's home directory */ - - sprintf(markerfile,"%s/.markerfile",getenv("HOME")); - sprintf(greatarcfile,"%s/.greatarcfile",getenv("HOME")); - sprintf(configfile,"%s/.xplanetconfig",getenv("HOME")); - - if (xplanet) - { - fd=fopen(configfile,"w"); - fprintf(fd,"## \"earthtrack2\" parameters. Please edit\n"); - fprintf(fd,"## earthtrack.c to modify these parameters!\n\n"); - - /* Edit the following lines to */ - /* modify your .xplanetconfig file */ - - fprintf(fd,"marker_file=%s\n",markerfile); - fprintf(fd,"arc_file=%s\n",greatarcfile); - fprintf(fd,"marker_font=/usr/local/share/xplanet/fonts/FreeMonoBold.ttf\n"); - fprintf(fd,"\n## Your \"/usr/local/share/xplanet/config/default\" configuration file follows:\n\n"); - fclose(fd); - - x=AppendFile("/usr/local/share/xplanet/config/default",configfile); - - if (x==1) - { - fprintf(stderr,"%c*** Error: Could not write to %s\n",7,configfile); - exit(-1); - } - - if (x==2) - { - fprintf(stderr,"%c*** Error: Could not read \"/usr/local/share/xplanet/config/default\"\nIs xplanet installed?\n\n",7); - exit(-1); - } - } - - /* Get QTH info from PREDICT */ - - strcpy(buf, send_command(hostname,"GET_QTH")); - sscanf(buf,"%s%f%f",callsign,&qthlat,&qthlong); - - qthlong=convertlong(qthlong); - - mapcenterlat=qthlat; - mapcenterlong=qthlong; - - /* Get the list of satellite names from PREDICT */ - - strcpy(satlist, send_command(hostname,"GET_LIST")); - - if (satlist[0]!=0) - { - /* Parse the response of GET_LIST, and place each - name in the character array satnamelist[]. */ - - for (x=0, y=0, z=0; y0.0) - { - mapcenterlat=slat; - mapcenterlong=convertlong(slong); - rangecircle(slat,slong,footprint,visibility); - circledrawn=1; - - if (zoom) - radius=(int)(100.0*(R0/footprint)); - else - radius=50; - - if (radius<50) - radius=50; - } - - if (range>0.0) - { - if (xplanet) - strcpy(color,vis2color(visibility)); - else - color[0]=0; - - fprintf(markerfd,"%8.3f %8.3f %c%s%c %s\n",slat,convertlong(slong),34,satnamelist[z],34,color); - - - /* Get current time from PREDICT server */ - - strcpy(buf, send_command(hostname,"GET_TIME")); - sscanf(buf,"%ld",¤t_time); - - /* Draw range circle if satellite is in range, - or will be in range within 5 minutes. */ - - if (xplanet && zoom==0 && (el>=0.0 || ((next_event_time-current_time)<300))) - { - rangecircle(slat,slong,footprint,visibility); - circledrawn=1; - } - } - } - - fclose(greatarcfd); - fclose(markerfd); - - if (error==0) - { - t=time(NULL); - starttime=(long)t; - - if (xearth) - sprintf(command,"xearth -proj orth -grid -night 30 -bigstars 40 -markerfile %s -pos %cfixed %f %f%c %s -once",markerfile,34,mapcenterlat,mapcenterlong,34,xtra); - - if (xplanet) - { - if (circledrawn) - sprintf(command,"xplanet -config %s -projection orth -longitude %f -latitude %f -radius %d -num_times 1 -starfreq 0.005 %s",configfile,mapcenterlong,mapcenterlat,radius,xtra); - else - sprintf(command,"xplanet -config %s -projection orth -latitude %f -longitude %f -num_times 1 %s -starfreq 0.005",configfile,mapcenterlat,mapcenterlong,xtra); - } - - if (xplanet|xearth) - { - error=system(command); - t=time(NULL); - endtime=(long)t; - - sleeptime=updateinterval-(int)(endtime-starttime); - - if (sleeptime>0) - sleep(sleeptime); - } - } - } - - if (error) - { - unlink(markerfile); - - if (xplanet) - { - unlink(greatarcfile); - unlink(configfile); - } - } - - exit(0); -} diff --git a/clients/earthtrack/install b/clients/earthtrack/install deleted file mode 100755 index 4001562..0000000 --- a/clients/earthtrack/install +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# Script to install earthtrack/earthtrack2 -# -if [ ! -x $PWD/earthtrack ]; then - $PWD/build -fi - -whoami=`whoami` - -if [ $whoami != "root" ]; then - echo "Sorry, $whoami. You need to be 'root' to install this program. :-(" -else - rm -f /usr/local/bin/earthtrack - ln -s $PWD/earthtrack /usr/local/bin/earthtrack -fi - -if [ ! -x /usr/local/bin/earthtrack2 ]; then - if [ $whoami != "root" ]; then - echo "Please su to root and re-run the 'install' script again." - else - ln -s /usr/local/bin/earthtrack /usr/local/bin/earthtrack2 - fi -fi diff --git a/clients/gsat-1.1.0/ABOUT-NLS b/clients/gsat-1.1.0/ABOUT-NLS deleted file mode 100644 index 5fde45a..0000000 --- a/clients/gsat-1.1.0/ABOUT-NLS +++ /dev/null @@ -1,324 +0,0 @@ -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. - - 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 September -2001. 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 cs da de el en eo es et fi fr gl he hr id it ja - +----------------------------------------------------+ - a2ps | [] [] [] | - bash | [] [] [] [] | - bfd | | - binutils | [] | - bison | [] [] [] [] [] | - clisp | [] [] [] [] | - cpio | [] [] [] [] [] | - diffutils | [] [] [] [] [] [] [] | - enscript | [] [] | - error | [] [] | - fetchmail | | - fileutils | [] [] [] [] [] [] [] [] | - findutils | [] [] [] [] [] [] [] [] | - flex | [] [] [] | - freetype | | - gas | | - gawk | [] [] | - gcal | | - gcc | | - gettext | [] [] [] [] [] [] [] [] [] [] | - gnupg | [] [] [] [] [] [] [] | - gprof | | - grep | [] [] [] [] [] [] [] [] | - hello | [] [] [] [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - indent | [] [] [] [] [] | - jpilot | [] | - kbd | | - ld | [] | - libc | [] [] [] [] [] [] [] [] | - lilypond | [] | - lynx | [] [] [] [] | - m4 | [] [] [] [] [] [] [] [] | - make | [] [] [] [] [] [] | - mysecretdiary | [] | - nano | [] [] [] | - opcodes | | - parted | [] [] [] | - ptx | [] [] [] [] [] [] [] | - python | | - recode | [] [] [] [] [] [] [] [] [] | - sed | [] [] [] [] [] [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] [] [] [] [] [] | - sharutils | [] [] [] [] [] [] [] [] | - sketch | | - soundtracker | [] [] [] | - sp | | - tar | [] [] [] [] [] [] [] [] | - texinfo | [] [] [] [] [] [] | - textutils | [] [] [] [] [] [] [] [] | - util-linux | [] [] | - wdiff | [] [] [] | - wget | [] [] [] [] [] [] [] [] [] [] | - +----------------------------------------------------+ - bg cs da de el en eo es et fi fr gl he hr id it ja - 0 14 24 32 11 1 8 23 13 1 33 22 4 0 7 9 18 - - ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh - +----------------------------------------------------+ - a2ps | [] [] [] | 6 - bash | | 4 - bfd | | 0 - binutils | | 1 - bison | [] | 6 - clisp | [] | 5 - cpio | [] [] [] [] [] | 10 - diffutils | [] [] [] [] | 11 - enscript | [] [] [] | 5 - error | [] [] | 4 - fetchmail | | 0 - fileutils | [] [] [] [] [] [] [] [] [] | 17 - findutils | [] [] [] [] [] [] [] [] | 16 - flex | [] [] [] | 6 - freetype | | 0 - gas | | 0 - gawk | [] | 3 - gcal | | 0 - gcc | | 0 - gettext | [] [] [] [] [] [] [] [] | 18 - gnupg | [] [] [] | 10 - gprof | | 0 - grep | [] [] [] [] | 12 - hello | [] [] [] [] [] [] [] [] [] [] [] | 22 - id-utils | [] [] [] | 6 - indent | [] [] [] [] [] [] [] | 12 - jpilot | | 1 - kbd | [] | 1 - ld | | 1 - libc | [] [] [] [] [] [] [] [] | 16 - lilypond | [] [] | 3 - lynx | [] [] [] [] | 8 - m4 | [] [] [] [] | 12 - make | [] [] [] [] [] [] | 12 - mysecretdiary | | 1 - nano | [] | 4 - opcodes | [] | 1 - parted | [] [] | 5 - ptx | [] [] [] [] [] [] [] [] | 15 - python | | 0 - recode | [] [] [] [] | 13 - sed | [] [] [] [] [] [] [] | 19 - sh-utils | [] [] [] [] [] [] [] [] [] [] [] | 21 - sharutils | [] [] [] | 11 - sketch | | 0 - soundtracker | | 3 - sp | | 0 - tar | [] [] [] [] [] [] [] | 15 - texinfo | [] | 7 - textutils | [] [] [] [] [] [] [] [] | 16 - util-linux | [] [] | 4 - wdiff | [] [] [] [] | 7 - wget | [] [] [] [] [] [] [] | 17 - +----------------------------------------------------+ - 33 teams ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh - 53 domains 9 1 6 20 0 6 17 1 13 25 10 11 23 21 2 2 387 - - 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 September 2001 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/clients/gsat-1.1.0/AUTHORS b/clients/gsat-1.1.0/AUTHORS deleted file mode 100644 index 4c7a466..0000000 --- a/clients/gsat-1.1.0/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -Main coding: Xavier Crehueras EB3ZCS eb3czs@qsl.net -Range Calculations: John Magliacane KD2BD kd2bd@yahoo.com -Yaesu FT-736 plugin: Hiroshi Iwamoto JH4XSY sx7h-iwmt@asahi-net.or.jp \ No newline at end of file diff --git a/clients/gsat-1.1.0/COPYING b/clients/gsat-1.1.0/COPYING deleted file mode 100644 index d60c31a..0000000 --- a/clients/gsat-1.1.0/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - 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) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 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/clients/gsat-1.1.0/ChangeLog b/clients/gsat-1.1.0/ChangeLog deleted file mode 100644 index 62b45da..0000000 --- a/clients/gsat-1.1.0/ChangeLog +++ /dev/null @@ -1,29 +0,0 @@ -1.1.0: Added mode selection for satellite work. Added about dialog. Added - global preferences and satellite database files. Code cleanups. - Added plugin for the Yaesu FT-736 contributed by Hiroshi Iwamoto JH4XSY. - -1.0.1: Bug corrections: Satellite DB window doesn't open if .gsat.db file - doesn't exist. Get rid of linefeed after date and time in widgets. - -1.0: Added beacon doppler control. Added Satellite Frequency database and automatic - frequency selection. Added azimuth/elevation graphic. Added rotor control via - plugins. Removed 24 satellite limit. Some code optimization and clean up. - -0.9: Added toolbar. Added connection dialog. Added preferences. Added radio - doppler control via plugins. Added station visibility display. - Added command execution at AOS and at LOS. - -0.8: Added orbit number display. Added status bar. Added command line option to - display a grid 30x30 deg. - -0.7.5: Bugfix release. Fixed overlapping of labels and font size problems. - Network functions rewritten and implemented network error handling. - Added orbit number display. Added status bar. - -0.7: QTH and callsign drawing. AOS/LOS event indication. Added command line - options for UTC time or localtime display. Added command line option to - specify the predict server host. - -0.6: Orbit drawing. Network connection optimization. - -0.5: Initial public release diff --git a/clients/gsat-1.1.0/INSTALL b/clients/gsat-1.1.0/INSTALL deleted file mode 100644 index b42a17a..0000000 --- a/clients/gsat-1.1.0/INSTALL +++ /dev/null @@ -1,182 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes 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. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - 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' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. 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. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/clients/gsat-1.1.0/Makefile b/clients/gsat-1.1.0/Makefile deleted file mode 100644 index 5fafa4d..0000000 --- a/clients/gsat-1.1.0/Makefile +++ /dev/null @@ -1,411 +0,0 @@ -# Generated automatically from Makefile.in by configure. -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 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. - - -SHELL = /bin/sh - -srcdir = . -top_srcdir = . -prefix = /usr/local -exec_prefix = ${prefix} - -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 -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/gsat -pkglibdir = $(libdir)/gsat -pkgincludedir = $(includedir)/gsat - -top_builddir = . - -ACLOCAL = aclocal -AUTOCONF = autoconf -AUTOMAKE = automake -AUTOHEADER = autoheader - -INSTALL = /usr/bin/ginstall -c -INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_SCRIPT = ${INSTALL_PROGRAM} -transform = s,x,x, - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -BUILD_INCLUDED_LIBINTL = no -CATALOGS = -CATOBJEXT = .gmo -CC = gcc -DATADIRNAME = share -GENCAT = gencat -GLIBC21 = yes -GMOFILES = -GMSGFMT = /usr/bin/msgfmt -GTK_CFLAGS = -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include -GTK_CONFIG = /usr/bin/gtk-config -GTK_LIBS = -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm -INSTOBJEXT = .mo -INTLBISON = bison -INTLLIBS = -INTLOBJS = -INTL_LIBTOOL_SUFFIX_PREFIX = -LIBICONV = -MAKEINFO = makeinfo -MKINSTALLDIRS = ./mkinstalldirs -MSGFMT = /usr/bin/msgfmt -PACKAGE = gsat -POFILES = -POSUB = po -RANLIB = ranlib -USE_INCLUDED_LIBINTL = no -USE_NLS = yes -VERSION = 0.1 - -SUBDIRS = intl po src -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ -INSTALL Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 config.guess \ -config.h.in config.sub configure configure.in install-sh missing \ -mkinstalldirs - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -$(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 $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(ACLOCAL_M4): configure.in - cd $(srcdir) && $(ACLOCAL) - -config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -config.h: stamp-h - @if test ! -f $@; then \ - rm -f stamp-h; \ - $(MAKE) stamp-h; \ - else :; fi -stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=config.h \ - $(SHELL) ./config.status - @echo timestamp > stamp-h 2> /dev/null -$(srcdir)/config.h.in: $(srcdir)/stamp-h.in - @if test ! -f $@; then \ - rm -f $(srcdir)/stamp-h.in; \ - $(MAKE) $(srcdir)/stamp-h.in; \ - else :; fi -$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h - cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - -mostlyclean-hdr: - -clean-hdr: - -distclean-hdr: - -rm -f config.h - -maintainer-clean-hdr: - -# 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. - - - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @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; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && 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 - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(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 - -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) dist - -rm -rf $(distdir) - @banner="$(distdir).tar.gz is ready for distribution"; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -distdir: $(DISTFILES) - -rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: all-am -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -all-recursive-am: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -install-exec-am: -install-exec: install-exec-recursive - -install-data-am: install-data-local -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: -uninstall: uninstall-recursive -all-am: Makefile config.h -all-redirect: all-recursive-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic - -mostlyclean: mostlyclean-recursive - -clean-am: clean-hdr clean-tags clean-generic mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-hdr distclean-tags distclean-generic clean-am - -distclean: distclean-recursive - -rm -f config.status - -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -rm -f config.status - -.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -install-data-recursive uninstall-data-recursive install-exec-recursive \ -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -all-recursive check-recursive installcheck-recursive info-recursive \ -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ -install-exec-am install-exec install-data-local install-data-am \ -install-data install-am install uninstall-am uninstall all-redirect \ -all-am all installdirs-am installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean - - -install-data-local: - @$(NORMAL_INSTALL) - if test -d $(srcdir)/pixmaps; then \ - $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pixmaps; \ - for pixmap in $(srcdir)/pixmaps/*; do \ - if test -f $$pixmap; then \ - $(INSTALL_DATA) $$pixmap $(DESTDIR)$(pkgdatadir)/pixmaps; \ - fi \ - done \ - fi - if test ! -d $(pkglibdir)/plugins; then \ - $(mkinstalldirs) $(pkglibdir)/plugins; \ - fi - if test ! -f $(pkglibdir)/gsat.prefs; then \ - $(INSTALL_DATA) gsat.prefs $(pkglibdir)/; \ - fi - if test ! -f $(pkglibdir)/gsat.db; then \ - $(INSTALL_DATA) gsat.db $(pkglibdir)/; \ - fi - -dist-hook: - if test -d pixmaps; then \ - mkdir $(distdir)/pixmaps; \ - for pixmap in pixmaps/*; do \ - if test -f $$pixmap; then \ - cp -p $$pixmap $(distdir)/pixmaps; \ - fi \ - done \ - fi - -# 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/clients/gsat-1.1.0/Makefile.am b/clients/gsat-1.1.0/Makefile.am deleted file mode 100644 index 5f9118c..0000000 --- a/clients/gsat-1.1.0/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -## Process this file with automake to produce Makefile.in - -SUBDIRS = intl po src - -install-data-local: - @$(NORMAL_INSTALL) - if test -d $(srcdir)/pixmaps; then \ - $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pixmaps; \ - for pixmap in $(srcdir)/pixmaps/*; do \ - if test -f $$pixmap; then \ - $(INSTALL_DATA) $$pixmap $(DESTDIR)$(pkgdatadir)/pixmaps; \ - fi \ - done \ - fi - if test ! -d $(pkglibdir)/plugins; then \ - $(mkinstalldirs) $(pkglibdir)/plugins; \ - fi - if test ! -f $(pkglibdir)/gsat.prefs; then \ - $(INSTALL_DATA) gsat.prefs $(pkglibdir)/; \ - fi - if test ! -f $(pkglibdir)/gsat.db; then \ - $(INSTALL_DATA) gsat.db $(pkglibdir)/; \ - fi - -dist-hook: - if test -d pixmaps; then \ - mkdir $(distdir)/pixmaps; \ - for pixmap in pixmaps/*; do \ - if test -f $$pixmap; then \ - cp -p $$pixmap $(distdir)/pixmaps; \ - fi \ - done \ - fi - diff --git a/clients/gsat-1.1.0/Makefile.in b/clients/gsat-1.1.0/Makefile.in deleted file mode 100644 index 3c9907c..0000000 --- a/clients/gsat-1.1.0/Makefile.in +++ /dev/null @@ -1,411 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 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. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -DATADIRNAME = @DATADIRNAME@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIBICONV = @LIBICONV@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ - -SUBDIRS = intl po src -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ -INSTALL Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 config.guess \ -config.h.in config.sub configure configure.in install-sh missing \ -mkinstalldirs - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -$(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 $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(ACLOCAL_M4): configure.in - cd $(srcdir) && $(ACLOCAL) - -config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -config.h: stamp-h - @if test ! -f $@; then \ - rm -f stamp-h; \ - $(MAKE) stamp-h; \ - else :; fi -stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=config.h \ - $(SHELL) ./config.status - @echo timestamp > stamp-h 2> /dev/null -$(srcdir)/config.h.in: $(srcdir)/stamp-h.in - @if test ! -f $@; then \ - rm -f $(srcdir)/stamp-h.in; \ - $(MAKE) $(srcdir)/stamp-h.in; \ - else :; fi -$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h - cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - -mostlyclean-hdr: - -clean-hdr: - -distclean-hdr: - -rm -f config.h - -maintainer-clean-hdr: - -# 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. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @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; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && 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 - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(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 - -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) dist - -rm -rf $(distdir) - @banner="$(distdir).tar.gz is ready for distribution"; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -distdir: $(DISTFILES) - -rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: all-am -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -all-recursive-am: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -install-exec-am: -install-exec: install-exec-recursive - -install-data-am: install-data-local -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: -uninstall: uninstall-recursive -all-am: Makefile config.h -all-redirect: all-recursive-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic - -mostlyclean: mostlyclean-recursive - -clean-am: clean-hdr clean-tags clean-generic mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-hdr distclean-tags distclean-generic clean-am - -distclean: distclean-recursive - -rm -f config.status - -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -rm -f config.status - -.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -install-data-recursive uninstall-data-recursive install-exec-recursive \ -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -all-recursive check-recursive installcheck-recursive info-recursive \ -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ -install-exec-am install-exec install-data-local install-data-am \ -install-data install-am install uninstall-am uninstall all-redirect \ -all-am all installdirs-am installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean - - -install-data-local: - @$(NORMAL_INSTALL) - if test -d $(srcdir)/pixmaps; then \ - $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/pixmaps; \ - for pixmap in $(srcdir)/pixmaps/*; do \ - if test -f $$pixmap; then \ - $(INSTALL_DATA) $$pixmap $(DESTDIR)$(pkgdatadir)/pixmaps; \ - fi \ - done \ - fi - if test ! -d $(pkglibdir)/plugins; then \ - $(mkinstalldirs) $(pkglibdir)/plugins; \ - fi - if test ! -f $(pkglibdir)/gsat.prefs; then \ - $(INSTALL_DATA) gsat.prefs $(pkglibdir)/; \ - fi - if test ! -f $(pkglibdir)/gsat.db; then \ - $(INSTALL_DATA) gsat.db $(pkglibdir)/; \ - fi - -dist-hook: - if test -d pixmaps; then \ - mkdir $(distdir)/pixmaps; \ - for pixmap in pixmaps/*; do \ - if test -f $$pixmap; then \ - cp -p $$pixmap $(distdir)/pixmaps; \ - fi \ - done \ - fi - -# 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/clients/gsat-1.1.0/NEWS b/clients/gsat-1.1.0/NEWS deleted file mode 100644 index ebc98ff..0000000 --- a/clients/gsat-1.1.0/NEWS +++ /dev/null @@ -1 +0,0 @@ -Someone said "No news are good news". \ No newline at end of file diff --git a/clients/gsat-1.1.0/Plugin_API b/clients/gsat-1.1.0/Plugin_API deleted file mode 100644 index 55ff1ee..0000000 --- a/clients/gsat-1.1.0/Plugin_API +++ /dev/null @@ -1,166 +0,0 @@ -gsat Plugin API ---------------- - -How to write plugins for gsat. ------------------------------- - -This document tries to explain how to write your own plugins for gsat. - -There are 2 types of plugins in gsat: the radio plugins and the rotor plugins. - -- Radio plugins are used to control a rig with CAT capabilities and do automatic - doppler correction of frequency. Their file name must begin by radio_. - -- Rotor plugins are used to control a rotor in order to have the antennas - pointed at the satellite being tracked. Their file name must begin by rotor_. - -You can write your own plugins by implementing the functions described below. -Because gsat uses dynamic loading, plugins must be compiled with: - - gcc -fPIC -shared -o {plugin_name} {plugin_name}.c - -There are some examples in the plugins directory. - -Plugins must be installed in the /usr/local/lib/gsat/plugins directory. If you -need the plugins in another directory, you must set the GSATPLUGINSDIR environment -variable to point to your plugins directory. - -To use a plugin, select it in the preferences window and set the config string if - needed. - -The config string is passed to the plugin_open function and can be used to -configure a plugin. There is an example in the plugins directory (radio_PCR100.c). - - - -RADIO PLUGINS -------------- - -Functions required to implement a radio control plugin for gsat. - - -int plugin_open_rig( char * config ) - -Function: -Open and initialize the device - -Parameters: -char * config: string with config parameters for the plugin - -Returns: -int : TRUE=open ok - FALSE=failed - - -void plugin_close_rig( void ) - -Function: -close and free resources used by the device - -Parameters: -none - -Returns: -none - - -void plugin_set_uplink_frequency( double frequency ) - -Function: -Set frequency on the device - -Parameters: -double frequency: frequency in kilohertz - -Returns: -none - - -void plugin_set_downlink_frequency( double frequency ) - -Function: -Set frequency on the device - -Parameters: -double frequency: frequency in kilohertz - -Returns: -none - - -char * plugin_info( void ) - -Function: -Get info string - -Parameters: -none - -Returns: -char *: pointer to a string containing the name of the device and plugin version - - - -ROTOR PLUGINS -------------- - -Functions required to implement a rotor control plugin for gsat. - - -int plugin_open_rotor( char * config ); - -Function: -Open and initialize the device - -Parameters: -char * config: string with config parameters for the plugin - -Returns: -int : TRUE=open ok - FALSE=failed - - -void plugin_close_rotor( void ); - -Function: -close and free resources used by the device - -Parameters: -none - -Returns: -none - - -void plugin_set_rotor( double azimuth, double elevation ); - -Function: -Set rotor azimuth and elevation - -Parameters: -double azimuth: azimuth in degrees -double elevation: elevation in degrees - -Returns: -none - - -char * plugin_info( void ) - -Function: -Get info string - -Parameters: -none - -Returns: -char *: pointer to a string containing the name of the device and plugin version - - - -That's all for now. - -If you write a new plugin, please send me a copy so I can add it to gsat. - - -73 de Xavi, EB3CZS \ No newline at end of file diff --git a/clients/gsat-1.1.0/README b/clients/gsat-1.1.0/README deleted file mode 100644 index 95039bc..0000000 --- a/clients/gsat-1.1.0/README +++ /dev/null @@ -1,69 +0,0 @@ -WELCOME TO GSAT! - -gsat is a satellite tracking program. It is a graphical frontend to the predict orbital prediction program by John Magliacane KD2BD. - -To install, do the usual: - - ./configure - ./make - ./make install - -If this doesn't work, you can do: - - ./autogen.sh - ./make - ./make install - -Make sure to have predict installed and the predict service configured in the /etc/services. -Define the host with the predict server by: - - export PREDICTHOST= - - -where is the host name of the server. -Then execute gsat by typing: - - gsat - -or by using -s option, like: - - gsat -s hostname - -where hostname is the host name of the server. -If no PREDICTHOST variable or no -s option are used, localhost is assumed. - -From gsat version 0.9.0, you have to use the connect button to make a connection to a predict server. - - - -ABOUT PLUGINS -------------- - -gsat can do automatic doppler correction and rotor control via plugins. Plugins are placed in the /usr/local/lib/gsat/plugins directory by default. You can override this setting the GSATPLUGINSDIR environment variable. Plugin's name must begin by "radio_" for the radio plugins and "rotor_" for the rotor plugins. Once you have the plugins installed, you can select it in the preferences window, pass it a config string and activate it in the doppler section of the main window. -There is a file called Plugin_API with the info to program a custom plugin. There are some examples in the plugins subdir. -Please note that not all the plugins in the plugins directory of this package are in a working state. I'm working on some of them and it is possible that even some refuse to compile. I include them to show some examples of plugin programming. - -Working plugins: - -radio plugins -------------- -radio_FT736 : Yaesu FT-736 contributed by Hiroshi Iwamoto JH4XSY -radio_ICR10 : Icom IC-R10 Receiver -radio_PCR100: Icom PCR-100 Receiver (libpcr100 is needed to compile this) - -rotor plugins -------------- -rotor_pictrack: created from the pictrack code in predict. Not tested. - -the radio_print and rotor_print are test plugins that only print data to the shell. - -INSTALLING PLUGINS ------------------- - -Plugin installation is not yet automated. You will have to install the plugins after installing gsat. To install the plugins, change to the plugins directory, edit the Makefile and change the TARGETS line to contain only the plugins you want to install. Then do a make and make install and you are done. - -Happy tracking !!! - -Xavier Crehueras, EB3CZS -eb3czs@qsl.net - diff --git a/clients/gsat-1.1.0/acconfig.h b/clients/gsat-1.1.0/acconfig.h deleted file mode 100644 index 4a321c8..0000000 --- a/clients/gsat-1.1.0/acconfig.h +++ /dev/null @@ -1,9 +0,0 @@ -#undef ENABLE_NLS -#undef HAVE_CATGETS -#undef HAVE_GETTEXT -#undef HAVE_LC_MESSAGES -#undef HAVE_STPCPY -#undef HAVE_LIBSM -#undef PACKAGE_LOCALE_DIR -#undef PACKAGE_DATA_DIR -#undef PACKAGE_SOURCE_DIR diff --git a/clients/gsat-1.1.0/aclocal.m4 b/clients/gsat-1.1.0/aclocal.m4 deleted file mode 100644 index 58b7e48..0000000 --- a/clients/gsat-1.1.0/aclocal.m4 +++ /dev/null @@ -1,991 +0,0 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p4 - -dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - -# Do all the work for Automake. 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. - -# serial 1 - -dnl Usage: -dnl AM_INIT_AUTOMAKE(package,version, [no-define]) - -AC_DEFUN(AM_INIT_AUTOMAKE, -[AC_REQUIRE([AC_PROG_INSTALL]) -PACKAGE=[$1] -AC_SUBST(PACKAGE) -VERSION=[$2] -AC_SUBST(VERSION) -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 -ifelse([$3],, -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) -AC_REQUIRE([AM_SANITY_CHECK]) -AC_REQUIRE([AC_ARG_PROGRAM]) -dnl FIXME This is truly gross. -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) -AC_REQUIRE([AC_PROG_MAKE_SET])]) - -# -# Check to make sure that the build environment is sane. -# - -AC_DEFUN(AM_SANITY_CHECK, -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftestfile -# 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 conftestfile 2> /dev/null` - if test "[$]*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "[$]*" != "X $srcdir/configure conftestfile" \ - && test "[$]*" != "X conftestfile $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" = conftestfile - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -rm -f conftest* -AC_MSG_RESULT(yes)]) - -dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) -dnl The program must properly implement --version. -AC_DEFUN(AM_MISSING_PROG, -[AC_MSG_CHECKING(for working $2) -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if ($2 --version) < /dev/null > /dev/null 2>&1; then - $1=$2 - AC_MSG_RESULT(found) -else - $1="$3/missing $2" - AC_MSG_RESULT(missing) -fi -AC_SUBST($1)]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. - -AC_DEFUN(AM_CONFIG_HEADER, -[AC_PREREQ([2.12]) -AC_CONFIG_HEADER([$1]) -dnl When config.status generates a header, we must update the stamp-h file. -dnl This file resides in the same directory as the config header -dnl that is generated. We must strip everything past the first ":", -dnl and everything past the last "/". -AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl -ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, -<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, -<>; do - case " <<$>>CONFIG_HEADERS " in - *" <<$>>am_file "*<<)>> - echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx - ;; - esac - am_indx=`expr "<<$>>am_indx" + 1` -done<<>>dnl>>) -changequote([,]))]) - -#serial 1 -# 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"]) - ] -) - - -# serial 1 - -# @defmac AC_PROG_CC_STDC -# @maindex PROG_CC_STDC -# @ovindex CC -# If the C compiler in not in ANSI C mode by default, try to add an option -# to output variable @code{CC} to make it so. This macro tries various -# options that select ANSI C on some system or another. It considers the -# compiler to be in ANSI C mode if it handles function prototypes correctly. -# -# If you use this macro, you should check after calling it whether the C -# compiler has been set to accept ANSI C; if not, the shell variable -# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source -# code in ANSI C, you can make an un-ANSIfied copy of it by using the -# program @code{ansi2knr}, which comes with Ghostscript. -# @end defmac - -AC_DEFUN(AM_PROG_CC_STDC, -[AC_REQUIRE([AC_PROG_CC]) -AC_BEFORE([$0], [AC_C_INLINE]) -AC_BEFORE([$0], [AC_C_CONST]) -dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require -dnl a magic option to avoid problems with ANSI preprocessor commands -dnl like #elif. -dnl FIXME: can't do this because then AC_AIX won't work due to a -dnl circular dependency. -dnl AC_BEFORE([$0], [AC_PROG_CPP]) -AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) -AC_CACHE_VAL(am_cv_prog_cc_stdc, -[am_cv_prog_cc_stdc=no -ac_save_CC="$CC" -# 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 -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - AC_TRY_COMPILE( -[#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; -], [ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -], -[am_cv_prog_cc_stdc="$ac_arg"; break]) -done -CC="$ac_save_CC" -]) -if test -z "$am_cv_prog_cc_stdc"; then - AC_MSG_RESULT([none needed]) -else - AC_MSG_RESULT($am_cv_prog_cc_stdc) -fi -case "x$am_cv_prog_cc_stdc" in - x|xno) ;; - *) CC="$CC $am_cv_prog_cc_stdc" ;; -esac -]) - -# Configure paths for GTK+ -# Owen Taylor 97-11-3 - -dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) -dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS -dnl -AC_DEFUN(AM_PATH_GTK, -[dnl -dnl Get the cflags and libraries from the gtk-config script -dnl -AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], - gtk_config_prefix="$withval", gtk_config_prefix="") -AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], - gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") -AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], - , enable_gtktest=yes) - - for module in . $4 - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - AC_PATH_PROG(GTK_CONFIG, gtk-config, no) - min_gtk_version=ifelse([$1], ,0.99.7,$1) - AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" -dnl -dnl Now check if the installed GTK is sufficiently new. (Also sanity -dnl checks the results of gtk-config to some extent -dnl - rm -f conf.gtktest - AC_TRY_RUN([ -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} -],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GTK_CFLAGS) - AC_SUBST(GTK_LIBS) - rm -f conf.gtktest -]) - -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995. -# -# 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 or the GNU Library General Public License but which still want -# to provide support for the GNU gettext functionality. -# Please note that the actual code of the GNU gettext library is covered -# by the GNU Library General Public License, and the rest of the GNU -# gettext package package is covered by the GNU General Public License. -# They are *not* in the public domain. - -# serial 10 - -dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). -dnl If TOOLSYMBOL is specified and 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). Otherwise, 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 LIBDIR 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 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_WITH_NLS], - [AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - INTLLIBS= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - 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. - CATOBJEXT=NONE - - dnl Add a version number to the cache macros. - define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) - define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) - - AC_CHECK_HEADER(libintl.h, - [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -lintl $LIBICONV" - AC_TRY_LINK([#include -extern int _nl_msg_cat_cntr;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - 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 - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - dnl If iconv() is in a separate libiconv library, then anyone - dnl linking with libintl{.a,.so} also needs to link with - dnl libiconv. - INTLLIBS="-lintl $LIBICONV" - fi - - gt_save_LIBS="$LIBS" - LIBS="$LIBS $INTLLIBS" - AC_CHECK_FUNCS(dcgettext) - LIBS="$gt_save_LIBS" - - dnl Search for GNU msgfmt in the PATH. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext in the PATH. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) - - CATOBJEXT=.gmo - fi - ]) - - if test "$CATOBJEXT" = "NONE"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on 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)" - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) - AC_SUBST(MSGFMT) - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.gmo - INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - 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; then - : ; - else - AC_MSG_RESULT( - [found msgfmt 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 /dev/null >/dev/null 2>&1; then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - dnl We need to process the po/ directory. - POSUB=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" - sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - fi - ;; - esac - done]) - - - 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 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 - - dnl These rules are solely for the distribution goal. While doing this - dnl we only have to keep exactly one list of the available catalogs - dnl in configure.in. - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(GMOFILES) - AC_SUBST(INTLLIBS) - AC_SUBST(INTLOBJS) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - - 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 Usage: Just like AM_WITH_NLS, which see. -AC_DEFUN([AM_GNU_GETTEXT], - [AC_REQUIRE([AC_PROG_MAKE_SET])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 getcwd getegid geteuid \ -getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ -strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) - - AM_ICONV - AM_LANGINFO_CODESET - AM_LC_MESSAGES - AM_WITH_NLS([$1],[$2],[$3]) - - if test "x$CATOBJEXT" != "x"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - AC_MSG_CHECKING(for catalogs to be installed) - NEW_LINGUAS= - for presentlang in $ALL_LINGUAS; do - useit=no - for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - NEW_LINGUAS="$NEW_LINGUAS $presentlang" - fi - done - LINGUAS=$NEW_LINGUAS - AC_MSG_RESULT($LINGUAS) - fi - - dnl Construct list of names of catalog files to be constructed. - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - -# Search path for a program which passes the given test. -# Ulrich Drepper , 1996. -# -# 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 or the GNU Library General Public License but which still want -# to provide support for the GNU gettext functionality. -# Please note that the actual code of the GNU gettext library is covered -# by the GNU Library General Public License, and the rest of the GNU -# gettext package package is covered by the GNU General Public License. -# They are *not* in the public domain. - -# serial 2 - -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 -]) - -#serial 2 - -# 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" - ] -) - -#serial AM2 - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - AC_ARG_WITH([libiconv-prefix], -[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ - for dir in `echo "$withval" | tr : ' '`; do - if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi - if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi - done - ]) - - 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 -liconv" - 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.]) - 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 - LIBICONV= - if test "$am_cv_lib_iconv" = yes; then - LIBICONV="-liconv" - fi - AC_SUBST(LIBICONV) -]) - -#serial AM1 - -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 -]) - -# Check whether LC_MESSAGES is available in . -# Ulrich Drepper , 1995. -# -# 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 or the GNU Library General Public License but which still want -# to provide support for the GNU gettext functionality. -# Please note that the actual code of the GNU gettext library is covered -# by the GNU Library General Public License, and the rest of the GNU -# gettext package package is covered by the GNU General Public License. -# They are *not* in the public domain. - -# serial 2 - -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/clients/gsat-1.1.0/autogen.sh b/clients/gsat-1.1.0/autogen.sh deleted file mode 100755 index 293b797..0000000 --- a/clients/gsat-1.1.0/autogen.sh +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -srcdir=`dirname $0` -PKG_NAME="the package." - -DIE=0 - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`autoconf' installed to." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { - (libtool --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`libtool' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`automake' installed." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - NO_AUTOMAKE=yes -} - - -# if no automake, don't bother testing for aclocal -test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: Missing \`aclocal'. The version of \`automake'" - echo "installed doesn't appear recent enough." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -if test -z "$*"; then - echo "**Warning**: I am going to run \`configure' with no arguments." - echo "If you wish to pass any to it, please specify them on the" - echo \`$0\'" command line." - echo -fi - -case $CC in -xlc ) - am_opt=--include-deps;; -esac - -for coin in `find $srcdir -name configure.in -print` -do - dr=`dirname $coin` - if test -f $dr/NO-AUTO-GEN; then - echo skipping $dr -- flagged as no auto-gen - else - echo processing $dr - macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` - ( cd $dr - aclocalinclude="$ACLOCAL_FLAGS" - for k in $macrodirs; do - if test -d $k; then - aclocalinclude="$aclocalinclude -I $k" - ##else - ## echo "**Warning**: No such directory \`$k'. Ignored." - fi - done - if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then - if grep "sed.*POTFILES" configure.in >/dev/null; then - : do nothing -- we still have an old unmodified configure.in - else - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - fi - if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then - echo "Running libtoolize..." - libtoolize --force --copy - fi - echo "Running aclocal $aclocalinclude ..." - aclocal $aclocalinclude - if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then - echo "Running autoheader..." - autoheader - fi - echo "Running automake --gnu $am_opt ..." - automake --add-missing --gnu $am_opt - echo "Running autoconf ..." - autoconf - ) - fi -done - -#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" \ - && echo Now type \`make\' to compile $PKG_NAME -else - echo Skipping configure process. -fi diff --git a/clients/gsat-1.1.0/autom4te.cache/output.0 b/clients/gsat-1.1.0/autom4te.cache/output.0 deleted file mode 100644 index 96f2bd8..0000000 --- a/clients/gsat-1.1.0/autom4te.cache/output.0 +++ /dev/null @@ -1,13029 +0,0 @@ -@%:@! /bin/sh -@%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.69. -@%:@ -@%:@ -@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -@%:@ -@%:@ -@%:@ This configure script is free software; the Free Software Foundation -@%:@ gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in @%:@( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIB@&t@OBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="configure.in" -gt_needs= -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_list= -gl_use_threads_default= -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIB@&t@OBJS -POSUB -LTLIBINTL -LIBINTL -INTLLIBS -INTL_LIBTOOL_SUFFIX_PREFIX -INTLOBJS -GENCAT -INSTOBJEXT -DATADIRNAME -CATOBJEXT -USE_INCLUDED_LIBINTL -BUILD_INCLUDED_LIBINTL -LTLIBC -WINDRES -WOE32 -WOE32DLL -HAVE_WPRINTF -HAVE_NEWLOCALE -HAVE_SNPRINTF -HAVE_ASPRINTF -HAVE_POSIX_PRINTF -INTL_DEFAULT_VERBOSITY -INTL_MACOSX_LIBS -GLIBC21 -INTLBISON -LTLIBICONV -LIBICONV -LTLIBMULTITHREAD -LIBMULTITHREAD -LTLIBTHREAD -LIBTHREAD -LIBPTH_PREFIX -LTLIBPTH -LIBPTH -PRI_MACROS_BROKEN -ALLOCA -HAVE_VISIBILITY -CFLAG_VISIBILITY -RANLIB -GLIBC2 -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -XGETTEXT_EXTRA_OPTIONS -MSGMERGE -XGETTEXT_015 -XGETTEXT -GMSGFMT_015 -MSGFMT_015 -GMSGFMT -MSGFMT -GETTEXT_MACRO_VERSION -USE_NLS -GTK_LIBS -GTK_CFLAGS -GTK_CONFIG -EGREP -GREP -CPP -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -with_gtk_prefix -with_gtk_exec_prefix -enable_gtktest -enable_nls -enable_threads -with_gnu_ld -enable_rpath -with_libpth_prefix -with_libiconv_prefix -with_included_gettext -with_libintl_prefix -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -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 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures 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 \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - @<:@@S|@ac_default_prefix@:>@ - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - @<:@PREFIX@:>@ - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root @<:@DATAROOTDIR/doc/PACKAGE@:>@ - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -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-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --disable-gtktest Do not try to compile and run a test GTK program - --disable-nls do not use Native Language Support - --enable-threads={posix|solaris|pth|win32} - specify multithreading API - --disable-threads build without multithread safety - --disable-rpath do not hardcode runtime library paths - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gtk-prefix=PFX Prefix where GTK is installed (optional) - --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib - --without-libpth-prefix don't search for libpth in includedir and libdir - --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 - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) 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. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -@%:@ ac_fn_c_try_compile LINENO -@%:@ -------------------------- -@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_compile - -@%:@ ac_fn_c_try_link LINENO -@%:@ ----------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_link - -@%:@ ac_fn_c_try_cpp LINENO -@%:@ ---------------------- -@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_cpp - -@%:@ ac_fn_c_try_run LINENO -@%:@ ---------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes -@%:@ that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_run - -@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES -@%:@ ------------------------------------------- -@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache -@%:@ variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_type - -@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists and can be compiled using the include files in -@%:@ INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_compile - -@%:@ ac_fn_c_check_func LINENO FUNC VAR -@%:@ ---------------------------------- -@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* 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_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_func - -@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using -@%:@ the include files in INCLUDES and setting the cache variable VAR -@%:@ accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_mongrel - -@%:@ ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -@%:@ -------------------------------------------- -@%:@ Tries to find the compile-time value of EXPR in a program that includes -@%:@ INCLUDES, setting VAR accordingly. Returns whether the value could be -@%:@ computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) >= 0)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) < 0)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) >= $ac_mid)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in @%:@(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -@%:@include -@%:@include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append 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 - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > 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 - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in @%:@(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - 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. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -gt_needs="$gt_needs " -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -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 - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in @%:@(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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 - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE=gsat - VERSION=0.1 - - -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"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -ac_config_headers="$ac_config_headers config.h" - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -@%:@ Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if ${ac_cv_search_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (); -int -main () -{ -return strerror (); - ; - return 0; -} -_ACEOF -for ac_lib in '' cposix; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_strerror=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_strerror+:} false; then : - break -fi -done -if ${ac_cv_search_strerror+:} false; then : - -else - ac_cv_search_strerror=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -$as_echo "$ac_cv_search_strerror" >&6; } -ac_res=$ac_cv_search_strerror -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h - -fi - - - -@%:@ Check whether --with-gtk-prefix was given. -if test "${with_gtk_prefix+set}" = set; then : - withval=$with_gtk_prefix; gtk_config_prefix="$withval" -else - gtk_config_prefix="" -fi - - -@%:@ Check whether --with-gtk-exec-prefix was given. -if test "${with_gtk_exec_prefix+set}" = set; then : - withval=$with_gtk_exec_prefix; gtk_config_exec_prefix="$withval" -else - gtk_config_exec_prefix="" -fi - -@%:@ Check whether --enable-gtktest was given. -if test "${enable_gtktest+set}" = set; then : - enableval=$enable_gtktest; -else - enable_gtktest=yes -fi - - - for module in . - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - # Extract the first word of "gtk-config", so it can be a program name with args. -set dummy gtk-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GTK_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GTK_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GTK_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" - ;; -esac -fi -GTK_CONFIG=$ac_cv_path_GTK_CONFIG -if test -n "$GTK_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_CONFIG" >&5 -$as_echo "$GTK_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - min_gtk_version=1.2.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5 -$as_echo_n "checking for GTK - version >= $min_gtk_version... " >&6; } - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" - rm -f conf.gtktest - if test "$cross_compiling" = yes; then : - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - no_gtk=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - : - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main () -{ - return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" -else - echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - as_fn_error $? "Cannot find GTK: Is gtk-config in path?" "$LINENO" 5 - fi - - - rm -f conf.gtktest - - -ALL_LINGUAS="" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } - @%:@ Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : - enableval=$enable_nls; USE_NLS=$enableval -else - USE_NLS=yes -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - - - - - GETTEXT_MACRO_VERSION=0.18 - - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGFMT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --statistics /dev/null >&5 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$ac_exec_ext" - break 2 - fi - fi - done - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; - *) MSGFMT_015=$MSGFMT ;; - esac - - case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; - *) GMSGFMT_015=$GMSGFMT ;; - esac - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$XGETTEXT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - rm -f messages.po - - case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; - *) XGETTEXT_015=$XGETTEXT ;; - esac - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGMERGE" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$localedir" || localedir='${datadir}/locale' - - - test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= - - - ac_config_commands="$ac_config_commands po-directories" - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5 -$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; } -if ${ac_cv_gnu_library_2+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef __GNU_LIBRARY__ - #if (__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=yes -else - ac_cv_gnu_library_2=no -fi -rm -f conftest* - - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5 -$as_echo "$ac_cv_gnu_library_2" >&6; } - - GLIBC2="$ac_cv_gnu_library_2" - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - - - CFLAG_VISIBILITY= - HAVE_VISIBILITY=0 - if test -n "$GCC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 -$as_echo_n "checking whether the -Werror option is usable... " >&6; } - if ${gl_cv_cc_vis_werror+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gl_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_cc_vis_werror=yes -else - gl_cv_cc_vis_werror=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$gl_save_CFLAGS" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 -$as_echo "$gl_cv_cc_vis_werror" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 -$as_echo_n "checking for simple visibility declarations... " >&6; } - if ${gl_cv_cc_visibility+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gl_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fvisibility=hidden" - if test $gl_cv_cc_vis_werror = yes; then - CFLAGS="$CFLAGS -Werror" - fi - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -extern __attribute__((__visibility__("hidden"))) int hiddenvar; - extern __attribute__((__visibility__("default"))) int exportedvar; - extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); - extern __attribute__((__visibility__("default"))) int exportedfunc (void); - void dummyfunc (void) {} -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_cc_visibility=yes -else - gl_cv_cc_visibility=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$gl_save_CFLAGS" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 -$as_echo "$gl_cv_cc_visibility" >&6; } - if test $gl_cv_cc_visibility = yes; then - CFLAG_VISIBILITY="-fvisibility=hidden" - HAVE_VISIBILITY=1 - fi - fi - - - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_VISIBILITY $HAVE_VISIBILITY -_ACEOF - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -@%:@define size_t unsigned int -_ACEOF - -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 -$as_echo_n "checking for stdint.h... " >&6; } -if ${gl_cv_header_stdint_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -uintmax_t i = (uintmax_t) -1; return !i; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_stdint_h=yes -else - gl_cv_header_stdint_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 -$as_echo "$gl_cv_header_stdint_h" >&6; } - if test $gl_cv_header_stdint_h = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_STDINT_H_WITH_UINTMAX 1 -_ACEOF - - fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_working_alloca_h=yes -else - ac_cv_working_alloca_h=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } -if test $ac_cv_working_alloca_h = yes; then - -$as_echo "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_alloca_works=yes -else - ac_cv_func_alloca_works=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } - -if test $ac_cv_func_alloca_works = yes; then - -$as_echo "@%:@define HAVE_ALLOCA 1" >>confdefs.h - -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=\${LIBOBJDIR}alloca.$ac_objext - -$as_echo "@%:@define C_ALLOCA 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - -cat >>confdefs.h <<_ACEOF -@%:@define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_c_stack_direction=0 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -find_stack_direction (int *addr, int depth) -{ - int dir, dummy = 0; - if (! addr) - addr = &dummy; - *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; - dir = depth ? find_stack_direction (addr, depth - 1) : 0; - return dir + dummy; -} - -int -main (int argc, char **argv) -{ - return find_stack_direction (0, argc + !argv + 20) < 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_stack_direction=1 -else - ac_cv_c_stack_direction=-1 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -@%:@define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - - - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef 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; - const char *cdata2; - int i, pagesize; - int fd, fd2; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 2; - if (write (fd, data, pagesize) != pagesize) - return 3; - close (fd); - - /* Next, check that the tail of a page is zero-filled. File must have - non-zero length, otherwise we risk SIGBUS for entire page. */ - fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); - if (fd2 < 0) - return 4; - cdata2 = ""; - if (write (fd2, cdata2, 1) != 1) - return 5; - data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); - if (data2 == MAP_FAILED) - return 6; - for (i = 0; i < pagesize; ++i) - if (*(data2 + i)) - return 7; - close (fd2); - if (munmap (data2, pagesize)) - return 8; - - /* 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) - return 9; - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 10; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 11; - - /* 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) - return 12; - if (read (fd, data3, pagesize) != pagesize) - return 13; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 14; - close (fd); - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_mmap_fixed_mapped=yes -else - ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -$as_echo "@%:@define HAVE_MMAP 1" >>confdefs.h - -fi -rm -f conftest.mmap conftest.txt - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 -$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } -if ${gt_cv_int_divbyzero_sigfpe+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gt_cv_int_divbyzero_sigfpe= - case "$host_os" in - macos* | darwin[6-9]* | darwin[1-9][0-9]*) - # On MacOS X 10.2 or newer, just assume the same as when cross- - # compiling. If we were to perform the real test, 1 Crash Report - # dialog window would pop up. - case "$host_cpu" in - i[34567]86 | x86_64) - gt_cv_int_divbyzero_sigfpe="guessing yes" ;; - esac - ;; - esac - if test -z "$gt_cv_int_divbyzero_sigfpe"; then - if test "$cross_compiling" = yes; then : - - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i[34567]86 | x86_64 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -static void -sigfpe_handler (int sig) -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gt_cv_int_divbyzero_sigfpe=yes -else - gt_cv_int_divbyzero_sigfpe=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 -$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - -cat >>confdefs.h <<_ACEOF -@%:@define INTDIV0_RAISES_SIGFPE $value -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 -$as_echo_n "checking for inttypes.h... " >&6; } -if ${gl_cv_header_inttypes_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -uintmax_t i = (uintmax_t) -1; return !i; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_inttypes_h=yes -else - gl_cv_header_inttypes_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 -$as_echo "$gl_cv_header_inttypes_h" >&6; } - if test $gl_cv_header_inttypes_h = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_INTTYPES_H_WITH_UINTMAX 1 -_ACEOF - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 -$as_echo_n "checking for unsigned long long int... " >&6; } -if ${ac_cv_type_unsigned_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* For now, do not test the preprocessor; as of 2007 there are too many - implementations with broken preprocessors. Perhaps this can - be revisited in 2012. In the meantime, code should not expect - #if to work with literals wider than 32 bits. */ - /* Test literals. */ - long long int ll = 9223372036854775807ll; - long long int nll = -9223372036854775807LL; - unsigned long long int ull = 18446744073709551615ULL; - /* Test constant expressions. */ - typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) - ? 1 : -1)]; - typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 - ? 1 : -1)]; - int i = 63; -int -main () -{ -/* Test availability of runtime routines for shift and division. */ - long long int llmax = 9223372036854775807ll; - unsigned long long int ullmax = 18446744073709551615ull; - return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) - | (llmax / ll) | (llmax % ll) - | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) - | (ullmax / ull) | (ullmax % ull)); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_type_unsigned_long_long_int=yes -else - ac_cv_type_unsigned_long_long_int=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 -$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } - if test $ac_cv_type_unsigned_long_long_int = yes; then - -$as_echo "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h - - fi - - - - - if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then - - test $ac_cv_type_unsigned_long_long_int = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - -cat >>confdefs.h <<_ACEOF -@%:@define uintmax_t $ac_type -_ACEOF - - else - -$as_echo "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h - - fi - - - for ac_header in inttypes.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" -if test "x$ac_cv_header_inttypes_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_INTTYPES_H 1 -_ACEOF - -fi - -done - - if test $ac_cv_header_inttypes_h = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 -$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } -if ${gt_cv_inttypes_pri_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#ifdef PRId32 -char *p = PRId32; -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_inttypes_pri_broken=no -else - gt_cv_inttypes_pri_broken=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 -$as_echo "$gt_cv_inttypes_pri_broken" >&6; } - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define PRI_MACROS_BROKEN 1 -_ACEOF - - PRI_MACROS_BROKEN=1 - else - PRI_MACROS_BROKEN=0 - fi - - - - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi - - - if test "$MINIX" = yes; then - -$as_echo "@%:@define _POSIX_SOURCE 1" >>confdefs.h - - -$as_echo "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h - - -$as_echo "@%:@define _MINIX 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "@%:@define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "@%:@define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "@%:@define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "@%:@define _TANDEM_SOURCE 1" >>confdefs.h - - - - - - - - @%:@ Check whether --enable-threads was given. -if test "${enable_threads+set}" = set; then : - enableval=$enable_threads; gl_use_threads=$enableval -else - if test -n "$gl_use_threads_default"; then - gl_use_threads="$gl_use_threads_default" - else - case "$host_os" in - osf*) gl_use_threads=no ;; - cygwin*) - case `uname -r` in - 1.[0-5].*) gl_use_threads=no ;; - *) gl_use_threads=yes ;; - esac - ;; - *) gl_use_threads=yes ;; - esac - fi - -fi - - if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then - # For using : - case "$host_os" in - osf*) - # On OSF/1, the compiler needs the flag -D_REENTRANT so that it - # groks . cc also understands the flag -pthread, but - # we don't use it because 1. gcc-2.95 doesn't understand -pthread, - # 2. putting a flag into CPPFLAGS that has an effect on the linker - # causes the AC_TRY_LINK test below to succeed unexpectedly, - # leading to wrong values of LIBTHREAD and LTLIBTHREAD. - CPPFLAGS="$CPPFLAGS -D_REENTRANT" - ;; - esac - # Some systems optimize for single-threaded programs by default, and - # need special flags to disable these optimizations. For example, the - # definition of 'errno' in . - case "$host_os" in - aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; - solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; - esac - fi - - - - - - 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 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 - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 -$as_echo_n "checking for ld used by GCC... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&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. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } - wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" - acl_shlibext="$acl_cv_shlibext" - acl_libname_spec="$acl_cv_libname_spec" - acl_library_names_spec="$acl_cv_library_names_spec" - acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" - @%:@ Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : - enableval=$enable_rpath; : -else - enable_rpath=yes -fi - - - - - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef _LP64 -sixtyfour bits -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : - gl_cv_solaris_64bit=yes -else - gl_cv_solaris_64bit=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" - - - - gl_threads_api=none - LIBTHREAD= - LTLIBTHREAD= - LIBMULTITHREAD= - LTLIBMULTITHREAD= - if test "$gl_use_threads" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 -$as_echo_n "checking whether imported symbols can be declared weak... " >&6; } -if ${gl_cv_have_weak+:} false; then : - $as_echo_n "(cached) " >&6 -else - gl_cv_have_weak=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -extern void xyzzy (); -#pragma weak xyzzy -int -main () -{ -xyzzy(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_have_weak=maybe -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test $gl_cv_have_weak = maybe; then - if test "$cross_compiling" = yes; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __ELF__ - Extensible Linking Format - #endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Extensible Linking Format" >/dev/null 2>&1; then : - gl_cv_have_weak="guessing yes" -else - gl_cv_have_weak="guessing no" -fi -rm -f conftest* - - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#pragma weak fputs -int main () -{ - return (fputs == NULL); -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_have_weak=yes -else - gl_cv_have_weak=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 -$as_echo "$gl_cv_have_weak" >&6; } - if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then - # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that - # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes; then : - gl_have_pthread_h=yes -else - gl_have_pthread_h=no -fi - - - if test "$gl_have_pthread_h" = yes; then - # Other possible tests: - # -lpthreads (FSU threads, PCthreads) - # -lgthreads - gl_have_pthread= - # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist - # in libc. IRIX 6.5 has the first one in both libc and libpthread, but - # the second one only in libpthread, and lock.c needs it. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -pthread_mutex_lock((pthread_mutex_t*)0); - pthread_mutexattr_init((pthread_mutexattr_t*)0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_have_pthread=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - # Test for libpthread by looking for pthread_kill. (Not pthread_self, - # since it is defined as a macro on OSF/1.) - if test -n "$gl_have_pthread"; then - # The program links fine without libpthread. But it may actually - # need to link with libpthread in order to create multiple threads. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 -$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_kill (); -int -main () -{ -return pthread_kill (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_kill=yes -else - ac_cv_lib_pthread_pthread_kill=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } -if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : - LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread - # On Solaris and HP-UX, most pthread functions exist also in libc. - # Therefore pthread_in_use() needs to actually try to create a - # thread: pthread_create from libc will fail, whereas - # pthread_create will actually create a thread. - case "$host_os" in - solaris* | hpux*) - -$as_echo "@%:@define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h - - esac - -fi - - else - # Some library is needed. Try libpthread and libc_r. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 -$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_kill (); -int -main () -{ -return pthread_kill (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_kill=yes -else - ac_cv_lib_pthread_pthread_kill=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } -if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : - gl_have_pthread=yes - LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread - LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread -fi - - if test -z "$gl_have_pthread"; then - # For FreeBSD 4. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 -$as_echo_n "checking for pthread_kill in -lc_r... " >&6; } -if ${ac_cv_lib_c_r_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc_r $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_kill (); -int -main () -{ -return pthread_kill (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_c_r_pthread_kill=yes -else - ac_cv_lib_c_r_pthread_kill=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 -$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; } -if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then : - gl_have_pthread=yes - LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r - LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r -fi - - fi - fi - if test -n "$gl_have_pthread"; then - gl_threads_api=posix - -$as_echo "@%:@define USE_POSIX_THREADS 1" >>confdefs.h - - if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - -$as_echo "@%:@define USE_POSIX_THREADS_WEAK 1" >>confdefs.h - - LIBTHREAD= - LTLIBTHREAD= - fi - fi - fi - fi - fi - if test -z "$gl_have_pthread"; then - if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then - gl_have_solaristhread= - gl_save_LIBS="$LIBS" - LIBS="$LIBS -lthread" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -thr_self(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_have_solaristhread=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gl_save_LIBS" - if test -n "$gl_have_solaristhread"; then - gl_threads_api=solaris - LIBTHREAD=-lthread - LTLIBTHREAD=-lthread - LIBMULTITHREAD="$LIBTHREAD" - LTLIBMULTITHREAD="$LTLIBTHREAD" - -$as_echo "@%:@define USE_SOLARIS_THREADS 1" >>confdefs.h - - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - -$as_echo "@%:@define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h - - LIBTHREAD= - LTLIBTHREAD= - fi - fi - fi - fi - if test "$gl_use_threads" = pth; then - gl_save_CPPFLAGS="$CPPFLAGS" - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5 -$as_echo_n "checking how to link with libpth... " >&6; } -if ${ac_cv_libpth_libs+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - - - - - - - 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-libpth-prefix was given. -if test "${with_libpth_prefix+set}" = set; then : - withval=$with_libpth_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/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi - -fi - - LIBPTH= - LTLIBPTH= - INCPTH= - LIBPTH_PREFIX= - HAVE_LIBPTH= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='pth ' - 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" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBPTH; 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 "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$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 "$acl_hardcode_direct" = yes; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$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 $LIBPTH; 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 - LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" - else - LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a" - else - LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'pth'; then - LIBPTH_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'pth'; then - LIBPTH_PREFIX="$basedir" - fi - 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* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCPTH; 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 - INCPTH="${INCPTH}${INCPTH:+ }-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/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBPTH; 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 - LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBPTH; 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 - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - 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$,,'` - ;; - *) - LIBPTH="${LIBPTH}${LIBPTH:+ }$dep" - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep" - ;; - esac - done - fi - else - LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir" - done - fi - - - - - - - ac_cv_libpth_libs="$LIBPTH" - ac_cv_libpth_ltlibs="$LTLIBPTH" - ac_cv_libpth_cppflags="$INCPTH" - ac_cv_libpth_prefix="$LIBPTH_PREFIX" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5 -$as_echo "$ac_cv_libpth_libs" >&6; } - LIBPTH="$ac_cv_libpth_libs" - LTLIBPTH="$ac_cv_libpth_ltlibs" - INCPTH="$ac_cv_libpth_cppflags" - LIBPTH_PREFIX="$ac_cv_libpth_prefix" - - for element in $INCPTH; 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 - - - - - HAVE_LIBPTH=yes - - - - gl_have_pth= - gl_save_LIBS="$LIBS" - LIBS="$LIBS -lpth" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -pth_self(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_have_pth=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gl_save_LIBS" - if test -n "$gl_have_pth"; then - gl_threads_api=pth - LIBTHREAD="$LIBPTH" - LTLIBTHREAD="$LTLIBPTH" - LIBMULTITHREAD="$LIBTHREAD" - LTLIBMULTITHREAD="$LTLIBTHREAD" - -$as_echo "@%:@define USE_PTH_THREADS 1" >>confdefs.h - - if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - -$as_echo "@%:@define USE_PTH_THREADS_WEAK 1" >>confdefs.h - - LIBTHREAD= - LTLIBTHREAD= - fi - fi - else - CPPFLAGS="$gl_save_CPPFLAGS" - fi - fi - if test -z "$gl_have_pthread"; then - if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then - if { case "$host_os" in - mingw*) true;; - *) false;; - esac - }; then - gl_threads_api=win32 - -$as_echo "@%:@define USE_WIN32_THREADS 1" >>confdefs.h - - fi - fi - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5 -$as_echo_n "checking for multithread API to use... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5 -$as_echo "$gl_threads_api" >&6; } - - - - - - - - - - - - if test "$gl_threads_api" = posix; then - # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the - # pthread_rwlock_* functions. - ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include -" -if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then : - -$as_echo "@%:@define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h - -fi - - # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -#if __FreeBSD__ == 4 -error "No, in FreeBSD 4.0 recursive mutexes actually don't work." -#else -int x = (int)PTHREAD_MUTEX_RECURSIVE; -return !x; -#endif - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "@%:@define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - - - - - - - - - - - - - - - - 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 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/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi - -fi - - LIBICONV= - LTLIBICONV= - INCICONV= - LIBICONV_PREFIX= - HAVE_LIBICONV= - 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= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $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 "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; 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 "$acl_hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_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 "$acl_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 - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi - 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $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 - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - 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 "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_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=\"$acl_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 - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_func_iconv=yes -fi -rm -f core conftest.err 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_save_LIBS="$LIBS" - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi - if test "$cross_compiling" = yes; then : - case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main () -{ - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ - { - iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); - if (cd_utf8_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\342\202\254"; /* EURO SIGN */ - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_utf8_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } - /* Test against Solaris 10 bug: Failures are not distinguishable from - successful returns. */ - { - iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); - if (cd_ascii_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\263"; - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_ascii_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } -#if 0 /* This bug could be worked around by the caller. */ - /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; - char buf[50]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_88591_to_utf8, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if ((int)res > 0) - return 1; - } - } -#endif - /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is - provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - return 1; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - am_cv_func_iconv_works=yes -else - am_cv_func_iconv_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LIBS="$am_save_LIBS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; - *) am_func_iconv=yes ;; - esac - else - am_func_iconv=no am_cv_lib_iconv=no - fi - if test "$am_func_iconv" = yes; then - -$as_echo "@%:@define HAVE_ICONV 1" >>confdefs.h - - fi - if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 -$as_echo_n "checking for iconv declaration... " >&6; } - if ${am_cv_proto_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - am_cv_proto_iconv_arg1="" -else - am_cv_proto_iconv_arg1="const" -fi -rm -f core conftest.err 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/( /(/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: - $am_cv_proto_iconv" >&5 -$as_echo " - $am_cv_proto_iconv" >&6; } - -cat >>confdefs.h <<_ACEOF -@%:@define ICONV_CONST $am_cv_proto_iconv_arg1 -_ACEOF - - fi - - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; } -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "@%:@define HAVE_BUILTIN_EXPECT 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \ - stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ - argz_stringify argz_next __fsetlocking -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether feof_unlocked is declared" >&5 -$as_echo_n "checking whether feof_unlocked is declared... " >&6; } -if ${ac_cv_have_decl_feof_unlocked+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef feof_unlocked - char *p = (char *) feof_unlocked; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl_feof_unlocked=yes -else - ac_cv_have_decl_feof_unlocked=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_feof_unlocked" >&5 -$as_echo "$ac_cv_have_decl_feof_unlocked" >&6; } - if test $ac_cv_have_decl_feof_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_FEOF_UNLOCKED $gt_value -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fgets_unlocked is declared" >&5 -$as_echo_n "checking whether fgets_unlocked is declared... " >&6; } -if ${ac_cv_have_decl_fgets_unlocked+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef fgets_unlocked - char *p = (char *) fgets_unlocked; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl_fgets_unlocked=yes -else - ac_cv_have_decl_fgets_unlocked=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_fgets_unlocked" >&5 -$as_echo "$ac_cv_have_decl_fgets_unlocked" >&6; } - if test $ac_cv_have_decl_fgets_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_FGETS_UNLOCKED $gt_value -_ACEOF - - - - - - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_INTLBISON+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_INTLBISON="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -INTLBISON=$ac_cv_prog_INTLBISON -if test -n "$INTLBISON"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 -$as_echo "$INTLBISON" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$INTLBISON" && break -done - - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 -$as_echo_n "checking version of bison... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 -$as_echo "$ac_prog_version" >&6; } - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 -$as_echo_n "checking for long long int... " >&6; } -if ${ac_cv_type_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* For now, do not test the preprocessor; as of 2007 there are too many - implementations with broken preprocessors. Perhaps this can - be revisited in 2012. In the meantime, code should not expect - #if to work with literals wider than 32 bits. */ - /* Test literals. */ - long long int ll = 9223372036854775807ll; - long long int nll = -9223372036854775807LL; - unsigned long long int ull = 18446744073709551615ULL; - /* Test constant expressions. */ - typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) - ? 1 : -1)]; - typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 - ? 1 : -1)]; - int i = 63; -int -main () -{ -/* Test availability of runtime routines for shift and division. */ - long long int llmax = 9223372036854775807ll; - unsigned long long int ullmax = 18446744073709551615ull; - return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) - | (llmax / ll) | (llmax % ll) - | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) - | (ullmax / ull) | (ullmax % ull)); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if test "$cross_compiling" = yes; then : - ac_cv_type_long_long_int=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - @%:@ifndef LLONG_MAX - @%:@ define HALF \ - (1LL << (sizeof (long long int) * CHAR_BIT - 2)) - @%:@ define LLONG_MAX (HALF - 1 + HALF) - @%:@endif -int -main () -{ -long long int n = 1; - int i; - for (i = 0; ; i++) - { - long long int m = n << i; - if (m >> i != n) - return 1; - if (LLONG_MAX / 2 < m) - break; - } - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_type_long_long_int=yes -else - ac_cv_type_long_long_int=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -else - ac_cv_type_long_long_int=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 -$as_echo "$ac_cv_type_long_long_int" >&6; } - if test $ac_cv_type_long_long_int = yes; then - -$as_echo "@%:@define HAVE_LONG_LONG_INT 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 -$as_echo_n "checking for wchar_t... " >&6; } -if ${gt_cv_c_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - wchar_t foo = (wchar_t)'\0'; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_wchar_t=yes -else - gt_cv_c_wchar_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 -$as_echo "$gt_cv_c_wchar_t" >&6; } - if test $gt_cv_c_wchar_t = yes; then - -$as_echo "@%:@define HAVE_WCHAR_T 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 -$as_echo_n "checking for wint_t... " >&6; } -if ${gt_cv_c_wint_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be included - before . */ -#include -#include -#include -#include - wint_t foo = (wchar_t)'\0'; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_wint_t=yes -else - gt_cv_c_wint_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 -$as_echo "$gt_cv_c_wint_t" >&6; } - if test $gt_cv_c_wint_t = yes; then - -$as_echo "@%:@define HAVE_WINT_T 1" >>confdefs.h - - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 -$as_echo_n "checking for intmax_t... " >&6; } -if ${gt_cv_c_intmax_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#if HAVE_STDINT_H_WITH_UINTMAX -#include -#endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -#include -#endif - -int -main () -{ -intmax_t x = -1; - return !x; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_intmax_t=yes -else - gt_cv_c_intmax_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 -$as_echo "$gt_cv_c_intmax_t" >&6; } - if test $gt_cv_c_intmax_t = yes; then - -$as_echo "@%:@define HAVE_INTMAX_T 1" >>confdefs.h - - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5 -$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; } -if ${gt_cv_func_printf_posix+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test "$cross_compiling" = yes; then : - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ - notposix -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "notposix" >/dev/null 2>&1; then : - gt_cv_func_printf_posix="guessing no" -else - gt_cv_func_printf_posix="guessing yes" -fi -rm -f conftest* - - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -/* The string "%2$d %1$d", with dollar characters protected from the shell's - dollar expansion (possibly an autoconf bug). */ -static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -static char buf[100]; -int main () -{ - sprintf (buf, format, 33, 55); - return (strcmp (buf, "55 33") != 0); -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gt_cv_func_printf_posix=yes -else - gt_cv_func_printf_posix=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5 -$as_echo "$gt_cv_func_printf_posix" >&6; } - case $gt_cv_func_printf_posix in - *yes) - -$as_echo "@%:@define HAVE_POSIX_PRINTF 1" >>confdefs.h - - ;; - esac - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5 -$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } -if ${ac_cv_gnu_library_2_1+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 -$as_echo "$ac_cv_gnu_library_2_1" >&6; } - - GLIBC21="$ac_cv_gnu_library_2_1" - - - - for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_STDINT_H 1 -_ACEOF - -fi - -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 -$as_echo_n "checking for SIZE_MAX... " >&6; } -if ${gl_cv_size_max+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gl_cv_size_max= - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#if HAVE_STDINT_H -#include -#endif -#ifdef SIZE_MAX -Found it -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Found it" >/dev/null 2>&1; then : - gl_cv_size_max=yes -fi -rm -f conftest* - - if test -z "$gl_cv_size_max"; then - if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include -#include "; then : - -else - size_t_bits_minus_1= -fi - - if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include "; then : - -else - fits_in_uint= -fi - - if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then - if test $fits_in_uint = 1; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - extern size_t foo; - extern unsigned long foo; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - fits_in_uint=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $fits_in_uint = 1; then - gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" - else - gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" - fi - else - gl_cv_size_max='((size_t)~(size_t)0)' - fi - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 -$as_echo "$gl_cv_size_max" >&6; } - if test "$gl_cv_size_max" != yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define SIZE_MAX $gl_cv_size_max -_ACEOF - - fi - - - - - - for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_STDINT_H 1 -_ACEOF - -fi - -done - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 -$as_echo_n "checking for working fcntl.h... " >&6; } -if ${gl_cv_header_working_fcntl_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - gl_cv_header_working_fcntl_h=cross-compiling -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - #include - #include - #ifndef O_NOATIME - #define O_NOATIME 0 - #endif - #ifndef O_NOFOLLOW - #define O_NOFOLLOW 0 - #endif - static int const constants[] = - { - O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, - O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY - }; - -int -main () -{ - - int status = !constants; - { - static char const sym[] = "conftest.sym"; - if (symlink (".", sym) != 0 - || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0) - status |= 32; - unlink (sym); - } - { - static char const file[] = "confdefs.h"; - int fd = open (file, O_RDONLY | O_NOATIME); - char c; - struct stat st0, st1; - if (fd < 0 - || fstat (fd, &st0) != 0 - || sleep (1) != 0 - || read (fd, &c, 1) != 1 - || close (fd) != 0 - || stat (file, &st1) != 0 - || st0.st_atime != st1.st_atime) - status |= 64; - } - return status; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_header_working_fcntl_h=yes -else - case $? in #( - 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( - 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( - 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( - *) gl_cv_header_working_fcntl_h='no';; - esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 -$as_echo "$gl_cv_header_working_fcntl_h" >&6; } - - case $gl_cv_header_working_fcntl_h in #( - *O_NOATIME* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_WORKING_O_NOATIME $ac_val -_ACEOF - - - case $gl_cv_header_working_fcntl_h in #( - *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_WORKING_O_NOFOLLOW $ac_val -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFPreferencesCopyAppValue=yes -else - gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -$as_echo "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -$as_echo "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - - - - - case "$enable_silent_rules" in - yes) INTL_DEFAULT_VERBOSITY=0;; - no) INTL_DEFAULT_VERBOSITY=1;; - *) INTL_DEFAULT_VERBOSITY=1;; - esac - - - ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : - -else - -$as_echo "@%:@define ptrdiff_t long" >>confdefs.h - - -fi - - for ac_header in stddef.h stdlib.h string.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \ - snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snprintf is declared" >&5 -$as_echo_n "checking whether _snprintf is declared... " >&6; } -if ${ac_cv_have_decl__snprintf+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef _snprintf - char *p = (char *) _snprintf; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl__snprintf=yes -else - ac_cv_have_decl__snprintf=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snprintf" >&5 -$as_echo "$ac_cv_have_decl__snprintf" >&6; } - if test $ac_cv_have_decl__snprintf = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL__SNPRINTF $gt_value -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snwprintf is declared" >&5 -$as_echo_n "checking whether _snwprintf is declared... " >&6; } -if ${ac_cv_have_decl__snwprintf+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef _snwprintf - char *p = (char *) _snwprintf; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl__snwprintf=yes -else - ac_cv_have_decl__snwprintf=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snwprintf" >&5 -$as_echo "$ac_cv_have_decl__snwprintf" >&6; } - if test $ac_cv_have_decl__snwprintf = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL__SNWPRINTF $gt_value -_ACEOF - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getc_unlocked is declared" >&5 -$as_echo_n "checking whether getc_unlocked is declared... " >&6; } -if ${ac_cv_have_decl_getc_unlocked+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef getc_unlocked - char *p = (char *) getc_unlocked; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl_getc_unlocked=yes -else - ac_cv_have_decl_getc_unlocked=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_getc_unlocked" >&5 -$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; } - if test $ac_cv_have_decl_getc_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_GETC_UNLOCKED $gt_value -_ACEOF - - - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - - if test "$ac_cv_func_newlocale" = yes; then - HAVE_NEWLOCALE=1 - else - HAVE_NEWLOCALE=0 - fi - - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if ${am_cv_langinfo_codeset+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -char* cs = nl_langinfo(CODESET); return !cs; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_langinfo_codeset=yes -else - am_cv_langinfo_codeset=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 -$as_echo "$am_cv_langinfo_codeset" >&6; } - if test $am_cv_langinfo_codeset = yes; then - -$as_echo "@%:@define HAVE_LANGINFO_CODESET 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 -$as_echo_n "checking for LC_MESSAGES... " >&6; } -if ${gt_cv_val_LC_MESSAGES+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -return LC_MESSAGES - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_val_LC_MESSAGES=yes -else - gt_cv_val_LC_MESSAGES=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 -$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } - if test $gt_cv_val_LC_MESSAGES = yes; then - -$as_echo "@%:@define HAVE_LC_MESSAGES 1" >>confdefs.h - - fi - - - if test "$enable_shared" = yes; then - case "$host_os" in - mingw* | cygwin*) is_woe32dll=yes ;; - *) is_woe32dll=no ;; - esac - else - is_woe32dll=no - fi - WOE32DLL=$is_woe32dll - - - case "$host_os" in - mingw* | cygwin*) is_woe32=yes ;; - *) is_woe32=no ;; - esac - WOE32=$is_woe32 - - if test $WOE32 = yes; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. -set dummy ${ac_tool_prefix}windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_WINDRES+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$WINDRES"; then - ac_cv_prog_WINDRES="$WINDRES" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_WINDRES="${ac_tool_prefix}windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -WINDRES=$ac_cv_prog_WINDRES -if test -n "$WINDRES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 -$as_echo "$WINDRES" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_WINDRES"; then - ac_ct_WINDRES=$WINDRES - # Extract the first word of "windres", so it can be a program name with args. -set dummy windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_WINDRES"; then - ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_WINDRES="windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES -if test -n "$ac_ct_WINDRES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 -$as_echo "$ac_ct_WINDRES" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_WINDRES" = x; then - WINDRES="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - WINDRES=$ac_ct_WINDRES - fi -else - WINDRES="$ac_cv_prog_WINDRES" -fi - - fi - - case "$host_os" in - hpux*) LTLIBC="" ;; - *) LTLIBC="-lc" ;; - esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFPreferencesCopyAppValue=yes -else - gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -$as_echo "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -$as_echo "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - - - - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - - LIBINTL= - LTLIBINTL= - POSUB= - - case " $gt_needs " in - *" need-formatstring-macros "*) gt_api_version=3 ;; - *" need-ngettext "*) gt_api_version=2 ;; - *) gt_api_version=1 ;; - esac - gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" - gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 -$as_echo_n "checking whether included gettext is requested... " >&6; } - -@%:@ Check whether --with-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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 -$as_echo "$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 - - - if test $gt_api_version -ge 3; then - gt_revision_test_code=' -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -' - else - gt_revision_test_code= - fi - if test $gt_api_version -ge 2; then - gt_expression_test_code=' + * ngettext ("", "", 0)' - else - gt_expression_test_code= - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if eval \${$gt_func_gnugettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$gt_func_gnugettext_libc=yes" -else - eval "$gt_func_gnugettext_libc=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$gt_func_gnugettext_libc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "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 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/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi - -fi - - LIBINTL= - LTLIBINTL= - INCINTL= - LIBINTL_PREFIX= - HAVE_LIBINTL= - 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= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $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 "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; 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 "$acl_hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_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 "$acl_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 - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'intl'; then - LIBINTL_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'intl'; then - LIBINTL_PREFIX="$basedir" - fi - 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $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 - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - 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 "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_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=\"$acl_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 - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if eval \${$gt_func_gnugettext_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$gt_func_gnugettext_libintl=yes" -else - eval "$gt_func_gnugettext_libintl=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - eval "$gt_func_gnugettext_libintl=yes" - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -eval ac_res=\$$gt_func_gnugettext_libintl - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - fi - - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ - || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - 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 - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV $LIBTHREAD" - LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV $LTLIBTHREAD" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - CATOBJEXT=.gmo - fi - - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -$as_echo "@%:@define ENABLE_NLS 1" >>confdefs.h - - else - USE_NLS=no - fi - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$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 - - -$as_echo "@%:@define HAVE_GETTEXT 1" >>confdefs.h - - -$as_echo "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h - - fi - - POSUB=po - fi - - - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - - - - - nls_cv_header_intl= - nls_cv_header_libgt= - - DATADIRNAME=share - - - INSTOBJEXT=.mo - - - GENCAT=gencat - - - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - - - INTL_LIBTOOL_SUFFIX_PREFIX= - - - - INTLLIBS="$LIBINTL" - - - - - - - -if test "x${prefix}" = "xNONE"; then - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_LOCALE_DIR "${ac_default_prefix}/${DATADIRNAME}/locale" -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_LOCALE_DIR "${prefix}/${DATADIRNAME}/locale" -_ACEOF - -fi - -if test "x${datadir}" = 'x${prefix}/share'; then - if test "x${prefix}" = "xNONE"; then - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_DATA_DIR "${ac_default_prefix}/share/${PACKAGE}" -_ACEOF - - else - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_DATA_DIR "${prefix}/share/${PACKAGE}" -_ACEOF - - fi -else - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_DATA_DIR "${datadir}/${PACKAGE}" -_ACEOF - -fi - -packagesrcdir=`cd $srcdir && pwd` -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_SOURCE_DIR "${packagesrcdir}" -_ACEOF - - -if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -Wall" ;; - esac -fi - -ac_config_files="$ac_config_files Makefile src/Makefile intl/Makefile po/Makefile.in" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIB@&t@OBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -@%:@@%:@ Running $as_me. @%:@@%:@ -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake < 1.5. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "intl/Makefile") CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; - "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "po-directories":C) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assigment from automake < 1.5. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# 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 || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - diff --git a/clients/gsat-1.1.0/autom4te.cache/output.1 b/clients/gsat-1.1.0/autom4te.cache/output.1 deleted file mode 100644 index 96f2bd8..0000000 --- a/clients/gsat-1.1.0/autom4te.cache/output.1 +++ /dev/null @@ -1,13029 +0,0 @@ -@%:@! /bin/sh -@%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.69. -@%:@ -@%:@ -@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -@%:@ -@%:@ -@%:@ This configure script is free software; the Free Software Foundation -@%:@ gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in @%:@( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in @%:@ (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIB@&t@OBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="configure.in" -gt_needs= -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_list= -gl_use_threads_default= -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIB@&t@OBJS -POSUB -LTLIBINTL -LIBINTL -INTLLIBS -INTL_LIBTOOL_SUFFIX_PREFIX -INTLOBJS -GENCAT -INSTOBJEXT -DATADIRNAME -CATOBJEXT -USE_INCLUDED_LIBINTL -BUILD_INCLUDED_LIBINTL -LTLIBC -WINDRES -WOE32 -WOE32DLL -HAVE_WPRINTF -HAVE_NEWLOCALE -HAVE_SNPRINTF -HAVE_ASPRINTF -HAVE_POSIX_PRINTF -INTL_DEFAULT_VERBOSITY -INTL_MACOSX_LIBS -GLIBC21 -INTLBISON -LTLIBICONV -LIBICONV -LTLIBMULTITHREAD -LIBMULTITHREAD -LTLIBTHREAD -LIBTHREAD -LIBPTH_PREFIX -LTLIBPTH -LIBPTH -PRI_MACROS_BROKEN -ALLOCA -HAVE_VISIBILITY -CFLAG_VISIBILITY -RANLIB -GLIBC2 -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -XGETTEXT_EXTRA_OPTIONS -MSGMERGE -XGETTEXT_015 -XGETTEXT -GMSGFMT_015 -MSGFMT_015 -GMSGFMT -MSGFMT -GETTEXT_MACRO_VERSION -USE_NLS -GTK_LIBS -GTK_CFLAGS -GTK_CONFIG -EGREP -GREP -CPP -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -with_gtk_prefix -with_gtk_exec_prefix -enable_gtktest -enable_nls -enable_threads -with_gnu_ld -enable_rpath -with_libpth_prefix -with_libiconv_prefix -with_included_gettext -with_libintl_prefix -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -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 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures 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 \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - @<:@@S|@ac_default_prefix@:>@ - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - @<:@PREFIX@:>@ - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root @<:@DATAROOTDIR/doc/PACKAGE@:>@ - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -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-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --disable-gtktest Do not try to compile and run a test GTK program - --disable-nls do not use Native Language Support - --enable-threads={posix|solaris|pth|win32} - specify multithreading API - --disable-threads build without multithread safety - --disable-rpath do not hardcode runtime library paths - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gtk-prefix=PFX Prefix where GTK is installed (optional) - --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib - --without-libpth-prefix don't search for libpth in includedir and libdir - --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 - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) 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. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -@%:@ ac_fn_c_try_compile LINENO -@%:@ -------------------------- -@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_compile - -@%:@ ac_fn_c_try_link LINENO -@%:@ ----------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_link - -@%:@ ac_fn_c_try_cpp LINENO -@%:@ ---------------------- -@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_cpp - -@%:@ ac_fn_c_try_run LINENO -@%:@ ---------------------- -@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes -@%:@ that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} @%:@ ac_fn_c_try_run - -@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES -@%:@ ------------------------------------------- -@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache -@%:@ variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_type - -@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists and can be compiled using the include files in -@%:@ INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_compile - -@%:@ ac_fn_c_check_func LINENO FUNC VAR -@%:@ ---------------------------------- -@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* 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_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_func - -@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -@%:@ ------------------------------------------------------- -@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using -@%:@ the include files in INCLUDES and setting the cache variable VAR -@%:@ accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -@%:@include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} @%:@ ac_fn_c_check_header_mongrel - -@%:@ ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -@%:@ -------------------------------------------- -@%:@ Tries to find the compile-time value of EXPR in a program that includes -@%:@ INCLUDES, setting VAR accordingly. Returns whether the value could be -@%:@ computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) >= 0)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) < 0)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) >= $ac_mid)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array @<:@1 - 2 * !(($2) <= $ac_mid)@:>@; -test_array @<:@0@:>@ = 0; -return test_array @<:@0@:>@; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in @%:@(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -@%:@include -@%:@include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append 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 - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > 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 - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in @%:@(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - 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. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -gt_needs="$gt_needs " -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -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 - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in @%:@(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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 - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE=gsat - VERSION=0.1 - - -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"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -ac_config_headers="$ac_config_headers config.h" - - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -@%:@ Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if ${ac_cv_search_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (); -int -main () -{ -return strerror (); - ; - return 0; -} -_ACEOF -for ac_lib in '' cposix; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_strerror=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_strerror+:} false; then : - break -fi -done -if ${ac_cv_search_strerror+:} false; then : - -else - ac_cv_search_strerror=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -$as_echo "$ac_cv_search_strerror" >&6; } -ac_res=$ac_cv_search_strerror -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -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 - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include -@%:@else -@%:@ include -@%:@endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h - -fi - - - -@%:@ Check whether --with-gtk-prefix was given. -if test "${with_gtk_prefix+set}" = set; then : - withval=$with_gtk_prefix; gtk_config_prefix="$withval" -else - gtk_config_prefix="" -fi - - -@%:@ Check whether --with-gtk-exec-prefix was given. -if test "${with_gtk_exec_prefix+set}" = set; then : - withval=$with_gtk_exec_prefix; gtk_config_exec_prefix="$withval" -else - gtk_config_exec_prefix="" -fi - -@%:@ Check whether --enable-gtktest was given. -if test "${enable_gtktest+set}" = set; then : - enableval=$enable_gtktest; -else - enable_gtktest=yes -fi - - - for module in . - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - # Extract the first word of "gtk-config", so it can be a program name with args. -set dummy gtk-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GTK_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GTK_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GTK_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" - ;; -esac -fi -GTK_CONFIG=$ac_cv_path_GTK_CONFIG -if test -n "$GTK_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_CONFIG" >&5 -$as_echo "$GTK_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - min_gtk_version=1.2.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5 -$as_echo_n "checking for GTK - version >= $min_gtk_version... " >&6; } - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" - rm -f conf.gtktest - if test "$cross_compiling" = yes; then : - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - no_gtk=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - : - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main () -{ - return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" -else - echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - as_fn_error $? "Cannot find GTK: Is gtk-config in path?" "$LINENO" 5 - fi - - - rm -f conf.gtktest - - -ALL_LINGUAS="" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } - @%:@ Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : - enableval=$enable_nls; USE_NLS=$enableval -else - USE_NLS=yes -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - - - - - GETTEXT_MACRO_VERSION=0.18 - - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGFMT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --statistics /dev/null >&5 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$ac_exec_ext" - break 2 - fi - fi - done - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; - *) MSGFMT_015=$MSGFMT ;; - esac - - case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; - *) GMSGFMT_015=$GMSGFMT ;; - esac - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$XGETTEXT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - rm -f messages.po - - case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; - *) XGETTEXT_015=$XGETTEXT ;; - esac - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGMERGE" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&5 - if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$localedir" || localedir='${datadir}/locale' - - - test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= - - - ac_config_commands="$ac_config_commands po-directories" - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5 -$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; } -if ${ac_cv_gnu_library_2+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef __GNU_LIBRARY__ - #if (__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=yes -else - ac_cv_gnu_library_2=no -fi -rm -f conftest* - - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5 -$as_echo "$ac_cv_gnu_library_2" >&6; } - - GLIBC2="$ac_cv_gnu_library_2" - - -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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - - - CFLAG_VISIBILITY= - HAVE_VISIBILITY=0 - if test -n "$GCC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 -$as_echo_n "checking whether the -Werror option is usable... " >&6; } - if ${gl_cv_cc_vis_werror+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gl_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_cc_vis_werror=yes -else - gl_cv_cc_vis_werror=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$gl_save_CFLAGS" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 -$as_echo "$gl_cv_cc_vis_werror" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 -$as_echo_n "checking for simple visibility declarations... " >&6; } - if ${gl_cv_cc_visibility+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gl_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fvisibility=hidden" - if test $gl_cv_cc_vis_werror = yes; then - CFLAGS="$CFLAGS -Werror" - fi - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -extern __attribute__((__visibility__("hidden"))) int hiddenvar; - extern __attribute__((__visibility__("default"))) int exportedvar; - extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); - extern __attribute__((__visibility__("default"))) int exportedfunc (void); - void dummyfunc (void) {} -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_cc_visibility=yes -else - gl_cv_cc_visibility=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$gl_save_CFLAGS" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 -$as_echo "$gl_cv_cc_visibility" >&6; } - if test $gl_cv_cc_visibility = yes; then - CFLAG_VISIBILITY="-fvisibility=hidden" - HAVE_VISIBILITY=1 - fi - fi - - - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_VISIBILITY $HAVE_VISIBILITY -_ACEOF - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -@%:@define size_t unsigned int -_ACEOF - -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 -$as_echo_n "checking for stdint.h... " >&6; } -if ${gl_cv_header_stdint_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -uintmax_t i = (uintmax_t) -1; return !i; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_stdint_h=yes -else - gl_cv_header_stdint_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5 -$as_echo "$gl_cv_header_stdint_h" >&6; } - if test $gl_cv_header_stdint_h = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_STDINT_H_WITH_UINTMAX 1 -_ACEOF - - fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 -$as_echo_n "checking for working alloca.h... " >&6; } -if ${ac_cv_working_alloca_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include -int -main () -{ -char *p = (char *) alloca (2 * sizeof (int)); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_working_alloca_h=yes -else - ac_cv_working_alloca_h=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 -$as_echo "$ac_cv_working_alloca_h" >&6; } -if test $ac_cv_working_alloca_h = yes; then - -$as_echo "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 -$as_echo_n "checking for alloca... " >&6; } -if ${ac_cv_func_alloca_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# ifdef HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -void *alloca (size_t); -# endif -# endif -# endif -# endif -#endif - -int -main () -{ -char *p = (char *) alloca (1); - if (p) return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_func_alloca_works=yes -else - ac_cv_func_alloca_works=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 -$as_echo "$ac_cv_func_alloca_works" >&6; } - -if test $ac_cv_func_alloca_works = yes; then - -$as_echo "@%:@define HAVE_ALLOCA 1" >>confdefs.h - -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=\${LIBOBJDIR}alloca.$ac_objext - -$as_echo "@%:@define C_ALLOCA 1" >>confdefs.h - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 -$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } -if ${ac_cv_os_cray+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 -$as_echo "$ac_cv_os_cray" >&6; } -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - -cat >>confdefs.h <<_ACEOF -@%:@define CRAY_STACKSEG_END $ac_func -_ACEOF - - break -fi - - done -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 -$as_echo_n "checking stack direction for C alloca... " >&6; } -if ${ac_cv_c_stack_direction+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_c_stack_direction=0 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -find_stack_direction (int *addr, int depth) -{ - int dir, dummy = 0; - if (! addr) - addr = &dummy; - *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; - dir = depth ? find_stack_direction (addr, depth - 1) : 0; - return dir + dummy; -} - -int -main (int argc, char **argv) -{ - return find_stack_direction (0, argc + !argv + 20) < 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_stack_direction=1 -else - ac_cv_c_stack_direction=-1 -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 -$as_echo "$ac_cv_c_stack_direction" >&6; } -cat >>confdefs.h <<_ACEOF -@%:@define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF - - -fi - - - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef 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; - const char *cdata2; - int i, pagesize; - int fd, fd2; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - return 1; - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - return 2; - if (write (fd, data, pagesize) != pagesize) - return 3; - close (fd); - - /* Next, check that the tail of a page is zero-filled. File must have - non-zero length, otherwise we risk SIGBUS for entire page. */ - fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); - if (fd2 < 0) - return 4; - cdata2 = ""; - if (write (fd2, cdata2, 1) != 1) - return 5; - data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); - if (data2 == MAP_FAILED) - return 6; - for (i = 0; i < pagesize; ++i) - if (*(data2 + i)) - return 7; - close (fd2); - if (munmap (data2, pagesize)) - return 8; - - /* 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) - return 9; - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - return 10; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - return 11; - - /* 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) - return 12; - if (read (fd, data3, pagesize) != pagesize) - return 13; - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - return 14; - close (fd); - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_mmap_fixed_mapped=yes -else - ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -$as_echo "@%:@define HAVE_MMAP 1" >>confdefs.h - -fi -rm -f conftest.mmap conftest.txt - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5 -$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; } -if ${gt_cv_int_divbyzero_sigfpe+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gt_cv_int_divbyzero_sigfpe= - case "$host_os" in - macos* | darwin[6-9]* | darwin[1-9][0-9]*) - # On MacOS X 10.2 or newer, just assume the same as when cross- - # compiling. If we were to perform the real test, 1 Crash Report - # dialog window would pop up. - case "$host_cpu" in - i[34567]86 | x86_64) - gt_cv_int_divbyzero_sigfpe="guessing yes" ;; - esac - ;; - esac - if test -z "$gt_cv_int_divbyzero_sigfpe"; then - if test "$cross_compiling" = yes; then : - - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i[34567]86 | x86_64 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -static void -sigfpe_handler (int sig) -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gt_cv_int_divbyzero_sigfpe=yes -else - gt_cv_int_divbyzero_sigfpe=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5 -$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; } - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - -cat >>confdefs.h <<_ACEOF -@%:@define INTDIV0_RAISES_SIGFPE $value -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 -$as_echo_n "checking for inttypes.h... " >&6; } -if ${gl_cv_header_inttypes_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -uintmax_t i = (uintmax_t) -1; return !i; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gl_cv_header_inttypes_h=yes -else - gl_cv_header_inttypes_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5 -$as_echo "$gl_cv_header_inttypes_h" >&6; } - if test $gl_cv_header_inttypes_h = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_INTTYPES_H_WITH_UINTMAX 1 -_ACEOF - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 -$as_echo_n "checking for unsigned long long int... " >&6; } -if ${ac_cv_type_unsigned_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* For now, do not test the preprocessor; as of 2007 there are too many - implementations with broken preprocessors. Perhaps this can - be revisited in 2012. In the meantime, code should not expect - #if to work with literals wider than 32 bits. */ - /* Test literals. */ - long long int ll = 9223372036854775807ll; - long long int nll = -9223372036854775807LL; - unsigned long long int ull = 18446744073709551615ULL; - /* Test constant expressions. */ - typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) - ? 1 : -1)]; - typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 - ? 1 : -1)]; - int i = 63; -int -main () -{ -/* Test availability of runtime routines for shift and division. */ - long long int llmax = 9223372036854775807ll; - unsigned long long int ullmax = 18446744073709551615ull; - return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) - | (llmax / ll) | (llmax % ll) - | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) - | (ullmax / ull) | (ullmax % ull)); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_type_unsigned_long_long_int=yes -else - ac_cv_type_unsigned_long_long_int=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 -$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } - if test $ac_cv_type_unsigned_long_long_int = yes; then - -$as_echo "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h - - fi - - - - - if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then - - test $ac_cv_type_unsigned_long_long_int = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - -cat >>confdefs.h <<_ACEOF -@%:@define uintmax_t $ac_type -_ACEOF - - else - -$as_echo "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h - - fi - - - for ac_header in inttypes.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" -if test "x$ac_cv_header_inttypes_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_INTTYPES_H 1 -_ACEOF - -fi - -done - - if test $ac_cv_header_inttypes_h = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5 -$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; } -if ${gt_cv_inttypes_pri_broken+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#ifdef PRId32 -char *p = PRId32; -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_inttypes_pri_broken=no -else - gt_cv_inttypes_pri_broken=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5 -$as_echo "$gt_cv_inttypes_pri_broken" >&6; } - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define PRI_MACROS_BROKEN 1 -_ACEOF - - PRI_MACROS_BROKEN=1 - else - PRI_MACROS_BROKEN=0 - fi - - - - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi - - - if test "$MINIX" = yes; then - -$as_echo "@%:@define _POSIX_SOURCE 1" >>confdefs.h - - -$as_echo "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h - - -$as_echo "@%:@define _MINIX 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "@%:@define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "@%:@define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "@%:@define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "@%:@define _TANDEM_SOURCE 1" >>confdefs.h - - - - - - - - @%:@ Check whether --enable-threads was given. -if test "${enable_threads+set}" = set; then : - enableval=$enable_threads; gl_use_threads=$enableval -else - if test -n "$gl_use_threads_default"; then - gl_use_threads="$gl_use_threads_default" - else - case "$host_os" in - osf*) gl_use_threads=no ;; - cygwin*) - case `uname -r` in - 1.[0-5].*) gl_use_threads=no ;; - *) gl_use_threads=yes ;; - esac - ;; - *) gl_use_threads=yes ;; - esac - fi - -fi - - if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then - # For using : - case "$host_os" in - osf*) - # On OSF/1, the compiler needs the flag -D_REENTRANT so that it - # groks . cc also understands the flag -pthread, but - # we don't use it because 1. gcc-2.95 doesn't understand -pthread, - # 2. putting a flag into CPPFLAGS that has an effect on the linker - # causes the AC_TRY_LINK test below to succeed unexpectedly, - # leading to wrong values of LIBTHREAD and LTLIBTHREAD. - CPPFLAGS="$CPPFLAGS -D_REENTRANT" - ;; - esac - # Some systems optimize for single-threaded programs by default, and - # need special flags to disable these optimizations. For example, the - # definition of 'errno' in . - case "$host_os" in - aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; - solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; - esac - fi - - - - - - 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 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 - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 -$as_echo_n "checking for ld used by GCC... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${acl_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&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. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${acl_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$acl_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 -$as_echo_n "checking for shared library run path origin... " >&6; } -if ${acl_cv_rpath+:} false; then : - $as_echo_n "(cached) " >&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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 -$as_echo "$acl_cv_rpath" >&6; } - wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" - acl_shlibext="$acl_cv_shlibext" - acl_libname_spec="$acl_cv_libname_spec" - acl_library_names_spec="$acl_cv_library_names_spec" - acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" - @%:@ Check whether --enable-rpath was given. -if test "${enable_rpath+set}" = set; then : - enableval=$enable_rpath; : -else - enable_rpath=yes -fi - - - - - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef _LP64 -sixtyfour bits -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : - gl_cv_solaris_64bit=yes -else - gl_cv_solaris_64bit=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" - - - - gl_threads_api=none - LIBTHREAD= - LTLIBTHREAD= - LIBMULTITHREAD= - LTLIBMULTITHREAD= - if test "$gl_use_threads" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5 -$as_echo_n "checking whether imported symbols can be declared weak... " >&6; } -if ${gl_cv_have_weak+:} false; then : - $as_echo_n "(cached) " >&6 -else - gl_cv_have_weak=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -extern void xyzzy (); -#pragma weak xyzzy -int -main () -{ -xyzzy(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_cv_have_weak=maybe -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test $gl_cv_have_weak = maybe; then - if test "$cross_compiling" = yes; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __ELF__ - Extensible Linking Format - #endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Extensible Linking Format" >/dev/null 2>&1; then : - gl_cv_have_weak="guessing yes" -else - gl_cv_have_weak="guessing no" -fi -rm -f conftest* - - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#pragma weak fputs -int main () -{ - return (fputs == NULL); -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_have_weak=yes -else - gl_cv_have_weak=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5 -$as_echo "$gl_cv_have_weak" >&6; } - if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then - # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that - # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. - ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes; then : - gl_have_pthread_h=yes -else - gl_have_pthread_h=no -fi - - - if test "$gl_have_pthread_h" = yes; then - # Other possible tests: - # -lpthreads (FSU threads, PCthreads) - # -lgthreads - gl_have_pthread= - # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist - # in libc. IRIX 6.5 has the first one in both libc and libpthread, but - # the second one only in libpthread, and lock.c needs it. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -pthread_mutex_lock((pthread_mutex_t*)0); - pthread_mutexattr_init((pthread_mutexattr_t*)0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_have_pthread=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - # Test for libpthread by looking for pthread_kill. (Not pthread_self, - # since it is defined as a macro on OSF/1.) - if test -n "$gl_have_pthread"; then - # The program links fine without libpthread. But it may actually - # need to link with libpthread in order to create multiple threads. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 -$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_kill (); -int -main () -{ -return pthread_kill (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_kill=yes -else - ac_cv_lib_pthread_pthread_kill=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } -if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : - LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread - # On Solaris and HP-UX, most pthread functions exist also in libc. - # Therefore pthread_in_use() needs to actually try to create a - # thread: pthread_create from libc will fail, whereas - # pthread_create will actually create a thread. - case "$host_os" in - solaris* | hpux*) - -$as_echo "@%:@define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h - - esac - -fi - - else - # Some library is needed. Try libpthread and libc_r. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5 -$as_echo_n "checking for pthread_kill in -lpthread... " >&6; } -if ${ac_cv_lib_pthread_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_kill (); -int -main () -{ -return pthread_kill (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread_pthread_kill=yes -else - ac_cv_lib_pthread_pthread_kill=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5 -$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; } -if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then : - gl_have_pthread=yes - LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread - LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread -fi - - if test -z "$gl_have_pthread"; then - # For FreeBSD 4. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5 -$as_echo_n "checking for pthread_kill in -lc_r... " >&6; } -if ${ac_cv_lib_c_r_pthread_kill+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc_r $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_kill (); -int -main () -{ -return pthread_kill (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_c_r_pthread_kill=yes -else - ac_cv_lib_c_r_pthread_kill=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5 -$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; } -if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then : - gl_have_pthread=yes - LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r - LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r -fi - - fi - fi - if test -n "$gl_have_pthread"; then - gl_threads_api=posix - -$as_echo "@%:@define USE_POSIX_THREADS 1" >>confdefs.h - - if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - -$as_echo "@%:@define USE_POSIX_THREADS_WEAK 1" >>confdefs.h - - LIBTHREAD= - LTLIBTHREAD= - fi - fi - fi - fi - fi - if test -z "$gl_have_pthread"; then - if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then - gl_have_solaristhread= - gl_save_LIBS="$LIBS" - LIBS="$LIBS -lthread" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -thr_self(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_have_solaristhread=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gl_save_LIBS" - if test -n "$gl_have_solaristhread"; then - gl_threads_api=solaris - LIBTHREAD=-lthread - LTLIBTHREAD=-lthread - LIBMULTITHREAD="$LIBTHREAD" - LTLIBMULTITHREAD="$LTLIBTHREAD" - -$as_echo "@%:@define USE_SOLARIS_THREADS 1" >>confdefs.h - - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - -$as_echo "@%:@define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h - - LIBTHREAD= - LTLIBTHREAD= - fi - fi - fi - fi - if test "$gl_use_threads" = pth; then - gl_save_CPPFLAGS="$CPPFLAGS" - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5 -$as_echo_n "checking how to link with libpth... " >&6; } -if ${ac_cv_libpth_libs+:} false; then : - $as_echo_n "(cached) " >&6 -else - - - - - - - - - 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-libpth-prefix was given. -if test "${with_libpth_prefix+set}" = set; then : - withval=$with_libpth_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/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi - -fi - - LIBPTH= - LTLIBPTH= - INCPTH= - LIBPTH_PREFIX= - HAVE_LIBPTH= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='pth ' - 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" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBPTH; 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 "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$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 "$acl_hardcode_direct" = yes; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$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 $LIBPTH; 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 - LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so" - else - LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a" - else - LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'pth'; then - LIBPTH_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'pth'; then - LIBPTH_PREFIX="$basedir" - fi - 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* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCPTH; 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 - INCPTH="${INCPTH}${INCPTH:+ }-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/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBPTH; 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 - LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBPTH; 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 - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - 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$,,'` - ;; - *) - LIBPTH="${LIBPTH}${LIBPTH:+ }$dep" - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep" - ;; - esac - done - fi - else - LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name" - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBPTH="${LIBPTH}${LIBPTH:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir" - done - fi - - - - - - - ac_cv_libpth_libs="$LIBPTH" - ac_cv_libpth_ltlibs="$LTLIBPTH" - ac_cv_libpth_cppflags="$INCPTH" - ac_cv_libpth_prefix="$LIBPTH_PREFIX" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5 -$as_echo "$ac_cv_libpth_libs" >&6; } - LIBPTH="$ac_cv_libpth_libs" - LTLIBPTH="$ac_cv_libpth_ltlibs" - INCPTH="$ac_cv_libpth_cppflags" - LIBPTH_PREFIX="$ac_cv_libpth_prefix" - - for element in $INCPTH; 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 - - - - - HAVE_LIBPTH=yes - - - - gl_have_pth= - gl_save_LIBS="$LIBS" - LIBS="$LIBS -lpth" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -pth_self(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gl_have_pth=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gl_save_LIBS" - if test -n "$gl_have_pth"; then - gl_threads_api=pth - LIBTHREAD="$LIBPTH" - LTLIBTHREAD="$LTLIBPTH" - LIBMULTITHREAD="$LIBTHREAD" - LTLIBMULTITHREAD="$LTLIBTHREAD" - -$as_echo "@%:@define USE_PTH_THREADS 1" >>confdefs.h - - if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - -$as_echo "@%:@define USE_PTH_THREADS_WEAK 1" >>confdefs.h - - LIBTHREAD= - LTLIBTHREAD= - fi - fi - else - CPPFLAGS="$gl_save_CPPFLAGS" - fi - fi - if test -z "$gl_have_pthread"; then - if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then - if { case "$host_os" in - mingw*) true;; - *) false;; - esac - }; then - gl_threads_api=win32 - -$as_echo "@%:@define USE_WIN32_THREADS 1" >>confdefs.h - - fi - fi - fi - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5 -$as_echo_n "checking for multithread API to use... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5 -$as_echo "$gl_threads_api" >&6; } - - - - - - - - - - - - if test "$gl_threads_api" = posix; then - # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the - # pthread_rwlock_* functions. - ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include -" -if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then : - -$as_echo "@%:@define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h - -fi - - # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -#if __FreeBSD__ == 4 -error "No, in FreeBSD 4.0 recursive mutexes actually don't work." -#else -int x = (int)PTHREAD_MUTEX_RECURSIVE; -return !x; -#endif - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "@%:@define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - - - - - - - - - - - - - - - - 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 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/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi - -fi - - LIBICONV= - LTLIBICONV= - INCICONV= - LIBICONV_PREFIX= - HAVE_LIBICONV= - 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= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $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 "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; 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 "$acl_hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_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 "$acl_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 - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi - 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $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 - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - 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 "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_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=\"$acl_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 - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if ${am_cv_func_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_func_iconv=yes -fi -rm -f core conftest.err 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_save_LIBS="$LIBS" - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi - if test "$cross_compiling" = yes; then : - case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main () -{ - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ - { - iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); - if (cd_utf8_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\342\202\254"; /* EURO SIGN */ - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_utf8_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } - /* Test against Solaris 10 bug: Failures are not distinguishable from - successful returns. */ - { - iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); - if (cd_ascii_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\263"; - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_ascii_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } -#if 0 /* This bug could be worked around by the caller. */ - /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; - char buf[50]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_88591_to_utf8, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if ((int)res > 0) - return 1; - } - } -#endif - /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is - provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - return 1; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - am_cv_func_iconv_works=yes -else - am_cv_func_iconv_works=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LIBS="$am_save_LIBS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; - *) am_func_iconv=yes ;; - esac - else - am_func_iconv=no am_cv_lib_iconv=no - fi - if test "$am_func_iconv" = yes; then - -$as_echo "@%:@define HAVE_ICONV 1" >>confdefs.h - - fi - if test "$am_cv_lib_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 -$as_echo_n "checking how to link with libiconv... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 -$as_echo "$LIBICONV" >&6; } - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 -$as_echo_n "checking for iconv declaration... " >&6; } - if ${am_cv_proto_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -if ac_fn_c_try_compile "$LINENO"; then : - am_cv_proto_iconv_arg1="" -else - am_cv_proto_iconv_arg1="const" -fi -rm -f core conftest.err 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/( /(/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: - $am_cv_proto_iconv" >&5 -$as_echo " - $am_cv_proto_iconv" >&6; } - -cat >>confdefs.h <<_ACEOF -@%:@define ICONV_CONST $am_cv_proto_iconv_arg1 -_ACEOF - - fi - - - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; } -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "@%:@define HAVE_BUILTIN_EXPECT 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - - for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \ - stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ - argz_stringify argz_next __fsetlocking -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether feof_unlocked is declared" >&5 -$as_echo_n "checking whether feof_unlocked is declared... " >&6; } -if ${ac_cv_have_decl_feof_unlocked+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef feof_unlocked - char *p = (char *) feof_unlocked; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl_feof_unlocked=yes -else - ac_cv_have_decl_feof_unlocked=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_feof_unlocked" >&5 -$as_echo "$ac_cv_have_decl_feof_unlocked" >&6; } - if test $ac_cv_have_decl_feof_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_FEOF_UNLOCKED $gt_value -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fgets_unlocked is declared" >&5 -$as_echo_n "checking whether fgets_unlocked is declared... " >&6; } -if ${ac_cv_have_decl_fgets_unlocked+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef fgets_unlocked - char *p = (char *) fgets_unlocked; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl_fgets_unlocked=yes -else - ac_cv_have_decl_fgets_unlocked=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_fgets_unlocked" >&5 -$as_echo "$ac_cv_have_decl_fgets_unlocked" >&6; } - if test $ac_cv_have_decl_fgets_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_FGETS_UNLOCKED $gt_value -_ACEOF - - - - - - 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_INTLBISON+:} false; then : - $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_INTLBISON="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -INTLBISON=$ac_cv_prog_INTLBISON -if test -n "$INTLBISON"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5 -$as_echo "$INTLBISON" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$INTLBISON" && break -done - - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5 -$as_echo_n "checking version of bison... " >&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 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5 -$as_echo "$ac_prog_version" >&6; } - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 -$as_echo_n "checking for long long int... " >&6; } -if ${ac_cv_type_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - /* For now, do not test the preprocessor; as of 2007 there are too many - implementations with broken preprocessors. Perhaps this can - be revisited in 2012. In the meantime, code should not expect - #if to work with literals wider than 32 bits. */ - /* Test literals. */ - long long int ll = 9223372036854775807ll; - long long int nll = -9223372036854775807LL; - unsigned long long int ull = 18446744073709551615ULL; - /* Test constant expressions. */ - typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) - ? 1 : -1)]; - typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 - ? 1 : -1)]; - int i = 63; -int -main () -{ -/* Test availability of runtime routines for shift and division. */ - long long int llmax = 9223372036854775807ll; - unsigned long long int ullmax = 18446744073709551615ull; - return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) - | (llmax / ll) | (llmax % ll) - | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) - | (ullmax / ull) | (ullmax % ull)); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if test "$cross_compiling" = yes; then : - ac_cv_type_long_long_int=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -@%:@include - @%:@ifndef LLONG_MAX - @%:@ define HALF \ - (1LL << (sizeof (long long int) * CHAR_BIT - 2)) - @%:@ define LLONG_MAX (HALF - 1 + HALF) - @%:@endif -int -main () -{ -long long int n = 1; - int i; - for (i = 0; ; i++) - { - long long int m = n << i; - if (m >> i != n) - return 1; - if (LLONG_MAX / 2 < m) - break; - } - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_type_long_long_int=yes -else - ac_cv_type_long_long_int=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -else - ac_cv_type_long_long_int=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 -$as_echo "$ac_cv_type_long_long_int" >&6; } - if test $ac_cv_type_long_long_int = yes; then - -$as_echo "@%:@define HAVE_LONG_LONG_INT 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 -$as_echo_n "checking for wchar_t... " >&6; } -if ${gt_cv_c_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - wchar_t foo = (wchar_t)'\0'; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_wchar_t=yes -else - gt_cv_c_wchar_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 -$as_echo "$gt_cv_c_wchar_t" >&6; } - if test $gt_cv_c_wchar_t = yes; then - -$as_echo "@%:@define HAVE_WCHAR_T 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 -$as_echo_n "checking for wint_t... " >&6; } -if ${gt_cv_c_wint_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be included - before . */ -#include -#include -#include -#include - wint_t foo = (wchar_t)'\0'; -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_wint_t=yes -else - gt_cv_c_wint_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 -$as_echo "$gt_cv_c_wint_t" >&6; } - if test $gt_cv_c_wint_t = yes; then - -$as_echo "@%:@define HAVE_WINT_T 1" >>confdefs.h - - fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5 -$as_echo_n "checking for intmax_t... " >&6; } -if ${gt_cv_c_intmax_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#if HAVE_STDINT_H_WITH_UINTMAX -#include -#endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -#include -#endif - -int -main () -{ -intmax_t x = -1; - return !x; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - gt_cv_c_intmax_t=yes -else - gt_cv_c_intmax_t=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5 -$as_echo "$gt_cv_c_intmax_t" >&6; } - if test $gt_cv_c_intmax_t = yes; then - -$as_echo "@%:@define HAVE_INTMAX_T 1" >>confdefs.h - - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5 -$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; } -if ${gt_cv_func_printf_posix+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test "$cross_compiling" = yes; then : - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ - notposix -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "notposix" >/dev/null 2>&1; then : - gt_cv_func_printf_posix="guessing no" -else - gt_cv_func_printf_posix="guessing yes" -fi -rm -f conftest* - - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -/* The string "%2$d %1$d", with dollar characters protected from the shell's - dollar expansion (possibly an autoconf bug). */ -static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -static char buf[100]; -int main () -{ - sprintf (buf, format, 33, 55); - return (strcmp (buf, "55 33") != 0); -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gt_cv_func_printf_posix=yes -else - gt_cv_func_printf_posix=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5 -$as_echo "$gt_cv_func_printf_posix" >&6; } - case $gt_cv_func_printf_posix in - *yes) - -$as_echo "@%:@define HAVE_POSIX_PRINTF 1" >>confdefs.h - - ;; - esac - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5 -$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } -if ${ac_cv_gnu_library_2_1+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* 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 -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 -$as_echo "$ac_cv_gnu_library_2_1" >&6; } - - GLIBC21="$ac_cv_gnu_library_2_1" - - - - for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_STDINT_H 1 -_ACEOF - -fi - -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5 -$as_echo_n "checking for SIZE_MAX... " >&6; } -if ${gl_cv_size_max+:} false; then : - $as_echo_n "(cached) " >&6 -else - - gl_cv_size_max= - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#if HAVE_STDINT_H -#include -#endif -#ifdef SIZE_MAX -Found it -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Found it" >/dev/null 2>&1; then : - gl_cv_size_max=yes -fi -rm -f conftest* - - if test -z "$gl_cv_size_max"; then - if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include -#include "; then : - -else - size_t_bits_minus_1= -fi - - if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include "; then : - -else - fits_in_uint= -fi - - if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then - if test $fits_in_uint = 1; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - extern size_t foo; - extern unsigned long foo; - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - fits_in_uint=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $fits_in_uint = 1; then - gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" - else - gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" - fi - else - gl_cv_size_max='((size_t)~(size_t)0)' - fi - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5 -$as_echo "$gl_cv_size_max" >&6; } - if test "$gl_cv_size_max" != yes; then - -cat >>confdefs.h <<_ACEOF -@%:@define SIZE_MAX $gl_cv_size_max -_ACEOF - - fi - - - - - - for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -@%:@define HAVE_STDINT_H 1 -_ACEOF - -fi - -done - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5 -$as_echo_n "checking for working fcntl.h... " >&6; } -if ${gl_cv_header_working_fcntl_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - gl_cv_header_working_fcntl_h=cross-compiling -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - #include - #include - #ifndef O_NOATIME - #define O_NOATIME 0 - #endif - #ifndef O_NOFOLLOW - #define O_NOFOLLOW 0 - #endif - static int const constants[] = - { - O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, - O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY - }; - -int -main () -{ - - int status = !constants; - { - static char const sym[] = "conftest.sym"; - if (symlink (".", sym) != 0 - || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0) - status |= 32; - unlink (sym); - } - { - static char const file[] = "confdefs.h"; - int fd = open (file, O_RDONLY | O_NOATIME); - char c; - struct stat st0, st1; - if (fd < 0 - || fstat (fd, &st0) != 0 - || sleep (1) != 0 - || read (fd, &c, 1) != 1 - || close (fd) != 0 - || stat (file, &st1) != 0 - || st0.st_atime != st1.st_atime) - status |= 64; - } - return status; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - gl_cv_header_working_fcntl_h=yes -else - case $? in #( - 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( - 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( - 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( - *) gl_cv_header_working_fcntl_h='no';; - esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5 -$as_echo "$gl_cv_header_working_fcntl_h" >&6; } - - case $gl_cv_header_working_fcntl_h in #( - *O_NOATIME* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_WORKING_O_NOATIME $ac_val -_ACEOF - - - case $gl_cv_header_working_fcntl_h in #( - *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_WORKING_O_NOFOLLOW $ac_val -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFPreferencesCopyAppValue=yes -else - gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -$as_echo "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -$as_echo "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - - - - - case "$enable_silent_rules" in - yes) INTL_DEFAULT_VERBOSITY=0;; - no) INTL_DEFAULT_VERBOSITY=1;; - *) INTL_DEFAULT_VERBOSITY=1;; - esac - - - ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" -if test "x$ac_cv_type_ptrdiff_t" = xyes; then : - -else - -$as_echo "@%:@define ptrdiff_t long" >>confdefs.h - - -fi - - for ac_header in stddef.h stdlib.h string.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \ - snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snprintf is declared" >&5 -$as_echo_n "checking whether _snprintf is declared... " >&6; } -if ${ac_cv_have_decl__snprintf+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef _snprintf - char *p = (char *) _snprintf; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl__snprintf=yes -else - ac_cv_have_decl__snprintf=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snprintf" >&5 -$as_echo "$ac_cv_have_decl__snprintf" >&6; } - if test $ac_cv_have_decl__snprintf = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL__SNPRINTF $gt_value -_ACEOF - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _snwprintf is declared" >&5 -$as_echo_n "checking whether _snwprintf is declared... " >&6; } -if ${ac_cv_have_decl__snwprintf+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef _snwprintf - char *p = (char *) _snwprintf; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl__snwprintf=yes -else - ac_cv_have_decl__snwprintf=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl__snwprintf" >&5 -$as_echo "$ac_cv_have_decl__snwprintf" >&6; } - if test $ac_cv_have_decl__snwprintf = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL__SNWPRINTF $gt_value -_ACEOF - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getc_unlocked is declared" >&5 -$as_echo_n "checking whether getc_unlocked is declared... " >&6; } -if ${ac_cv_have_decl_getc_unlocked+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -#ifndef getc_unlocked - char *p = (char *) getc_unlocked; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_decl_getc_unlocked=yes -else - ac_cv_have_decl_getc_unlocked=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_decl_getc_unlocked" >&5 -$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; } - if test $ac_cv_have_decl_getc_unlocked = yes; then - gt_value=1 - else - gt_value=0 - fi - -cat >>confdefs.h <<_ACEOF -@%:@define HAVE_DECL_GETC_UNLOCKED $gt_value -_ACEOF - - - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - - if test "$ac_cv_func_newlocale" = yes; then - HAVE_NEWLOCALE=1 - else - HAVE_NEWLOCALE=0 - fi - - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 -$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } -if ${am_cv_langinfo_codeset+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -char* cs = nl_langinfo(CODESET); return !cs; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_langinfo_codeset=yes -else - am_cv_langinfo_codeset=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 -$as_echo "$am_cv_langinfo_codeset" >&6; } - if test $am_cv_langinfo_codeset = yes; then - -$as_echo "@%:@define HAVE_LANGINFO_CODESET 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 -$as_echo_n "checking for LC_MESSAGES... " >&6; } -if ${gt_cv_val_LC_MESSAGES+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -return LC_MESSAGES - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_val_LC_MESSAGES=yes -else - gt_cv_val_LC_MESSAGES=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5 -$as_echo "$gt_cv_val_LC_MESSAGES" >&6; } - if test $gt_cv_val_LC_MESSAGES = yes; then - -$as_echo "@%:@define HAVE_LC_MESSAGES 1" >>confdefs.h - - fi - - - if test "$enable_shared" = yes; then - case "$host_os" in - mingw* | cygwin*) is_woe32dll=yes ;; - *) is_woe32dll=no ;; - esac - else - is_woe32dll=no - fi - WOE32DLL=$is_woe32dll - - - case "$host_os" in - mingw* | cygwin*) is_woe32=yes ;; - *) is_woe32=no ;; - esac - WOE32=$is_woe32 - - if test $WOE32 = yes; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. -set dummy ${ac_tool_prefix}windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_WINDRES+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$WINDRES"; then - ac_cv_prog_WINDRES="$WINDRES" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_WINDRES="${ac_tool_prefix}windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -WINDRES=$ac_cv_prog_WINDRES -if test -n "$WINDRES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 -$as_echo "$WINDRES" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_WINDRES"; then - ac_ct_WINDRES=$WINDRES - # Extract the first word of "windres", so it can be a program name with args. -set dummy windres; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_WINDRES"; then - ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_WINDRES="windres" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES -if test -n "$ac_ct_WINDRES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 -$as_echo "$ac_ct_WINDRES" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_WINDRES" = x; then - WINDRES="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - WINDRES=$ac_ct_WINDRES - fi -else - WINDRES="$ac_cv_prog_WINDRES" -fi - - fi - - case "$host_os" in - hpux*) LTLIBC="" ;; - *) LTLIBC="-lc" ;; - esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFPreferencesCopyAppValue=yes -else - gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -$as_echo "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -$as_echo "@%:@define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - - - - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - - LIBINTL= - LTLIBINTL= - POSUB= - - case " $gt_needs " in - *" need-formatstring-macros "*) gt_api_version=3 ;; - *" need-ngettext "*) gt_api_version=2 ;; - *) gt_api_version=1 ;; - esac - gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" - gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5 -$as_echo_n "checking whether included gettext is requested... " >&6; } - -@%:@ Check whether --with-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 - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5 -$as_echo "$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 - - - if test $gt_api_version -ge 3; then - gt_revision_test_code=' -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -' - else - gt_revision_test_code= - fi - if test $gt_api_version -ge 2; then - gt_expression_test_code=' + * ngettext ("", "", 0)' - else - gt_expression_test_code= - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 -$as_echo_n "checking for GNU gettext in libc... " >&6; } -if eval \${$gt_func_gnugettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$gt_func_gnugettext_libc=yes" -else - eval "$gt_func_gnugettext_libc=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$gt_func_gnugettext_libc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "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 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/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi - -fi - - LIBINTL= - LTLIBINTL= - INCINTL= - LIBINTL_PREFIX= - HAVE_LIBINTL= - 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= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $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 "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; 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 "$acl_hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_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 "$acl_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 - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'intl'; then - LIBINTL_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'intl'; then - LIBINTL_PREFIX="$basedir" - fi - 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* | gnu* | k*bsd*-gnu) 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/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $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 - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - 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 "$acl_hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_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=\"$acl_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 - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 -$as_echo_n "checking for GNU gettext in libintl... " >&6; } -if eval \${$gt_func_gnugettext_libintl+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$gt_func_gnugettext_libintl=yes" -else - eval "$gt_func_gnugettext_libintl=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -int -main () -{ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - eval "$gt_func_gnugettext_libintl=yes" - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -eval ac_res=\$$gt_func_gnugettext_libintl - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - fi - - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ - || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - 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 - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV $LIBTHREAD" - LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV $LTLIBTHREAD" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - CATOBJEXT=.gmo - fi - - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -$as_echo "@%:@define ENABLE_NLS 1" >>confdefs.h - - else - USE_NLS=no - fi - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 -$as_echo_n "checking whether to use NLS... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - if test "$USE_NLS" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 -$as_echo_n "checking where the gettext function comes from... " >&6; } - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 -$as_echo "$gt_source" >&6; } - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 -$as_echo_n "checking how to link with libintl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 -$as_echo "$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 - - -$as_echo "@%:@define HAVE_GETTEXT 1" >>confdefs.h - - -$as_echo "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h - - fi - - POSUB=po - fi - - - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - - - - - nls_cv_header_intl= - nls_cv_header_libgt= - - DATADIRNAME=share - - - INSTOBJEXT=.mo - - - GENCAT=gencat - - - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - - - INTL_LIBTOOL_SUFFIX_PREFIX= - - - - INTLLIBS="$LIBINTL" - - - - - - - -if test "x${prefix}" = "xNONE"; then - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_LOCALE_DIR "${ac_default_prefix}/${DATADIRNAME}/locale" -_ACEOF - -else - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_LOCALE_DIR "${prefix}/${DATADIRNAME}/locale" -_ACEOF - -fi - -if test "x${datadir}" = 'x${prefix}/share'; then - if test "x${prefix}" = "xNONE"; then - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_DATA_DIR "${ac_default_prefix}/share/${PACKAGE}" -_ACEOF - - else - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_DATA_DIR "${prefix}/share/${PACKAGE}" -_ACEOF - - fi -else - cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_DATA_DIR "${datadir}/${PACKAGE}" -_ACEOF - -fi - -packagesrcdir=`cd $srcdir && pwd` -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_SOURCE_DIR "${packagesrcdir}" -_ACEOF - - -if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -Wall" ;; - esac -fi - -ac_config_files="$ac_config_files Makefile src/Makefile intl/Makefile po/Makefile.in" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIB@&t@OBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in @%:@( - *posix*) : - set -o posix ;; @%:@( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in @%:@( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in @%:@(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] -@%:@ ---------------------------------------- -@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are -@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the -@%:@ script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} @%:@ as_fn_error - - -@%:@ as_fn_set_status STATUS -@%:@ ----------------------- -@%:@ Set @S|@? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} @%:@ as_fn_set_status - -@%:@ as_fn_exit STATUS -@%:@ ----------------- -@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} @%:@ as_fn_exit - -@%:@ as_fn_unset VAR -@%:@ --------------- -@%:@ Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -@%:@ as_fn_append VAR VALUE -@%:@ ---------------------- -@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take -@%:@ advantage of any shell optimizations that allow amortized linear growth over -@%:@ repeated appends, instead of the typical quadratic growth present in naive -@%:@ implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -@%:@ as_fn_arith ARG... -@%:@ ------------------ -@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the -@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments -@%:@ must be portable across @S|@(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in @%:@((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -@%:@ as_fn_mkdir_p -@%:@ ------------- -@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} @%:@ as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -@%:@ as_fn_executable_p FILE -@%:@ ----------------------- -@%:@ Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} @%:@ as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -@%:@@%:@ Running $as_me. @%:@@%:@ -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake < 1.5. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "intl/Makefile") CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; - "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "po-directories":C) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assigment from automake < 1.5. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# 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 || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - diff --git a/clients/gsat-1.1.0/autom4te.cache/requests b/clients/gsat-1.1.0/autom4te.cache/requests deleted file mode 100644 index 2e3eb99..0000000 --- a/clients/gsat-1.1.0/autom4te.cache/requests +++ /dev/null @@ -1,242 +0,0 @@ -# This file was generated. -# It contains the lists of macros which have been traced. -# It can be safely removed. - -@request = ( - bless( [ - '0', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - '/usr/share/aclocal/codeset.m4', - '/usr/share/aclocal/fcntl-o.m4', - '/usr/share/aclocal/gettext.m4', - '/usr/share/aclocal/glibc2.m4', - '/usr/share/aclocal/glibc21.m4', - '/usr/share/aclocal/gtk.m4', - '/usr/share/aclocal/iconv.m4', - '/usr/share/aclocal/intdiv0.m4', - '/usr/share/aclocal/intl.m4', - '/usr/share/aclocal/intlmacosx.m4', - '/usr/share/aclocal/intmax.m4', - '/usr/share/aclocal/inttypes-pri.m4', - '/usr/share/aclocal/inttypes_h.m4', - '/usr/share/aclocal/lcmessage.m4', - '/usr/share/aclocal/lib-ld.m4', - '/usr/share/aclocal/lib-link.m4', - '/usr/share/aclocal/lib-prefix.m4', - '/usr/share/aclocal/lock.m4', - '/usr/share/aclocal/longlong.m4', - '/usr/share/aclocal/nls.m4', - '/usr/share/aclocal/po.m4', - '/usr/share/aclocal/printf-posix.m4', - '/usr/share/aclocal/progtest.m4', - '/usr/share/aclocal/size_max.m4', - '/usr/share/aclocal/stdint_h.m4', - '/usr/share/aclocal/threadlib.m4', - '/usr/share/aclocal/uintmax_t.m4', - '/usr/share/aclocal/visibility.m4', - '/usr/share/aclocal/wchar_t.m4', - '/usr/share/aclocal/wint_t.m4', - '/usr/share/aclocal/xsize.m4', - '/usr/share/aclocal-1.11/amversion.m4', - '/usr/share/aclocal-1.11/auxdir.m4', - '/usr/share/aclocal-1.11/ccstdc.m4', - '/usr/share/aclocal-1.11/cond.m4', - '/usr/share/aclocal-1.11/depend.m4', - '/usr/share/aclocal-1.11/depout.m4', - '/usr/share/aclocal-1.11/header.m4', - '/usr/share/aclocal-1.11/init.m4', - '/usr/share/aclocal-1.11/install-sh.m4', - '/usr/share/aclocal-1.11/lead-dot.m4', - '/usr/share/aclocal-1.11/make.m4', - '/usr/share/aclocal-1.11/missing.m4', - '/usr/share/aclocal-1.11/mkdirp.m4', - '/usr/share/aclocal-1.11/options.m4', - '/usr/share/aclocal-1.11/runlog.m4', - '/usr/share/aclocal-1.11/sanity.m4', - '/usr/share/aclocal-1.11/silent.m4', - '/usr/share/aclocal-1.11/strip.m4', - '/usr/share/aclocal-1.11/substnot.m4', - '/usr/share/aclocal-1.11/tar.m4', - 'configure.in' - ], - { - 'AM_PO_SUBDIRS' => 1, - 'gt_INTTYPES_PRI' => 1, - 'm4_pattern_forbid' => 1, - 'AM_XGETTEXT_OPTION_INIT' => 1, - 'AC_LIB_PREPARE_PREFIX' => 1, - 'AM_PATH_GTK' => 1, - 'AC_DEFUN' => 1, - 'gl_AC_HEADER_STDINT_H' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AM_MISSING_HAS_RUN' => 1, - 'gl_SIZE_MAX' => 1, - 'AC_LIB_RPATH' => 1, - 'AC_TYPE_LONG_LONG_INT' => 1, - 'AM_SUBST_NOTMAKE' => 1, - 'AM_MISSING_PROG' => 1, - 'gt_PRINTF_POSIX' => 1, - 'AM_GNU_GETTEXT_VERSION' => 1, - 'AC_LIB_PROG_LD_GNU' => 1, - 'gl_THREADLIB' => 1, - 'AM_NLS' => 1, - 'AM_PROG_INSTALL_STRIP' => 1, - '_m4_warn' => 1, - 'AM_SANITY_CHECK' => 1, - 'gt_INTL_SUBDIR_CORE' => 1, - '_AM_PROG_TAR' => 1, - 'AM_DEP_TRACK' => 1, - 'gl_THREADLIB_EARLY' => 1, - 'AM_CONFIG_HEADER' => 1, - 'AC_COMPUTE_INT' => 1, - 'AM_PROG_CC_STDC' => 1, - 'AC_LIB_ARG_WITH' => 1, - '_AM_IF_OPTION' => 1, - '_AM_SUBST_NOTMAKE' => 1, - '_AM_AUTOCONF_VERSION' => 1, - 'm4_pattern_allow' => 1, - 'AM_PATH_PROG_WITH_TEST' => 1, - 'AM_SET_LEADING_DOT' => 1, - 'gl_FCNTL_O_FLAGS' => 1, - 'gl_THREADLIB_EARLY_BODY' => 1, - '_AM_DEPENDENCIES' => 1, - 'gt_INTL_MACOSX' => 1, - 'gt_CHECK_DECL' => 1, - '_AC_TYPE_LONG_LONG_SNIPPET' => 1, - 'AC_LIB_LINKFLAGS' => 1, - 'AM_ICONV_LINK' => 1, - 'AC_LIB_PREPARE_MULTILIB' => 1, - 'AU_DEFUN' => 1, - 'gl_THREADLIB_BODY' => 1, - 'AM_GNU_GETTEXT_NEED' => 1, - 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, - 'gt_TYPE_INTMAX_T' => 1, - 'AC_LIB_HAVE_LINKFLAGS' => 1, - 'gl_XSIZE' => 1, - 'AM_ICONV_LINKFLAGS_BODY' => 1, - '_AM_SET_OPTION' => 1, - 'gt_GLIBC2' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'gl_AC_TYPE_UINTMAX_T' => 1, - 'AC_LIB_PREFIX' => 1, - 'gl_LOCK' => 1, - 'AM_INTL_SUBDIR' => 1, - 'gl_VISIBILITY' => 1, - 'gt_TYPE_WCHAR_T' => 1, - 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'AC_DEFUN_ONCE' => 1, - 'gl_DISABLE_THREADS' => 1, - 'AC_' => 1, - 'fp_PROG_CC_STDC' => 1, - 'gt_INTDIV0' => 1, - 'AM_ICONV' => 1, - 'AM_SILENT_RULES' => 1, - 'include' => 1, - 'AM_AUX_DIR_EXPAND' => 1, - 'AC_LIB_APPENDTOVAR' => 1, - 'AM_GNU_GETTEXT' => 1, - 'gl_GLIBC21' => 1, - 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, - 'AM_POSTPROCESS_PO_MAKEFILE' => 1, - '_AM_SET_OPTIONS' => 1, - 'AM_RUN_LOG' => 1, - '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'AC_LIB_WITH_FINAL_PREFIX' => 1, - 'gt_TYPE_WINT_T' => 1, - 'AC_LIB_LINKFLAGS_BODY' => 1, - 'AC_LIB_FROMPACKAGE' => 1, - 'gt_LC_MESSAGES' => 1, - 'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1, - '_AM_MANGLE_OPTION' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'AM_CONDITIONAL' => 1, - 'AM_LANGINFO_CODESET' => 1, - 'AM_SET_DEPDIR' => 1, - 'gl_AC_HEADER_INTTYPES_H' => 1, - 'AM_PROG_INSTALL_SH' => 1, - 'm4_include' => 1, - '_AC_AM_CONFIG_HEADER_HOOK' => 1, - 'AC_LIB_PROG_LD' => 1, - 'gl_PREREQ_LOCK' => 1, - 'AM_MAKE_INCLUDE' => 1 - } - ], 'Autom4te::Request' ), - bless( [ - '1', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - 'aclocal.m4', - 'configure.in' - ], - { - 'AM_PROG_F77_C_O' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'm4_pattern_forbid' => 1, - 'AC_INIT' => 1, - '_AM_COND_IF' => 1, - 'AC_CANONICAL_TARGET' => 1, - 'AC_SUBST' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_FC_SRCEXT' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'm4_sinclude' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AM_NLS' => 1, - 'AC_FC_PP_DEFINE' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - '_m4_warn' => 1, - 'AM_PROG_CXX_C_O' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - '_AM_COND_ENDIF' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'AM_PROG_MOC' => 1, - 'AM_SILENT_RULES' => 1, - 'AC_CONFIG_FILES' => 1, - 'LT_INIT' => 1, - 'include' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AM_PROG_AR' => 1, - 'AC_LIBSOURCE' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AC_FC_FREEFORM' => 1, - 'AH_OUTPUT' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'm4_pattern_allow' => 1, - 'sinclude' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AM_CONDITIONAL' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AM_POT_TOOLS' => 1, - 'm4_include' => 1, - '_AM_COND_ELSE' => 1, - 'AC_SUBST_TRACE' => 1 - } - ], 'Autom4te::Request' ) - ); - diff --git a/clients/gsat-1.1.0/autom4te.cache/traces.0 b/clients/gsat-1.1.0/autom4te.cache/traces.0 deleted file mode 100644 index a2bd5d6..0000000 --- a/clients/gsat-1.1.0/autom4te.cache/traces.0 +++ /dev/null @@ -1,4737 +0,0 @@ -m4trace:/usr/share/aclocal/codeset.m4:9: -1- 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); return !cs;], - [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 -]) -m4trace:/usr/share/aclocal/fcntl-o.m4:12: -1- AC_DEFUN([gl_FCNTL_O_FLAGS], [ - dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. - AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) - AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], - [AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[#include - #include - #include - #include - #ifndef O_NOATIME - #define O_NOATIME 0 - #endif - #ifndef O_NOFOLLOW - #define O_NOFOLLOW 0 - #endif - static int const constants[] = - { - O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, - O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY - }; - ]], - [[ - int status = !constants; - { - static char const sym[] = "conftest.sym"; - if (symlink (".", sym) != 0 - || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0) - status |= 32; - unlink (sym); - } - { - static char const file[] = "confdefs.h"; - int fd = open (file, O_RDONLY | O_NOATIME); - char c; - struct stat st0, st1; - if (fd < 0 - || fstat (fd, &st0) != 0 - || sleep (1) != 0 - || read (fd, &c, 1) != 1 - || close (fd) != 0 - || stat (file, &st1) != 0 - || st0.st_atime != st1.st_atime) - status |= 64; - } - return status;]])], - [gl_cv_header_working_fcntl_h=yes], - [case $? in #( - 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( - 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( - 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( - *) gl_cv_header_working_fcntl_h='no';; - esac], - [gl_cv_header_working_fcntl_h=cross-compiling])]) - - case $gl_cv_header_working_fcntl_h in #( - *O_NOATIME* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], - [Define to 1 if O_NOATIME works.]) - - case $gl_cv_header_working_fcntl_h in #( - *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( - *) ac_val=1;; - esac - AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], - [Define to 1 if O_NOFOLLOW works.]) -]) -m4trace:/usr/share/aclocal/gettext.m4:57: -1- AC_DEFUN([AM_GNU_GETTEXT], [ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], - [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define([gt_included_intl], - ifelse([$1], [external], - ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), - [yes])) - define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) - gt_NEEDS_INIT - AM_GNU_GETTEXT_NEED([$2]) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. - gt_INTL_MACOSX - - dnl Set USE_NLS. - AC_REQUIRE([AM_NLS]) - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl Add a version number to the cache macros. - case " $gt_needs " in - *" need-formatstring-macros "*) gt_api_version=3 ;; - *" need-ngettext "*) gt_api_version=2 ;; - *) gt_api_version=1 ;; - esac - gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" - gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH([included-gettext], - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - if test $gt_api_version -ge 3; then - gt_revision_test_code=' -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -' - else - gt_revision_test_code= - fi - if test $gt_api_version -ge 2; then - gt_expression_test_code=' + * ngettext ("", "", 0)' - else - gt_expression_test_code= - fi - - AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], - [AC_TRY_LINK([#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], - [eval "$gt_func_gnugettext_libc=yes"], - [eval "$gt_func_gnugettext_libc=no"])]) - - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - [$gt_func_gnugettext_libintl], - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - [eval "$gt_func_gnugettext_libintl=yes"], - [eval "$gt_func_gnugettext_libintl=no"]) - dnl Now see whether libintl exists and depends on libiconv. - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include -$gt_revision_test_code -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *);], - [bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - eval "$gt_func_gnugettext_libintl=yes" - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ - || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Some extra flags are needed during linking. - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE([ENABLE_NLS], [1], - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - AC_MSG_CHECKING([whether to use NLS]) - AC_MSG_RESULT([$USE_NLS]) - if test "$USE_NLS" = "yes"; then - AC_MSG_CHECKING([where the gettext function comes from]) - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - AC_MSG_RESULT([$gt_source]) - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE([HAVE_GETTEXT], [1], - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE([HAVE_DCGETTEXT], [1], - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST([BUILD_INCLUDED_LIBINTL]) - AC_SUBST([USE_INCLUDED_LIBINTL]) - AC_SUBST([CATOBJEXT]) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST([DATADIRNAME]) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST([INSTOBJEXT]) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST([GENCAT]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST([INTLOBJS]) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST([INTLLIBS]) - - dnl Make all documented variables known to autoconf. - AC_SUBST([LIBINTL]) - AC_SUBST([LTLIBINTL]) - AC_SUBST([POSUB]) -]) -m4trace:/usr/share/aclocal/gettext.m4:376: -1- AC_DEFUN([AM_GNU_GETTEXT_NEED], [ - m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) -]) -m4trace:/usr/share/aclocal/gettext.m4:383: -1- AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) -m4trace:/usr/share/aclocal/glibc2.m4:10: -1- AC_DEFUN([gt_GLIBC2], [ - AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], - [ac_cv_gnu_library_2], - [AC_EGREP_CPP([Lucky GNU user], - [ -#include -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ >= 2) - Lucky GNU user - #endif -#endif - ], - [ac_cv_gnu_library_2=yes], - [ac_cv_gnu_library_2=no]) - ] - ) - AC_SUBST([GLIBC2]) - GLIBC2="$ac_cv_gnu_library_2" - -]) -m4trace:/usr/share/aclocal/glibc21.m4:10: -1- AC_DEFUN([gl_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" - -]) -m4trace:/usr/share/aclocal/gtk.m4:7: -1- AC_DEFUN([AM_PATH_GTK], [dnl -dnl Get the cflags and libraries from the gtk-config script -dnl -AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], - gtk_config_prefix="$withval", gtk_config_prefix="") -AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], - gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") -AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], - , enable_gtktest=yes) - - for module in . $4 - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - AC_PATH_PROG(GTK_CONFIG, gtk-config, no) - min_gtk_version=ifelse([$1], ,0.99.7,$1) - AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" -dnl -dnl Now check if the installed GTK is sufficiently new. (Also sanity -dnl checks the results of gtk-config to some extent -dnl - rm -f conf.gtktest - AC_TRY_RUN([ -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} -],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GTK_CFLAGS) - AC_SUBST(GTK_LIBS) - rm -f conf.gtktest -]) -m4trace:/usr/share/aclocal/iconv.m4:9: -1- AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) -m4trace:/usr/share/aclocal/iconv.m4:20: -1- AC_DEFUN([AM_ICONV_LINK], [ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include -#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_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ - dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10. - am_save_LIBS="$LIBS" - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi - AC_TRY_RUN([ -#include -#include -int main () -{ - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ - { - iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); - if (cd_utf8_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\342\202\254"; /* EURO SIGN */ - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_utf8_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } - /* Test against Solaris 10 bug: Failures are not distinguishable from - successful returns. */ - { - iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); - if (cd_ascii_to_88591 != (iconv_t)(-1)) - { - static const char input[] = "\263"; - char buf[10]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_ascii_to_88591, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - return 1; - } - } -#if 0 /* This bug could be worked around by the caller. */ - /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; - char buf[50]; - const char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_88591_to_utf8, - (char **) &inptr, &inbytesleft, - &outptr, &outbytesleft); - if ((int)res > 0) - return 1; - } - } -#endif - /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is - provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - return 1; - return 0; -}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], - [case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac]) - LIBS="$am_save_LIBS" - ]) - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; - *) am_func_iconv=yes ;; - esac - else - am_func_iconv=no am_cv_lib_iconv=no - fi - if test "$am_func_iconv" = yes; then - AC_DEFINE([HAVE_ICONV], [1], - [Define if you have the iconv() function and it works.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST([LIBICONV]) - AC_SUBST([LTLIBICONV]) -]) -m4trace:/usr/share/aclocal/iconv.m4:188: -1- AC_DEFUN_ONCE([AM_ICONV], [ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL([am_cv_proto_iconv], [ - AC_TRY_COMPILE([ -#include -#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([ - $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 -]) -m4trace:/usr/share/aclocal/intdiv0.m4:9: -1- AC_DEFUN([gt_INTDIV0], [ - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - - AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], - gt_cv_int_divbyzero_sigfpe, - [ - gt_cv_int_divbyzero_sigfpe= -changequote(,)dnl - case "$host_os" in - macos* | darwin[6-9]* | darwin[1-9][0-9]*) - # On MacOS X 10.2 or newer, just assume the same as when cross- - # compiling. If we were to perform the real test, 1 Crash Report - # dialog window would pop up. - case "$host_cpu" in - i[34567]86 | x86_64) - gt_cv_int_divbyzero_sigfpe="guessing yes" ;; - esac - ;; - esac -changequote([,])dnl - if test -z "$gt_cv_int_divbyzero_sigfpe"; then - AC_TRY_RUN([ -#include -#include - -static void -sigfpe_handler (int sig) -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} -], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no], - [ - # Guess based on the CPU. -changequote(,)dnl - case "$host_cpu" in - alpha* | i[34567]86 | x86_64 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac -changequote([,])dnl - ]) - fi - ]) - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], - [Define if integer division by zero raises signal SIGFPE.]) -]) -m4trace:/usr/share/aclocal/intl.m4:25: -1- AC_DEFUN([AM_INTL_SUBDIR], [ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([gt_GLIBC2])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([gl_VISIBILITY])dnl - AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl - AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl - AC_REQUIRE([gt_TYPE_WCHAR_T])dnl - AC_REQUIRE([gt_TYPE_WINT_T])dnl - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gt_TYPE_INTMAX_T]) - AC_REQUIRE([gt_PRINTF_POSIX]) - AC_REQUIRE([gl_GLIBC21])dnl - AC_REQUIRE([gl_XSIZE])dnl - AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl - AC_REQUIRE([gt_INTL_MACOSX])dnl - - dnl Support for automake's --enable-silent-rules. - case "$enable_silent_rules" in - yes) INTL_DEFAULT_VERBOSITY=0;; - no) INTL_DEFAULT_VERBOSITY=1;; - *) INTL_DEFAULT_VERBOSITY=1;; - esac - AC_SUBST([INTL_DEFAULT_VERBOSITY]) - - AC_CHECK_TYPE([ptrdiff_t], , - [AC_DEFINE([ptrdiff_t], [long], - [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) - ]) - AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) - AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ - snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) - - dnl Use the _snprintf function only if it is declared (because on NetBSD it - dnl is defined as a weak alias of snprintf; we prefer to use the latter). - gt_CHECK_DECL(_snprintf, [#include ]) - gt_CHECK_DECL(_snwprintf, [#include ]) - - dnl Use the *_unlocked functions only if they are declared. - dnl (because some of them were defined without being declared in Solaris - dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built - dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL(getc_unlocked, [#include ]) - - case $gt_cv_func_printf_posix in - *yes) HAVE_POSIX_PRINTF=1 ;; - *) HAVE_POSIX_PRINTF=0 ;; - esac - AC_SUBST([HAVE_POSIX_PRINTF]) - if test "$ac_cv_func_asprintf" = yes; then - HAVE_ASPRINTF=1 - else - HAVE_ASPRINTF=0 - fi - AC_SUBST([HAVE_ASPRINTF]) - if test "$ac_cv_func_snprintf" = yes; then - HAVE_SNPRINTF=1 - else - HAVE_SNPRINTF=0 - fi - AC_SUBST([HAVE_SNPRINTF]) - if test "$ac_cv_func_newlocale" = yes; then - HAVE_NEWLOCALE=1 - else - HAVE_NEWLOCALE=0 - fi - AC_SUBST([HAVE_NEWLOCALE]) - if test "$ac_cv_func_wprintf" = yes; then - HAVE_WPRINTF=1 - else - HAVE_WPRINTF=0 - fi - AC_SUBST([HAVE_WPRINTF]) - - AM_LANGINFO_CODESET - gt_LC_MESSAGES - - dnl Compilation on mingw and Cygwin needs special Makefile rules, because - dnl 1. when we install a shared library, we must arrange to export - dnl auxiliary pointer variables for every exported variable, - dnl 2. when we install a shared library and a static library simultaneously, - dnl the include file specifies __declspec(dllimport) and therefore we - dnl must arrange to define the auxiliary pointer variables for the - dnl exported variables _also_ in the static library. - if test "$enable_shared" = yes; then - case "$host_os" in - mingw* | cygwin*) is_woe32dll=yes ;; - *) is_woe32dll=no ;; - esac - else - is_woe32dll=no - fi - WOE32DLL=$is_woe32dll - AC_SUBST([WOE32DLL]) - - dnl On mingw and Cygwin, we can activate special Makefile rules which add - dnl version information to the shared libraries and executables. - case "$host_os" in - mingw* | cygwin*) is_woe32=yes ;; - *) is_woe32=no ;; - esac - WOE32=$is_woe32 - AC_SUBST([WOE32]) - if test $WOE32 = yes; then - dnl Check for a program that compiles Windows resource files. - AC_CHECK_TOOL([WINDRES], [windres]) - fi - - dnl Determine whether when creating a library, "-lc" should be passed to - dnl libtool or not. On many platforms, it is required for the libtool option - dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool - dnl in the *.la files - makes it impossible to create multithreaded programs, - dnl because libtool also reorders the -lc to come before the -pthread, and - dnl this disables pthread_create() . - case "$host_os" in - hpux*) LTLIBC="" ;; - *) LTLIBC="-lc" ;; - esac - AC_SUBST([LTLIBC]) - - dnl Rename some macros and functions used for locking. - AH_BOTTOM([ -#define __libc_lock_t gl_lock_t -#define __libc_lock_define gl_lock_define -#define __libc_lock_define_initialized gl_lock_define_initialized -#define __libc_lock_init gl_lock_init -#define __libc_lock_lock gl_lock_lock -#define __libc_lock_unlock gl_lock_unlock -#define __libc_lock_recursive_t gl_recursive_lock_t -#define __libc_lock_define_recursive gl_recursive_lock_define -#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized -#define __libc_lock_init_recursive gl_recursive_lock_init -#define __libc_lock_lock_recursive gl_recursive_lock_lock -#define __libc_lock_unlock_recursive gl_recursive_lock_unlock -#define glthread_in_use libintl_thread_in_use -#define glthread_lock_init_func libintl_lock_init_func -#define glthread_lock_lock_func libintl_lock_lock_func -#define glthread_lock_unlock_func libintl_lock_unlock_func -#define glthread_lock_destroy_func libintl_lock_destroy_func -#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded -#define glthread_rwlock_init_func libintl_rwlock_init_func -#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded -#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func -#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded -#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func -#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded -#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func -#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded -#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func -#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded -#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func -#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded -#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func -#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded -#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func -#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded -#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func -#define glthread_once_func libintl_once_func -#define glthread_once_singlethreaded libintl_once_singlethreaded -#define glthread_once_multithreaded libintl_once_multithreaded -]) -]) -m4trace:/usr/share/aclocal/intl.m4:211: -1- AC_DEFUN([gt_INTL_SUBDIR_CORE], [ - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - AC_REQUIRE([gl_LOCK])dnl - - AC_TRY_LINK( - [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }], - [], - [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], - [Define to 1 if the compiler understands __builtin_expect.])]) - - AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ - stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ - argz_stringify argz_next __fsetlocking]) - - dnl Use the *_unlocked functions only if they are declared. - dnl (because some of them were defined without being declared in Solaris - dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built - dnl on Solaris 2.5.1 to run on Solaris 2.6). - dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. - gt_CHECK_DECL([feof_unlocked], [#include ]) - gt_CHECK_DECL([fgets_unlocked], [#include ]) - - AM_ICONV - - 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 -]) -m4trace:/usr/share/aclocal/intl.m4:279: -1- AC_DEFUN([gt_CHECK_DECL], [ - AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1], - [AC_TRY_COMPILE([$2], [ -#ifndef $1 - char *p = (char *) $1; -#endif -], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) - if test $ac_cv_have_decl_$1 = yes; then - gt_value=1 - else - gt_value=0 - fi - AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], - [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -]) -m4trace:/usr/share/aclocal/intlmacosx.m4:18: -1- AC_DEFUN([gt_INTL_MACOSX], [ - dnl Check for API introduced in MacOS X 10.2. - AC_CACHE_CHECK([for CFPreferencesCopyAppValue], - [gt_cv_func_CFPreferencesCopyAppValue], - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_TRY_LINK([#include ], - [CFPreferencesCopyAppValue(NULL, NULL)], - [gt_cv_func_CFPreferencesCopyAppValue=yes], - [gt_cv_func_CFPreferencesCopyAppValue=no]) - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], - [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) - fi - dnl Check for API introduced in MacOS X 10.3. - AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], - [gt_cv_func_CFLocaleCopyCurrent=yes], - [gt_cv_func_CFLocaleCopyCurrent=no]) - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], - [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - AC_SUBST([INTL_MACOSX_LIBS]) -]) -m4trace:/usr/share/aclocal/intmax.m4:11: -1- AC_DEFUN([gt_TYPE_INTMAX_T], [ - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], - [AC_TRY_COMPILE([ -#include -#include -#if HAVE_STDINT_H_WITH_UINTMAX -#include -#endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -#include -#endif -], [intmax_t x = -1; - return !x;], - [gt_cv_c_intmax_t=yes], - [gt_cv_c_intmax_t=no])]) - if test $gt_cv_c_intmax_t = yes; then - AC_DEFINE([HAVE_INTMAX_T], [1], - [Define if you have the 'intmax_t' type in or .]) - fi -]) -m4trace:/usr/share/aclocal/inttypes-pri.m4:14: -1- AC_DEFUN([gt_INTTYPES_PRI], [ - AC_CHECK_HEADERS([inttypes.h]) - if test $ac_cv_header_inttypes_h = yes; then - AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], - [gt_cv_inttypes_pri_broken], - [ - AC_TRY_COMPILE([#include -#ifdef PRId32 -char *p = PRId32; -#endif -], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes]) - ]) - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1], - [Define if exists and defines unusable PRI* macros.]) - PRI_MACROS_BROKEN=1 - else - PRI_MACROS_BROKEN=0 - fi - AC_SUBST([PRI_MACROS_BROKEN]) -]) -m4trace:/usr/share/aclocal/inttypes_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [ - AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1; return !i;], - [gl_cv_header_inttypes_h=yes], - [gl_cv_header_inttypes_h=no])]) - if test $gl_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) -m4trace:/usr/share/aclocal/lcmessage.m4:22: -1- AC_DEFUN([gt_LC_MESSAGES], [ - AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])]) - if test $gt_cv_val_LC_MESSAGES = yes; then - AC_DEFINE([HAVE_LC_MESSAGES], [1], - [Define if your file defines LC_MESSAGES.]) - fi -]) -m4trace:/usr/share/aclocal/lib-ld.m4:12: -1- AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL([acl_cv_path_LD], -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break ;; - *) - test "$with_gnu_ld" != yes && break ;; - esac - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT([$LD]) -else - AC_MSG_RESULT([no]) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) -m4trace:/usr/share/aclocal/lib-link.m4:17: -1- AC_DEFUN([AC_LIB_LINKFLAGS], [ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - pushdef([Name],[translit([$1],[./-], [___])]) - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - AC_SUBST([LIB]NAME[_PREFIX]) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - popdef([NAME]) - popdef([Name]) -]) -m4trace:/usr/share/aclocal/lib-link.m4:57: -1- AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - pushdef([Name],[translit([$1],[./-], [___])]) - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, - dnl because these -l options might require -L options that are present in - dnl LIBS. -l options benefit only from the -L options listed before it. - dnl Otherwise, add it to the front of LIBS, because it may be a static - dnl library that depends on another static library that is present in LIBS. - dnl Static libraries benefit only from the static libraries listed after - dnl it. - case " $LIB[]NAME" in - *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; - *) LIBS="$LIB[]NAME $LIBS" ;; - esac - AC_TRY_LINK([$3], [$4], - [ac_cv_lib[]Name=yes], - [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - LIB[]NAME[]_PREFIX= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - AC_SUBST([LIB]NAME[_PREFIX]) - popdef([NAME]) - popdef([Name]) -]) -m4trace:/usr/share/aclocal/lib-link.m4:122: -1- AC_DEFUN([AC_LIB_RPATH], [ - dnl Tell automake >= 1.10 to complain if config.rpath is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" - acl_shlibext="$acl_cv_shlibext" - acl_libname_spec="$acl_cv_libname_spec" - acl_library_names_spec="$acl_cv_library_names_spec" - acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE([rpath], - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) -m4trace:/usr/share/aclocal/lib-link.m4:158: -1- AC_DEFUN([AC_LIB_FROMPACKAGE], [ - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - define([acl_frompackage_]NAME, [$2]) - popdef([NAME]) - pushdef([PACK],[$2]) - pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - define([acl_libsinpackage_]PACKUP, - m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1]) - popdef([PACKUP]) - popdef([PACK]) -]) -m4trace:/usr/share/aclocal/lib-link.m4:178: -1- AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) - pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) - dnl Autoconf >= 2.61 supports dots in --with options. - pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH(P_A_C_K[-prefix], -[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib - --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - LIB[]NAME[]_PREFIX= - dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been - dnl computed. So it has to be reset here. - HAVE_LIB[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - dnl The same code as in the loop below: - dnl First look for a shared library. - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - dnl Then look for a static library. - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - dnl First look for a shared library. - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - dnl Then look for a static library. - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$acl_hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = '$1'; then - LIB[]NAME[]_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = '$1'; then - LIB[]NAME[]_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi - popdef([P_A_C_K]) - popdef([PACKLIBS]) - popdef([PACKUP]) - popdef([PACK]) - popdef([NAME]) -]) -m4trace:/usr/share/aclocal/lib-link.m4:681: -1- 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 -]) -m4trace:/usr/share/aclocal/lib-link.m4:705: -1- AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ - AC_REQUIRE([AC_LIB_RPATH]) - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - $1= - if test "$enable_rpath" != no; then - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode directories into the resulting - dnl binary. - rpathdirs= - next= - for opt in $2; do - if test -n "$next"; then - dir="$next" - dnl No need to hardcode the standard /usr/lib. - if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then - rpathdirs="$rpathdirs $dir" - fi - next= - else - case $opt in - -L) next=yes ;; - -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` - dnl No need to hardcode the standard /usr/lib. - if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then - rpathdirs="$rpathdirs $dir" - fi - next= ;; - *) next= ;; - esac - fi - done - if test "X$rpathdirs" != "X"; then - if test -n ""$3""; then - dnl libtool is used for linking. Use -R options. - for dir in $rpathdirs; do - $1="${$1}${$1:+ }-R$dir" - done - else - dnl The linker is used for linking directly. - if test -n "$acl_hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user - dnl must pass all path elements in one option. - alldirs= - for dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - $1="$flag" - else - dnl The -rpath options are cumulative. - for dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - $1="${$1}${$1:+ }$flag" - done - fi - fi - fi - fi - fi - AC_SUBST([$1]) -]) -m4trace:/usr/share/aclocal/lib-prefix.m4:12: -1- AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])]) -m4trace:/usr/share/aclocal/lib-prefix.m4:22: -1- AC_DEFUN([AC_LIB_PREFIX], [ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) -m4trace:/usr/share/aclocal/lib-prefix.m4:122: -1- 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" -]) -m4trace:/usr/share/aclocal/lib-prefix.m4:145: -1- 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" -]) -m4trace:/usr/share/aclocal/lib-prefix.m4:162: -1- AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ - dnl There is no formal standard regarding lib and lib64. - dnl On glibc systems, the current practice is that on a system supporting - dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under - dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine - dnl the compiler's default mode by looking at the compiler's library search - dnl path. If at least one of its elements ends in /lib64 or points to a - dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. - dnl Otherwise we use the default, namely "lib". - dnl On Solaris systems, the current practice is that on a system supporting - dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under - dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or - dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. - AC_REQUIRE([AC_CANONICAL_HOST]) - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment - dnl . - dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." - dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the - dnl symlink is missing, so we set acl_libdirstem2 too. - AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], - [AC_EGREP_CPP([sixtyfour bits], [ -#ifdef _LP64 -sixtyfour bits -#endif - ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) - ]) - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" -]) -m4trace:/usr/share/aclocal/lock.m4:9: -1- AC_DEFUN([gl_LOCK], [ - AC_REQUIRE([gl_THREADLIB]) - if test "$gl_threads_api" = posix; then - # OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the - # pthread_rwlock_* functions. - AC_CHECK_TYPE([pthread_rwlock_t], - [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], - [Define if the POSIX multithreading library has read/write locks.])], - [], - [#include ]) - # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. - AC_TRY_COMPILE([#include ], - [#if __FreeBSD__ == 4 -error "No, in FreeBSD 4.0 recursive mutexes actually don't work." -#else -int x = (int)PTHREAD_MUTEX_RECURSIVE; -return !x; -#endif], - [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], - [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) - fi - gl_PREREQ_LOCK -]) -m4trace:/usr/share/aclocal/lock.m4:35: -1- AC_DEFUN([gl_PREREQ_LOCK], [ - AC_REQUIRE([AC_C_INLINE]) -]) -m4trace:/usr/share/aclocal/longlong.m4:17: -1- AC_DEFUN([AC_TYPE_LONG_LONG_INT], [ - AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], - [AC_LINK_IFELSE( - [_AC_TYPE_LONG_LONG_SNIPPET], - [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. - dnl If cross compiling, assume the bug isn't important, since - dnl nobody cross compiles for this platform as far as we know. - AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[@%:@include - @%:@ifndef LLONG_MAX - @%:@ define HALF \ - (1LL << (sizeof (long long int) * CHAR_BIT - 2)) - @%:@ define LLONG_MAX (HALF - 1 + HALF) - @%:@endif]], - [[long long int n = 1; - int i; - for (i = 0; ; i++) - { - long long int m = n << i; - if (m >> i != n) - return 1; - if (LLONG_MAX / 2 < m) - break; - } - return 0;]])], - [ac_cv_type_long_long_int=yes], - [ac_cv_type_long_long_int=no], - [ac_cv_type_long_long_int=yes])], - [ac_cv_type_long_long_int=no])]) - if test $ac_cv_type_long_long_int = yes; then - AC_DEFINE([HAVE_LONG_LONG_INT], [1], - [Define to 1 if the system has the type `long long int'.]) - fi -]) -m4trace:/usr/share/aclocal/longlong.m4:63: -1- AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ - AC_CACHE_CHECK([for unsigned long long int], - [ac_cv_type_unsigned_long_long_int], - [AC_LINK_IFELSE( - [_AC_TYPE_LONG_LONG_SNIPPET], - [ac_cv_type_unsigned_long_long_int=yes], - [ac_cv_type_unsigned_long_long_int=no])]) - if test $ac_cv_type_unsigned_long_long_int = yes; then - AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], - [Define to 1 if the system has the type `unsigned long long int'.]) - fi -]) -m4trace:/usr/share/aclocal/longlong.m4:82: -1- AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [ - AC_LANG_PROGRAM( - [[/* For now, do not test the preprocessor; as of 2007 there are too many - implementations with broken preprocessors. Perhaps this can - be revisited in 2012. In the meantime, code should not expect - #if to work with literals wider than 32 bits. */ - /* Test literals. */ - long long int ll = 9223372036854775807ll; - long long int nll = -9223372036854775807LL; - unsigned long long int ull = 18446744073709551615ULL; - /* Test constant expressions. */ - typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) - ? 1 : -1)]; - typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 - ? 1 : -1)]; - int i = 63;]], - [[/* Test availability of runtime routines for shift and division. */ - long long int llmax = 9223372036854775807ll; - unsigned long long int ullmax = 18446744073709551615ull; - return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) - | (llmax / ll) | (llmax % ll) - | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) - | (ullmax / ull) | (ullmax % ull));]]) -]) -m4trace:/usr/share/aclocal/nls.m4:23: -1- AC_DEFUN([AM_NLS], [ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE([nls], - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT([$USE_NLS]) - AC_SUBST([USE_NLS]) -]) -m4trace:/usr/share/aclocal/po.m4:23: -1- AC_DEFUN([AM_PO_SUBDIRS], [ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake - AC_REQUIRE([AM_NLS])dnl - - dnl Release version of the gettext macros. This is used to ensure that - dnl the gettext macros and po/Makefile.in.in are in sync. - AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) - - dnl Test whether it is GNU msgfmt >= 0.15. -changequote(,)dnl - case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; - *) MSGFMT_015=$MSGFMT ;; - esac -changequote([,])dnl - AC_SUBST([MSGFMT_015]) -changequote(,)dnl - case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; - *) GMSGFMT_015=$GMSGFMT ;; - esac -changequote([,])dnl - AC_SUBST([GMSGFMT_015]) - - dnl Search for GNU xgettext 0.12 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Test whether it is GNU xgettext >= 0.15. -changequote(,)dnl - case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; - *) XGETTEXT_015=$XGETTEXT ;; - esac -changequote([,])dnl - AC_SUBST([XGETTEXT_015]) - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) - - dnl Installation directories. - dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we - dnl have to define it here, so that it can be used in po/Makefile. - test -n "$localedir" || localedir='${datadir}/locale' - AC_SUBST([localedir]) - - dnl Support for AM_XGETTEXT_OPTION. - test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= - AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) - - AC_CONFIG_COMMANDS([po-directories], [[ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assigment from automake < 1.5. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done]], - [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake < 1.5. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) -m4trace:/usr/share/aclocal/po.m4:218: -1- AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ - # When this code is run, in config.status, two variables have already been - # set: - # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, - # - LINGUAS is the value of the environment variable LINGUAS at configure - # time. - -changequote(,)dnl - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - # Find a way to echo strings without interpreting backslash. - if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='echo' - else - if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='printf %s\n' - else - echo_func () { - cat < "$ac_file.tmp" - if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - cat >> "$ac_file.tmp" < /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` - cat >> "$ac_file.tmp" <> "$ac_file.tmp" < -#include -/* The string "%2$d %1$d", with dollar characters protected from the shell's - dollar expansion (possibly an autoconf bug). */ -static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -static char buf[100]; -int main () -{ - sprintf (buf, format, 33, 55); - return (strcmp (buf, "55 33") != 0); -}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, - [ - AC_EGREP_CPP([notposix], [ -#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ - notposix -#endif - ], - [gt_cv_func_printf_posix="guessing no"], - [gt_cv_func_printf_posix="guessing yes"]) - ]) - ]) - case $gt_cv_func_printf_posix in - *yes) - AC_DEFINE([HAVE_POSIX_PRINTF], [1], - [Define if your printf() function supports format strings with positions.]) - ;; - esac -]) -m4trace:/usr/share/aclocal/progtest.m4:25: -1- AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL([ac_cv_path_$1], -[case "[$]$1" in - [[\\/]]* | ?:[[\\/]]*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in ifelse([$5], , $PATH, [$5]); do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$][$1]) -else - AC_MSG_RESULT([no]) -fi -AC_SUBST([$1])dnl -]) -m4trace:/usr/share/aclocal/size_max.m4:9: -1- AC_DEFUN([gl_SIZE_MAX], [ - AC_CHECK_HEADERS([stdint.h]) - dnl First test whether the system already has SIZE_MAX. - AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ - gl_cv_size_max= - AC_EGREP_CPP([Found it], [ -#include -#if HAVE_STDINT_H -#include -#endif -#ifdef SIZE_MAX -Found it -#endif -], [gl_cv_size_max=yes]) - if test -z "$gl_cv_size_max"; then - dnl Define it ourselves. Here we assume that the type 'size_t' is not wider - dnl than the type 'unsigned long'. Try hard to find a definition that can - dnl be used in a preprocessor #if, i.e. doesn't contain a cast. - AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], - [#include -#include ], [size_t_bits_minus_1=]) - AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], - [#include ], [fits_in_uint=]) - if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then - if test $fits_in_uint = 1; then - dnl Even though SIZE_MAX fits in an unsigned int, it must be of type - dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. - AC_TRY_COMPILE([#include - extern size_t foo; - extern unsigned long foo; - ], [], [fits_in_uint=0]) - fi - dnl We cannot use 'expr' to simplify this expression, because 'expr' - dnl works only with 'long' integers in the host environment, while we - dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. - if test $fits_in_uint = 1; then - gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" - else - gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" - fi - else - dnl Shouldn't happen, but who knows... - gl_cv_size_max='((size_t)~(size_t)0)' - fi - fi - ]) - if test "$gl_cv_size_max" != yes; then - AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], - [Define as the maximum value of type 'size_t', if the system doesn't define it.]) - fi - dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after - dnl . Remember that the #undef in AH_VERBATIM gets replaced with - dnl #define by AC_DEFINE_UNQUOTED. - AH_VERBATIM([SIZE_MAX], -[/* Define as the maximum value of type 'size_t', if the system doesn't define - it. */ -#ifndef SIZE_MAX -# undef SIZE_MAX -#endif]) -]) -m4trace:/usr/share/aclocal/stdint_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_STDINT_H], [ - AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], - [AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1; return !i;], - [gl_cv_header_stdint_h=yes], - [gl_cv_header_stdint_h=no])]) - if test $gl_cv_header_stdint_h = yes; then - AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], - [Define if exists, doesn't clash with , - and declares uintmax_t. ]) - fi -]) -m4trace:/usr/share/aclocal/threadlib.m4:24: -1- AC_DEFUN([gl_THREADLIB_EARLY], [ - AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) -]) -m4trace:/usr/share/aclocal/threadlib.m4:31: -1- AC_DEFUN([gl_THREADLIB_EARLY_BODY], [ - dnl Ordering constraints: This macro modifies CPPFLAGS in a way that - dnl influences the result of the autoconf tests that test for *_unlocked - dnl declarations, on AIX 5 at least. Therefore it must come early. - AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl - AC_BEFORE([$0], [gl_ARGP])dnl - - AC_REQUIRE([AC_CANONICAL_HOST]) - dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. - dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes - dnl AC_GNU_SOURCE. - m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], - [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], - [AC_REQUIRE([AC_GNU_SOURCE])]) - dnl Check for multithreading. - m4_divert_text([DEFAULTS], [gl_use_threads_default=]) - AC_ARG_ENABLE([threads], -AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API]) -AC_HELP_STRING([--disable-threads], [build without multithread safety]), - [gl_use_threads=$enableval], - [if test -n "$gl_use_threads_default"; then - gl_use_threads="$gl_use_threads_default" - else -changequote(,)dnl - case "$host_os" in - dnl Disable multithreading by default on OSF/1, because it interferes - dnl with fork()/exec(): When msgexec is linked with -lpthread, its - dnl child process gets an endless segmentation fault inside execvp(). - dnl Disable multithreading by default on Cygwin 1.5.x, because it has - dnl bugs that lead to endless loops or crashes. See - dnl . - osf*) gl_use_threads=no ;; - cygwin*) - case `uname -r` in - 1.[0-5].*) gl_use_threads=no ;; - *) gl_use_threads=yes ;; - esac - ;; - *) gl_use_threads=yes ;; - esac -changequote([,])dnl - fi - ]) - if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then - # For using : - case "$host_os" in - osf*) - # On OSF/1, the compiler needs the flag -D_REENTRANT so that it - # groks . cc also understands the flag -pthread, but - # we don't use it because 1. gcc-2.95 doesn't understand -pthread, - # 2. putting a flag into CPPFLAGS that has an effect on the linker - # causes the AC_TRY_LINK test below to succeed unexpectedly, - # leading to wrong values of LIBTHREAD and LTLIBTHREAD. - CPPFLAGS="$CPPFLAGS -D_REENTRANT" - ;; - esac - # Some systems optimize for single-threaded programs by default, and - # need special flags to disable these optimizations. For example, the - # definition of 'errno' in . - case "$host_os" in - aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; - solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; - esac - fi -]) -m4trace:/usr/share/aclocal/threadlib.m4:100: -1- AC_DEFUN([gl_THREADLIB_BODY], [ - AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) - gl_threads_api=none - LIBTHREAD= - LTLIBTHREAD= - LIBMULTITHREAD= - LTLIBMULTITHREAD= - if test "$gl_use_threads" != no; then - dnl Check whether the compiler and linker support weak declarations. - AC_CACHE_CHECK([whether imported symbols can be declared weak], - [gl_cv_have_weak], - [gl_cv_have_weak=no - dnl First, test whether the compiler accepts it syntactically. - AC_TRY_LINK([extern void xyzzy (); -#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe]) - if test $gl_cv_have_weak = maybe; then - dnl Second, test whether it actually works. On Cygwin 1.7.2, with - dnl gcc 4.3, symbols declared weak always evaluate to the address 0. - AC_TRY_RUN([ -#include -#pragma weak fputs -int main () -{ - return (fputs == NULL); -}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no], - [dnl When cross-compiling, assume that only ELF platforms support - dnl weak symbols. - AC_EGREP_CPP([Extensible Linking Format], - [#ifdef __ELF__ - Extensible Linking Format - #endif - ], - [gl_cv_have_weak="guessing yes"], - [gl_cv_have_weak="guessing no"]) - ]) - fi - ]) - if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then - # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that - # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. - AC_CHECK_HEADER([pthread.h], - [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) - if test "$gl_have_pthread_h" = yes; then - # Other possible tests: - # -lpthreads (FSU threads, PCthreads) - # -lgthreads - gl_have_pthread= - # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist - # in libc. IRIX 6.5 has the first one in both libc and libpthread, but - # the second one only in libpthread, and lock.c needs it. - AC_TRY_LINK([#include ], - [pthread_mutex_lock((pthread_mutex_t*)0); - pthread_mutexattr_init((pthread_mutexattr_t*)0);], - [gl_have_pthread=yes]) - # Test for libpthread by looking for pthread_kill. (Not pthread_self, - # since it is defined as a macro on OSF/1.) - if test -n "$gl_have_pthread"; then - # The program links fine without libpthread. But it may actually - # need to link with libpthread in order to create multiple threads. - AC_CHECK_LIB([pthread], [pthread_kill], - [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread - # On Solaris and HP-UX, most pthread functions exist also in libc. - # Therefore pthread_in_use() needs to actually try to create a - # thread: pthread_create from libc will fail, whereas - # pthread_create will actually create a thread. - case "$host_os" in - solaris* | hpux*) - AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], - [Define if the pthread_in_use() detection is hard.]) - esac - ]) - else - # Some library is needed. Try libpthread and libc_r. - AC_CHECK_LIB([pthread], [pthread_kill], - [gl_have_pthread=yes - LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread - LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) - if test -z "$gl_have_pthread"; then - # For FreeBSD 4. - AC_CHECK_LIB([c_r], [pthread_kill], - [gl_have_pthread=yes - LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r - LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) - fi - fi - if test -n "$gl_have_pthread"; then - gl_threads_api=posix - AC_DEFINE([USE_POSIX_THREADS], [1], - [Define if the POSIX multithreading library can be used.]) - if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], - [Define if references to the POSIX multithreading library should be made weak.]) - LIBTHREAD= - LTLIBTHREAD= - fi - fi - fi - fi - fi - if test -z "$gl_have_pthread"; then - if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then - gl_have_solaristhread= - gl_save_LIBS="$LIBS" - LIBS="$LIBS -lthread" - AC_TRY_LINK([#include -#include ], - [thr_self();], - [gl_have_solaristhread=yes]) - LIBS="$gl_save_LIBS" - if test -n "$gl_have_solaristhread"; then - gl_threads_api=solaris - LIBTHREAD=-lthread - LTLIBTHREAD=-lthread - LIBMULTITHREAD="$LIBTHREAD" - LTLIBMULTITHREAD="$LTLIBTHREAD" - AC_DEFINE([USE_SOLARIS_THREADS], [1], - [Define if the old Solaris multithreading library can be used.]) - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], - [Define if references to the old Solaris multithreading library should be made weak.]) - LIBTHREAD= - LTLIBTHREAD= - fi - fi - fi - fi - if test "$gl_use_threads" = pth; then - gl_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_LINKFLAGS([pth]) - gl_have_pth= - gl_save_LIBS="$LIBS" - LIBS="$LIBS -lpth" - AC_TRY_LINK([#include ], [pth_self();], [gl_have_pth=yes]) - LIBS="$gl_save_LIBS" - if test -n "$gl_have_pth"; then - gl_threads_api=pth - LIBTHREAD="$LIBPTH" - LTLIBTHREAD="$LTLIBPTH" - LIBMULTITHREAD="$LIBTHREAD" - LTLIBMULTITHREAD="$LTLIBTHREAD" - AC_DEFINE([USE_PTH_THREADS], [1], - [Define if the GNU Pth multithreading library can be used.]) - if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then - if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then - AC_DEFINE([USE_PTH_THREADS_WEAK], [1], - [Define if references to the GNU Pth multithreading library should be made weak.]) - LIBTHREAD= - LTLIBTHREAD= - fi - fi - else - CPPFLAGS="$gl_save_CPPFLAGS" - fi - fi - if test -z "$gl_have_pthread"; then - if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then - if { case "$host_os" in - mingw*) true;; - *) false;; - esac - }; then - gl_threads_api=win32 - AC_DEFINE([USE_WIN32_THREADS], [1], - [Define if the Win32 multithreading API can be used.]) - fi - fi - fi - fi - AC_MSG_CHECKING([for multithread API to use]) - AC_MSG_RESULT([$gl_threads_api]) - AC_SUBST([LIBTHREAD]) - AC_SUBST([LTLIBTHREAD]) - AC_SUBST([LIBMULTITHREAD]) - AC_SUBST([LTLIBMULTITHREAD]) -]) -m4trace:/usr/share/aclocal/threadlib.m4:278: -1- AC_DEFUN([gl_THREADLIB], [ - AC_REQUIRE([gl_THREADLIB_EARLY]) - AC_REQUIRE([gl_THREADLIB_BODY]) -]) -m4trace:/usr/share/aclocal/threadlib.m4:291: -1- AC_DEFUN([gl_DISABLE_THREADS], [ - m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) -]) -m4trace:/usr/share/aclocal/uintmax_t.m4:14: -1- AC_DEFUN([gl_AC_TYPE_UINTMAX_T], [ - AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([gl_AC_HEADER_STDINT_H]) - if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then - AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) - test $ac_cv_type_unsigned_long_long_int = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], - [Define to unsigned long or unsigned long long - if and don't define.]) - else - AC_DEFINE([HAVE_UINTMAX_T], [1], - [Define if you have the 'uintmax_t' type in or .]) - fi -]) -m4trace:/usr/share/aclocal/visibility.m4:23: -1- AC_DEFUN([gl_VISIBILITY], [ - AC_REQUIRE([AC_PROG_CC]) - CFLAG_VISIBILITY= - HAVE_VISIBILITY=0 - if test -n "$GCC"; then - dnl First, check whether -Werror can be added to the command line, or - dnl whether it leads to an error because of some other option that the - dnl user has put into $CC $CFLAGS $CPPFLAGS. - AC_MSG_CHECKING([whether the -Werror option is usable]) - AC_CACHE_VAL([gl_cv_cc_vis_werror], [ - gl_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -Werror" - AC_TRY_COMPILE([], [], - [gl_cv_cc_vis_werror=yes], - [gl_cv_cc_vis_werror=no]) - CFLAGS="$gl_save_CFLAGS"]) - AC_MSG_RESULT([$gl_cv_cc_vis_werror]) - dnl Now check whether visibility declarations are supported. - AC_MSG_CHECKING([for simple visibility declarations]) - AC_CACHE_VAL([gl_cv_cc_visibility], [ - gl_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fvisibility=hidden" - dnl We use the option -Werror and a function dummyfunc, because on some - dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning - dnl "visibility attribute not supported in this configuration; ignored" - dnl at the first function definition in every compilation unit, and we - dnl don't want to use the option in this case. - if test $gl_cv_cc_vis_werror = yes; then - CFLAGS="$CFLAGS -Werror" - fi - AC_TRY_COMPILE( - [extern __attribute__((__visibility__("hidden"))) int hiddenvar; - extern __attribute__((__visibility__("default"))) int exportedvar; - extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); - extern __attribute__((__visibility__("default"))) int exportedfunc (void); - void dummyfunc (void) {}], - [], - [gl_cv_cc_visibility=yes], - [gl_cv_cc_visibility=no]) - CFLAGS="$gl_save_CFLAGS"]) - AC_MSG_RESULT([$gl_cv_cc_visibility]) - if test $gl_cv_cc_visibility = yes; then - CFLAG_VISIBILITY="-fvisibility=hidden" - HAVE_VISIBILITY=1 - fi - fi - AC_SUBST([CFLAG_VISIBILITY]) - AC_SUBST([HAVE_VISIBILITY]) - AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], - [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) -]) -m4trace:/usr/share/aclocal/wchar_t.m4:11: -1- AC_DEFUN([gt_TYPE_WCHAR_T], [ - AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], - [AC_TRY_COMPILE([#include - wchar_t foo = (wchar_t)'\0';], , - [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) - if test $gt_cv_c_wchar_t = yes; then - AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) - fi -]) -m4trace:/usr/share/aclocal/wint_t.m4:11: -1- AC_DEFUN([gt_TYPE_WINT_T], [ - AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], - [AC_TRY_COMPILE([ -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be included - before . */ -#include -#include -#include -#include - wint_t foo = (wchar_t)'\0';], , - [gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])]) - if test $gt_cv_c_wint_t = yes; then - AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) - fi -]) -m4trace:/usr/share/aclocal/xsize.m4:7: -1- AC_DEFUN([gl_XSIZE], [ - dnl Prerequisites of lib/xsize.h. - AC_REQUIRE([gl_SIZE_MAX]) - AC_REQUIRE([AC_C_INLINE]) - AC_CHECK_HEADERS([stdint.h]) -]) -m4trace:/usr/share/aclocal-1.11/amversion.m4:17: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.5], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) -m4trace:/usr/share/aclocal-1.11/amversion.m4:36: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.5])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -m4trace:/usr/share/aclocal-1.11/auxdir.m4:49: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) -m4trace:/usr/share/aclocal-1.11/ccstdc.m4:17: -1- AU_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC -AC_DIAGNOSE([obsolete], [$0: - your code should no longer depend upon `am_cv_prog_cc_stdc', but upon - `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when - you adjust the code. You can also remove the above call to - AC_PROG_CC if you already called it elsewhere.]) -am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc -]) -m4trace:/usr/share/aclocal-1.11/ccstdc.m4:17: -1- AC_DEFUN([AM_PROG_CC_STDC], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_CC_STDC' is obsolete. -You should run autoupdate.])dnl -AC_PROG_CC -AC_DIAGNOSE([obsolete], [$0: - your code should no longer depend upon `am_cv_prog_cc_stdc', but upon - `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when - you adjust the code. You can also remove the above call to - AC_PROG_CC if you already called it elsewhere.]) -am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc -]) -m4trace:/usr/share/aclocal-1.11/ccstdc.m4:26: -1- AU_DEFUN([fp_PROG_CC_STDC]) -m4trace:/usr/share/aclocal-1.11/ccstdc.m4:26: -1- AC_DEFUN([fp_PROG_CC_STDC], [AC_DIAGNOSE([obsolete], [The macro `fp_PROG_CC_STDC' is obsolete. -You should run autoupdate.])dnl -]) -m4trace:/usr/share/aclocal-1.11/cond.m4:15: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) -m4trace:/usr/share/aclocal-1.11/depend.m4:28: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - 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 - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) -m4trace:/usr/share/aclocal-1.11/depend.m4:164: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) -m4trace:/usr/share/aclocal-1.11/depend.m4:172: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) -m4trace:/usr/share/aclocal-1.11/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -]) -m4trace:/usr/share/aclocal-1.11/depout.m4:75: -1- 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"]) -]) -m4trace:/usr/share/aclocal-1.11/header.m4:12: -1- AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) -m4trace:/usr/share/aclocal-1.11/header.m4:12: -1- AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. -You should run autoupdate.])dnl -AC_CONFIG_HEADERS($@)]) -m4trace:/usr/share/aclocal-1.11/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) -m4trace:/usr/share/aclocal-1.11/init.m4:126: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -m4trace:/usr/share/aclocal-1.11/install-sh.m4:14: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) -m4trace:/usr/share/aclocal-1.11/lead-dot.m4:12: -1- 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])]) -m4trace:/usr/share/aclocal-1.11/make.m4:14: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.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 -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) -m4trace:/usr/share/aclocal-1.11/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) -m4trace:/usr/share/aclocal-1.11/missing.m4:24: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# 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 -]) -m4trace:/usr/share/aclocal-1.11/mkdirp.m4:14: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) -m4trace:/usr/share/aclocal-1.11/options.m4:14: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -m4trace:/usr/share/aclocal-1.11/options.m4:20: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) -m4trace:/usr/share/aclocal-1.11/options.m4:26: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) -m4trace:/usr/share/aclocal-1.11/options.m4:32: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -m4trace:/usr/share/aclocal-1.11/runlog.m4:14: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) -m4trace:/usr/share/aclocal-1.11/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# 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)]) -m4trace:/usr/share/aclocal-1.11/silent.m4:14: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], -[ --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0')]) -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few `make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using `$V' instead of `$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) -m4trace:/usr/share/aclocal-1.11/strip.m4:19: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) -m4trace:/usr/share/aclocal-1.11/substnot.m4:14: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) -m4trace:/usr/share/aclocal-1.11/substnot.m4:19: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) -m4trace:/usr/share/aclocal-1.11/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^_?A[CHUM]_]) -m4trace:configure.in:3: -1- m4_pattern_forbid([_AC_]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) -m4trace:configure.in:3: -1- m4_pattern_allow([^AS_FLAGS$]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^_?m4_]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^dnl$]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^_?AS_]) -m4trace:configure.in:3: -1- m4_pattern_allow([^SHELL$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PATH_SEPARATOR$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^exec_prefix$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^prefix$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^program_transform_name$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^bindir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^sbindir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^libexecdir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^datarootdir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^datadir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^sysconfdir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^sharedstatedir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^localstatedir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^includedir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^oldincludedir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^docdir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^infodir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^htmldir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^dvidir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^pdfdir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^psdir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^libdir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^localedir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^mandir$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^DEFS$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^ECHO_C$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^ECHO_N$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^ECHO_T$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^build_alias$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^host_alias$]) -m4trace:configure.in:3: -1- m4_pattern_allow([^target_alias$]) -m4trace:configure.in:4: -1- AM_INIT_AUTOMAKE([gsat], [0.1]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) -m4trace:configure.in:4: -1- AM_SET_CURRENT_AUTOMAKE_VERSION -m4trace:configure.in:4: -1- AM_AUTOMAKE_VERSION([1.11.5]) -m4trace:configure.in:4: -1- _AM_AUTOCONF_VERSION([2.69]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_DATA$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^am__isrc$]) -m4trace:configure.in:4: -1- _AM_SUBST_NOTMAKE([am__isrc]) -m4trace:configure.in:4: -1- m4_pattern_allow([^CYGPATH_W$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.in:4: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) -m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([no-define]) -m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.in:4: -1- AM_SANITY_CHECK -m4trace:configure.in:4: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -m4trace:configure.in:4: -1- AM_MISSING_HAS_RUN -m4trace:configure.in:4: -1- AM_AUX_DIR_EXPAND -m4trace:configure.in:4: -1- m4_pattern_allow([^ACLOCAL$]) -m4trace:configure.in:4: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOCONF$]) -m4trace:configure.in:4: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOMAKE$]) -m4trace:configure.in:4: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOHEADER$]) -m4trace:configure.in:4: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) -m4trace:configure.in:4: -1- m4_pattern_allow([^MAKEINFO$]) -m4trace:configure.in:4: -1- AM_PROG_INSTALL_SH -m4trace:configure.in:4: -1- m4_pattern_allow([^install_sh$]) -m4trace:configure.in:4: -1- AM_PROG_INSTALL_STRIP -m4trace:configure.in:4: -1- m4_pattern_allow([^STRIP$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) -m4trace:configure.in:4: -1- AM_PROG_MKDIR_P -m4trace:configure.in:4: -1- m4_pattern_allow([^MKDIR_P$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^mkdir_p$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AWK$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^SET_MAKE$]) -m4trace:configure.in:4: -1- AM_SET_LEADING_DOT -m4trace:configure.in:4: -1- m4_pattern_allow([^am__leading_dot$]) -m4trace:configure.in:4: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([tar-ustar]) -m4trace:configure.in:4: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) -m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([tar-pax]) -m4trace:configure.in:4: -1- _AM_PROG_TAR([v7]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AMTAR$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^am__tar$]) -m4trace:configure.in:4: -1- m4_pattern_allow([^am__untar$]) -m4trace:configure.in:4: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([no-dependencies]) -m4trace:configure.in:4: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])]) -m4trace:configure.in:4: -2- _AM_MANGLE_OPTION([silent-rules]) -m4trace:configure.in:5: -1- AM_CONFIG_HEADER([config.h]) -m4trace:configure.in:5: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. -You should run autoupdate.], [/usr/share/aclocal-1.11/header.m4:12: AM_CONFIG_HEADER is expanded from... -configure.in:5: the top level]) -m4trace:configure.in:7: -1- _m4_warn([obsolete], [The macro `AC_ISC_POSIX' is obsolete. -You should run autoupdate.], [../../lib/autoconf/specific.m4:446: AC_ISC_POSIX is expanded from... -configure.in:7: the top level]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^EXEEXT$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^OBJEXT$]) -m4trace:configure.in:7: -1- _AM_DEPENDENCIES([CC]) -m4trace:configure.in:7: -1- AM_SET_DEPDIR -m4trace:configure.in:7: -1- m4_pattern_allow([^DEPDIR$]) -m4trace:configure.in:7: -1- AM_OUTPUT_DEPENDENCY_COMMANDS -m4trace:configure.in:7: -1- AM_MAKE_INCLUDE -m4trace:configure.in:7: -1- m4_pattern_allow([^am__include$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__quote$]) -m4trace:configure.in:7: -1- AM_DEP_TRACK -m4trace:configure.in:7: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -m4trace:configure.in:7: -1- m4_pattern_allow([^AMDEP_TRUE$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^AMDEP_FALSE$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) -m4trace:configure.in:7: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__nodep$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([am__nodep]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.in:7: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.in:8: -1- _AM_DEPENDENCIES([CC]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.in:8: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.in:9: -1- AM_PROG_CC_STDC -m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AM_PROG_CC_STDC' is obsolete. -You should run autoupdate.], [/usr/share/aclocal-1.11/ccstdc.m4:17: AM_PROG_CC_STDC is expanded from... -configure.in:9: the top level]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.in:9: -1- _AM_DEPENDENCIES([CC]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.in:9: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.in:9: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.in:9: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.in:9: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.in:9: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.in:9: -1- _m4_warn([obsolete], [AM_PROG_CC_STDC: - your code should no longer depend upon `am_cv_prog_cc_stdc', but upon - `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when - you adjust the code. You can also remove the above call to - AC_PROG_CC if you already called it elsewhere.], [/usr/share/aclocal-1.11/ccstdc.m4:17: AM_PROG_CC_STDC is expanded from... -configure.in:9: the top level]) -m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.in:10: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.in:10: -1- m4_pattern_allow([^GREP$]) -m4trace:configure.in:10: -1- m4_pattern_allow([^EGREP$]) -m4trace:configure.in:10: -1- m4_pattern_allow([^STDC_HEADERS$]) -m4trace:configure.in:12: -1- AM_PATH_GTK([1.2.0], [], [as_fn_error $? "Cannot find GTK: Is gtk-config in path?" "$LINENO" 5]) -m4trace:configure.in:12: -1- m4_pattern_allow([^GTK_CONFIG$]) -m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -/usr/share/aclocal/gtk.m4:7: AM_PATH_GTK is expanded from... -configure.in:12: the top level]) -m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -/usr/share/aclocal/gtk.m4:7: AM_PATH_GTK is expanded from... -configure.in:12: the top level]) -m4trace:configure.in:12: -1- m4_pattern_allow([^GTK_CFLAGS$]) -m4trace:configure.in:12: -1- m4_pattern_allow([^GTK_LIBS$]) -m4trace:configure.in:17: -1- AM_GNU_GETTEXT -m4trace:configure.in:17: -1- _m4_warn([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.], [/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AM_GNU_GETTEXT_NEED([]) -m4trace:configure.in:17: -1- AM_PO_SUBDIRS -m4trace:configure.in:17: -1- AM_NLS -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_NLS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) -m4trace:configure.in:17: -1- AM_PATH_PROG_WITH_TEST([MSGFMT], [msgfmt], [$ac_dir/$ac_word --statistics /dev/null >&5 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)], [:]) -m4trace:configure.in:17: -1- m4_pattern_allow([^MSGFMT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GMSGFMT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^MSGFMT_015$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GMSGFMT_015$]) -m4trace:configure.in:17: -1- AM_PATH_PROG_WITH_TEST([XGETTEXT], [xgettext], [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], [:]) -m4trace:configure.in:17: -1- m4_pattern_allow([^XGETTEXT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^XGETTEXT_015$]) -m4trace:configure.in:17: -1- AM_PATH_PROG_WITH_TEST([MSGMERGE], [msgmerge], [$ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1], [:]) -m4trace:configure.in:17: -1- m4_pattern_allow([^MSGMERGE$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^localedir$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) -m4trace:configure.in:17: -1- AM_INTL_SUBDIR -m4trace:configure.in:17: -1- m4_pattern_allow([^build$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^build_cpu$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^build_vendor$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^build_os$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host_cpu$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host_vendor$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host_os$]) -m4trace:configure.in:17: -1- gt_GLIBC2 -m4trace:configure.in:17: -1- m4_pattern_allow([^GLIBC2$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^RANLIB$]) -m4trace:configure.in:17: -1- gl_VISIBILITY -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -/usr/share/aclocal/visibility.m4:23: gl_VISIBILITY is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -/usr/share/aclocal/visibility.m4:23: gl_VISIBILITY is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^CFLAG_VISIBILITY$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_VISIBILITY$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_VISIBILITY$]) -m4trace:configure.in:17: -1- gt_INTL_SUBDIR_CORE -m4trace:configure.in:17: -1- m4_pattern_allow([^size_t$]) -m4trace:configure.in:17: -1- gl_AC_HEADER_STDINT_H -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/stdint_h.m4:12: gl_AC_HEADER_STDINT_H is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ALLOCA$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ALLOCA$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^C_ALLOCA$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^CRAY_STACKSEG_END$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^STACK_DIRECTION$]) -m4trace:configure.in:17: -1- AC_DEFUN([_AC_Header_stdlib_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" stdlib.h"])]) -_AC_HEADERS_EXPANSION]) -m4trace:configure.in:17: -1- AC_DEFUN([_AC_Header_unistd_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" unistd.h"])]) -_AC_HEADERS_EXPANSION]) -m4trace:configure.in:17: -1- AC_DEFUN([_AC_Header_sys_param_h], [m4_divert_text([INIT_PREPARE], [AS_VAR_APPEND([ac_header_list], [" sys/param.h"])]) -_AC_HEADERS_EXPANSION]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_MMAP$]) -m4trace:configure.in:17: -1- gt_INTDIV0 -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intdiv0.m4:9: gt_INTDIV0 is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$]) -m4trace:configure.in:17: -1- gl_AC_TYPE_UINTMAX_T -m4trace:configure.in:17: -1- gl_AC_HEADER_INTTYPES_H -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/inttypes_h.m4:12: gl_AC_HEADER_INTTYPES_H is expanded from... -/usr/share/aclocal/uintmax_t.m4:14: gl_AC_TYPE_UINTMAX_T is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$]) -m4trace:configure.in:17: -1- AC_TYPE_UNSIGNED_LONG_LONG_INT -m4trace:configure.in:17: -1- _AC_TYPE_LONG_LONG_SNIPPET -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^uintmax_t$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) -m4trace:configure.in:17: -1- gt_INTTYPES_PRI -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_INTTYPES_H$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/inttypes-pri.m4:14: gt_INTTYPES_PRI is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$]) -m4trace:configure.in:17: -1- gl_LOCK -m4trace:configure.in:17: -1- gl_THREADLIB -m4trace:configure.in:17: -1- gl_THREADLIB_EARLY -m4trace:configure.in:17: -1- gl_THREADLIB_EARLY_BODY -m4trace:configure.in:17: -1- _m4_warn([syntax], [AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS], [/usr/share/aclocal/threadlib.m4:31: gl_THREADLIB_EARLY_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:24: gl_THREADLIB_EARLY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([syntax], [AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS], [/usr/share/aclocal/threadlib.m4:31: gl_THREADLIB_EARLY_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:24: gl_THREADLIB_EARLY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_POSIX_SOURCE$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_MINIX$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^__EXTENSIONS__$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_ALL_SOURCE$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_GNU_SOURCE$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) -m4trace:configure.in:17: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... -/usr/share/aclocal/threadlib.m4:31: gl_THREADLIB_EARLY_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:24: gl_THREADLIB_EARLY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... -/usr/share/aclocal/threadlib.m4:31: gl_THREADLIB_EARLY_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:24: gl_THREADLIB_EARLY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- gl_THREADLIB_BODY -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/threadlib.m4:100: gl_THREADLIB_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/threadlib.m4:100: gl_THREADLIB_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -/usr/share/aclocal/threadlib.m4:100: gl_THREADLIB_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^PTHREAD_IN_USE_DETECTION_HARD$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_POSIX_THREADS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_POSIX_THREADS_WEAK$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -/usr/share/aclocal/threadlib.m4:100: gl_THREADLIB_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_SOLARIS_THREADS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_SOLARIS_THREADS_WEAK$]) -m4trace:configure.in:17: -1- AC_LIB_LINKFLAGS([pth]) -m4trace:configure.in:17: -1- AC_LIB_PREPARE_PREFIX -m4trace:configure.in:17: -1- AC_LIB_RPATH -m4trace:configure.in:17: -1- AC_LIB_PROG_LD -m4trace:configure.in:17: -1- AC_LIB_PROG_LD_GNU -m4trace:configure.in:17: -1- AC_LIB_LINKFLAGS_BODY([pth], []) -m4trace:configure.in:17: -1- AC_LIB_PREPARE_MULTILIB -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCPTH]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBPTH$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBPTH$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBPTH_PREFIX$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -/usr/share/aclocal/threadlib.m4:100: gl_THREADLIB_BODY is expanded from... -/usr/share/aclocal/threadlib.m4:278: gl_THREADLIB is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_PTH_THREADS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_PTH_THREADS_WEAK$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_WIN32_THREADS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBTHREAD$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBTHREAD$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBMULTITHREAD$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBMULTITHREAD$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_PTHREAD_RWLOCK$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -/usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_PTHREAD_MUTEX_RECURSIVE$]) -m4trace:configure.in:17: -1- gl_PREREQ_LOCK -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_BUILTIN_EXPECT$]) -m4trace:configure.in:17: -1- gt_CHECK_DECL([feof_unlocked], [#include ]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intl.m4:279: gt_CHECK_DECL is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL_FEOF_UNLOCKED$]) -m4trace:configure.in:17: -1- gt_CHECK_DECL([fgets_unlocked], [#include ]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intl.m4:279: gt_CHECK_DECL is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL_FGETS_UNLOCKED$]) -m4trace:configure.in:17: -1- AM_ICONV -m4trace:configure.in:17: -1- AM_ICONV_LINK -m4trace:configure.in:17: -1- AM_ICONV_LINKFLAGS_BODY -m4trace:configure.in:17: -1- AC_LIB_LINKFLAGS_BODY([iconv]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/iconv.m4:20: AM_ICONV_LINK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/iconv.m4:20: AM_ICONV_LINK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/iconv.m4:20: AM_ICONV_LINK is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ICONV$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBICONV$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBICONV$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -/usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ICONV_CONST$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTLBISON$]) -m4trace:configure.in:17: -1- AC_TYPE_LONG_LONG_INT -m4trace:configure.in:17: -1- _AC_TYPE_LONG_LONG_SNIPPET -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) -m4trace:configure.in:17: -1- gt_TYPE_WCHAR_T -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/wchar_t.m4:11: gt_TYPE_WCHAR_T is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WCHAR_T$]) -m4trace:configure.in:17: -1- gt_TYPE_WINT_T -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/wint_t.m4:11: gt_TYPE_WINT_T is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WINT_T$]) -m4trace:configure.in:17: -1- gt_TYPE_INTMAX_T -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intmax.m4:11: gt_TYPE_INTMAX_T is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) -m4trace:configure.in:17: -1- gt_PRINTF_POSIX -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/printf-posix.m4:11: gt_PRINTF_POSIX is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_POSIX_PRINTF$]) -m4trace:configure.in:17: -1- gl_GLIBC21 -m4trace:configure.in:17: -1- m4_pattern_allow([^GLIBC21$]) -m4trace:configure.in:17: -1- gl_XSIZE -m4trace:configure.in:17: -1- gl_SIZE_MAX -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_STDINT_H$]) -m4trace:configure.in:17: -1- AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], [#include -#include ], [size_t_bits_minus_1=]) -m4trace:configure.in:17: -1- AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], [#include ], [fits_in_uint=]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/size_max.m4:9: gl_SIZE_MAX is expanded from... -/usr/share/aclocal/xsize.m4:7: gl_XSIZE is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^SIZE_MAX$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_STDINT_H$]) -m4trace:configure.in:17: -1- gl_FCNTL_O_FLAGS -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WORKING_O_NOATIME$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WORKING_O_NOFOLLOW$]) -m4trace:configure.in:17: -1- gt_INTL_MACOSX -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_DEFAULT_VERBOSITY$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ptrdiff_t$]) -m4trace:configure.in:17: -1- gt_CHECK_DECL([_snprintf], [#include ]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intl.m4:279: gt_CHECK_DECL is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL__SNPRINTF$]) -m4trace:configure.in:17: -1- gt_CHECK_DECL([_snwprintf], [#include ]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intl.m4:279: gt_CHECK_DECL is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL__SNWPRINTF$]) -m4trace:configure.in:17: -1- gt_CHECK_DECL([getc_unlocked], [#include ]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intl.m4:279: gt_CHECK_DECL is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL_GETC_UNLOCKED$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_POSIX_PRINTF$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ASPRINTF$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_SNPRINTF$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_NEWLOCALE$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WPRINTF$]) -m4trace:configure.in:17: -1- AM_LANGINFO_CODESET -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/codeset.m4:9: AM_LANGINFO_CODESET is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$]) -m4trace:configure.in:17: -1- gt_LC_MESSAGES -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/lcmessage.m4:22: gt_LC_MESSAGES is expanded from... -/usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^WOE32DLL$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^WOE32$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^WINDRES$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBC$]) -m4trace:configure.in:17: -1- gt_INTL_MACOSX -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/intlmacosx.m4:18: gt_INTL_MACOSX is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_LIB_LINKFLAGS_BODY([intl]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -/usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ENABLE_NLS$]) -m4trace:configure.in:17: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) -m4trace:configure.in:17: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_GETTEXT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^BUILD_INCLUDED_LIBINTL$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_INCLUDED_LIBINTL$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^CATOBJEXT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^DATADIRNAME$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INSTOBJEXT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GENCAT$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTLOBJS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_LIBTOOL_SUFFIX_PREFIX$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTLLIBS$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBINTL$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBINTL$]) -m4trace:configure.in:17: -1- m4_pattern_allow([^POSUB$]) -m4trace:configure.in:21: -1- m4_pattern_allow([^PACKAGE_LOCALE_DIR$]) -m4trace:configure.in:23: -1- m4_pattern_allow([^PACKAGE_LOCALE_DIR$]) -m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_DATA_DIR$]) -m4trace:configure.in:31: -1- m4_pattern_allow([^PACKAGE_DATA_DIR$]) -m4trace:configure.in:34: -1- m4_pattern_allow([^PACKAGE_DATA_DIR$]) -m4trace:configure.in:39: -1- m4_pattern_allow([^PACKAGE_SOURCE_DIR$]) -m4trace:configure.in:51: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. -You should run autoupdate.], []) -m4trace:configure.in:51: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:51: -1- m4_pattern_allow([^LTLIBOBJS$]) -m4trace:configure.in:51: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) -m4trace:configure.in:51: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) -m4trace:configure.in:51: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) -m4trace:configure.in:51: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) -m4trace:configure.in:51: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) -m4trace:configure.in:51: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) -m4trace:configure.in:51: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS diff --git a/clients/gsat-1.1.0/autom4te.cache/traces.1 b/clients/gsat-1.1.0/autom4te.cache/traces.1 deleted file mode 100644 index 22c17f5..0000000 --- a/clients/gsat-1.1.0/autom4te.cache/traces.1 +++ /dev/null @@ -1,1485 +0,0 @@ -m4trace:configure.in:3: -1- AC_INIT([configure.in]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^_?A[CHUM]_]) -m4trace:configure.in:3: -1- m4_pattern_forbid([_AC_]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) -m4trace:configure.in:3: -1- m4_pattern_allow([^AS_FLAGS$]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^_?m4_]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^dnl$]) -m4trace:configure.in:3: -1- m4_pattern_forbid([^_?AS_]) -m4trace:configure.in:3: -1- AC_SUBST([SHELL]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([SHELL]) -m4trace:configure.in:3: -1- m4_pattern_allow([^SHELL$]) -m4trace:configure.in:3: -1- AC_SUBST([PATH_SEPARATOR]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PATH_SEPARATOR$]) -m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([PACKAGE_NAME]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([PACKAGE_STRING]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.in:3: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([PACKAGE_URL]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.in:3: -1- AC_SUBST([exec_prefix], [NONE]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([exec_prefix]) -m4trace:configure.in:3: -1- m4_pattern_allow([^exec_prefix$]) -m4trace:configure.in:3: -1- AC_SUBST([prefix], [NONE]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([prefix]) -m4trace:configure.in:3: -1- m4_pattern_allow([^prefix$]) -m4trace:configure.in:3: -1- AC_SUBST([program_transform_name], [s,x,x,]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([program_transform_name]) -m4trace:configure.in:3: -1- m4_pattern_allow([^program_transform_name$]) -m4trace:configure.in:3: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([bindir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^bindir$]) -m4trace:configure.in:3: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([sbindir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^sbindir$]) -m4trace:configure.in:3: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([libexecdir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^libexecdir$]) -m4trace:configure.in:3: -1- AC_SUBST([datarootdir], ['${prefix}/share']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([datarootdir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^datarootdir$]) -m4trace:configure.in:3: -1- AC_SUBST([datadir], ['${datarootdir}']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([datadir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^datadir$]) -m4trace:configure.in:3: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([sysconfdir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^sysconfdir$]) -m4trace:configure.in:3: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([sharedstatedir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^sharedstatedir$]) -m4trace:configure.in:3: -1- AC_SUBST([localstatedir], ['${prefix}/var']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([localstatedir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^localstatedir$]) -m4trace:configure.in:3: -1- AC_SUBST([includedir], ['${prefix}/include']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([includedir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^includedir$]) -m4trace:configure.in:3: -1- AC_SUBST([oldincludedir], ['/usr/include']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([oldincludedir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^oldincludedir$]) -m4trace:configure.in:3: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], - ['${datarootdir}/doc/${PACKAGE_TARNAME}'], - ['${datarootdir}/doc/${PACKAGE}'])]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([docdir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^docdir$]) -m4trace:configure.in:3: -1- AC_SUBST([infodir], ['${datarootdir}/info']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([infodir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^infodir$]) -m4trace:configure.in:3: -1- AC_SUBST([htmldir], ['${docdir}']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([htmldir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^htmldir$]) -m4trace:configure.in:3: -1- AC_SUBST([dvidir], ['${docdir}']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([dvidir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^dvidir$]) -m4trace:configure.in:3: -1- AC_SUBST([pdfdir], ['${docdir}']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([pdfdir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^pdfdir$]) -m4trace:configure.in:3: -1- AC_SUBST([psdir], ['${docdir}']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([psdir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^psdir$]) -m4trace:configure.in:3: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([libdir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^libdir$]) -m4trace:configure.in:3: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([localedir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^localedir$]) -m4trace:configure.in:3: -1- AC_SUBST([mandir], ['${datarootdir}/man']) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([mandir]) -m4trace:configure.in:3: -1- m4_pattern_allow([^mandir$]) -m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_NAME$]) -m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ -@%:@undef PACKAGE_NAME]) -m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ -@%:@undef PACKAGE_TARNAME]) -m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ -@%:@undef PACKAGE_VERSION]) -m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_STRING$]) -m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ -@%:@undef PACKAGE_STRING]) -m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ -@%:@undef PACKAGE_BUGREPORT]) -m4trace:configure.in:3: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) -m4trace:configure.in:3: -1- m4_pattern_allow([^PACKAGE_URL$]) -m4trace:configure.in:3: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ -@%:@undef PACKAGE_URL]) -m4trace:configure.in:3: -1- AC_SUBST([DEFS]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([DEFS]) -m4trace:configure.in:3: -1- m4_pattern_allow([^DEFS$]) -m4trace:configure.in:3: -1- AC_SUBST([ECHO_C]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([ECHO_C]) -m4trace:configure.in:3: -1- m4_pattern_allow([^ECHO_C$]) -m4trace:configure.in:3: -1- AC_SUBST([ECHO_N]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([ECHO_N]) -m4trace:configure.in:3: -1- m4_pattern_allow([^ECHO_N$]) -m4trace:configure.in:3: -1- AC_SUBST([ECHO_T]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([ECHO_T]) -m4trace:configure.in:3: -1- m4_pattern_allow([^ECHO_T$]) -m4trace:configure.in:3: -1- AC_SUBST([LIBS]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.in:3: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:3: -1- AC_SUBST([build_alias]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([build_alias]) -m4trace:configure.in:3: -1- m4_pattern_allow([^build_alias$]) -m4trace:configure.in:3: -1- AC_SUBST([host_alias]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([host_alias]) -m4trace:configure.in:3: -1- m4_pattern_allow([^host_alias$]) -m4trace:configure.in:3: -1- AC_SUBST([target_alias]) -m4trace:configure.in:3: -1- AC_SUBST_TRACE([target_alias]) -m4trace:configure.in:3: -1- m4_pattern_allow([^target_alias$]) -m4trace:configure.in:4: -1- AM_INIT_AUTOMAKE([gsat], [0.1]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) -m4trace:configure.in:4: -1- AM_AUTOMAKE_VERSION([1.11.5]) -m4trace:configure.in:4: -1- AC_REQUIRE_AUX_FILE([install-sh]) -m4trace:configure.in:4: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) -m4trace:configure.in:4: -1- AC_SUBST([INSTALL_SCRIPT]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) -m4trace:configure.in:4: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_DATA]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_DATA$]) -m4trace:configure.in:4: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__isrc]) -m4trace:configure.in:4: -1- m4_pattern_allow([^am__isrc$]) -m4trace:configure.in:4: -1- _AM_SUBST_NOTMAKE([am__isrc]) -m4trace:configure.in:4: -1- AC_SUBST([CYGPATH_W]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([CYGPATH_W]) -m4trace:configure.in:4: -1- m4_pattern_allow([^CYGPATH_W$]) -m4trace:configure.in:4: -1- AC_SUBST([PACKAGE], [gsat]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([PACKAGE]) -m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.in:4: -1- AC_SUBST([VERSION], [0.1]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([VERSION]) -m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) -m4trace:configure.in:4: -1- m4_pattern_allow([^PACKAGE$]) -m4trace:configure.in:4: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ -@%:@undef PACKAGE]) -m4trace:configure.in:4: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) -m4trace:configure.in:4: -1- m4_pattern_allow([^VERSION$]) -m4trace:configure.in:4: -1- AH_OUTPUT([VERSION], [/* Version number of package */ -@%:@undef VERSION]) -m4trace:configure.in:4: -1- AC_REQUIRE_AUX_FILE([missing]) -m4trace:configure.in:4: -1- AC_SUBST([ACLOCAL]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([ACLOCAL]) -m4trace:configure.in:4: -1- m4_pattern_allow([^ACLOCAL$]) -m4trace:configure.in:4: -1- AC_SUBST([AUTOCONF]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([AUTOCONF]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOCONF$]) -m4trace:configure.in:4: -1- AC_SUBST([AUTOMAKE]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([AUTOMAKE]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOMAKE$]) -m4trace:configure.in:4: -1- AC_SUBST([AUTOHEADER]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([AUTOHEADER]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AUTOHEADER$]) -m4trace:configure.in:4: -1- AC_SUBST([MAKEINFO]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([MAKEINFO]) -m4trace:configure.in:4: -1- m4_pattern_allow([^MAKEINFO$]) -m4trace:configure.in:4: -1- AC_SUBST([install_sh]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([install_sh]) -m4trace:configure.in:4: -1- m4_pattern_allow([^install_sh$]) -m4trace:configure.in:4: -1- AC_SUBST([STRIP]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([STRIP]) -m4trace:configure.in:4: -1- m4_pattern_allow([^STRIP$]) -m4trace:configure.in:4: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) -m4trace:configure.in:4: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) -m4trace:configure.in:4: -1- AC_REQUIRE_AUX_FILE([install-sh]) -m4trace:configure.in:4: -1- AC_SUBST([MKDIR_P]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([MKDIR_P]) -m4trace:configure.in:4: -1- m4_pattern_allow([^MKDIR_P$]) -m4trace:configure.in:4: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([mkdir_p]) -m4trace:configure.in:4: -1- m4_pattern_allow([^mkdir_p$]) -m4trace:configure.in:4: -1- AC_SUBST([AWK]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([AWK]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AWK$]) -m4trace:configure.in:4: -1- AC_SUBST([SET_MAKE]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([SET_MAKE]) -m4trace:configure.in:4: -1- m4_pattern_allow([^SET_MAKE$]) -m4trace:configure.in:4: -1- AC_SUBST([am__leading_dot]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__leading_dot]) -m4trace:configure.in:4: -1- m4_pattern_allow([^am__leading_dot$]) -m4trace:configure.in:4: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([AMTAR]) -m4trace:configure.in:4: -1- m4_pattern_allow([^AMTAR$]) -m4trace:configure.in:4: -1- AC_SUBST([am__tar]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__tar]) -m4trace:configure.in:4: -1- m4_pattern_allow([^am__tar$]) -m4trace:configure.in:4: -1- AC_SUBST([am__untar]) -m4trace:configure.in:4: -1- AC_SUBST_TRACE([am__untar]) -m4trace:configure.in:4: -1- m4_pattern_allow([^am__untar$]) -m4trace:configure.in:5: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. -You should run autoupdate.], [aclocal.m4:4473: AM_CONFIG_HEADER is expanded from... -configure.in:5: the top level]) -m4trace:configure.in:5: -1- AC_CONFIG_HEADERS([config.h]) -m4trace:configure.in:7: -1- _m4_warn([obsolete], [The macro `AC_ISC_POSIX' is obsolete. -You should run autoupdate.], [../../lib/autoconf/specific.m4:446: AC_ISC_POSIX is expanded from... -configure.in:7: the top level]) -m4trace:configure.in:7: -1- AC_SUBST([CC]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- AC_SUBST([CFLAGS]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CFLAGS]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.in:7: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([LDFLAGS]) -m4trace:configure.in:7: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.in:7: -1- AC_SUBST([LIBS]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.in:7: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:7: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:7: -1- AC_SUBST([CC]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- AC_SUBST([CC]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- AC_SUBST([CC]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- AC_SUBST([CC]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:7: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([ac_ct_CC]) -m4trace:configure.in:7: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.in:7: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([EXEEXT]) -m4trace:configure.in:7: -1- m4_pattern_allow([^EXEEXT$]) -m4trace:configure.in:7: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([OBJEXT]) -m4trace:configure.in:7: -1- m4_pattern_allow([^OBJEXT$]) -m4trace:configure.in:7: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([DEPDIR]) -m4trace:configure.in:7: -1- m4_pattern_allow([^DEPDIR$]) -m4trace:configure.in:7: -1- AC_SUBST([am__include]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([am__include]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__include$]) -m4trace:configure.in:7: -1- AC_SUBST([am__quote]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([am__quote]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__quote$]) -m4trace:configure.in:7: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -m4trace:configure.in:7: -1- AC_SUBST([AMDEP_TRUE]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([AMDEP_TRUE]) -m4trace:configure.in:7: -1- m4_pattern_allow([^AMDEP_TRUE$]) -m4trace:configure.in:7: -1- AC_SUBST([AMDEP_FALSE]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([AMDEP_FALSE]) -m4trace:configure.in:7: -1- m4_pattern_allow([^AMDEP_FALSE$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) -m4trace:configure.in:7: -1- AC_SUBST([AMDEPBACKSLASH]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) -m4trace:configure.in:7: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) -m4trace:configure.in:7: -1- AC_SUBST([am__nodep]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([am__nodep]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__nodep$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([am__nodep]) -m4trace:configure.in:7: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([CCDEPMODE]) -m4trace:configure.in:7: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.in:7: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.in:7: -1- AC_SUBST([am__fastdepCC_TRUE]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.in:7: -1- AC_SUBST([am__fastdepCC_FALSE]) -m4trace:configure.in:7: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) -m4trace:configure.in:7: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.in:7: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.in:8: -1- AC_SUBST([CC]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- AC_SUBST([CFLAGS]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CFLAGS]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.in:8: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([LDFLAGS]) -m4trace:configure.in:8: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.in:8: -1- AC_SUBST([LIBS]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.in:8: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:8: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:8: -1- AC_SUBST([CC]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- AC_SUBST([CC]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- AC_SUBST([CC]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- AC_SUBST([CC]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:8: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([ac_ct_CC]) -m4trace:configure.in:8: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.in:8: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([CCDEPMODE]) -m4trace:configure.in:8: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.in:8: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.in:8: -1- AC_SUBST([am__fastdepCC_TRUE]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) -m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.in:8: -1- AC_SUBST([am__fastdepCC_FALSE]) -m4trace:configure.in:8: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) -m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.in:9: -1- _m4_warn([obsolete], [The macro `AM_PROG_CC_STDC' is obsolete. -You should run autoupdate.], [aclocal.m4:4150: AM_PROG_CC_STDC is expanded from... -configure.in:9: the top level]) -m4trace:configure.in:9: -1- AC_SUBST([CC]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- AC_SUBST([CFLAGS]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CFLAGS]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CFLAGS$]) -m4trace:configure.in:9: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([LDFLAGS]) -m4trace:configure.in:9: -1- m4_pattern_allow([^LDFLAGS$]) -m4trace:configure.in:9: -1- AC_SUBST([LIBS]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([LIBS]) -m4trace:configure.in:9: -1- m4_pattern_allow([^LIBS$]) -m4trace:configure.in:9: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:9: -1- AC_SUBST([CC]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- AC_SUBST([CC]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- AC_SUBST([CC]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- AC_SUBST([CC]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CC]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CC$]) -m4trace:configure.in:9: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([ac_ct_CC]) -m4trace:configure.in:9: -1- m4_pattern_allow([^ac_ct_CC$]) -m4trace:configure.in:9: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([CCDEPMODE]) -m4trace:configure.in:9: -1- m4_pattern_allow([^CCDEPMODE$]) -m4trace:configure.in:9: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.in:9: -1- AC_SUBST([am__fastdepCC_TRUE]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) -m4trace:configure.in:9: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) -m4trace:configure.in:9: -1- AC_SUBST([am__fastdepCC_FALSE]) -m4trace:configure.in:9: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) -m4trace:configure.in:9: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) -m4trace:configure.in:9: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) -m4trace:configure.in:9: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) -m4trace:configure.in:9: -1- _m4_warn([obsolete], [AM_PROG_CC_STDC: - your code should no longer depend upon `am_cv_prog_cc_stdc', but upon - `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when - you adjust the code. You can also remove the above call to - AC_PROG_CC if you already called it elsewhere.], [aclocal.m4:4150: AM_PROG_CC_STDC is expanded from... -configure.in:9: the top level]) -m4trace:configure.in:10: -1- AC_SUBST([CPP]) -m4trace:configure.in:10: -1- AC_SUBST_TRACE([CPP]) -m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.in:10: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.in:10: -1- AC_SUBST_TRACE([CPPFLAGS]) -m4trace:configure.in:10: -1- m4_pattern_allow([^CPPFLAGS$]) -m4trace:configure.in:10: -1- AC_SUBST([CPP]) -m4trace:configure.in:10: -1- AC_SUBST_TRACE([CPP]) -m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) -m4trace:configure.in:10: -1- AC_SUBST([GREP]) -m4trace:configure.in:10: -1- AC_SUBST_TRACE([GREP]) -m4trace:configure.in:10: -1- m4_pattern_allow([^GREP$]) -m4trace:configure.in:10: -1- AC_SUBST([EGREP]) -m4trace:configure.in:10: -1- AC_SUBST_TRACE([EGREP]) -m4trace:configure.in:10: -1- m4_pattern_allow([^EGREP$]) -m4trace:configure.in:10: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -m4trace:configure.in:10: -1- m4_pattern_allow([^STDC_HEADERS$]) -m4trace:configure.in:10: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ -@%:@undef STDC_HEADERS]) -m4trace:configure.in:12: -1- AC_SUBST([GTK_CONFIG]) -m4trace:configure.in:12: -1- AC_SUBST_TRACE([GTK_CONFIG]) -m4trace:configure.in:12: -1- m4_pattern_allow([^GTK_CONFIG$]) -m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -aclocal.m4:579: AM_PATH_GTK is expanded from... -configure.in:12: the top level]) -m4trace:configure.in:12: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -aclocal.m4:579: AM_PATH_GTK is expanded from... -configure.in:12: the top level]) -m4trace:configure.in:12: -1- AC_SUBST([GTK_CFLAGS]) -m4trace:configure.in:12: -1- AC_SUBST_TRACE([GTK_CFLAGS]) -m4trace:configure.in:12: -1- m4_pattern_allow([^GTK_CFLAGS$]) -m4trace:configure.in:12: -1- AC_SUBST([GTK_LIBS]) -m4trace:configure.in:12: -1- AC_SUBST_TRACE([GTK_LIBS]) -m4trace:configure.in:12: -1- m4_pattern_allow([^GTK_LIBS$]) -m4trace:configure.in:17: -1- AM_GNU_GETTEXT -m4trace:configure.in:17: -1- _m4_warn([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.], [aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AM_NLS -m4trace:configure.in:17: -1- AC_SUBST([USE_NLS]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([USE_NLS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_NLS$]) -m4trace:configure.in:17: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) -m4trace:configure.in:17: -1- AC_SUBST([MSGFMT]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([MSGFMT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^MSGFMT$]) -m4trace:configure.in:17: -1- AC_SUBST([GMSGFMT]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([GMSGFMT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GMSGFMT$]) -m4trace:configure.in:17: -1- AC_SUBST([MSGFMT_015]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([MSGFMT_015]) -m4trace:configure.in:17: -1- m4_pattern_allow([^MSGFMT_015$]) -m4trace:configure.in:17: -1- AC_SUBST([GMSGFMT_015]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([GMSGFMT_015]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GMSGFMT_015$]) -m4trace:configure.in:17: -1- AC_SUBST([XGETTEXT]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([XGETTEXT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^XGETTEXT$]) -m4trace:configure.in:17: -1- AC_SUBST([XGETTEXT_015]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([XGETTEXT_015]) -m4trace:configure.in:17: -1- m4_pattern_allow([^XGETTEXT_015$]) -m4trace:configure.in:17: -1- AC_SUBST([MSGMERGE]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([MSGMERGE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^MSGMERGE$]) -m4trace:configure.in:17: -1- AC_SUBST([localedir]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([localedir]) -m4trace:configure.in:17: -1- m4_pattern_allow([^localedir$]) -m4trace:configure.in:17: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) -m4trace:configure.in:17: -1- AC_CANONICAL_HOST -m4trace:configure.in:17: -1- AC_CANONICAL_BUILD -m4trace:configure.in:17: -1- AC_REQUIRE_AUX_FILE([config.sub]) -m4trace:configure.in:17: -1- AC_REQUIRE_AUX_FILE([config.guess]) -m4trace:configure.in:17: -1- AC_SUBST([build], [$ac_cv_build]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([build]) -m4trace:configure.in:17: -1- m4_pattern_allow([^build$]) -m4trace:configure.in:17: -1- AC_SUBST([build_cpu], [$[1]]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([build_cpu]) -m4trace:configure.in:17: -1- m4_pattern_allow([^build_cpu$]) -m4trace:configure.in:17: -1- AC_SUBST([build_vendor], [$[2]]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([build_vendor]) -m4trace:configure.in:17: -1- m4_pattern_allow([^build_vendor$]) -m4trace:configure.in:17: -1- AC_SUBST([build_os]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([build_os]) -m4trace:configure.in:17: -1- m4_pattern_allow([^build_os$]) -m4trace:configure.in:17: -1- AC_SUBST([host], [$ac_cv_host]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([host]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host$]) -m4trace:configure.in:17: -1- AC_SUBST([host_cpu], [$[1]]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([host_cpu]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host_cpu$]) -m4trace:configure.in:17: -1- AC_SUBST([host_vendor], [$[2]]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([host_vendor]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host_vendor$]) -m4trace:configure.in:17: -1- AC_SUBST([host_os]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([host_os]) -m4trace:configure.in:17: -1- m4_pattern_allow([^host_os$]) -m4trace:configure.in:17: -1- AC_SUBST([GLIBC2]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([GLIBC2]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GLIBC2$]) -m4trace:configure.in:17: -1- AC_SUBST([RANLIB]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([RANLIB]) -m4trace:configure.in:17: -1- m4_pattern_allow([^RANLIB$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -aclocal.m4:3927: gl_VISIBILITY is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -aclocal.m4:3927: gl_VISIBILITY is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_SUBST([CFLAG_VISIBILITY]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([CFLAG_VISIBILITY]) -m4trace:configure.in:17: -1- m4_pattern_allow([^CFLAG_VISIBILITY$]) -m4trace:configure.in:17: -1- AC_SUBST([HAVE_VISIBILITY]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([HAVE_VISIBILITY]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_VISIBILITY$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VISIBILITY]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_VISIBILITY$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_VISIBILITY], [/* Define to 1 or 0, depending whether the compiler supports simple visibility - declarations. */ -@%:@undef HAVE_VISIBILITY]) -m4trace:configure.in:17: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler - calls it, or to nothing if \'inline\' is not supported under any name. */ -#ifndef __cplusplus -#undef inline -#endif]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_SYS_TYPES_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_SYS_STAT_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDLIB_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STRING_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_MEMORY_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STRINGS_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_INTTYPES_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDINT_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_UNISTD_H]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([size_t]) -m4trace:configure.in:17: -1- m4_pattern_allow([^size_t$]) -m4trace:configure.in:17: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if does not define. */ -@%:@undef size_t]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:3510: gl_AC_HEADER_STDINT_H is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H_WITH_UINTMAX]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_STDINT_H_WITH_UINTMAX$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDINT_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and declares - uintmax_t. */ -@%:@undef HAVE_STDINT_H_WITH_UINTMAX]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). - */ -@%:@undef HAVE_ALLOCA_H]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ALLOCA$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ -@%:@undef HAVE_ALLOCA]) -m4trace:configure.in:17: -1- AC_LIBSOURCE([alloca.c]) -m4trace:configure.in:17: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([ALLOCA]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ALLOCA$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) -m4trace:configure.in:17: -1- m4_pattern_allow([^C_ALLOCA$]) -m4trace:configure.in:17: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ -@%:@undef C_ALLOCA]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) -m4trace:configure.in:17: -1- m4_pattern_allow([^CRAY_STACKSEG_END$]) -m4trace:configure.in:17: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* 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]) -m4trace:configure.in:17: -1- AH_OUTPUT([STACK_DIRECTION], [/* 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 runtime. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -@%:@undef STACK_DIRECTION]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) -m4trace:configure.in:17: -1- m4_pattern_allow([^STACK_DIRECTION$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDLIB_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_UNISTD_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_SYS_PARAM_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ -@%:@undef HAVE_GETPAGESIZE]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPAGESIZE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_GETPAGESIZE$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_MMAP$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ -@%:@undef HAVE_MMAP]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:991: gt_INTDIV0 is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([INTDIV0_RAISES_SIGFPE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTDIV0_RAISES_SIGFPE$]) -m4trace:configure.in:17: -1- AH_OUTPUT([INTDIV0_RAISES_SIGFPE], [/* Define if integer division by zero raises signal SIGFPE. */ -@%:@undef INTDIV0_RAISES_SIGFPE]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1497: gl_AC_HEADER_INTTYPES_H is expanded from... -aclocal.m4:3887: gl_AC_TYPE_UINTMAX_T is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H_WITH_UINTMAX]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_INTTYPES_H_WITH_UINTMAX$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_INTTYPES_H_WITH_UINTMAX], [/* Define if exists, doesn\'t clash with , and - declares uintmax_t. */ -@%:@undef HAVE_INTTYPES_H_WITH_UINTMAX]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type `unsigned long long int\'. */ -@%:@undef HAVE_UNSIGNED_LONG_LONG_INT]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) -m4trace:configure.in:17: -1- m4_pattern_allow([^uintmax_t$]) -m4trace:configure.in:17: -1- AH_OUTPUT([uintmax_t], [/* Define to unsigned long or unsigned long long if and - don\'t define. */ -@%:@undef uintmax_t]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define if you have the \'uintmax_t\' type in or . */ -@%:@undef HAVE_UINTMAX_T]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_INTTYPES_H]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTTYPES_H]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_INTTYPES_H$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1462: gt_INTTYPES_PRI is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([PRI_MACROS_BROKEN]) -m4trace:configure.in:17: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$]) -m4trace:configure.in:17: -1- AH_OUTPUT([PRI_MACROS_BROKEN], [/* Define if exists and defines unusable PRI* macros. */ -@%:@undef PRI_MACROS_BROKEN]) -m4trace:configure.in:17: -1- AC_SUBST([PRI_MACROS_BROKEN]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([PRI_MACROS_BROKEN]) -m4trace:configure.in:17: -1- m4_pattern_allow([^PRI_MACROS_BROKEN$]) -m4trace:configure.in:17: -1- _m4_warn([syntax], [AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS], [aclocal.m4:3556: gl_THREADLIB_EARLY_BODY is expanded from... -aclocal.m4:3549: gl_THREADLIB_EARLY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([syntax], [AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS], [aclocal.m4:3556: gl_THREADLIB_EARLY_BODY is expanded from... -aclocal.m4:3549: gl_THREADLIB_EARLY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_POSIX_SOURCE$]) -m4trace:configure.in:17: -1- AH_OUTPUT([_POSIX_SOURCE], [/* Define to 1 if you need to in order for `stat\' and other things to work. */ -@%:@undef _POSIX_SOURCE]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) -m4trace:configure.in:17: -1- AH_OUTPUT([_POSIX_1_SOURCE], [/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -@%:@undef _POSIX_1_SOURCE]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_MINIX$]) -m4trace:configure.in:17: -1- AH_OUTPUT([_MINIX], [/* Define to 1 if on MINIX. */ -@%:@undef _MINIX]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */ -#ifndef _ALL_SOURCE -# undef _ALL_SOURCE -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef _GNU_SOURCE -# undef _GNU_SOURCE -#endif -/* Enable threading extensions on Solaris. */ -#ifndef _POSIX_PTHREAD_SEMANTICS -# undef _POSIX_PTHREAD_SEMANTICS -#endif -/* Enable extensions on HP NonStop. */ -#ifndef _TANDEM_SOURCE -# undef _TANDEM_SOURCE -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif -]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) -m4trace:configure.in:17: -1- m4_pattern_allow([^__EXTENSIONS__$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_ALL_SOURCE$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_GNU_SOURCE$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) -m4trace:configure.in:17: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... -aclocal.m4:3556: gl_THREADLIB_EARLY_BODY is expanded from... -aclocal.m4:3549: gl_THREADLIB_EARLY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:207: AC_HELP_STRING is expanded from... -aclocal.m4:3556: gl_THREADLIB_EARLY_BODY is expanded from... -aclocal.m4:3549: gl_THREADLIB_EARLY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:3625: gl_THREADLIB_BODY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:3625: gl_THREADLIB_BODY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -aclocal.m4:3625: gl_THREADLIB_BODY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_IN_USE_DETECTION_HARD]) -m4trace:configure.in:17: -1- m4_pattern_allow([^PTHREAD_IN_USE_DETECTION_HARD$]) -m4trace:configure.in:17: -1- AH_OUTPUT([PTHREAD_IN_USE_DETECTION_HARD], [/* Define if the pthread_in_use() detection is hard. */ -@%:@undef PTHREAD_IN_USE_DETECTION_HARD]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_THREADS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_POSIX_THREADS$]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_POSIX_THREADS], [/* Define if the POSIX multithreading library can be used. */ -@%:@undef USE_POSIX_THREADS]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_THREADS_WEAK]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_POSIX_THREADS_WEAK$]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_POSIX_THREADS_WEAK], [/* Define if references to the POSIX multithreading library should be made - weak. */ -@%:@undef USE_POSIX_THREADS_WEAK]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -aclocal.m4:3625: gl_THREADLIB_BODY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([USE_SOLARIS_THREADS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_SOLARIS_THREADS$]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_SOLARIS_THREADS], [/* Define if the old Solaris multithreading library can be used. */ -@%:@undef USE_SOLARIS_THREADS]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([USE_SOLARIS_THREADS_WEAK]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_SOLARIS_THREADS_WEAK$]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_SOLARIS_THREADS_WEAK], [/* Define if references to the old Solaris multithreading library should be - made weak. */ -@%:@undef USE_SOLARIS_THREADS_WEAK]) -m4trace:configure.in:17: -1- AC_REQUIRE_AUX_FILE([config.rpath]) -m4trace:configure.in:17: -1- AC_SUBST([LIBPTH]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LIBPTH]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBPTH$]) -m4trace:configure.in:17: -1- AC_SUBST([LTLIBPTH]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LTLIBPTH]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBPTH$]) -m4trace:configure.in:17: -1- AC_SUBST([LIBPTH_PREFIX]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LIBPTH_PREFIX]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBPTH_PREFIX$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -aclocal.m4:3625: gl_THREADLIB_BODY is expanded from... -aclocal.m4:3803: gl_THREADLIB is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([USE_PTH_THREADS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_PTH_THREADS$]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_PTH_THREADS], [/* Define if the GNU Pth multithreading library can be used. */ -@%:@undef USE_PTH_THREADS]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([USE_PTH_THREADS_WEAK]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_PTH_THREADS_WEAK$]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_PTH_THREADS_WEAK], [/* Define if references to the GNU Pth multithreading library should be made - weak. */ -@%:@undef USE_PTH_THREADS_WEAK]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([USE_WIN32_THREADS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_WIN32_THREADS$]) -m4trace:configure.in:17: -1- AH_OUTPUT([USE_WIN32_THREADS], [/* Define if the Win32 multithreading API can be used. */ -@%:@undef USE_WIN32_THREADS]) -m4trace:configure.in:17: -1- AC_SUBST([LIBTHREAD]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LIBTHREAD]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBTHREAD$]) -m4trace:configure.in:17: -1- AC_SUBST([LTLIBTHREAD]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LTLIBTHREAD]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBTHREAD$]) -m4trace:configure.in:17: -1- AC_SUBST([LIBMULTITHREAD]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LIBMULTITHREAD]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBMULTITHREAD$]) -m4trace:configure.in:17: -1- AC_SUBST([LTLIBMULTITHREAD]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LTLIBMULTITHREAD]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBMULTITHREAD$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTHREAD_RWLOCK]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_PTHREAD_RWLOCK$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_PTHREAD_RWLOCK], [/* Define if the POSIX multithreading library has read/write locks. */ -@%:@undef HAVE_PTHREAD_RWLOCK]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -aclocal.m4:2664: gl_LOCK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTHREAD_MUTEX_RECURSIVE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_PTHREAD_MUTEX_RECURSIVE$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_PTHREAD_MUTEX_RECURSIVE], [/* Define if the defines PTHREAD_MUTEX_RECURSIVE. */ -@%:@undef HAVE_PTHREAD_MUTEX_RECURSIVE]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BUILTIN_EXPECT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_BUILTIN_EXPECT$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_BUILTIN_EXPECT], [/* Define to 1 if the compiler understands __builtin_expect. */ -@%:@undef HAVE_BUILTIN_EXPECT]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ARGZ_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_ARGZ_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_INTTYPES_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_LIMITS_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_UNISTD_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_SYS_PARAM_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ -@%:@undef HAVE_GETCWD]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_GETEGID], [/* Define to 1 if you have the `getegid\' function. */ -@%:@undef HAVE_GETEGID]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_GETEUID], [/* Define to 1 if you have the `geteuid\' function. */ -@%:@undef HAVE_GETEUID]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_GETGID], [/* Define to 1 if you have the `getgid\' function. */ -@%:@undef HAVE_GETGID]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_GETUID], [/* Define to 1 if you have the `getuid\' function. */ -@%:@undef HAVE_GETUID]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the `mempcpy\' function. */ -@%:@undef HAVE_MEMPCPY]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_MUNMAP], [/* Define to 1 if you have the `munmap\' function. */ -@%:@undef HAVE_MUNMAP]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the `stpcpy\' function. */ -@%:@undef HAVE_STPCPY]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the `strcasecmp\' function. */ -@%:@undef HAVE_STRCASECMP]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the `strdup\' function. */ -@%:@undef HAVE_STRDUP]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ -@%:@undef HAVE_STRTOUL]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_TSEARCH], [/* Define to 1 if you have the `tsearch\' function. */ -@%:@undef HAVE_TSEARCH]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_USELOCALE], [/* Define to 1 if you have the `uselocale\' function. */ -@%:@undef HAVE_USELOCALE]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ARGZ_COUNT], [/* Define to 1 if you have the `argz_count\' function. */ -@%:@undef HAVE_ARGZ_COUNT]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ARGZ_STRINGIFY], [/* Define to 1 if you have the `argz_stringify\' function. */ -@%:@undef HAVE_ARGZ_STRINGIFY]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ARGZ_NEXT], [/* Define to 1 if you have the `argz_next\' function. */ -@%:@undef HAVE_ARGZ_NEXT]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE___FSETLOCKING], [/* Define to 1 if you have the `__fsetlocking\' function. */ -@%:@undef HAVE___FSETLOCKING]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1346: gt_CHECK_DECL is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FEOF_UNLOCKED]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL_FEOF_UNLOCKED$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_DECL_FEOF_UNLOCKED], [/* Define to 1 if you have the declaration of `feof_unlocked\', and to 0 if you - don\'t. */ -@%:@undef HAVE_DECL_FEOF_UNLOCKED]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1346: gt_CHECK_DECL is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FGETS_UNLOCKED]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL_FGETS_UNLOCKED$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_DECL_FGETS_UNLOCKED], [/* Define to 1 if you have the declaration of `fgets_unlocked\', and to 0 if - you don\'t. */ -@%:@undef HAVE_DECL_FGETS_UNLOCKED]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:787: AM_ICONV_LINK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:787: AM_ICONV_LINK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:787: AM_ICONV_LINK is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ICONV$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */ -@%:@undef HAVE_ICONV]) -m4trace:configure.in:17: -1- AC_SUBST([LIBICONV]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LIBICONV]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBICONV$]) -m4trace:configure.in:17: -1- AC_SUBST([LTLIBICONV]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LTLIBICONV]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBICONV$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -aclocal.m4:1278: gt_INTL_SUBDIR_CORE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([ICONV_CONST]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ICONV_CONST$]) -m4trace:configure.in:17: -1- AH_OUTPUT([ICONV_CONST], [/* Define as const if the declaration of iconv() needs const. */ -@%:@undef ICONV_CONST]) -m4trace:configure.in:17: -1- AC_SUBST([INTLBISON]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INTLBISON]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTLBISON$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type `long long int\'. */ -@%:@undef HAVE_LONG_LONG_INT]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:3990: gt_TYPE_WCHAR_T is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WCHAR_T]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WCHAR_T$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_WCHAR_T], [/* Define if you have the \'wchar_t\' type. */ -@%:@undef HAVE_WCHAR_T]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:4011: gt_TYPE_WINT_T is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WINT_T]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WINT_T$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_WINT_T], [/* Define if you have the \'wint_t\' type. */ -@%:@undef HAVE_WINT_T]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1425: gt_TYPE_INTMAX_T is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTMAX_T]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_INTMAX_T], [/* Define if you have the \'intmax_t\' type in or . */ -@%:@undef HAVE_INTMAX_T]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2764: AC_TRY_RUN is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:3294: gt_PRINTF_POSIX is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_PRINTF]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_POSIX_PRINTF$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_POSIX_PRINTF], [/* Define if your printf() function supports format strings with positions. */ -@%:@undef HAVE_POSIX_PRINTF]) -m4trace:configure.in:17: -1- AC_SUBST([GLIBC21]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([GLIBC21]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GLIBC21$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDINT_H]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_STDINT_H$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:3431: gl_SIZE_MAX is expanded from... -aclocal.m4:4036: gl_XSIZE is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([SIZE_MAX]) -m4trace:configure.in:17: -1- m4_pattern_allow([^SIZE_MAX$]) -m4trace:configure.in:17: -1- AH_OUTPUT([SIZE_MAX], [/* Define as the maximum value of type \'size_t\', if the system doesn\'t define - it. */ -@%:@undef SIZE_MAX]) -m4trace:configure.in:17: -1- AH_OUTPUT([SIZE_MAX], [/* Define as the maximum value of type \'size_t\', if the system doesn\'t define - it. */ -#ifndef SIZE_MAX -# undef SIZE_MAX -#endif]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDINT_H]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDINT_H]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_STDINT_H$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_O_NOATIME]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WORKING_O_NOATIME$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_WORKING_O_NOATIME], [/* Define to 1 if O_NOATIME works. */ -@%:@undef HAVE_WORKING_O_NOATIME]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_O_NOFOLLOW]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WORKING_O_NOFOLLOW$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_WORKING_O_NOFOLLOW], [/* Define to 1 if O_NOFOLLOW works. */ -@%:@undef HAVE_WORKING_O_NOFOLLOW]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1380: gt_INTL_MACOSX is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in - the CoreFoundation framework. */ -@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1380: gt_INTL_MACOSX is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the - CoreFoundation framework. */ -@%:@undef HAVE_CFLOCALECOPYCURRENT]) -m4trace:configure.in:17: -1- AC_SUBST([INTL_MACOSX_LIBS]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) -m4trace:configure.in:17: -1- AC_SUBST([INTL_DEFAULT_VERBOSITY]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INTL_DEFAULT_VERBOSITY]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_DEFAULT_VERBOSITY$]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([ptrdiff_t]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ptrdiff_t$]) -m4trace:configure.in:17: -1- AH_OUTPUT([ptrdiff_t], [/* Define as the type of the result of subtracting two pointers, if the system - doesn\'t define it. */ -@%:@undef ptrdiff_t]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDDEF_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STDLIB_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ -@%:@undef HAVE_STRING_H]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_ASPRINTF], [/* Define to 1 if you have the `asprintf\' function. */ -@%:@undef HAVE_ASPRINTF]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_FWPRINTF], [/* Define to 1 if you have the `fwprintf\' function. */ -@%:@undef HAVE_FWPRINTF]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_NEWLOCALE], [/* Define to 1 if you have the `newlocale\' function. */ -@%:@undef HAVE_NEWLOCALE]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_PUTENV], [/* Define to 1 if you have the `putenv\' function. */ -@%:@undef HAVE_PUTENV]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_SETENV], [/* Define to 1 if you have the `setenv\' function. */ -@%:@undef HAVE_SETENV]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_SETLOCALE], [/* Define to 1 if you have the `setlocale\' function. */ -@%:@undef HAVE_SETLOCALE]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ -@%:@undef HAVE_SNPRINTF]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_STRNLEN], [/* Define to 1 if you have the `strnlen\' function. */ -@%:@undef HAVE_STRNLEN]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_WCSLEN], [/* Define to 1 if you have the `wcslen\' function. */ -@%:@undef HAVE_WCSLEN]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_WCSNLEN], [/* Define to 1 if you have the `wcsnlen\' function. */ -@%:@undef HAVE_WCSNLEN]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_MBRTOWC], [/* Define to 1 if you have the `mbrtowc\' function. */ -@%:@undef HAVE_MBRTOWC]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_WCRTOMB], [/* Define to 1 if you have the `wcrtomb\' function. */ -@%:@undef HAVE_WCRTOMB]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1346: gt_CHECK_DECL is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SNPRINTF]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL__SNPRINTF$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_DECL__SNPRINTF], [/* Define to 1 if you have the declaration of `_snprintf\', and to 0 if you - don\'t. */ -@%:@undef HAVE_DECL__SNPRINTF]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1346: gt_CHECK_DECL is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SNWPRINTF]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL__SNWPRINTF$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_DECL__SNWPRINTF], [/* Define to 1 if you have the declaration of `_snwprintf\', and to 0 if you - don\'t. */ -@%:@undef HAVE_DECL__SNWPRINTF]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2614: AC_TRY_COMPILE is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1346: gt_CHECK_DECL is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_GETC_UNLOCKED]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DECL_GETC_UNLOCKED$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_DECL_GETC_UNLOCKED], [/* Define to 1 if you have the declaration of `getc_unlocked\', and to 0 if you - don\'t. */ -@%:@undef HAVE_DECL_GETC_UNLOCKED]) -m4trace:configure.in:17: -1- AC_SUBST([HAVE_POSIX_PRINTF]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([HAVE_POSIX_PRINTF]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_POSIX_PRINTF$]) -m4trace:configure.in:17: -1- AC_SUBST([HAVE_ASPRINTF]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([HAVE_ASPRINTF]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_ASPRINTF$]) -m4trace:configure.in:17: -1- AC_SUBST([HAVE_SNPRINTF]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([HAVE_SNPRINTF]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_SNPRINTF$]) -m4trace:configure.in:17: -1- AC_SUBST([HAVE_NEWLOCALE]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([HAVE_NEWLOCALE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_NEWLOCALE$]) -m4trace:configure.in:17: -1- AC_SUBST([HAVE_WPRINTF]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([HAVE_WPRINTF]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_WPRINTF$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:31: AM_LANGINFO_CODESET is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LANGINFO_CODESET]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_LANGINFO_CODESET$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_LANGINFO_CODESET], [/* Define if you have and nl_langinfo(CODESET). */ -@%:@undef HAVE_LANGINFO_CODESET]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1534: gt_LC_MESSAGES is expanded from... -aclocal.m4:1092: AM_INTL_SUBDIR is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LC_MESSAGES]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_LC_MESSAGES$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_LC_MESSAGES], [/* Define if your file defines LC_MESSAGES. */ -@%:@undef HAVE_LC_MESSAGES]) -m4trace:configure.in:17: -1- AC_SUBST([WOE32DLL]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([WOE32DLL]) -m4trace:configure.in:17: -1- m4_pattern_allow([^WOE32DLL$]) -m4trace:configure.in:17: -1- AC_SUBST([WOE32]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([WOE32]) -m4trace:configure.in:17: -1- m4_pattern_allow([^WOE32$]) -m4trace:configure.in:17: -1- AC_SUBST([WINDRES]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([WINDRES]) -m4trace:configure.in:17: -1- m4_pattern_allow([^WINDRES$]) -m4trace:configure.in:17: -1- AC_SUBST([LTLIBC]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LTLIBC]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBC$]) -m4trace:configure.in:17: -1- AH_OUTPUT([zzzz1], [ -#define __libc_lock_t gl_lock_t -#define __libc_lock_define gl_lock_define -#define __libc_lock_define_initialized gl_lock_define_initialized -#define __libc_lock_init gl_lock_init -#define __libc_lock_lock gl_lock_lock -#define __libc_lock_unlock gl_lock_unlock -#define __libc_lock_recursive_t gl_recursive_lock_t -#define __libc_lock_define_recursive gl_recursive_lock_define -#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized -#define __libc_lock_init_recursive gl_recursive_lock_init -#define __libc_lock_lock_recursive gl_recursive_lock_lock -#define __libc_lock_unlock_recursive gl_recursive_lock_unlock -#define glthread_in_use libintl_thread_in_use -#define glthread_lock_init_func libintl_lock_init_func -#define glthread_lock_lock_func libintl_lock_lock_func -#define glthread_lock_unlock_func libintl_lock_unlock_func -#define glthread_lock_destroy_func libintl_lock_destroy_func -#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded -#define glthread_rwlock_init_func libintl_rwlock_init_func -#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded -#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func -#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded -#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func -#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded -#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func -#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded -#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func -#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded -#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func -#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded -#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func -#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded -#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func -#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded -#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func -#define glthread_once_func libintl_once_func -#define glthread_once_singlethreaded libintl_once_singlethreaded -#define glthread_once_multithreaded libintl_once_multithreaded -]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1380: gt_INTL_MACOSX is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in - the CoreFoundation framework. */ -@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:1380: gt_INTL_MACOSX is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the - CoreFoundation framework. */ -@%:@undef HAVE_CFLOCALECOPYCURRENT]) -m4trace:configure.in:17: -1- AC_SUBST([INTL_MACOSX_LIBS]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [../../lib/autoconf/general.m4:2687: AC_TRY_LINK is expanded from... -../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... -../../lib/autoconf/general.m4:2031: AC_CACHE_VAL is expanded from... -../../lib/autoconf/general.m4:2052: AC_CACHE_CHECK is expanded from... -aclocal.m4:183: AM_GNU_GETTEXT is expanded from... -configure.in:17: the top level]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^ENABLE_NLS$]) -m4trace:configure.in:17: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native - language is requested. */ -@%:@undef ENABLE_NLS]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_GETTEXT$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ -@%:@undef HAVE_GETTEXT]) -m4trace:configure.in:17: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) -m4trace:configure.in:17: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -@%:@undef HAVE_DCGETTEXT]) -m4trace:configure.in:17: -1- AC_SUBST([BUILD_INCLUDED_LIBINTL]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([BUILD_INCLUDED_LIBINTL]) -m4trace:configure.in:17: -1- m4_pattern_allow([^BUILD_INCLUDED_LIBINTL$]) -m4trace:configure.in:17: -1- AC_SUBST([USE_INCLUDED_LIBINTL]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([USE_INCLUDED_LIBINTL]) -m4trace:configure.in:17: -1- m4_pattern_allow([^USE_INCLUDED_LIBINTL$]) -m4trace:configure.in:17: -1- AC_SUBST([CATOBJEXT]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([CATOBJEXT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^CATOBJEXT$]) -m4trace:configure.in:17: -1- AC_SUBST([DATADIRNAME]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([DATADIRNAME]) -m4trace:configure.in:17: -1- m4_pattern_allow([^DATADIRNAME$]) -m4trace:configure.in:17: -1- AC_SUBST([INSTOBJEXT]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INSTOBJEXT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INSTOBJEXT$]) -m4trace:configure.in:17: -1- AC_SUBST([GENCAT]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([GENCAT]) -m4trace:configure.in:17: -1- m4_pattern_allow([^GENCAT$]) -m4trace:configure.in:17: -1- AC_SUBST([INTLOBJS]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INTLOBJS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTLOBJS$]) -m4trace:configure.in:17: -1- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INTL_LIBTOOL_SUFFIX_PREFIX]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTL_LIBTOOL_SUFFIX_PREFIX$]) -m4trace:configure.in:17: -1- AC_SUBST([INTLLIBS]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([INTLLIBS]) -m4trace:configure.in:17: -1- m4_pattern_allow([^INTLLIBS$]) -m4trace:configure.in:17: -1- AC_SUBST([LIBINTL]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LIBINTL]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LIBINTL$]) -m4trace:configure.in:17: -1- AC_SUBST([LTLIBINTL]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([LTLIBINTL]) -m4trace:configure.in:17: -1- m4_pattern_allow([^LTLIBINTL$]) -m4trace:configure.in:17: -1- AC_SUBST([POSUB]) -m4trace:configure.in:17: -1- AC_SUBST_TRACE([POSUB]) -m4trace:configure.in:17: -1- m4_pattern_allow([^POSUB$]) -m4trace:configure.in:21: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_LOCALE_DIR]) -m4trace:configure.in:21: -1- m4_pattern_allow([^PACKAGE_LOCALE_DIR$]) -m4trace:configure.in:23: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_LOCALE_DIR]) -m4trace:configure.in:23: -1- m4_pattern_allow([^PACKAGE_LOCALE_DIR$]) -m4trace:configure.in:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_DATA_DIR]) -m4trace:configure.in:29: -1- m4_pattern_allow([^PACKAGE_DATA_DIR$]) -m4trace:configure.in:31: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_DATA_DIR]) -m4trace:configure.in:31: -1- m4_pattern_allow([^PACKAGE_DATA_DIR$]) -m4trace:configure.in:34: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_DATA_DIR]) -m4trace:configure.in:34: -1- m4_pattern_allow([^PACKAGE_DATA_DIR$]) -m4trace:configure.in:39: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_SOURCE_DIR]) -m4trace:configure.in:39: -1- m4_pattern_allow([^PACKAGE_SOURCE_DIR$]) -m4trace:configure.in:51: -1- AC_CONFIG_FILES([ -Makefile -src/Makefile -intl/Makefile -po/Makefile.in -]) -m4trace:configure.in:51: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. -You should run autoupdate.], []) -m4trace:configure.in:51: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -m4trace:configure.in:51: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -m4trace:configure.in:51: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([LTLIBOBJS]) -m4trace:configure.in:51: -1- m4_pattern_allow([^LTLIBOBJS$]) -m4trace:configure.in:51: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) -m4trace:configure.in:51: -1- AC_SUBST([am__EXEEXT_TRUE]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) -m4trace:configure.in:51: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) -m4trace:configure.in:51: -1- AC_SUBST([am__EXEEXT_FALSE]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) -m4trace:configure.in:51: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) -m4trace:configure.in:51: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) -m4trace:configure.in:51: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([top_builddir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([top_build_prefix]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([srcdir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([abs_srcdir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([top_srcdir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([abs_top_srcdir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([builddir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([abs_builddir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([abs_top_builddir]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([INSTALL]) -m4trace:configure.in:51: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/clients/gsat-1.1.0/config.cache b/clients/gsat-1.1.0/config.cache deleted file mode 100644 index a0656c7..0000000 --- a/clients/gsat-1.1.0/config.cache +++ /dev/null @@ -1,84 +0,0 @@ -# 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. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -ac_cv_c_const=${ac_cv_c_const=yes} -ac_cv_c_inline=${ac_cv_c_inline=inline} -ac_cv_func___argz_count=${ac_cv_func___argz_count=yes} -ac_cv_func___argz_next=${ac_cv_func___argz_next=yes} -ac_cv_func___argz_stringify=${ac_cv_func___argz_stringify=yes} -ac_cv_func_alloca_works=${ac_cv_func_alloca_works=yes} -ac_cv_func_dcgettext=${ac_cv_func_dcgettext=yes} -ac_cv_func_feof_unlocked=${ac_cv_func_feof_unlocked=yes} -ac_cv_func_fgets_unlocked=${ac_cv_func_fgets_unlocked=yes} -ac_cv_func_getcwd=${ac_cv_func_getcwd=yes} -ac_cv_func_getegid=${ac_cv_func_getegid=yes} -ac_cv_func_geteuid=${ac_cv_func_geteuid=yes} -ac_cv_func_getgid=${ac_cv_func_getgid=yes} -ac_cv_func_getpagesize=${ac_cv_func_getpagesize=yes} -ac_cv_func_getuid=${ac_cv_func_getuid=yes} -ac_cv_func_mempcpy=${ac_cv_func_mempcpy=yes} -ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes} -ac_cv_func_munmap=${ac_cv_func_munmap=yes} -ac_cv_func_putenv=${ac_cv_func_putenv=yes} -ac_cv_func_setenv=${ac_cv_func_setenv=yes} -ac_cv_func_setlocale=${ac_cv_func_setlocale=yes} -ac_cv_func_stpcpy=${ac_cv_func_stpcpy=yes} -ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp=yes} -ac_cv_func_strchr=${ac_cv_func_strchr=yes} -ac_cv_func_strdup=${ac_cv_func_strdup=yes} -ac_cv_func_strtoul=${ac_cv_func_strtoul=yes} -ac_cv_func_tsearch=${ac_cv_func_tsearch=yes} -ac_cv_gnu_library_2_1=${ac_cv_gnu_library_2_1=yes} -ac_cv_header_alloca_h=${ac_cv_header_alloca_h=yes} -ac_cv_header_argz_h=${ac_cv_header_argz_h=yes} -ac_cv_header_libintl_h=${ac_cv_header_libintl_h=yes} -ac_cv_header_limits_h=${ac_cv_header_limits_h=yes} -ac_cv_header_locale_h=${ac_cv_header_locale_h=yes} -ac_cv_header_malloc_h=${ac_cv_header_malloc_h=yes} -ac_cv_header_nl_types_h=${ac_cv_header_nl_types_h=yes} -ac_cv_header_stdc=${ac_cv_header_stdc=yes} -ac_cv_header_stddef_h=${ac_cv_header_stddef_h=yes} -ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes} -ac_cv_header_string_h=${ac_cv_header_string_h=yes} -ac_cv_header_sys_param_h=${ac_cv_header_sys_param_h=yes} -ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes} -ac_cv_lib_cposix_strerror=${ac_cv_lib_cposix_strerror=no} -ac_cv_path_GMSGFMT=${ac_cv_path_GMSGFMT=/usr/bin/msgfmt} -ac_cv_path_GTK_CONFIG=${ac_cv_path_GTK_CONFIG=/usr/bin/gtk-config} -ac_cv_path_MSGFMT=${ac_cv_path_MSGFMT=/usr/bin/msgfmt} -ac_cv_path_XGETTEXT=${ac_cv_path_XGETTEXT=/usr/bin/xgettext} -ac_cv_path_install=${ac_cv_path_install='/usr/bin/ginstall -c'} -ac_cv_prog_CC=${ac_cv_prog_CC=gcc} -ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'} -ac_cv_prog_INTLBISON=${ac_cv_prog_INTLBISON=bison} -ac_cv_prog_RANLIB=${ac_cv_prog_RANLIB=ranlib} -ac_cv_prog_cc_cross=${ac_cv_prog_cc_cross=no} -ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} -ac_cv_prog_cc_works=${ac_cv_prog_cc_works=yes} -ac_cv_prog_gcc=${ac_cv_prog_gcc=yes} -ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set=yes} -ac_cv_type_off_t=${ac_cv_type_off_t=yes} -ac_cv_type_size_t=${ac_cv_type_size_t=yes} -am_cv_func_iconv=${am_cv_func_iconv=yes} -am_cv_langinfo_codeset=${am_cv_langinfo_codeset=yes} -am_cv_lib_iconv=${am_cv_lib_iconv=no} -am_cv_prog_cc_stdc=${am_cv_prog_cc_stdc=} -am_cv_proto_iconv=${am_cv_proto_iconv='extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);'} -am_cv_proto_iconv_arg1=${am_cv_proto_iconv_arg1=} -am_cv_val_LC_MESSAGES=${am_cv_val_LC_MESSAGES=yes} -gt_cv_func_gnugettext1_libc=${gt_cv_func_gnugettext1_libc=yes} -nls_cv_force_use_gnu_gettext=${nls_cv_force_use_gnu_gettext=no} -nls_cv_header_intl=${nls_cv_header_intl=} -nls_cv_header_libgt=${nls_cv_header_libgt=} -nls_cv_use_gnu_gettext=${nls_cv_use_gnu_gettext=no} diff --git a/clients/gsat-1.1.0/config.h b/clients/gsat-1.1.0/config.h deleted file mode 100644 index 14f5fd3..0000000 --- a/clients/gsat-1.1.0/config.h +++ /dev/null @@ -1,177 +0,0 @@ -/* config.h. Generated automatically by configure. */ -/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */ - -/* Define if using alloca.c. */ -/* #undef C_ALLOCA */ - -/* Define to empty if the keyword does not work. */ -/* #undef const */ - -/* 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 if you have alloca, as a function or macro. */ -#define HAVE_ALLOCA 1 - -/* Define if you have and it should be used (not on Ultrix). */ -#define HAVE_ALLOCA_H 1 - -/* Define if you have a working `mmap' system call. */ -#define HAVE_MMAP 1 - -/* Define as __inline if that's what the C compiler calls it. */ -/* #undef inline */ - -/* Define to `long' if doesn't define. */ -/* #undef off_t */ - -/* Define to `unsigned' if doesn't define. */ -/* #undef size_t */ - -/* 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 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -#define ENABLE_NLS 1 -/* #undef HAVE_CATGETS */ -#define HAVE_GETTEXT 1 -#define HAVE_LC_MESSAGES 1 -#define HAVE_STPCPY 1 -/* #undef HAVE_LIBSM */ -#define PACKAGE_LOCALE_DIR "/usr/local/share/locale" -#define PACKAGE_DATA_DIR "/usr/local/share/gsat" -#define PACKAGE_SOURCE_DIR "/usr/src/predict-2.2.3/clients/gsat-1.1.0" - -/* Define if you have the __argz_count function. */ -#define HAVE___ARGZ_COUNT 1 - -/* Define if you have the __argz_next function. */ -#define HAVE___ARGZ_NEXT 1 - -/* Define if you have the __argz_stringify function. */ -#define HAVE___ARGZ_STRINGIFY 1 - -/* Define if you have the dcgettext function. */ -#define HAVE_DCGETTEXT 1 - -/* Define if you have the feof_unlocked function. */ -#define HAVE_FEOF_UNLOCKED 1 - -/* Define if you have the fgets_unlocked function. */ -#define HAVE_FGETS_UNLOCKED 1 - -/* Define if you have the getcwd function. */ -#define HAVE_GETCWD 1 - -/* Define if you have the getegid function. */ -#define HAVE_GETEGID 1 - -/* Define if you have the geteuid function. */ -#define HAVE_GETEUID 1 - -/* Define if you have the getgid function. */ -#define HAVE_GETGID 1 - -/* Define if you have the getpagesize function. */ -#define HAVE_GETPAGESIZE 1 - -/* Define if you have the getuid function. */ -#define HAVE_GETUID 1 - -/* Define if you have the mempcpy function. */ -#define HAVE_MEMPCPY 1 - -/* Define if you have the munmap function. */ -#define HAVE_MUNMAP 1 - -/* Define if you have the putenv function. */ -#define HAVE_PUTENV 1 - -/* Define if you have the setenv function. */ -#define HAVE_SETENV 1 - -/* Define if you have the setlocale function. */ -#define HAVE_SETLOCALE 1 - -/* Define if you have the stpcpy function. */ -#define HAVE_STPCPY 1 - -/* Define if you have the strcasecmp function. */ -#define HAVE_STRCASECMP 1 - -/* Define if you have the strchr function. */ -#define HAVE_STRCHR 1 - -/* Define if you have the strdup function. */ -#define HAVE_STRDUP 1 - -/* Define if you have the strtoul function. */ -#define HAVE_STRTOUL 1 - -/* Define if you have the tsearch function. */ -#define HAVE_TSEARCH 1 - -/* Define if you have the header file. */ -#define HAVE_ARGZ_H 1 - -/* Define if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define if you have the header file. */ -#define HAVE_LOCALE_H 1 - -/* Define if you have the header file. */ -#define HAVE_MALLOC_H 1 - -/* Define if you have the header file. */ -#define HAVE_NL_TYPES_H 1 - -/* Define if you have the header file. */ -#define HAVE_STDDEF_H 1 - -/* Define if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_PARAM_H 1 - -/* Define if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Name of package */ -#define PACKAGE "gsat" - -/* Version number of package */ -#define VERSION "0.1" - -/* Define if you have the iconv() function. */ -#define HAVE_ICONV 1 - -/* Define as const if the declaration of iconv() needs const. */ -#define ICONV_CONST - -/* Define if you have and nl_langinfo(CODESET). */ -#define HAVE_LANGINFO_CODESET 1 - -/* Define if your file defines LC_MESSAGES. */ -#define HAVE_LC_MESSAGES 1 - -/* Define to 1 if translation of program messages to the user's native language - is requested. */ -#define ENABLE_NLS 1 - -/* Define if the GNU gettext() function is already present or preinstalled. */ -#define HAVE_GETTEXT 1 - diff --git a/clients/gsat-1.1.0/config.h.in b/clients/gsat-1.1.0/config.h.in deleted file mode 100644 index c44bfe6..0000000 --- a/clients/gsat-1.1.0/config.h.in +++ /dev/null @@ -1,176 +0,0 @@ -/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */ - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define to empty if the keyword does not work. */ -#undef const - -/* 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 if you have alloca, as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* 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 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -#undef ENABLE_NLS -#undef HAVE_CATGETS -#undef HAVE_GETTEXT -#undef HAVE_LC_MESSAGES -#undef HAVE_STPCPY -#undef HAVE_LIBSM -#undef PACKAGE_LOCALE_DIR -#undef PACKAGE_DATA_DIR -#undef PACKAGE_SOURCE_DIR - -/* Define if you have the __argz_count function. */ -#undef HAVE___ARGZ_COUNT - -/* Define if you have the __argz_next function. */ -#undef HAVE___ARGZ_NEXT - -/* Define if you have the __argz_stringify function. */ -#undef HAVE___ARGZ_STRINGIFY - -/* Define if you have the dcgettext function. */ -#undef HAVE_DCGETTEXT - -/* Define if you have the feof_unlocked function. */ -#undef HAVE_FEOF_UNLOCKED - -/* Define if you have the fgets_unlocked function. */ -#undef HAVE_FGETS_UNLOCKED - -/* Define if you have the getcwd function. */ -#undef HAVE_GETCWD - -/* Define if you have the getegid function. */ -#undef HAVE_GETEGID - -/* Define if you have the geteuid function. */ -#undef HAVE_GETEUID - -/* Define if you have the getgid function. */ -#undef HAVE_GETGID - -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the getuid function. */ -#undef HAVE_GETUID - -/* Define if you have the mempcpy function. */ -#undef HAVE_MEMPCPY - -/* Define if you have the munmap function. */ -#undef HAVE_MUNMAP - -/* Define if you have the putenv function. */ -#undef HAVE_PUTENV - -/* Define if you have the setenv function. */ -#undef HAVE_SETENV - -/* Define if you have the setlocale function. */ -#undef HAVE_SETLOCALE - -/* Define if you have the stpcpy function. */ -#undef HAVE_STPCPY - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP - -/* Define if you have the strchr function. */ -#undef HAVE_STRCHR - -/* Define if you have the strdup function. */ -#undef HAVE_STRDUP - -/* Define if you have the strtoul function. */ -#undef HAVE_STRTOUL - -/* Define if you have the tsearch function. */ -#undef HAVE_TSEARCH - -/* Define if you have the header file. */ -#undef HAVE_ARGZ_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define if you have the header file. */ -#undef HAVE_MALLOC_H - -/* Define if you have the header file. */ -#undef HAVE_NL_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_STDDEF_H - -/* Define if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define if you have the header file. */ -#undef HAVE_STRING_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Name of package */ -#undef PACKAGE - -/* Version number of package */ -#undef VERSION - -/* Define if you have the iconv() function. */ -#undef HAVE_ICONV - -/* Define as const if the declaration of iconv() needs const. */ -#undef ICONV_CONST - -/* 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 translation of program messages to the user's native language - is requested. */ -#undef ENABLE_NLS - -/* Define if the GNU gettext() function is already present or preinstalled. */ -#undef HAVE_GETTEXT - diff --git a/clients/gsat-1.1.0/config.log b/clients/gsat-1.1.0/config.log deleted file mode 100644 index 6cdd847..0000000 --- a/clients/gsat-1.1.0/config.log +++ /dev/null @@ -1,81 +0,0 @@ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -configure:568: checking for a BSD compatible install -configure:621: checking whether build environment is sane -configure:678: checking whether make sets ${MAKE} -configure:724: checking for working aclocal -configure:737: checking for working autoconf -configure:750: checking for working automake -configure:763: checking for working autoheader -configure:776: checking for working makeinfo -configure:795: checking for strerror in -lcposix -configure:839: checking for gcc -configure:952: checking whether the C compiler (gcc ) works -configure:968: gcc -o conftest conftest.c 1>&5 -configure:994: checking whether the C compiler (gcc ) is a cross-compiler -configure:999: checking whether we are using GNU C -configure:1027: checking whether gcc accepts -g -configure:1062: checking for gcc option to accept ANSI C -configure:1139: checking how to run the C preprocessor -configure:1219: checking for ANSI C header files -configure:1373: checking for gtk-config -configure:1408: checking for GTK - version >= 1.2.0 -configure:1509: gcc -o conftest -g -O2 -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include conftest.c -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm 1>&5 -configure:1600: checking host system type -configure:1623: checking for ranlib -configure:1651: checking for working const -configure:1726: checking for inline -configure:1766: checking for off_t -configure:1799: checking for size_t -configure:1834: checking for working alloca.h -configure:1867: checking for alloca -configure:2069: checking for unistd.h -configure:2108: checking for getpagesize -configure:2161: checking for working mmap -configure:2333: checking whether we are using the GNU C Library 2.1 or newer -configure:2374: checking for argz.h -configure:2374: checking for limits.h -configure:2374: checking for locale.h -configure:2374: checking for nl_types.h -configure:2374: checking for malloc.h -configure:2374: checking for stddef.h -configure:2374: checking for stdlib.h -configure:2374: checking for string.h -configure:2374: checking for unistd.h -configure:2374: checking for sys/param.h -configure:2415: checking for feof_unlocked -configure:2415: checking for fgets_unlocked -configure:2415: checking for getcwd -configure:2415: checking for getegid -configure:2415: checking for geteuid -configure:2415: checking for getgid -configure:2415: checking for getuid -configure:2415: checking for mempcpy -configure:2415: checking for munmap -configure:2415: checking for putenv -configure:2415: checking for setenv -configure:2415: checking for setlocale -configure:2415: checking for stpcpy -configure:2415: checking for strchr -configure:2415: checking for strcasecmp -configure:2415: checking for strdup -configure:2415: checking for strtoul -configure:2415: checking for tsearch -configure:2415: checking for __argz_count -configure:2415: checking for __argz_stringify -configure:2415: checking for __argz_next -configure:2483: checking for iconv -configure:2544: checking for iconv declaration -configure:2598: checking for nl_langinfo and CODESET -configure:2633: checking for LC_MESSAGES -configure:2666: checking whether NLS is requested -configure:2688: checking whether included gettext is requested -configure:2708: checking for libintl.h -configure:2735: checking for GNU gettext in libc -configure:2814: checking for dcgettext -configure:2871: checking for msgfmt -configure:2905: checking for gmsgfmt -configure:2942: checking for xgettext -configure:3133: checking for bison -configure:3166: checking version of bison diff --git a/clients/gsat-1.1.0/config.status b/clients/gsat-1.1.0/config.status deleted file mode 100755 index 24c8c5a..0000000 --- a/clients/gsat-1.1.0/config.status +++ /dev/null @@ -1,521 +0,0 @@ -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host atc106: -# -# ./configure -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" -for ac_option -do - case "$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion" - exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "./config.status generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "$ac_cs_usage"; exit 0 ;; - *) echo "$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=. -ac_given_INSTALL="/usr/bin/ginstall -c" - -trap 'rm -fr -Makefile -src/Makefile -intl/Makefile -po/Makefile.in - config.h conftest*; exit 1' 1 2 15 - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; - s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF -/^[ ]*VPATH[ ]*=[^:]*$/d - -s%@SHELL@%/bin/sh%g -s%@CFLAGS@%-g -O2 -Wall%g -s%@CPPFLAGS@%%g -s%@CXXFLAGS@%%g -s%@FFLAGS@%%g -s%@DEFS@%-DHAVE_CONFIG_H%g -s%@LDFLAGS@%%g -s%@LIBS@%%g -s%@exec_prefix@%${prefix}%g -s%@prefix@%/usr/local%g -s%@program_transform_name@%s,x,x,%g -s%@bindir@%${exec_prefix}/bin%g -s%@sbindir@%${exec_prefix}/sbin%g -s%@libexecdir@%${exec_prefix}/libexec%g -s%@datadir@%${prefix}/share%g -s%@sysconfdir@%${prefix}/etc%g -s%@sharedstatedir@%${prefix}/com%g -s%@localstatedir@%${prefix}/var%g -s%@libdir@%${exec_prefix}/lib%g -s%@includedir@%${prefix}/include%g -s%@oldincludedir@%/usr/include%g -s%@infodir@%${prefix}/info%g -s%@mandir@%${prefix}/man%g -s%@INSTALL_PROGRAM@%${INSTALL}%g -s%@INSTALL_SCRIPT@%${INSTALL_PROGRAM}%g -s%@INSTALL_DATA@%${INSTALL} -m 644%g -s%@PACKAGE@%gsat%g -s%@VERSION@%0.1%g -s%@ACLOCAL@%aclocal%g -s%@AUTOCONF@%autoconf%g -s%@AUTOMAKE@%automake%g -s%@AUTOHEADER@%autoheader%g -s%@MAKEINFO@%makeinfo%g -s%@SET_MAKE@%%g -s%@CC@%gcc%g -s%@CPP@%gcc -E%g -s%@GTK_CONFIG@%/usr/bin/gtk-config%g -s%@GTK_CFLAGS@%-I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include%g -s%@GTK_LIBS@%-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm%g -s%@host@%i686-pc-linux-gnu%g -s%@host_alias@%i686-pc-linux-gnu%g -s%@host_cpu@%i686%g -s%@host_vendor@%pc%g -s%@host_os@%linux-gnu%g -s%@RANLIB@%ranlib%g -s%@ALLOCA@%%g -s%@GLIBC21@%yes%g -s%@LIBICONV@%%g -s%@USE_NLS@%yes%g -s%@MSGFMT@%/usr/bin/msgfmt%g -s%@GMSGFMT@%/usr/bin/msgfmt%g -s%@XGETTEXT@%/usr/bin/xgettext%g -s%@INTLBISON@%bison%g -s%@BUILD_INCLUDED_LIBINTL@%no%g -s%@USE_INCLUDED_LIBINTL@%no%g -s%@CATALOGS@%%g -s%@CATOBJEXT@%.gmo%g -s%@GMOFILES@%%g -s%@INTLLIBS@%%g -s%@INTLOBJS@%%g -s%@POFILES@%%g -s%@POSUB@%po%g -s%@DATADIRNAME@%share%g -s%@INSTOBJEXT@%.mo%g -s%@GENCAT@%gencat%g -s%@MKINSTALLDIRS@%./mkinstalldirs%g -s%@INTL_LIBTOOL_SUFFIX_PREFIX@%%g - -CEOF - -# 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_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi - -CONFIG_FILES=${CONFIG_FILES-"Makefile -src/Makefile -intl/Makefile -po/Makefile.in -"} -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -# 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='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -if test "${CONFIG_HEADERS+set}" != set; then - CONFIG_HEADERS="config.h" -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag < conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - fi - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - - - - -test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h -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" - sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - fi - ;; - esac - done - -exit 0 diff --git a/clients/gsat-1.1.0/configure b/clients/gsat-1.1.0/configure deleted file mode 100755 index 4598dc2..0000000 --- a/clients/gsat-1.1.0/configure +++ /dev/null @@ -1,3733 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --with-gtk-prefix=PFX Prefix where GTK is installed (optional)" -ac_help="$ac_help - --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)" -ac_help="$ac_help - --disable-gtktest Do not try to compile and run a test GTK program" -ac_help="$ac_help - --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib" -ac_help="$ac_help - --disable-nls do not use Native Language Support" -ac_help="$ac_help - --with-included-gettext use the GNU gettext library included here" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -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' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -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 - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # 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 ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$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" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) 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) - # 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 << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --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 -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$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) - 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 ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - 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 "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# 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 - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=configure.in - -# 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_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - 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 "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# 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 "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -# 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 -# 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 $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:568: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/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 - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -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 "$ac_t""$INSTALL" 1>&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_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:621: checking whether build environment is sane" >&5 -# Just in case -sleep 1 -echo timestamp > conftestfile -# 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 conftestfile 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "$*" != "X $srcdir/configure conftestfile" \ - && test "$*" != "X conftestfile $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 "configure: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" 1>&2; exit 1; } - fi - - test "$2" = conftestfile - ) -then - # Ok. - : -else - { echo "configure: error: newly created file is older than distributed files! -Check your system clock" 1>&2; exit 1; } -fi -rm -f conftest* -echo "$ac_t""yes" 1>&6 -if test "$program_transform_name" = s,x,x,; then - program_transform_name= -else - # Double any \ or $. echo might interpret backslashes. - cat <<\EOF_SED > conftestsed -s,\\,\\\\,g; s,\$,$$,g -EOF_SED - program_transform_name="`echo $program_transform_name|sed -f conftestsed`" - rm -f conftestsed -fi -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" - -# sed with no file args requires a program. -test "$program_transform_name" = "" && program_transform_name="s,x,x," - -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:678: checking whether ${MAKE-make} sets \${MAKE}" >&5 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftestmake <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 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 conftestmake -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 - SET_MAKE= -else - echo "$ac_t""no" 1>&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - - -PACKAGE=gsat - -VERSION=0.1 - -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } -fi -cat >> confdefs.h <> confdefs.h <&6 -echo "configure:724: checking for working aclocal" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (aclocal --version) < /dev/null > /dev/null 2>&1; then - ACLOCAL=aclocal - echo "$ac_t""found" 1>&6 -else - ACLOCAL="$missing_dir/missing aclocal" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:737: checking for working autoconf" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (autoconf --version) < /dev/null > /dev/null 2>&1; then - AUTOCONF=autoconf - echo "$ac_t""found" 1>&6 -else - AUTOCONF="$missing_dir/missing autoconf" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:750: checking for working automake" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (automake --version) < /dev/null > /dev/null 2>&1; then - AUTOMAKE=automake - echo "$ac_t""found" 1>&6 -else - AUTOMAKE="$missing_dir/missing automake" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:763: checking for working autoheader" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (autoheader --version) < /dev/null > /dev/null 2>&1; then - AUTOHEADER=autoheader - echo "$ac_t""found" 1>&6 -else - AUTOHEADER="$missing_dir/missing autoheader" - echo "$ac_t""missing" 1>&6 -fi - -echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:776: checking for working makeinfo" >&5 -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if (makeinfo --version) < /dev/null > /dev/null 2>&1; then - MAKEINFO=makeinfo - echo "$ac_t""found" 1>&6 -else - MAKEINFO="$missing_dir/missing makeinfo" - echo "$ac_t""missing" 1>&6 -fi - - - - - - - - echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 -echo "configure:795: checking for strerror in -lcposix" >&5 -ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lcposix $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lcposix" -else - echo "$ac_t""no" 1>&6 -fi - - - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:839: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:869: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# -gt 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 - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:920: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:952: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 963 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:994: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:999: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1027: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&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 $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 -echo "configure:1062: checking for ${CC-cc} option to accept ANSI C" >&5 -if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - am_cv_prog_cc_stdc=no -ac_save_CC="$CC" -# 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 -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - cat > conftest.$ac_ext < -#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; } -EOF -if { (eval echo configure:1115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - am_cv_prog_cc_stdc="$ac_arg"; break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done -CC="$ac_save_CC" - -fi - -if test -z "$am_cv_prog_cc_stdc"; then - echo "$ac_t""none needed" 1>&6 -else - echo "$ac_t""$am_cv_prog_cc_stdc" 1>&6 -fi -case "x$am_cv_prog_cc_stdc" in - x|xno) ;; - *) CC="$CC $am_cv_prog_cc_stdc" ;; -esac - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1139: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1160: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1219: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1232: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - 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 < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - 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 < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#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); } - -EOF -if { (eval echo configure:1299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - - -# Check whether --with-gtk-prefix or --without-gtk-prefix was given. -if test "${with_gtk_prefix+set}" = set; then - withval="$with_gtk_prefix" - gtk_config_prefix="$withval" -else - gtk_config_prefix="" -fi - -# Check whether --with-gtk-exec-prefix or --without-gtk-exec-prefix was given. -if test "${with_gtk_exec_prefix+set}" = set; then - withval="$with_gtk_exec_prefix" - gtk_config_exec_prefix="$withval" -else - gtk_config_exec_prefix="" -fi - -# Check whether --enable-gtktest or --disable-gtktest was given. -if test "${enable_gtktest+set}" = set; then - enableval="$enable_gtktest" - : -else - enable_gtktest=yes -fi - - - for module in . - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - # Extract the first word of "gtk-config", so it can be a program name with args. -set dummy gtk-config; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1373: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$GTK_CONFIG" in - /*) - ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. - ;; - ?:/*) - ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a dos path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_GTK_CONFIG="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" - ;; -esac -fi -GTK_CONFIG="$ac_cv_path_GTK_CONFIG" -if test -n "$GTK_CONFIG"; then - echo "$ac_t""$GTK_CONFIG" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - min_gtk_version=1.2.0 - echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:1408: checking for GTK - version >= $min_gtk_version" >&5 - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" - rm -f conf.gtktest - if test "$cross_compiling" = yes; then - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat > conftest.$ac_ext < -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} - -EOF -if { (eval echo configure:1509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - no_gtk=yes -fi -rm -fr conftest* -fi - - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - echo "$ac_t""yes" 1>&6 - : - else - echo "$ac_t""no" 1>&6 - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - cat > conftest.$ac_ext < -#include - -int main() { - return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); -; return 0; } -EOF -if { (eval echo configure:1553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" -fi -rm -f conftest* - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - { echo "configure: error: Cannot find GTK: Is gtk-config in path?" 1>&2; exit 1; } - fi - - - rm -f conf.gtktest - - -ALL_LINGUAS="" - -# Make sure we can run config.sub. -if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:1600: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1623: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1651: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -} - -; return 0; } -EOF -if { (eval echo configure:1705: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_const=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_const=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_c_const" 1>&6 -if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const -EOF - -fi - -echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:1726: checking for inline" >&5 -if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_inline=$ac_kw; break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done - -fi - -echo "$ac_t""$ac_cv_c_inline" 1>&6 -case "$ac_cv_c_inline" in - inline | yes) ;; - no) cat >> confdefs.h <<\EOF -#define inline -EOF - ;; - *) cat >> confdefs.h <&6 -echo "configure:1766: checking for off_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_off_t=yes -else - rm -rf conftest* - ac_cv_type_off_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_off_t" 1>&6 -if test $ac_cv_type_off_t = no; then - cat >> confdefs.h <<\EOF -#define off_t long -EOF - -fi - -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:1799: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_size_t=yes -else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - -fi - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:1834: checking for working alloca.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -char *p = alloca(2 * sizeof(int)); -; return 0; } -EOF -if { (eval echo configure:1846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_header_alloca_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_alloca_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 -if test $ac_cv_header_alloca_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ALLOCA_H 1 -EOF - -fi - -echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:1867: checking for alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -# 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; } -EOF -if { (eval echo configure:1900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_func_alloca_works=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_func_alloca_works=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 -if test $ac_cv_func_alloca_works = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ALLOCA 1 -EOF - -fi - -if test $ac_cv_func_alloca_works = no; then - # 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 <<\EOF -#define C_ALLOCA 1 -EOF - - -echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:1932: checking whether alloca needs Cray hooks" >&5 -if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5 | - egrep "webecray" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_os_cray=yes -else - rm -rf conftest* - ac_cv_os_cray=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_os_cray" 1>&6 -if test $ac_cv_os_cray = yes; then -for ac_func in _getb67 GETB67 getb67; do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1962: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* 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(); - -int main() { - -/* 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 -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <&6 -fi - -done -fi - -echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2017: checking stack direction for C alloca" >&5 -if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 -else - cat > conftest.$ac_ext < addr) ? 1 : -1; -} -main () -{ - exit (find_stack_direction() < 0); -} -EOF -if { (eval echo configure:2044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_c_stack_direction=1 -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_stack_direction=-1 -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 -cat >> confdefs.h <&6 -echo "configure:2069: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_func in getpagesize -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2108: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* 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(); - -int main() { - -/* 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 -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - -echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:2161: checking for working mmap" >&5 -if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat > conftest.$ac_ext < -#include -#include - -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE -# ifdef HAVE_UNISTD_H -# include -# endif - -/* Assume that all systems that can run configure have sys/param.h. */ -# ifndef HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# ifdef 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 */ - -#ifdef __cplusplus -extern "C" { void *malloc(unsigned); } -#else -char *malloc(); -#endif - -int -main() -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize(); - - /* - * First, make a file with some known garbage in it. - */ - data = malloc(pagesize); - if (!data) - exit(1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand(); - umask(0); - fd = creat("conftestmmap", 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("conftestmmap", O_RDWR); - if (fd < 0) - exit(1); - data2 = 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 = 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); - unlink("conftestmmap"); - exit(0); -} - -EOF -if { (eval echo configure:2309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - ac_cv_func_mmap_fixed_mapped=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_mmap_fixed_mapped=no -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_MMAP 1 -EOF - -fi - - - echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6 -echo "configure:2333: checking whether we are using the GNU C Library 2.1 or newer" >&5 -if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "Lucky GNU user" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_gnu_library_2_1=yes -else - rm -rf conftest* - ac_cv_gnu_library_2_1=no -fi -rm -f conftest* - - - -fi - -echo "$ac_t""$ac_cv_gnu_library_2_1" 1>&6 - - GLIBC21="$ac_cv_gnu_library_2_1" - - - - for ac_hdr in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2374: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - for ac_func in feof_unlocked fgets_unlocked getcwd getegid geteuid \ -getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ -strdup strtoul tsearch __argz_count __argz_stringify __argz_next -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2415: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* 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(); - -int main() { - -/* 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 -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - - - - # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then - withval="$with_libiconv_prefix" - - for dir in `echo "$withval" | tr : ' '`; do - if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi - if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi - done - -fi - - - echo $ac_n "checking for iconv""... $ac_c" 1>&6 -echo "configure:2483: checking for iconv" >&5 -if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat > conftest.$ac_ext < -#include -int main() { -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); -; return 0; } -EOF -if { (eval echo configure:2501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - am_cv_func_iconv=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS -liconv" - cat > conftest.$ac_ext < -#include -int main() { -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); -; return 0; } -EOF -if { (eval echo configure:2523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* - LIBS="$am_save_LIBS" - fi - -fi - -echo "$ac_t""$am_cv_func_iconv" 1>&6 - if test "$am_cv_func_iconv" = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ICONV 1 -EOF - - echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6 -echo "configure:2544: checking for iconv declaration" >&5 - if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - cat > conftest.$ac_ext < -#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; } -EOF -if { (eval echo configure:2569: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - am_cv_proto_iconv_arg1="" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - am_cv_proto_iconv_arg1="const" -fi -rm -f conftest* - 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 "$ac_t""${ac_t:- - }$am_cv_proto_iconv" 1>&6 - cat >> confdefs.h <&6 -echo "configure:2598: checking for nl_langinfo and CODESET" >&5 -if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -char* cs = nl_langinfo(CODESET); -; return 0; } -EOF -if { (eval echo configure:2610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - am_cv_langinfo_codeset=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - am_cv_langinfo_codeset=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$am_cv_langinfo_codeset" 1>&6 - if test $am_cv_langinfo_codeset = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_LANGINFO_CODESET 1 -EOF - - fi - - if test $ac_cv_header_locale_h = yes; then - echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:2633: checking for LC_MESSAGES" >&5 -if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -int main() { -return LC_MESSAGES -; return 0; } -EOF -if { (eval echo configure:2645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - am_cv_val_LC_MESSAGES=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - am_cv_val_LC_MESSAGES=no -fi -rm -f conftest* -fi - -echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6 - if test $am_cv_val_LC_MESSAGES = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_LC_MESSAGES 1 -EOF - - fi - fi - echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:2666: checking whether NLS is requested" >&5 - # 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 "$ac_t""$USE_NLS" 1>&6 - - - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - INTLLIBS= - - if test "$USE_NLS" = "yes"; then - cat >> confdefs.h <<\EOF -#define ENABLE_NLS 1 -EOF - - echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:2688: checking whether included gettext is requested" >&5 - # 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 "$ac_t""$nls_cv_force_use_gnu_gettext" 1>&6 - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - CATOBJEXT=NONE - - - - - ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:2708: checking for libintl.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6 -echo "configure:2735: checking for GNU gettext in libc" >&5 -if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -extern int _nl_msg_cat_cntr; -int main() { -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr -; return 0; } -EOF -if { (eval echo configure:2749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - gt_cv_func_gnugettext1_libc=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - gt_cv_func_gnugettext1_libc=no -fi -rm -f conftest* -fi - -echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6 - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6 -echo "configure:2765: checking for GNU gettext in libintl" >&5 -if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -lintl $LIBICONV" - cat > conftest.$ac_ext < -extern int _nl_msg_cat_cntr; -int main() { -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr -; return 0; } -EOF -if { (eval echo configure:2781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - gt_cv_func_gnugettext1_libintl=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - gt_cv_func_gnugettext1_libintl=no -fi -rm -f conftest* - LIBS="$gt_save_LIBS" -fi - -echo "$ac_t""$gt_cv_func_gnugettext1_libintl" 1>&6 - fi - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - cat >> confdefs.h <<\EOF -#define HAVE_GETTEXT 1 -EOF - - - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - INTLLIBS="-lintl $LIBICONV" - fi - - gt_save_LIBS="$LIBS" - LIBS="$LIBS $INTLLIBS" - for ac_func in dcgettext -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2814: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* 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(); - -int main() { - -/* 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 -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - LIBS="$gt_save_LIBS" - - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2871: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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; 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 "$ac_t""$MSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2905: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$GMSGFMT" in - /*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - ?:/*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_GMSGFMT="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT="$ac_cv_path_GMSGFMT" -if test -n "$GMSGFMT"; then - echo "$ac_t""$GMSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2942: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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 /dev/null >/dev/null 2>&1; 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 "$ac_t""$XGETTEXT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - CATOBJEXT=.gmo - fi - -else - echo "$ac_t""no" 1>&6 -fi - - - if test "$CATOBJEXT" = "NONE"; then - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - INTLOBJS="\$(GETTOBJS)" - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2992: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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; 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 "$ac_t""$MSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3026: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$GMSGFMT" in - /*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - ?:/*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_GMSGFMT="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT="$ac_cv_path_GMSGFMT" -if test -n "$GMSGFMT"; then - echo "$ac_t""$GMSGFMT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3062: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&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 /dev/null >/dev/null 2>&1; 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 "$ac_t""$XGETTEXT" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - CATOBJEXT=.gmo - INTLLIBS="\$(top_builddir)/intl/libintl.a $LIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then - : ; - else - echo "$ac_t""found msgfmt program is not GNU msgfmt; ignore it" 1>&6 - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then - : ; - else - echo "$ac_t""found xgettext program is not GNU xgettext; ignore it" 1>&6 - XGETTEXT=":" - fi - fi - - POSUB=po - fi - - - - if test "$PACKAGE" = gettext; then - BUILD_INCLUDED_LIBINTL=yes - 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3133: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$INTLBISON"; then - ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_INTLBISON="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -INTLBISON="$ac_cv_prog_INTLBISON" -if test -n "$INTLBISON"; then - echo "$ac_t""$INTLBISON" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$INTLBISON" && break -done - - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - echo $ac_n "checking version of bison""... $ac_c" 1>&6 -echo "configure:3166: checking version of bison" >&5 - 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 "$ac_t""$ac_prog_version" 1>&6 - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi - - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - - - - - - - - - - - nls_cv_header_intl= - nls_cv_header_libgt= - - DATADIRNAME=share - - - INSTOBJEXT=.mo - - - GENCAT=gencat - - - - if test "x$CATOBJEXT" != "x"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:3213: checking for catalogs to be installed" >&5 - NEW_LINGUAS= - for presentlang in $ALL_LINGUAS; do - useit=no - for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - NEW_LINGUAS="$NEW_LINGUAS $presentlang" - fi - done - LINGUAS=$NEW_LINGUAS - echo "$ac_t""$LINGUAS" 1>&6 - fi - - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - INTL_LIBTOOL_SUFFIX_PREFIX= - - - -if test "x${prefix}" = "xNONE"; then - cat >> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h < confcache <<\EOF -# 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. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# 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 \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo " -Makefile -src/Makefile -intl/Makefile -po/Makefile.in - config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@PACKAGE@%$PACKAGE%g -s%@VERSION@%$VERSION%g -s%@ACLOCAL@%$ACLOCAL%g -s%@AUTOCONF@%$AUTOCONF%g -s%@AUTOMAKE@%$AUTOMAKE%g -s%@AUTOHEADER@%$AUTOHEADER%g -s%@MAKEINFO@%$MAKEINFO%g -s%@SET_MAKE@%$SET_MAKE%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@GTK_CONFIG@%$GTK_CONFIG%g -s%@GTK_CFLAGS@%$GTK_CFLAGS%g -s%@GTK_LIBS@%$GTK_LIBS%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@RANLIB@%$RANLIB%g -s%@ALLOCA@%$ALLOCA%g -s%@GLIBC21@%$GLIBC21%g -s%@LIBICONV@%$LIBICONV%g -s%@USE_NLS@%$USE_NLS%g -s%@MSGFMT@%$MSGFMT%g -s%@GMSGFMT@%$GMSGFMT%g -s%@XGETTEXT@%$XGETTEXT%g -s%@INTLBISON@%$INTLBISON%g -s%@BUILD_INCLUDED_LIBINTL@%$BUILD_INCLUDED_LIBINTL%g -s%@USE_INCLUDED_LIBINTL@%$USE_INCLUDED_LIBINTL%g -s%@CATALOGS@%$CATALOGS%g -s%@CATOBJEXT@%$CATOBJEXT%g -s%@GMOFILES@%$GMOFILES%g -s%@INTLLIBS@%$INTLLIBS%g -s%@INTLOBJS@%$INTLOBJS%g -s%@POFILES@%$POFILES%g -s%@POSUB@%$POSUB%g -s%@DATADIRNAME@%$DATADIRNAME%g -s%@INSTOBJEXT@%$INSTOBJEXT%g -s%@GENCAT@%$GENCAT%g -s%@MKINSTALLDIRS@%$MKINSTALLDIRS%g -s%@INTL_LIBTOOL_SUFFIX_PREFIX@%$INTL_LIBTOOL_SUFFIX_PREFIX%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# 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_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -# 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='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. 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.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# 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.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - fi - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h -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" - sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - fi - ;; - esac - done - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - - diff --git a/clients/gsat-1.1.0/configure.in b/clients/gsat-1.1.0/configure.in deleted file mode 100644 index 579ef5c..0000000 --- a/clients/gsat-1.1.0/configure.in +++ /dev/null @@ -1,57 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -AC_INIT(configure.in) -AM_INIT_AUTOMAKE(gsat, 0.1) -AM_CONFIG_HEADER(config.h) - -AC_ISC_POSIX -AC_PROG_CC -AM_PROG_CC_STDC -AC_HEADER_STDC - -AM_PATH_GTK(1.2.0, , - AC_MSG_ERROR(Cannot find GTK: Is gtk-config in path?)) - -dnl Add the languages which your application supports here. -ALL_LINGUAS="" -AM_GNU_GETTEXT - -dnl Set PACKAGE_LOCALE_DIR in config.h. -if test "x${prefix}" = "xNONE"; then - AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale") -else - AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale") -fi - -dnl Set PACKAGE_DATA_DIR in config.h. -if test "x${datadir}" = 'x${prefix}/share'; then - if test "x${prefix}" = "xNONE"; then - AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${ac_default_prefix}/share/${PACKAGE}") - else - AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/share/${PACKAGE}") - fi -else - AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${datadir}/${PACKAGE}") -fi - -dnl Set PACKAGE_SOURCE_DIR in config.h. -packagesrcdir=`cd $srcdir && pwd` -AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}") - -dnl Use -Wall if we have gcc. -changequote(,)dnl -if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -Wall" ;; - esac -fi -changequote([,])dnl - -AC_OUTPUT([ -Makefile -src/Makefile -intl/Makefile -po/Makefile.in -]) - diff --git a/clients/gsat-1.1.0/gsat.db b/clients/gsat-1.1.0/gsat.db deleted file mode 100644 index ddda031..0000000 --- a/clients/gsat-1.1.0/gsat.db +++ /dev/null @@ -1,51 +0,0 @@ -AO-10:J:435030:145975:145810 -AO-16:J:145900:437026:437025 -AO-27:J:145850:436795: -AO-40:LS:1269000:2401300:2401323 -AO-40:VS:145900:2401300:2401323 -AO-40:US:435500:2401300:2401323 -AO-49:PACKET:435275:145825: -AO-7:B:432125:145975:145972 -AO-7:A:145800:29400:29502 -DO-17:J::145825: -FO-20:JA:145900:435800:435795 -FO-29:JD:145850:435910:435910 -FO-29:JA:145900:435800:435795 -GO-32:J:145850:435325:435225 -IDEFIX:J::435278:145839 -IO-26:1K2:145875:435812: -ISS:PACKET:145990:145800:143625 -ISS:VOICE:145200:145800:143625 -KO-23:J:145850:435175: -KO-25:J:145870:436500: -LO-19:J:145840:437152.8:437125 -MET-2/21:J:137500:137400:137770 -MET-3/5:J::137400:137770 -MO-46:9K6:145850:437325: -MOZHAYETS:J::435319:145828 -NOAA-12:APT::137500:137770 -NOAA-14:APT::137620:137770 -NOAA-15:APT::137500:137770 -NOAA-16:APT::137620:137770 -NOAA-17:APT::137620:137770 -OKEAN-0:APT::137400:137770 -OKEAN-4:APT::137400:137220 -OO-38:J:437100:437100:437100 -PCSAT:APRS:145825:145825:144390 -PO-28:J:145975:435277.7: -RS-12/13:J:145910:29408.1:29500 -RS-15:A:145858:29354:29352 -RS-20:BEACON::145828:435319 -RS-21:J::145825:435335 -SAPPHIRE:J:437100:437100:437100 -SO-33:J:::437910 -SO-41:J:145850:436775: -SO-43:J:::145820 -SO-50:J:145850:436800: -STARSHINE 3:J::145825:145825 -TO-31:J:145925:436925: -UO-11:AFSK::145826:2401500 -UO-14:J:145975:435070: -UO-22:9K6:145900:435120: -UO-36:J::437025: -WO-18:J::437104: diff --git a/clients/gsat-1.1.0/gsat.glade b/clients/gsat-1.1.0/gsat.glade deleted file mode 100644 index b6692ce..0000000 --- a/clients/gsat-1.1.0/gsat.glade +++ /dev/null @@ -1,2848 +0,0 @@ - - - - - gsat - gsat - - src - pixmaps - C - False - True - True - - - - GtkWindow - mainwindow - 4 - 716 - 576 - - delete_event - mainwindow_delete_event - Thu, 16 Nov 2000 10:30:59 GMT - - gsat - Satellite Tracking - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER - False - 716 - 600 - False - False - False - - - GtkFixed - fixed - 710 - 540 - - - GtkEntry - tx_latitude - 64 - 412 - 54 - 0 - False - True - 0 - - - - - GtkEntry - tx_azimuth - 196 - 412 - 64 - 0 - False - True - 0 - - - - - GtkEntry - tx_range - 336 - 412 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_longitude - 64 - 440 - 54 - 0 - False - True - 0 - - - - - GtkEntry - tx_elevation - 196 - 440 - 64 - 0 - False - True - 0 - - - - - GtkEntry - tx_footprint - 336 - 440 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_date - 358 - 384 - 136 - 20 - False - True - 0 - - - - - GtkEntry - tx_aos - 566 - 384 - 136 - 20 - False - True - 0 - - - - - GtkEntry - tx_uplink - 104 - 472 - 80 - 0 - True - True - True - 0 - - - - - GtkEntry - tx_updoppler - 554 - 472 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_downlink - 104 - 496 - 80 - 0 - True - True - True - 0 - - - - - GtkEntry - tx_dwdoppler - 554 - 496 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_upshift - 366 - 472 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_downshift - 366 - 496 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_altitude - 484 - 412 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_velocity - 484 - 440 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_orbit - 240 - 384 - 56 - 20 - False - True - 0 - - - - - GtkStatusbar - statusbar - 2 - 0 - 544 - 350 - 24 - - - - GtkFrame - drawingframe - 2 - 0 - 24 - 704 - 354 - 0 - GTK_SHADOW_ETCHED_OUT - - - GtkDrawingArea - maparea - 700 - 350 - False - - expose_event - maparea_expose_event - Sat, 18 Nov 2000 15:35:29 GMT - - - - - - GtkToolbar - toolbar - 5 - 0 - 0 - 696 - 24 - GTK_ORIENTATION_HORIZONTAL - GTK_TOOLBAR_TEXT - 10 - GTK_TOOLBAR_SPACE_LINE - GTK_RELIEF_NORMAL - False - - - GtkButton - Toolbar:button - cb_connect - - clicked - on_cb_connect_clicked - Thu, 20 Sep 2001 19:17:08 GMT - - - - - - GtkButton - Toolbar:button - cb_disconnect - - clicked - on_cb_disconnect_clicked - Thu, 20 Sep 2001 19:17:23 GMT - - - - - - Placeholder - - - - GtkToggleButton - Toolbar:button - tb_grid - - toggled - on_tb_grid_toggled - Thu, 20 Sep 2001 19:17:43 GMT - - - False - - - - GtkToggleButton - Toolbar:button - tb_utctime - - toggled - on_tb_utctime_toggled - Thu, 20 Sep 2001 19:17:59 GMT - - - False - - - - GtkToggleButton - Toolbar:button - tb_footpsat - - toggled - on_tb_footpsat_toggled - Fri, 21 Sep 2001 18:24:01 GMT - - - False - - - - GtkToggleButton - Toolbar:button - tb_footpqth - - toggled - on_tb_footpqth_toggled - Fri, 21 Sep 2001 18:24:11 GMT - - - False - - - - GtkToggleButton - Toolbar:button - tb_track - - toggled - on_tb_track_toggled - Sat, 22 Sep 2001 17:26:16 GMT - - - False - - - - GtkToggleButton - Toolbar:button - tb_autofreq - - toggled - on_tb_autofreq_toggled - Fri, 14 Dec 2001 22:12:43 GMT - - - False - - - - Placeholder - - - - GtkButton - Toolbar:button - bt_azelgraph - - clicked - on_bt_azelgraph_clicked - Fri, 14 Dec 2001 22:15:56 GMT - - - - - - GtkButton - Toolbar:button - bt_preferences - - clicked - on_bt_preferences_clicked - Thu, 20 Sep 2001 19:18:08 GMT - - - - - - GtkButton - Toolbar:button - bt_dbedit - - clicked - on_bt_dbedit_clicked - Fri, 14 Dec 2001 22:17:19 GMT - - - - - - GtkButton - Toolbar:button - bt_about - - clicked - on_bt_about_clicked - Sat, 08 Feb 2003 21:40:28 GMT - - - - - - - GtkEntry - tx_beacon - 104 - 520 - 80 - 0 - True - True - True - 0 - - - - - GtkEntry - tx_beaconshift - 366 - 520 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_beacondoppler - 554 - 520 - 80 - 0 - False - True - 0 - - - - - GtkEntry - tx_ma - 632 - 412 - 64 - 20 - False - True - 0 - - - - - GtkLabel - lb_date - 326 - 388 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_downlink - 8 - 500 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_beacon - 8 - 524 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_satellite - 8 - 388 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_uplink - 8 - 476 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_latitude - 8 - 416 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_longitude - 8 - 444 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_orbit - 208 - 388 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkCombo - combo - 58 - 384 - 110 - 20 - False - True - False - True - False - - - - GtkEntry - GtkCombo:entry - combo_tx_satname - True - True - True - True - - changed - combo_tx_satname_changed - Mon, 10 Feb 2003 09:29:49 GMT - - False - True - 0 - - - - - - GtkEntry - tx_squint - 632 - 440 - 64 - 20 - False - True - 0 - - - - - GtkLabel - lb_mode - 194 - 514 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkStatusbar - satbar - 2 - 356 - 544 - 350 - 24 - - - - GtkLabel - lb_aos - 516 - 388 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkCheckButton - cb_updoppler - 646 - 470 - 0 - 0 - True - - toggled - on_cb_updoppler_toggled - Sat, 22 Sep 2001 21:06:15 GMT - - - False - True - - - - GtkCheckButton - cb_dwdoppler - 646 - 494 - 0 - 0 - True - - toggled - on_cb_dwdoppler_toggled - Sat, 22 Sep 2001 21:06:26 GMT - - - False - True - - - - GtkCheckButton - cb_beacondoppler - 646 - 518 - 0 - 0 - True - - toggled - on_cb_beacondoppler_toggled - Sat, 05 Jan 2002 04:30:04 GMT - - - False - True - - - - GtkLabel - lb_updoppler - 458 - 476 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_dwdoppler - 458 - 500 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_beacondoppler - 458 - 524 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_updpshift - 294 - 476 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_dwdpshift - 294 - 500 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_bcndpshift - 294 - 524 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkCombo - combo_mode - 222 - 510 - 64 - 18 - False - True - False - True - False - - - - GtkEntry - GtkCombo:entry - combo_tx_mode - True - - changed - combo_tx_mode_changed - Mon, 10 Feb 2003 09:31:01 GMT - - False - True - 0 - - - - - - GtkCheckButton - cb_rotor - 212 - 476 - 56 - 22 - True - - toggled - on_cb_rotor_toggled - Sat, 05 Jan 2002 16:32:37 GMT - - - False - True - - - - GtkLabel - lb_azimuth - 138 - 416 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_elevation - 138 - 444 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_range - 280 - 416 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_footprint - 280 - 444 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_altitude - 436 - 416 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_velocity - 436 - 444 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_ma - 584 - 416 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_squint - 584 - 444 - 0 - 0 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - - - GtkDialog - dialog_preferences - - delete_event - on_dialog_preferences_delete_event - Fri, 21 Sep 2001 11:41:42 GMT - - gsat - Preferences - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER - False - False - False - False - - - GtkVBox - Dialog:vbox - dialog-vbox1 - False - 0 - - - GtkHBox - Dialog:action_area - dialog-action_area1 - 10 - True - 5 - - 0 - False - True - GTK_PACK_END - - - - GtkButton - bt_prefs_apply - 4 - True - - 0 - GDK_Return - clicked - - - clicked - on_bt_prefs_apply_clicked - Thu, 20 Sep 2001 21:01:34 GMT - - - GTK_RELIEF_NORMAL - - 0 - False - True - - - - - Placeholder - - - - GtkButton - bt_prefs_save - 4 - True - - 0 - GDK_Return - clicked - - - clicked - on_bt_prefs_save_clicked - Thu, 13 Dec 2001 18:27:21 GMT - - - GTK_RELIEF_NORMAL - - 0 - False - True - - - - - Placeholder - - - - GtkButton - bt_prefs_cancel - 4 - True - True - True - - 0 - GDK_Escape - clicked - - - clicked - on_bt_prefs_cancel_clicked - Thu, 20 Sep 2001 21:01:47 GMT - - - GTK_RELIEF_NORMAL - - 0 - False - True - - - - - - GtkFixed - fixed1 - - 0 - True - True - - - - GtkFrame - fr_radiocontrol - 2 - 302 - 8 - 288 - 240 - - 0 - GTK_SHADOW_ETCHED_IN - - - GtkFixed - fixed3 - - - GtkEntry - tx_downpluginconfig - 104 - 40 - 160 - 24 - True - True - True - 0 - - - - - GtkEntry - tx_uppluginconfig - 104 - 112 - 160 - 24 - True - True - True - 0 - - - - - GtkEntry - tx_beaconpluginconfig - 104 - 184 - 160 - 24 - True - True - True - 0 - - - - - GtkLabel - lb_prefs_upconfig - 0 - 112 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_prefs_beacon - 0 - 152 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_prefs_beaconconfig - 0 - 184 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkCombo - combo_downplugin - 104 - 8 - 160 - 24 - False - True - False - True - False - - - - GtkEntry - GtkCombo:entry - entry_downplugin - True - False - True - 0 - - - - - - GtkCombo - combo_beaconplugin - 104 - 152 - 160 - 24 - False - True - False - True - False - - - - GtkEntry - GtkCombo:entry - entry_beaconplugin - True - False - True - 0 - - - - - - GtkLabel - lb_prefs_downlink - 0 - 8 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_prefs_downconfig - 0 - 40 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_prefs_uplink - 0 - 80 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkCombo - combo_upplugin - 104 - 80 - 160 - 24 - False - True - False - True - False - - - - GtkEntry - GtkCombo:entry - entry_upplugin - True - False - True - 0 - - - - - - - - GtkFrame - fr_rotorcontrol - 2 - 302 - 250 - 288 - 94 - - 0 - GTK_SHADOW_ETCHED_IN - - - GtkFixed - fixed8 - - - GtkEntry - tx_rotorpluginconfig - 96 - 40 - 160 - 24 - True - True - True - 0 - - - - - GtkLabel - lb_prefs_rotor - 0 - 8 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_prefs_rotorpluginconfig - 0 - 40 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkCombo - combo_rotorplugin - 96 - 8 - 160 - 24 - False - True - False - True - False - - - - GtkEntry - GtkCombo:entry - entry_rotorplugin - True - False - True - 0 - - - - - - - - GtkFrame - fr_options - 2 - 8 - 8 - 288 - 336 - - 0 - GTK_SHADOW_ETCHED_IN - - - GtkFixed - fixed2 - - - GtkEntry - tx_aoscommand - 104 - 216 - 160 - 24 - True - True - True - 0 - - - - - GtkEntry - tx_loscommand - 104 - 264 - 160 - 24 - True - True - True - 0 - - - - - GtkLabel - lb_prefs_time - 8 - 48 - 88 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkRadioButton - rd_prefs_local - 104 - 48 - 64 - 24 - True - - False - True - timeprefs - - - - GtkRadioButton - rd_prefs_utc - 176 - 48 - 64 - 24 - True - - False - True - timeprefs - - - - GtkLabel - lb_prefs_grid - 8 - 16 - 88 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkRadioButton - rd_prefs_gridon - 104 - 16 - 48 - 24 - True - - False - True - gridprefs - - - - GtkRadioButton - rd_prefs_gridoff - 152 - 16 - 48 - 24 - True - - False - True - gridprefs - - - - GtkLabel - lb_prefs_fpsat - 8 - 80 - 88 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkRadioButton - rd_prefs_fpsaton - 104 - 80 - 48 - 24 - True - - False - True - fpsatprefs - - - - GtkRadioButton - rd_prefs_fpsatoff - 152 - 80 - 48 - 24 - True - - False - True - fpsatprefs - - - - GtkLabel - lb_prefs_fpqth - 8 - 112 - 88 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkRadioButton - rd_prefs_fpqthon - 104 - 112 - 48 - 24 - True - - False - True - fpqthprefs - - - - GtkRadioButton - rd_prefs_fpqthoff - 152 - 112 - 48 - 24 - True - - False - True - fpqthprefs - - - - GtkLabel - lb_prefs_track - 8 - 144 - 88 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkRadioButton - rd_prefs_trackon - 104 - 144 - 48 - 24 - True - - False - True - trackprefs - - - - GtkRadioButton - rd_prefs_trackoff - 152 - 144 - 48 - 24 - True - - False - True - trackprefs - - - - GtkLabel - lb_prefs_autofreq - 8 - 176 - 88 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkRadioButton - rd_prefs_autofreqon - 104 - 176 - 48 - 24 - True - - False - True - autofreqprefs - - - - GtkRadioButton - rd_prefs_autofreqoff - 152 - 176 - 48 - 24 - True - - False - True - autofreqprefs - - - - GtkLabel - lb_prefs_aoscommand - 8 - 216 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_prefs_loscommand - 8 - 264 - 96 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - - - - - - GtkDialog - dialog_connect - - delete_event - on_dialog_connect_delete_event - Fri, 21 Sep 2001 11:41:32 GMT - - gsat - Connect - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - False - False - False - - - GtkVBox - Dialog:vbox - dialog-vbox2 - False - 0 - - - GtkHBox - Dialog:action_area - dialog-action_area2 - 10 - True - 5 - - 0 - False - True - GTK_PACK_END - - - - GtkButton - bt_con_connect - 4 - True - True - True - - 0 - GDK_Return - clicked - - - clicked - on_bt_con_connect_clicked - Thu, 20 Sep 2001 21:02:09 GMT - - - GTK_RELIEF_NORMAL - - 0 - False - True - - - - - Placeholder - - - - Placeholder - - - - Placeholder - - - - GtkButton - bt_con_cancel - 4 - True - - 0 - GDK_Escape - clicked - - - clicked - on_bt_con_cancel_clicked - Thu, 20 Sep 2001 21:02:19 GMT - - - GTK_RELIEF_NORMAL - - 0 - False - True - - - - - - GtkFrame - frame3 - 3 - 0 - GTK_SHADOW_ETCHED_IN - - 0 - True - True - - - - GtkFixed - fixed4 - - - GtkEntry - tx_con_server - 88 - 48 - 158 - 20 - True - True - True - 250 - localhost - - - - GtkEntry - tx_con_port - 88 - 80 - 158 - 20 - True - True - True - 0 - 1210 - - - - GtkLabel - lb_con_port - 24 - 80 - 56 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_con_server - 24 - 48 - 56 - 24 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_con_text - 8 - 8 - 272 - 32 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - - - - - GtkWindow - dialog_azel_graph - - delete_event - on_dialog_azel_graph_delete_event - Fri, 14 Dec 2001 20:57:02 GMT - - gsat - AZ/EL tracking - GTK_WINDOW_DIALOG - GTK_WIN_POS_NONE - False - False - False - False - - - GtkVBox - vbox1 - False - 0 - - - GtkFixed - fixed6 - - 0 - True - True - - - - GtkFrame - frame5 - 0 - 8 - 256 - 256 - 0 - GTK_SHADOW_ETCHED_IN - - - GtkDrawingArea - azelgraph - 256 - 256 - - expose_event - on_azelgraph_expose_event - Fri, 14 Dec 2001 20:58:16 GMT - - - - - - GtkFrame - frame6 - 0 - 272 - 256 - 64 - 0 - GTK_SHADOW_ETCHED_IN - - - GtkFixed - fixed7 - - - GtkEntry - tx_azel_sat - 96 - 8 - 80 - 16 - True - False - True - 0 - - - - - GtkEntry - tx_azel_azimuth - 64 - 32 - 48 - 16 - False - True - 0 - - - - - GtkEntry - tx_azel_elevation - 184 - 32 - 48 - 16 - False - True - 0 - - - - - GtkLabel - lb_azel_sat - 48 - 8 - 48 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_azel_elevation - 128 - 32 - 48 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_azel_azimuth - 16 - 32 - 40 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - - - - - - GtkWindow - dialog_dbedit - - delete_event - on_dialog_dbedit_delete_event - Tue, 08 Jan 2002 21:45:07 GMT - - gsat - Satellite DB - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - False - False - False - - - GtkFixed - fixed9 - - - GtkCList - clist_satdb - 2 - 0 - 8 - 382 - 328 - True - - select_row - on_clist_satdb_select_row - Tue, 08 Jan 2002 21:40:24 GMT - - 5 - 59,44,77,86,73 - GTK_SELECTION_SINGLE - True - GTK_SHADOW_IN - - - GtkLabel - CList:title - lb_sat - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - CList:title - lb_mode - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - CList:title - lb_uplink - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - CList:title - lb_downlink - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - CList:title - lb_beacon - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - - GtkVScrollbar - vscrollbar_satdb - 382 - 32 - 16 - 302 - GTK_UPDATE_CONTINUOUS - 0 - 0 - 0 - 0 - 0 - 0 - - - - GtkFrame - frame7 - 0 - 336 - 400 - 92 - 0 - GTK_SHADOW_ETCHED_IN - - - GtkFixed - fixed10 - - - GtkEntry - tx_dbsat - 8 - 24 - 80 - 20 - True - True - True - 0 - - - - - GtkEntry - tx_dbuplink - 144 - 24 - 76 - 20 - True - True - True - 0 - - - - - GtkEntry - tx_dbdownlink - 228 - 24 - 76 - 20 - True - True - True - 0 - - - - - GtkEntry - tx_dbbeacon - 312 - 24 - 76 - 20 - True - True - True - 0 - - - - - GtkButton - bt_dbadd - 16 - 56 - 64 - 24 - True - - clicked - on_bt_dbadd_clicked - Tue, 08 Jan 2002 21:39:13 GMT - - - GTK_RELIEF_NORMAL - - - - GtkButton - bt_dbupdate - 167 - 56 - 64 - 24 - True - - clicked - on_bt_dbupdate_clicked - Tue, 08 Jan 2002 21:39:28 GMT - - - GTK_RELIEF_NORMAL - - - - GtkButton - bt_dbdelete - 317 - 56 - 64 - 24 - True - - clicked - on_bt_dbdelete_clicked - Tue, 08 Jan 2002 21:39:38 GMT - - - GTK_RELIEF_NORMAL - - - - GtkLabel - lb_dbsat - 8 - 6 - 80 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_dbmode - 96 - 6 - 40 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkEntry - tx_dbmode - 96 - 24 - 40 - 20 - True - True - True - 0 - - - - - GtkLabel - lb_dbuplink - 144 - 6 - 76 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_dbdownlink - 228 - 6 - 76 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - GtkLabel - lb_dbbeacon - 312 - 6 - 76 - 16 - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - - - - - - - GtkDialog - dialog_about - - delete_event - on_dialog_about_delete_event - Thu, 13 Mar 2003 10:40:55 GMT - - About gsat - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - True - False - - - GtkVBox - Dialog:vbox - dialog-vbox3 - False - 0 - - - GtkHBox - Dialog:action_area - dialog-action_area3 - 10 - True - 5 - - 0 - False - True - GTK_PACK_END - - - - GtkButton - bt_about_ok - True - - clicked - on_bt_about_ok_clicked - Thu, 13 Mar 2003 10:29:41 GMT - - - GTK_RELIEF_NORMAL - - 0 - True - False - - - - - - GtkHBox - hbox1 - False - 0 - - 0 - True - True - - - - GtkVBox - vbox2 - False - 0 - - 8 - True - True - - - - Placeholder - - - - GtkFrame - frame_satpix - 2 - 0 - GTK_SHADOW_ETCHED_IN - - 0 - False - True - - - - GtkPixmap - about_pixmap - 0.5 - 0.5 - 3 - 2 - True - - - - - Placeholder - - - - - GtkVBox - vbox_about - 8 - False - 0 - - 0 - True - True - - - - Placeholder - - - - Placeholder - - - - GtkLabel - lb_about_title - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - Placeholder - - - - GtkLabel - lb_about_desc - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - Placeholder - - - - GtkLabel - lb_about_version - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - Placeholder - - - - GtkLabel - lb_about_by - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - GtkLabel - lb_about_author - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - Placeholder - - - - GtkLabel - lb_about_email - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - GtkLabel - lb_about_web - - GTK_JUSTIFY_CENTER - False - 0.5 - 0.5 - 0 - 0 - - 0 - False - False - - - - - Placeholder - - - - Placeholder - - - - - - - diff --git a/clients/gsat-1.1.0/gsat.prefs b/clients/gsat-1.1.0/gsat.prefs deleted file mode 100644 index 56f1b5c..0000000 --- a/clients/gsat-1.1.0/gsat.prefs +++ /dev/null @@ -1,11 +0,0 @@ -101111 -play /usr/share/xfce/sounds/alert01.wav >/dev/null 2>&1 & -play /usr/share/xfce/sounds/ping01.wav >/dev/null 2>&1 & -None -D/dev/ttyS0:S19200 -None - -None -D/dev/ttyS0:S19200 -None -test diff --git a/clients/gsat-1.1.0/intl/ChangeLog b/clients/gsat-1.1.0/intl/ChangeLog deleted file mode 100644 index 84e2b37..0000000 --- a/clients/gsat-1.1.0/intl/ChangeLog +++ /dev/null @@ -1,4 +0,0 @@ -2001-09-13 GNU - - * Version 0.10.40 released. - diff --git a/clients/gsat-1.1.0/intl/Makefile b/clients/gsat-1.1.0/intl/Makefile deleted file mode 100644 index a24ebba..0000000 --- a/clients/gsat-1.1.0/intl/Makefile +++ /dev/null @@ -1,313 +0,0 @@ -# Generated automatically from Makefile.in by configure. -# Makefile for directory with message catalog handling in GNU NLS Utilities. -# 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. - -PACKAGE = gsat -VERSION = 0.1 - -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. -top_builddir = .. - -prefix = /usr/local -exec_prefix = ${prefix} -transform = s,x,x, -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/intl -aliaspath = $(localedir) -subdir = intl - -INSTALL = /usr/bin/ginstall -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = ./mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -l = - -AR = ar -CC = gcc -LIBTOOL = @LIBTOOL@ -RANLIB = ranlib -YACC = bison -y -d -YFLAGS = --name-prefix=__gettext - -DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ --DLIBDIR=\"$(libdir)\" -DHAVE_CONFIG_H -CPPFLAGS = -CFLAGS = -g -O2 -Wall -LDFLAGS = - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h -COMHDRS = gettext.h gettextP.h hash-string.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 \ -localcharset.c -OBJECTS = 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 localcharset.$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 COPYING.LIB-2.1 libintl.glibc -DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.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=1 -LTV_REVISION=1 -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''@/gsat/g' $< > t-$@ - mv t-$@ $@ - -INCLUDES = -I.. -I. -I$(top_srcdir)/intl - -all: all-no -all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed -all-no: all-no-no -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) \ - -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 'i686-pc-linux-gnu' > 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 '' = '$(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 'no' = yes; then \ - $(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 yes = 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 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 - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - if test "$(PACKAGE)" = "gettext" \ - && test '' = '$(GETTOBJS)'; then \ - rm -f $(DESTDIR)$(includedir)/libintl.h; \ - $(LIBTOOL) --mode=uninstall \ - rm -f $(DESTDIR)$(libdir)/libintl.$la; \ - else \ - : ; \ - fi - if test 'no' = 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 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 finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h -dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.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; \ - ln $$dir/$$file $(distdir) 2> /dev/null \ - || 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/clients/gsat-1.1.0/intl/Makefile.in b/clients/gsat-1.1.0/intl/Makefile.in deleted file mode 100644 index 19ed4a7..0000000 --- a/clients/gsat-1.1.0/intl/Makefile.in +++ /dev/null @@ -1,313 +0,0 @@ -# Makefile for directory with message catalog handling in GNU NLS Utilities. -# 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. - -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)\" @DEFS@ -CPPFLAGS = @CPPFLAGS@ -CFLAGS = @CFLAGS@ -LDFLAGS = @LDFLAGS@ - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h -COMHDRS = gettext.h gettextP.h hash-string.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 \ -localcharset.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 localcharset.$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 COPYING.LIB-2.1 libintl.glibc -DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.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=1 -LTV_REVISION=1 -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) @LIBICONV@ \ - -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 \ - $(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 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 - -# 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 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 finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h -dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.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; \ - ln $$dir/$$file $(distdir) 2> /dev/null \ - || 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/clients/gsat-1.1.0/intl/VERSION b/clients/gsat-1.1.0/intl/VERSION deleted file mode 100644 index cb8a01a..0000000 --- a/clients/gsat-1.1.0/intl/VERSION +++ /dev/null @@ -1 +0,0 @@ -GNU gettext library from gettext-0.10.40 diff --git a/clients/gsat-1.1.0/intl/bindtextdom.c b/clients/gsat-1.1.0/intl/bindtextdom.c deleted file mode 100644 index c6a9bd1..0000000 --- a/clients/gsat-1.1.0/intl/bindtextdom.c +++ /dev/null @@ -1,369 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/config.charset b/clients/gsat-1.1.0/intl/config.charset deleted file mode 100755 index f4f2611..0000000 --- a/clients/gsat-1.1.0/intl/config.charset +++ /dev/null @@ -1,438 +0,0 @@ -#! /bin/sh -# Output a system dependent table of character encoding aliases. -# -# Copyright (C) 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 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*) - # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore - # localcharset.c falls back to using the full locale name - # from the environment variables. - 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" - ;; - 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 KOI8-R" # not CP866 ?? - echo "ru_RU KOI8-R" # not 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/clients/gsat-1.1.0/intl/dcgettext.c b/clients/gsat-1.1.0/intl/dcgettext.c deleted file mode 100644 index b7c9652..0000000 --- a/clients/gsat-1.1.0/intl/dcgettext.c +++ /dev/null @@ -1,58 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/dcigettext.c b/clients/gsat-1.1.0/intl/dcigettext.c deleted file mode 100644 index 6acde19..0000000 --- a/clients/gsat-1.1.0/intl/dcigettext.c +++ /dev/null @@ -1,1259 +0,0 @@ -/* Implementation of the internal dcigettext 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. */ - -/* 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 !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#if defined HAVE_UNISTD_H || defined _LIBC -# include -#endif - -#include - -#if defined HAVE_SYS_PARAM_H || defined _LIBC -# include -#endif - -#include "gettextP.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 - -/* 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 - -/* 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. */ -const char _nl_default_dirname[] = LOCALEDIR; - -/* 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 unsigned long int plural_eval PARAMS ((struct expression *pexp, - unsigned long int n)) - 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 - -/* 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; - -#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; -} - - -/* Function to evaluate the plural expression and return an index value. */ -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; -} - - -/* 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. */ -#if defined _LIBC || (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. */ - return "C"; - } - } -#endif - - 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/clients/gsat-1.1.0/intl/dcngettext.c b/clients/gsat-1.1.0/intl/dcngettext.c deleted file mode 100644 index c16af21..0000000 --- a/clients/gsat-1.1.0/intl/dcngettext.c +++ /dev/null @@ -1,60 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/dgettext.c b/clients/gsat-1.1.0/intl/dgettext.c deleted file mode 100644 index 3651207..0000000 --- a/clients/gsat-1.1.0/intl/dgettext.c +++ /dev/null @@ -1,59 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/dngettext.c b/clients/gsat-1.1.0/intl/dngettext.c deleted file mode 100644 index f214e95..0000000 --- a/clients/gsat-1.1.0/intl/dngettext.c +++ /dev/null @@ -1,61 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/explodename.c b/clients/gsat-1.1.0/intl/explodename.c deleted file mode 100644 index 2985064..0000000 --- a/clients/gsat-1.1.0/intl/explodename.c +++ /dev/null @@ -1,192 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/finddomain.c b/clients/gsat-1.1.0/intl/finddomain.c deleted file mode 100644 index 2f103d5..0000000 --- a/clients/gsat-1.1.0/intl/finddomain.c +++ /dev/null @@ -1,198 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/gettext.c b/clients/gsat-1.1.0/intl/gettext.c deleted file mode 100644 index 22a6c24..0000000 --- a/clients/gsat-1.1.0/intl/gettext.c +++ /dev/null @@ -1,64 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/gettext.h b/clients/gsat-1.1.0/intl/gettext.h deleted file mode 100644 index 6f5d760..0000000 --- a/clients/gsat-1.1.0/intl/gettext.h +++ /dev/null @@ -1,102 +0,0 @@ -/* 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 - -#if HAVE_LIMITS_H || _LIBC -# include -#endif - -/* @@ 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/clients/gsat-1.1.0/intl/gettextP.h b/clients/gsat-1.1.0/intl/gettextP.h deleted file mode 100644 index 43de1cd..0000000 --- a/clients/gsat-1.1.0/intl/gettextP.h +++ /dev/null @@ -1,252 +0,0 @@ -/* 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 "gettext.h" /* Get nls_uint32. */ - -/* @@ end of prolog @@ */ - -#ifndef PARAMS -# if __STDC__ -# 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 - - -/* 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, /* Module operation. */ - plus, /* Addition. */ - minus, /* Subtraction. */ - less_than, /* Comparison. */ - greater_than, /* Comparison. */ - less_or_equal, /* Comparison. */ - greater_or_equal, /* Comparison. */ - equal, /* Comparision for equality. */ - not_equal, /* Comparision 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; -}; - - -/* 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; - -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 - -#ifdef _LIBC -extern void __gettext_free_exp PARAMS ((struct expression *exp)) - internal_function; -extern int __gettextparse PARAMS ((void *arg)); -#else -extern void gettext_free_exp__ PARAMS ((struct expression *exp)) - internal_function; -extern int gettextparse__ PARAMS ((void *arg)); -#endif - -/* @@ begin of epilog @@ */ - -#endif /* gettextP.h */ diff --git a/clients/gsat-1.1.0/intl/hash-string.h b/clients/gsat-1.1.0/intl/hash-string.h deleted file mode 100644 index ccb7acc..0000000 --- a/clients/gsat-1.1.0/intl/hash-string.h +++ /dev/null @@ -1,59 +0,0 @@ -/* 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__ -# 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/clients/gsat-1.1.0/intl/intl-compat.c b/clients/gsat-1.1.0/intl/intl-compat.c deleted file mode 100644 index 0a06ce9..0000000 --- a/clients/gsat-1.1.0/intl/intl-compat.c +++ /dev/null @@ -1,166 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/l10nflist.c b/clients/gsat-1.1.0/intl/l10nflist.c deleted file mode 100644 index 533e94b..0000000 --- a/clients/gsat-1.1.0/intl/l10nflist.c +++ /dev/null @@ -1,405 +0,0 @@ -/* 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 !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#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 (codeset[cnt])) - { - ++len; - - if (isalpha (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 (codeset[cnt])) - *wp++ = tolower (codeset[cnt]); - else if (isdigit (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/clients/gsat-1.1.0/intl/libgettext.h b/clients/gsat-1.1.0/intl/libgettext.h deleted file mode 100644 index c5be54a..0000000 --- a/clients/gsat-1.1.0/intl/libgettext.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Convenience header for conditional use of GNU . - 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. */ - -#ifndef _LIBGETTEXT_H -#define _LIBGETTEXT_H 1 - -/* NLS can be disabled through the configure --disable-nls option. */ -#if ENABLE_NLS - -/* Get declarations of GNU message catalog functions. */ -# include - -#else - -# define gettext(Msgid) (Msgid) -# define dgettext(Domainname, Msgid) (Msgid) -# define dcgettext(Domainname, Msgid, Category) (Msgid) -# define ngettext(Msgid1, Msgid2, N) \ - ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) -# define dngettext(Domainname, Msgid1, Msgid2, N) \ - ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) -# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ - ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) -# define textdomain(Domainname) ((char *) (Domainname)) -# define bindtextdomain(Domainname, Dirname) ((char *) (Dirname)) -# define bind_textdomain_codeset(Domainname, Codeset) ((char *) (Codeset)) - -#endif - -/* For automatical extraction of messages sometimes no real - translation is needed. Instead the string itself is the result. */ -#define gettext_noop(Str) (Str) - -#endif /* _LIBGETTEXT_H */ diff --git a/clients/gsat-1.1.0/intl/libgnuintl.h b/clients/gsat-1.1.0/intl/libgnuintl.h deleted file mode 100644 index f891deb..0000000 --- a/clients/gsat-1.1.0/intl/libgnuintl.h +++ /dev/null @@ -1,128 +0,0 @@ -/* 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 - -#ifndef PARAMS -# if __STDC__ || defined __cplusplus -# define PARAMS(args) args -# else -# define 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 PARAMS ((const char *__msgid)); - -/* Look up MSGID in the DOMAINNAME message catalog for the current - LC_MESSAGES locale. */ -extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); - -/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY - locale. */ -extern char *dcgettext 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 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 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 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 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 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 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/clients/gsat-1.1.0/intl/loadinfo.h b/clients/gsat-1.1.0/intl/loadinfo.h deleted file mode 100644 index b861260..0000000 --- a/clients/gsat-1.1.0/intl/loadinfo.h +++ /dev/null @@ -1,109 +0,0 @@ -/* 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 - -#ifndef PARAMS -# if __STDC__ -# 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/clients/gsat-1.1.0/intl/loadmsgcat.c b/clients/gsat-1.1.0/intl/loadmsgcat.c deleted file mode 100644 index f99ebee..0000000 --- a/clients/gsat-1.1.0/intl/loadmsgcat.c +++ /dev/null @@ -1,567 +0,0 @@ -/* 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 "gettext.h" -#include "gettextP.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 - -/* 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 PLURAL_PARSE __gettextparse -#else -# define PLURAL_PARSE gettextparse__ -#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; - -#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 - } -}; -static 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; -static 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 - - -/* 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 (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 libiconv, we want to use transliteration. */ -# if _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 _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. */ - 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 - { - /* First get the number. */ - char *endp; - unsigned long int n; - struct parse_args args; - - nplurals += 9; - while (*nplurals != '\0' && isspace (*nplurals)) - ++nplurals; -#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 - domain->nplurals = n; - if (nplurals == endp) - goto no_plural; - - /* 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; - domain->plural = 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 (); - domain->plural = &germanic_plural; - domain->nplurals = 2; - } -} - - -#ifdef _LIBC -void -internal_function -_nl_unload_domain (domain) - struct loaded_domain *domain; -{ - if (domain->plural != &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/clients/gsat-1.1.0/intl/localcharset.c b/clients/gsat-1.1.0/intl/localcharset.c deleted file mode 100644 index 61f8f3e..0000000 --- a/clients/gsat-1.1.0/intl/localcharset.c +++ /dev/null @@ -1,271 +0,0 @@ -/* Determine a canonical name for the current locale's character encoding. - - Copyright (C) 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. */ - -/* 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 - -#ifndef WIN32 -# if HAVE_LANGINFO_CODESET -# include -# else -# if HAVE_SETLOCALE -# include -# endif -# endif -#else /* WIN32 */ -# define WIN32_LEAN_AND_MEAN -# include -#endif - -#ifndef DIRECTORY_SEPARATOR -# define DIRECTORY_SEPARATOR '/' -#endif - -#ifndef ISSLASH -# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) -#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) - { -#ifndef 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 = malloc (res_size + 1); - } - else - { - res_size += l1 + 1 + l2 + 1; - res_ptr = 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 /* WIN32 */ - - /* 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. */ - - cp = "CP936" "\0" "GBK" "\0" - "CP1361" "\0" "JOHAB" "\0"; -#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; - -#ifndef WIN32 - -# 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 - -#else /* 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; - -#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/clients/gsat-1.1.0/intl/locale.alias b/clients/gsat-1.1.0/intl/locale.alias deleted file mode 100644 index bd7b9b3..0000000 --- a/clients/gsat-1.1.0/intl/locale.alias +++ /dev/null @@ -1,78 +0,0 @@ -# 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/clients/gsat-1.1.0/intl/localealias.c b/clients/gsat-1.1.0/intl/localealias.c deleted file mode 100644 index 91e7acc..0000000 --- a/clients/gsat-1.1.0/intl/localealias.c +++ /dev/null @@ -1,404 +0,0 @@ -/* 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 -#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 !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#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 - -/* 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 - -/* 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 = LOCALE_ALIAS_PATH; - struct alias_map *retval; - const char *result = NULL; - size_t added; - -#ifdef _LIBC - __libc_lock_lock (lock); -#endif - - 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; - - 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 (cp[0])) - ++cp; - - /* A leading '#' signals a comment line. */ - if (cp[0] != '\0' && cp[0] != '#') - { - alias = cp++; - while (cp[0] != '\0' && !isspace (cp[0])) - ++cp; - /* Terminate alias name. */ - if (cp[0] != '\0') - *cp++ = '\0'; - - /* Now look for the beginning of the value. */ - while (isspace (cp[0])) - ++cp; - - if (cp[0] != '\0') - { - size_t alias_len; - size_t value_len; - - value = cp++; - while (cp[0] != '\0' && !isspace (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/clients/gsat-1.1.0/intl/ngettext.c b/clients/gsat-1.1.0/intl/ngettext.c deleted file mode 100644 index fb3ec5a..0000000 --- a/clients/gsat-1.1.0/intl/ngettext.c +++ /dev/null @@ -1,68 +0,0 @@ -/* 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/clients/gsat-1.1.0/intl/plural.c b/clients/gsat-1.1.0/intl/plural.c deleted file mode 100644 index 640d43c..0000000 --- a/clients/gsat-1.1.0/intl/plural.c +++ /dev/null @@ -1,1326 +0,0 @@ - -/* 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 "gettextP.h" - -/* 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 FREE_EXPRESSION __gettext_free_exp -#else -# define FREE_EXPRESSION gettext_free_exp__ -# define __gettextparse gettextparse__ -#endif - -#define YYLEX_PARAM &((struct parse_args *) arg)->cp -#define YYPARSE_PARAM arg - -#line 53 "plural.y" -typedef union { - unsigned long int num; - enum operator op; - struct expression *exp; -} YYSTYPE; -#line 59 "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, - 178, 186, 190, 194, 198, 202, 206, 210, 214, 218, - 222, 227 -}; -#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 "/home/haible/gnu/arch/linuxlibc6/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 "/home/haible/gnu/arch/linuxlibc6/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 179 "plural.y" -{ - if (yyvsp[0].exp == NULL) - YYABORT; - ((struct parse_args *) arg)->res = yyvsp[0].exp; - ; - break;} -case 2: -#line 187 "plural.y" -{ - yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); - ; - break;} -case 3: -#line 191 "plural.y" -{ - yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); - ; - break;} -case 4: -#line 195 "plural.y" -{ - yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); - ; - break;} -case 5: -#line 199 "plural.y" -{ - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); - ; - break;} -case 6: -#line 203 "plural.y" -{ - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); - ; - break;} -case 7: -#line 207 "plural.y" -{ - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); - ; - break;} -case 8: -#line 211 "plural.y" -{ - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); - ; - break;} -case 9: -#line 215 "plural.y" -{ - yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); - ; - break;} -case 10: -#line 219 "plural.y" -{ - yyval.exp = new_exp_0 (var); - ; - break;} -case 11: -#line 223 "plural.y" -{ - if ((yyval.exp = new_exp_0 (num)) != NULL) - yyval.exp->val.num = yyvsp[0].num; - ; - break;} -case 12: -#line 228 "plural.y" -{ - yyval.exp = yyvsp[-1].exp; - ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ -#line 543 "/home/haible/gnu/arch/linuxlibc6/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 233 "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/clients/gsat-1.1.0/intl/plural.y b/clients/gsat-1.1.0/intl/plural.y deleted file mode 100644 index be049a6..0000000 --- a/clients/gsat-1.1.0/intl/plural.y +++ /dev/null @@ -1,413 +0,0 @@ -%{ -/* 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 "gettextP.h" - -/* 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 FREE_EXPRESSION __gettext_free_exp -#else -# define FREE_EXPRESSION gettext_free_exp__ -# define __gettextparse gettextparse__ -#endif - -#define YYLEX_PARAM &((struct parse_args *) arg)->cp -#define YYPARSE_PARAM arg -%} -%pure_parser -%expect 10 - -%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/clients/gsat-1.1.0/intl/ref-add.sin b/clients/gsat-1.1.0/intl/ref-add.sin deleted file mode 100644 index 167374e..0000000 --- a/clients/gsat-1.1.0/intl/ref-add.sin +++ /dev/null @@ -1,31 +0,0 @@ -# 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/clients/gsat-1.1.0/intl/ref-del.sin b/clients/gsat-1.1.0/intl/ref-del.sin deleted file mode 100644 index 613cf37..0000000 --- a/clients/gsat-1.1.0/intl/ref-del.sin +++ /dev/null @@ -1,26 +0,0 @@ -# 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/clients/gsat-1.1.0/intl/textdomain.c b/clients/gsat-1.1.0/intl/textdomain.c deleted file mode 100644 index 2e420ad..0000000 --- a/clients/gsat-1.1.0/intl/textdomain.c +++ /dev/null @@ -1,142 +0,0 @@ -/* 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/clients/gsat-1.1.0/missing b/clients/gsat-1.1.0/missing deleted file mode 100755 index 7789652..0000000 --- a/clients/gsat-1.1.0/missing +++ /dev/null @@ -1,190 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997 Free Software Foundation, Inc. -# Franc,ois 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. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -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 - -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 - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing - GNU libit 0.0" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`configure.in'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`configure.in'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`configure.in'. 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.in` - 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) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. - 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 - ;; - - 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 - ;; - - makeinfo) - 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 - ;; - - *) - 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/clients/gsat-1.1.0/mkinstalldirs b/clients/gsat-1.1.0/mkinstalldirs deleted file mode 100755 index 4f58503..0000000 --- a/clients/gsat-1.1.0/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $ - -errstatus=0 - -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 - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/clients/gsat-1.1.0/plugins/FT-736_plugin.txt b/clients/gsat-1.1.0/plugins/FT-736_plugin.txt deleted file mode 100644 index cc62906..0000000 --- a/clients/gsat-1.1.0/plugins/FT-736_plugin.txt +++ /dev/null @@ -1,34 +0,0 @@ -How to setup FT-736 plugin for gsat. -------------------------------------- - - You can set the 3 parameters in gsat preferences -> Radio Control -> -Plugin Config. : CAT I/F port, Up/Down band, Up/Down mode. - Each parameter is separated by colon(":"). - -1.CAT I/F device - - You can specify the CAT I/F device with key word "D"+device name. -If no parameter was given, /dev/ttyS0 will be selected. - - example) D/dev/ttyR2 - -2. Up/Down band - - You must set Up/Down band with key word "S"+options. The options is 2 letters, -consist from an abbreviation of Up/Down frequency. The first letter means -UPlink, the second letter means Downlink. - In this time, we can use only 'U' and 'V'. 'U' means 435MHz, 'V ' means 145MHz. -If no parameter was given, '435MHz uplink/145MHz downlink' will be selected. - - example) SUV - -3. Up/Down modes - - You must set Up/Down mode from 'SSB', 'FM', 'CW'. If no parameter was given, -'CW' will be selected. - - example) QCW - - -73's -de Hiroshi Iwamoto JH4XSY jh4xsy@jarl.com diff --git a/clients/gsat-1.1.0/plugins/Makefile b/clients/gsat-1.1.0/plugins/Makefile deleted file mode 100644 index 22a1820..0000000 --- a/clients/gsat-1.1.0/plugins/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# gsat plugins Makefile -# -# Edit the TARGETS line to contain only the plugins you need -# - -TARGETS=radio_FT736 radio_ICR10 radio_TMD700 radio_PCR100 radio_print radio_test rotor_print rotor_pictrack - -PLUGINDIR=/usr/local/lib/gsat/plugins - -all: $(TARGETS) - -radio_FT736: - gcc -fPIC -shared radio_FT736.c -o radio_FT736 - -radio_ICR10: - gcc -fPIC -shared radio_ICR10.c -o radio_ICR10 - -radio_TMD700: - gcc -fPIC -shared radio_TMD700.c -o radio_TMD700 -lm -lD700 - -radio_PCR100: - gcc -fPIC -shared radio_PCR100.c -o radio_PCR100 -lpcr100 - -radio_print: - gcc -fPIC -shared radio_print.c -o radio_print - -radio_test: - gcc -fPIC -shared radio_test.c -o radio_test - -rotor_print: - gcc -fPIC -shared rotor_print.c -o rotor_print - -rotor_pictrack: - gcc -fPIC -shared rotor_pictrack.c -o rotor_pictrack - -clean: - rm *.o *~ $(TARGETS) - -install: - cp $(TARGETS) $(PLUGINDIR) diff --git a/clients/gsat-1.1.0/plugins/radio_FT736.c b/clients/gsat-1.1.0/plugins/radio_FT736.c deleted file mode 100644 index e725fd1..0000000 --- a/clients/gsat-1.1.0/plugins/radio_FT736.c +++ /dev/null @@ -1,319 +0,0 @@ -/* - * YAESU FT-736 plugin for gsat - * - * Copyright (C) 2003 by Hiroshi Iwamoto, JH4XSY - * - * 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. - * - * Look at the README for more information on the program. - */ - -#include -#include -#include -#include -#include - -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -FILE *radioFileA; - -static void send_freq(char freq[]) -{ - int i, j, frbuf; - - i = 0; /* counter for CAT */ - j = 0; /* string counter */ - - if ( strncmp(freq, "12", 2) == 0 ) { /* 1200MHz */ - frbuf = 0xc0; - j = 2; - frbuf += freq[j]-'0'; - } else { /* 430/144MHz */ - frbuf = ( freq[j]-'0' ) << 4; - ++j; - frbuf += freq[j]-'0'; - } - putc(frbuf, radioFileA); /* Send 1Byte */ - - ++j; - for( i=1; i<4; ++i) { /* Send +3Bytes */ - frbuf = (freq[j]-'0') << 4; - ++j; - if ( freq[j] == '.' ) { - ++j; /* skip */ - } - frbuf += freq[j]-'0'; - putc(frbuf, radioFileA); - ++j; - } - -} - -char * plugin_info( void ) -{ - return "YAESU FT736 V0.1"; -} - -int plugin_open_rig( char * config ) -{ - char dumm[64]; - char tty[12]; - char Smod[4]; - char Qmod[4]; - char *ptr, *parm; - char cmd[64]; - - int dummy = 0; - int saton = 0x0E; - int modLSB = 0x00; - int modUSB = 0x01; - int modCW = 0x02; - int modFM = 0x08; - int modRX = 0x17; - int modTX = 0x27; - int freqRX = 0x1e; - int freqTX = 0x2e; - int term; - - int upMode, downMode; - - char freq[12]; - char upFreq[12], downFreq[12], tmp1Freq[12], tmp2Freq[12]; - double V = 145.950; - double U = 435.850; - double T1 = 52.000; - double T2 = 1260.000; - - tty[0]='\0'; - Smod[0]='\0'; - Qmod[0]='\0'; - - printf("FT736 plugin opened.\n"); - - if(config) { - strncpy(dumm,config,64); - - ptr=dumm; - parm=ptr; - while( parm != NULL ) { - parm=strsep(&ptr,":"); - if(parm==NULL) - break; - if(strlen(parm)!=0) { - switch( *parm ) { - case 'D': /* tty port */ - strcpy(tty,parm+1); - break; - case 'S': /* Up/Down Freq. */ - strcpy(Smod,parm+1); - break; - case 'Q': /* QSO Mode */ - strcpy(Qmod,parm+1); - break; - } - } - } - } - - if(strlen(tty)==0) - strcpy(tty,"/dev/ttyS0"); - if(strlen(Smod)==0) - strcpy(Smod,"UV"); - if(strlen(Qmod)==0) - strcpy(Qmod,"CW"); - -/* Open CAT port */ - radioFileA = fopen(tty, "a"); - if ( radioFileA == NULL ) { - fprintf(stderr, "can't open %s\n", tty); - return 0; - } - -/* CAT port initialize */ - sprintf(cmd, "/bin/stty speed 4800 < %s", tty); - system(cmd); - sprintf(cmd, "/bin/stty cstopb < %s", tty); - system(cmd); - -/* Send CMD: CAT ON */ - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - fflush(radioFileA); - -/* Send CMD: SAT ON */ - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(saton, radioFileA); - fflush(radioFileA); - sleep(1); - -/* set QSO MODE */ - upMode = downMode = modCW; - - if ( strcmp(Qmod, "CW") == 0 ) { - upMode = downMode = modCW; - } - if ( strcmp(Qmod, "SSB") == 0 ) { - upMode = modLSB; - downMode = modUSB; - } - if ( strcmp(Qmod, "FM") == 0 ) { - upMode = downMode = modFM; - } - -/* Send CMD: SAT RX MODE */ - putc(downMode, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(modRX, radioFileA); - fflush(radioFileA); - -/* Send CMD: SAT TX MODE */ - putc(upMode, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(modTX, radioFileA); - fflush(radioFileA); - sleep(1); - -/* set SAT MODE */ - sprintf(upFreq, "%.6f", U); - sprintf(downFreq, "%.6f", V); - sprintf(tmp1Freq, "%.6f", T1); - sprintf(tmp2Freq, "%.6f", T2); - - if ( strcmp(Smod, "UV") == 0 ) { /* ^ 430MHz v 144MHz */ - sprintf(upFreq, "%.6f", U); - sprintf(downFreq, "%.6f", V); - } - if ( strcmp(Smod, "VU") == 0 ) { /* ^ 144MHz v 430MHz */ - sprintf(upFreq, "%.6f", V); - sprintf(downFreq, "%.6f", U); - } - if ( strcmp(Smod, "US") == 0 ) { /* ^ 430MHz v 2.4GHz */ - sprintf(upFreq, "%.6f", U); - sprintf(downFreq, "%.6f", V); - } - term = strlen(upFreq); - upFreq[term] = '\0'; - term = strlen(downFreq); - downFreq[term] = '\0'; - term = strlen(tmp1Freq); - tmp1Freq[term] = '\0'; - term = strlen(tmp2Freq); - tmp2Freq[term] = '\0'; - -/* Send CMD: dummy downlink Freq */ - send_freq(tmp2Freq); - putc(freqRX, radioFileA); - fflush(radioFileA); - sleep(1); - -/* Send CMD: dummy uplink Freq */ - send_freq(tmp1Freq); - putc(freqTX, radioFileA); - fflush(radioFileA); - -/* Send CMD: uplink Freq */ - send_freq(upFreq); - putc(freqTX, radioFileA); - fflush(radioFileA); - sleep(1); - -/* Send CMD: downlink Freq */ - send_freq(downFreq); - putc(freqRX, radioFileA); - fflush(radioFileA); - - return 1; -} - -void plugin_close_rig( void ) -{ - int dummy = 0; - int catof = 0x80; - - printf("FT736 plugin closed.\n"); - -/* Send CMD: CAT Off */ - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(dummy, radioFileA); - putc(catof, radioFileA); - fflush(radioFileA); - - fclose(radioFileA); - -} - -void plugin_set_downlink_frequency( double frequency ) -{ - double freq; - char downFreq[12]; - int freqRX = 0x1e; - int term; - - freq=frequency-fmod(frequency,5); - if(fmod(frequency,5)>2.5) - freq+=5; - -/* printf("Downlink Frequency: %f kHz -> %f kHz\n", frequency, freq); */ - - frequency = frequency / 1000; /* Convert: kHz -> MHz */ - sprintf(downFreq, "%.6f", frequency); - term = strlen(downFreq); - downFreq[term] = '\0'; - - send_freq(downFreq); - putc(freqRX, radioFileA); - fflush(radioFileA); - -} - -void plugin_set_uplink_frequency( double frequency ) -{ - double freq; - char upFreq[12]; - int freqTX = 0x2e; - int term; - - freq=frequency-fmod(frequency,5); - if(fmod(frequency,5)>2.5) - freq+=5; - -/* printf("Uplink Frequency: %f kHz -> %f kHz\n", frequency, freq); */ - - frequency = frequency / 1000; /* Convert: kHz -> MHz */ - sprintf(upFreq, "%.6f", frequency); - term = strlen(upFreq); - upFreq[term] = '\0'; - - send_freq(upFreq); - putc(freqTX, radioFileA); - fflush(radioFileA); - -} diff --git a/clients/gsat-1.1.0/plugins/radio_FT817.c b/clients/gsat-1.1.0/plugins/radio_FT817.c deleted file mode 100644 index fd7d695..0000000 --- a/clients/gsat-1.1.0/plugins/radio_FT817.c +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Yaesu FT-817 plugin for gsat - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* #define DEBUG 1 */ - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -int port; - -void clearDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData &= ~TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -void setDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData |= TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -char * plugin_info( void ) -{ - return "Yaesu FT-817 V0.1"; -} - -int plugin_open_rig( char * config ) -{ - struct termios ios; - tcflag_t bauds; - char dummy[64]; - char tty[12]; - char speed[8]; - char *ptr, *parm; - int portbauds, n; - - tty[0]='\0'; - speed[0]='\0'; - civid[0]='\0'; - - if(config) { - strncpy(dummy,config,64); - - ptr=dummy; - parm=ptr; - while( parm != NULL ) { - parm=strsep(&ptr,":"); - if(parm==NULL) - break; - if(strlen(parm)!=0) { - switch( *parm ) { - case 'D': - strcpy(tty,parm+1); - break; - case 'S': - strcpy(speed,parm+1); - break; - } - } - } - } - - if(strlen(tty)==0) - strcpy(tty,"/dev/ttyS0"); - if(strlen(speed)==0) - strcpy(speed,"4800"); - - portbauds=atoi(speed); - switch( portbauds ) { - case 300: - bauds=B300; - break; - case 1200: - bauds=B1200; - break; - case 2400: - bauds=B2400; - break; - case 4800: - bauds=B4800; - break; - case 9600: - bauds=B9600; - break; - case 19200: - bauds=B19200; - break; - default: - bauds=B9600; - } - -#ifdef DEBUG - fprintf(stderr,"FT817: trying to open rig with config: %s.\n",config); - fprintf(stderr,"FT817: config tty: %s\n",tty); - fprintf(stderr,"FT817: config speed: %s\n",speed); -#endif - - /* Open the tty and configure it */ - - if ((port = open(tty, O_RDWR | O_NOCTTY)) == -1) { - perror("open"); - return 0; - } - - if (!isatty(port)) { - close(port); - fprintf(stderr, "FT817: %s: not a tty\n", tty); - return 0; - } - - memset(&ios, 0, sizeof(ios)); - - cfsetispeed(&ios, bauds); - cfsetospeed(&ios, bauds); - - ios.c_cflag |= (CLOCAL | CREAD); - ios.c_cflag &= ~HUPCL ; - ios.c_cflag &= ~PARENB ; - ios.c_cflag &= ~CSTOPB ; - ios.c_cflag &= ~CSIZE; - ios.c_cflag |= CS8; - - /* ICANON : enable canonical input disable all echo functionality, - and don't send signals to calling program */ - ios.c_lflag |= ICANON; - ios.c_lflag &= ~(ECHO | ECHOCTL); - - /* ignore bytes with parity errors */ - ios.c_iflag |= IGNPAR; - - /* Raw output. */ - ios.c_oflag &= ~OPOST; - - if (tcsetattr(port, TCSANOW, &ios) == -1) { - perror("tcsetattr"); - return 0; - } - - setDTR( port ); - -#ifdef DEBUG - fprintf(stderr,"FT817: open rig succeed.\n"); -#endif - - return 1; -} - -void plugin_close_rig( void ) -{ - if( port ) { - clearDTR( port ); - close(port); - } - port = 0; - -#ifdef DEBUG - fprintf(stderr,"FT817: close rig succeed.\n"); -#endif -} - -void send_freq_to_FT817( double frequency ) -{ - fd_set fds; - int count; - struct timeval tv; - unsigned char command[12]; - char ghz,hmhz,dmhz,mhz,hkhz,dkhz,khz,hhz; - - frequency=frequency*10.0; - - ghz =(frequency-fmod(frequency,10000000))/10000000; - frequency=fmod(frequency,10000000); - hmhz=(frequency-fmod(frequency,1000000))/1000000; - frequency=fmod(frequency,1000000); - dmhz=(frequency-fmod(frequency,100000))/100000; - frequency=fmod(frequency,100000); - mhz =(frequency-fmod(frequency,10000))/10000; - frequency=fmod(frequency,10000); - hkhz=(frequency-fmod(frequency,1000))/1000; - frequency=fmod(frequency,1000); - dkhz=(frequency-fmod(frequency,100))/100; - frequency=fmod(frequency,100); - khz =(frequency-fmod(frequency,10))/10; - frequency=fmod(frequency,10); - hhz =frequency; - frequency=fmod(frequency,10); - hhz =frequency; - - command[0]=(hmhz<<4)|dmhz; - command[1]=(mhz<<4)|hkhz; - command[2]=(dkhz<<4)|khz; - command[3]=(hhz<<4)|dhz; - command[4]=0x01; - - /* Send it */ -#ifdef DEBUG - fprintf( stderr, "FT817: Sending command ... "); - {int i; - for(i=0;i<11;i++) fprintf(stderr," %02X",command[i]); - fprintf(stderr,"\n"); - } -#endif - - FD_ZERO(&fds); - FD_SET(port, &fds); - tv.tv_sec = 5; - tv.tv_usec = 0; - - if (select(port+1, NULL, &fds, NULL, &tv)) { - if ((count = write(port, command, 11)) == -1) { - perror("write"); - return; - } - } - else { - fprintf( stderr,"FT817: Timeout sending command !!!\n"); - perror("select"); - return; - } -} - -void plugin_set_downlink_frequency( double frequency ) -{ - send_freq_to_FT817( frequency ); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - send_freq_to_FT817( frequency ); -} diff --git a/clients/gsat-1.1.0/plugins/radio_ICR10-2.c b/clients/gsat-1.1.0/plugins/radio_ICR10-2.c deleted file mode 100644 index 7dbf99c..0000000 --- a/clients/gsat-1.1.0/plugins/radio_ICR10-2.c +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Icom R-10 receiver plugin for gsat - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* #define DEBUG 1 */ - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -int port; - -void clearDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData &= ~TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -void setDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData |= TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -char * plugin_info( void ) -{ - return "Icom R10 Receiver V0.9"; -} - -int plugin_open_rig( char * config ) -{ - struct termios ios; - tcflag_t bauds; - char *tty; - char *ptr; - - if( config != NULL ) - tty=config; - else - tty="/dev/ttyS0"; - -#ifdef DEBUG - fprintf(stderr,"ICR10: trying to open rig on %s with config: %s.\n",tty,config); -#endif - - /* Open the tty and configure it */ - - if ((port = open(tty, O_RDWR | O_NOCTTY)) == -1) { - perror("open"); - return 0; - } - - if (!isatty(port)) { - close(port); - fprintf(stderr, "ICR10: %s: not a tty\n", tty); - return 0; - } - - memset(&ios, 0, sizeof(ios)); - - cfsetispeed(&ios, B9600); - cfsetospeed(&ios, B9600); - - ios.c_cflag |= (CLOCAL | CREAD); - ios.c_cflag &= ~HUPCL ; - ios.c_cflag &= ~PARENB ; - ios.c_cflag &= ~CSTOPB ; - ios.c_cflag &= ~CSIZE; - ios.c_cflag |= CS8; - - /* ICANON : enable canonical input disable all echo functionality, - and don't send signals to calling program */ - ios.c_lflag |= ICANON; - ios.c_lflag &= ~(ECHO | ECHOCTL); - - /* ignore bytes with parity errors */ - ios.c_iflag |= IGNPAR; - - /* Raw output. */ - ios.c_oflag &= ~OPOST; - - if (tcsetattr(port, TCSANOW, &ios) == -1) { - perror("tcsetattr"); - return 0; - } - - setDTR( port ); - -#ifdef DEBUG - fprintf(stderr,"ICR10: open rig succeed.\n"); -#endif - - return 1; -} - -void plugin_close_rig( void ) -{ - if( port ) { - clearDTR( port ); - close(port); - } - port = 0; - -#ifdef DEBUG - fprintf(stderr,"ICR10: close rig succeed.\n"); -#endif -} - -void send_freq_to_ICR10( double frequency ) -{ - fd_set fds; - int count; - struct timeval tv; - unsigned char command[12]; - char ghz,hmhz,dmhz,mhz,hkhz,dkhz,khz,hhz; - - frequency=frequency*10.0; - - ghz =(frequency-fmod(frequency,10000000))/10000000; - frequency=fmod(frequency,10000000); - hmhz=(frequency-fmod(frequency,1000000))/1000000; - frequency=fmod(frequency,1000000); - dmhz=(frequency-fmod(frequency,100000))/100000; - frequency=fmod(frequency,100000); - mhz =(frequency-fmod(frequency,10000))/10000; - frequency=fmod(frequency,10000); - hkhz=(frequency-fmod(frequency,1000))/1000; - frequency=fmod(frequency,1000); - dkhz=(frequency-fmod(frequency,100))/100; - frequency=fmod(frequency,100); - khz =(frequency-fmod(frequency,10))/10; - frequency=fmod(frequency,10); - hhz =frequency; - - command[0]=0xfe; - command[1]=0xfe; - command[2]=0x52; - command[3]=0xe0; - command[4]=0x05; - command[5]=0x00; - command[6]=(khz<<4)|hhz; - command[7]=(hkhz<<4)|dkhz; - command[8]=(dmhz<<4)|mhz; - command[9]=(ghz<<4)|hmhz; - command[10]=0xfd; - command[11]=0x00; - - /* Send it */ -#ifdef DEBUG - fprintf( stderr, "ICR10: Sending command ... "); - {int i; - for(i=0;i<11;i++) fprintf(stderr," %02X",command[i]); - fprintf(stderr,"\n"); - } -#endif - - FD_ZERO(&fds); - FD_SET(port, &fds); - tv.tv_sec = 5; - tv.tv_usec = 0; - - if (select(port+1, NULL, &fds, NULL, &tv)) { - if ((count = write(port, command, 11)) == -1) { - perror("write"); - return; - } - } - else { - fprintf( stderr,"ICR10: Timeout sending command !!!\n"); - perror("select"); - return; - } -} - -void plugin_set_downlink_frequency( double frequency ) -{ - send_freq_to_ICR10( frequency ); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - send_freq_to_ICR10( frequency ); -} diff --git a/clients/gsat-1.1.0/plugins/radio_ICR10-old.c b/clients/gsat-1.1.0/plugins/radio_ICR10-old.c deleted file mode 100644 index 122f521..0000000 --- a/clients/gsat-1.1.0/plugins/radio_ICR10-old.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Icom R-10 receiver plugin for gsat - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* #define DEBUG 1 */ - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -int port; - -void clearDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData &= ~TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -void setDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData |= TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -char * plugin_info( void ) -{ - return "Icom R10 Receiver V1.0"; -} - -int plugin_open_rig( char * config ) -{ - struct termios ios; - tcflag_t bauds; - char * tty; - - if( config != NULL ) - tty=config; - else - tty="/dev/ttyS0"; - -#ifdef DEBUG - fprintf(stderr,"ICR10: trying to open rig on tty: %s with config: %s.\n",tty,config); -#endif - - /* Open the tty and configure it */ - - if ((port = open(tty, O_RDWR | O_NOCTTY)) == -1) { - perror("open"); - return 0; - } - - if (!isatty(port)) { - close(port); - fprintf(stderr, "ICR10: %s: not a tty\n", tty); - return 0; - } - - memset(&ios, 0, sizeof(ios)); - - cfsetispeed(&ios, B9600); - cfsetospeed(&ios, B9600); - - ios.c_cflag |= (CLOCAL | CREAD); - ios.c_cflag &= ~HUPCL ; - ios.c_cflag &= ~PARENB ; - ios.c_cflag &= ~CSTOPB ; - ios.c_cflag &= ~CSIZE; - ios.c_cflag |= CS8; - - /* ICANON : enable canonical input disable all echo functionality, - and don't send signals to calling program */ - ios.c_lflag |= ICANON; - ios.c_lflag &= ~(ECHO | ECHOCTL); - - /* ignore bytes with parity errors */ - ios.c_iflag |= IGNPAR; - - /* Raw output. */ - ios.c_oflag &= ~OPOST; - - if (tcsetattr(port, TCSANOW, &ios) == -1) { - perror("tcsetattr"); - return 0; - } - - setDTR( port ); - -#ifdef DEBUG - fprintf(stderr,"ICR10: open rig succeed.\n"); -#endif - - return 1; -} - -void plugin_close_rig( void ) -{ - if( port ) { - clearDTR( port ); - close(port); - } - port = 0; - -#ifdef DEBUG - fprintf(stderr,"ICR10: close rig succeed.\n"); -#endif -} - -void send_freq_to_ICR10( double frequency ) -{ - fd_set fds; - int count; - struct timeval tv; - unsigned char command[12]; - char ghz,hmhz,dmhz,mhz,hkhz,dkhz,khz,hhz; - - frequency=frequency*10.0; - - ghz =(frequency-fmod(frequency,10000000))/10000000; - frequency=fmod(frequency,10000000); - hmhz=(frequency-fmod(frequency,1000000))/1000000; - frequency=fmod(frequency,1000000); - dmhz=(frequency-fmod(frequency,100000))/100000; - frequency=fmod(frequency,100000); - mhz =(frequency-fmod(frequency,10000))/10000; - frequency=fmod(frequency,10000); - hkhz=(frequency-fmod(frequency,1000))/1000; - frequency=fmod(frequency,1000); - dkhz=(frequency-fmod(frequency,100))/100; - frequency=fmod(frequency,100); - khz =(frequency-fmod(frequency,10))/10; - frequency=fmod(frequency,10); - hhz =frequency; - - command[0]=0xfe; - command[1]=0xfe; - command[2]=0x52; - command[3]=0xe0; - command[4]=0x05; - command[5]=0x00; - command[6]=(khz<<4)|hhz; - command[7]=(hkhz<<4)|dkhz; - command[8]=(dmhz<<4)|mhz; - command[9]=(ghz<<4)|hmhz; - command[10]=0xfd; - command[11]=0x00; - - /* Send it */ -#ifdef DEBUG - fprintf( stderr, "ICR10: Sending command ... "); - {int i; - for(i=0;i<11;i++) fprintf(stderr," %02X",command[i]); - fprintf(stderr,"\n"); - } -#endif - - FD_ZERO(&fds); - FD_SET(port, &fds); - tv.tv_sec = 5; - tv.tv_usec = 0; - - if (select(port+1, NULL, &fds, NULL, &tv)) { - if ((count = write(port, command, 11)) == -1) { - perror("write"); - return; - } - } - else { - fprintf( stderr,"ICR10: Timeout sending command !!!\n"); - perror("select"); - return; - } -} - -void plugin_set_downlink_frequency( double frequency ) -{ - send_freq_to_ICR10( frequency ); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - send_freq_to_ICR10( frequency ); -} diff --git a/clients/gsat-1.1.0/plugins/radio_ICR10.c b/clients/gsat-1.1.0/plugins/radio_ICR10.c deleted file mode 100644 index da78612..0000000 --- a/clients/gsat-1.1.0/plugins/radio_ICR10.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Icom R-10 receiver plugin for gsat - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* #define DEBUG 1 */ - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -int port; - -void clearDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData &= ~TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -void setDTR( int fd ) -{ - int lineData; - - ioctl(fd, TIOCMGET, &lineData); - lineData |= TIOCM_DTR; - ioctl(fd, TIOCMSET, &lineData); -} - -char * plugin_info( void ) -{ - return "Icom R10 Receiver V1.1"; -} - -int plugin_open_rig( char * config ) -{ - struct termios ios; - tcflag_t bauds; - char dummy[64]; - char tty[12]; - char speed[8]; - char civid[4]; - char *ptr, *parm; - int portbauds, n; - - tty[0]='\0'; - speed[0]='\0'; - civid[0]='\0'; - - if(config) { - strncpy(dummy,config,64); - - ptr=dummy; - parm=ptr; - while( parm != NULL ) { - parm=strsep(&ptr,":"); - if(parm==NULL) - break; - if(strlen(parm)!=0) { - switch( *parm ) { - case 'D': - strcpy(tty,parm+1); - break; - case 'S': - strcpy(speed,parm+1); - break; - case 'I': - strcpy(civid,parm+1); - break; - } - } - } - } - - if(strlen(tty)==0) - strcpy(tty,"/dev/ttyS0"); - if(strlen(speed)==0) - strcpy(speed,"9600"); - if(strlen(civid)==0) - strcpy(civid,"52"); - - portbauds=atoi(speed); - switch( portbauds ) { - case 300: - bauds=B300; - break; - case 1200: - bauds=B1200; - break; - case 2400: - bauds=B2400; - break; - case 4800: - bauds=B4800; - break; - case 9600: - bauds=B9600; - break; - case 19200: - bauds=B19200; - break; - default: - bauds=B9600; - } - -#ifdef DEBUG - fprintf(stderr,"ICR10: trying to open rig with config: %s.\n",config); - fprintf(stderr,"ICR10: config tty: %s\n",tty); - fprintf(stderr,"ICR10: config speed: %s\n",speed); - fprintf(stderr,"ICR10: config CI-V address: %s\n",civid); -#endif - - /* Open the tty and configure it */ - - if ((port = open(tty, O_RDWR | O_NOCTTY)) == -1) { - perror("open"); - return 0; - } - - if (!isatty(port)) { - close(port); - fprintf(stderr, "ICR10: %s: not a tty\n", tty); - return 0; - } - - memset(&ios, 0, sizeof(ios)); - - cfsetispeed(&ios, bauds); - cfsetospeed(&ios, bauds); - - ios.c_cflag |= (CLOCAL | CREAD); - ios.c_cflag &= ~HUPCL ; - ios.c_cflag &= ~PARENB ; - ios.c_cflag &= ~CSTOPB ; - ios.c_cflag &= ~CSIZE; - ios.c_cflag |= CS8; - - /* ICANON : enable canonical input disable all echo functionality, - and don't send signals to calling program */ - ios.c_lflag |= ICANON; - ios.c_lflag &= ~(ECHO | ECHOCTL); - - /* ignore bytes with parity errors */ - ios.c_iflag |= IGNPAR; - - /* Raw output. */ - ios.c_oflag &= ~OPOST; - - if (tcsetattr(port, TCSANOW, &ios) == -1) { - perror("tcsetattr"); - return 0; - } - - setDTR( port ); - -#ifdef DEBUG - fprintf(stderr,"ICR10: open rig succeed.\n"); -#endif - - return 1; -} - -void plugin_close_rig( void ) -{ - if( port ) { - clearDTR( port ); - close(port); - } - port = 0; - -#ifdef DEBUG - fprintf(stderr,"ICR10: close rig succeed.\n"); -#endif -} - -void send_freq_to_ICR10( double frequency ) -{ - fd_set fds; - int count; - struct timeval tv; - unsigned char command[12]; - char ghz,hmhz,dmhz,mhz,hkhz,dkhz,khz,hhz; - - frequency=frequency*10.0; - - ghz =(frequency-fmod(frequency,10000000))/10000000; - frequency=fmod(frequency,10000000); - hmhz=(frequency-fmod(frequency,1000000))/1000000; - frequency=fmod(frequency,1000000); - dmhz=(frequency-fmod(frequency,100000))/100000; - frequency=fmod(frequency,100000); - mhz =(frequency-fmod(frequency,10000))/10000; - frequency=fmod(frequency,10000); - hkhz=(frequency-fmod(frequency,1000))/1000; - frequency=fmod(frequency,1000); - dkhz=(frequency-fmod(frequency,100))/100; - frequency=fmod(frequency,100); - khz =(frequency-fmod(frequency,10))/10; - frequency=fmod(frequency,10); - hhz =frequency; - - command[0]=0xfe; - command[1]=0xfe; - command[2]=0x52; - command[3]=0xe0; - command[4]=0x05; - command[5]=0x00; - command[6]=(khz<<4)|hhz; - command[7]=(hkhz<<4)|dkhz; - command[8]=(dmhz<<4)|mhz; - command[9]=(ghz<<4)|hmhz; - command[10]=0xfd; - command[11]=0x00; - - /* Send it */ -#ifdef DEBUG - fprintf( stderr, "ICR10: Sending command ... "); - {int i; - for(i=0;i<11;i++) fprintf(stderr," %02X",command[i]); - fprintf(stderr,"\n"); - } -#endif - - FD_ZERO(&fds); - FD_SET(port, &fds); - tv.tv_sec = 5; - tv.tv_usec = 0; - - if (select(port+1, NULL, &fds, NULL, &tv)) { - if ((count = write(port, command, 11)) == -1) { - perror("write"); - return; - } - } - else { - fprintf( stderr,"ICR10: Timeout sending command !!!\n"); - perror("select"); - return; - } -} - -void plugin_set_downlink_frequency( double frequency ) -{ - send_freq_to_ICR10( frequency ); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - send_freq_to_ICR10( frequency ); -} diff --git a/clients/gsat-1.1.0/plugins/radio_PCR100.c b/clients/gsat-1.1.0/plugins/radio_PCR100.c deleted file mode 100644 index b9d0ade..0000000 --- a/clients/gsat-1.1.0/plugins/radio_PCR100.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Icom PCR100 receiver plugin for gsat - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -#include -#include - -#include "libpcr100.h" - -/* #define DEBUG 1 */ - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -PCRinfo rig; - -char * plugin_info( void ) -{ - return "Icom PCR100 receiver V1.0"; -} - -int plugin_open_rig( char * config ) -{ - char dummy[10]; - char *ptr; - char tty[10]; - char mode[4]; - char filter[5]; - ushort volume; - ushort squelch; - int n; - -#ifdef DEBUG - printf("Opening Icom PCR100 plugin.\n"); -#endif - - ptr=config; - if( config[0] != '\0' ) { - while( *ptr != '\0' ) { - switch( *ptr ) { - case 'D': - ptr++; - n=0; - while( *ptr != '\0' && *ptr != ':' && n<9 ) { - tty[n++]=*ptr++; - } - tty[n]='\0'; - break; - case 'M': - ptr++; - n=0; - while( *ptr != '\0' && *ptr != ':' && n<3 ) { - mode[n++]=*ptr++; - } - mode[n]='\0'; - break; - case 'V': - ptr++; - n=0; - while( *ptr != '\0' && *ptr != ':' && n<9 ) { - dummy[n++]=*ptr++; - } - dummy[n]='\0'; - volume=atoi(dummy); - break; - case 'S': - ptr++; - n=0; - while( *ptr != '\0' && *ptr != ':' && n<9 ) { - dummy[n++]=*ptr++; - } - dummy[n]='\0'; - squelch=atoi(dummy); - break; - case 'F': - ptr++; - n=0; - while( *ptr != '\0' && *ptr != ':' && n<4 ) { - filter[n++]=*ptr++; - } - filter[n]='\0'; - break; - case ':': - ptr++; - break; - } - } - } - else { - strcpy(tty,"/dev/ttyS0"); - strcpy(mode,"FM"); - strcpy(filter,"15K"); - volume=160; - squelch=100; - } - -#ifdef DEBUG - printf("Config: %s\n", config); - printf("tty: %s mode: %s filter: %s volume: %d squelch: %d\n", - tty, mode, filter, volume, squelch); -#endif - - pcr_OpenPCR( &rig, tty, 9600 ); - pcr_PowerOn( &rig ); - pcr_SetMode( &rig, mode ); - pcr_SetFilter( &rig, filter ); - pcr_SetVolume( &rig, volume ); - pcr_SetSquelch( &rig, squelch ); - - return 1; -} - -void plugin_close_rig( void ) -{ -#ifdef DEBUG - printf("Closing Icom PCR100 plugin.\n"); -#endif - - pcr_PowerOff( &rig ); - pcr_ClosePCR( &rig ); -} - -void plugin_set_downlink_frequency( double frequency ) -{ - pcr_SetFrequency( &rig, (ulong)(frequency*1000) ); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - pcr_SetFrequency( &rig, (ulong)(frequency*1000) ); -} diff --git a/clients/gsat-1.1.0/plugins/radio_TMD700.c b/clients/gsat-1.1.0/plugins/radio_TMD700.c deleted file mode 100644 index 5353070..0000000 --- a/clients/gsat-1.1.0/plugins/radio_TMD700.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Kenwood TM-D700 transceiver plugin for gsat - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - - -#include -#include - -#include "libD700.h" - -#define TRUE 1 -#define FALSE 0 - -#define DEBUG 1 - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -D700rig rig; - -char * plugin_info( void ) -{ - return "Kenwood TM-D700 V0.2"; -} - -int plugin_open_rig( char * config ) -{ -#ifdef DEBUG - fprintf(stderr,"Opening Kenwood TM-D700 plugin.\n"); -#endif - - if(d700_OpenD700( &rig, "/dev/ttyS0", 9600 )==1) { - fprintf(stderr,"TMD700: Error opening rig.\n"); - return FALSE; - } -} - -void plugin_close_rig( void ) -{ -#ifdef DEBUG - fprintf(stderr,"Closing Kenwood TM-D700 plugin.\n"); -#endif - - d700_CloseD700( &rig ); -} - -void plugin_set_downlink_frequency( double frequency ) -{ - double freq; - - printf("TMD700: Set Frequency\n"); - freq=frequency-fmod(frequency,5); - if(fmod(frequency,5)>2.5) - freq+=5; - -/* d700_FrequencyUp( &rig ); */ -/* d700_SetControlBand( &rig, BAND_A ); */ -/* d700_SetFrequencyandStep( &rig, freq*1000, 0 ); */ - d700_SetFrequency( &rig, BAND_A, freq*1000 ); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - double freq; - - freq=frequency-fmod(frequency,5); - if(fmod(frequency,5)>2.5) - freq+=5; - -#ifdef DEBUG - fprintf(stderr,"TMD700: Frequency: %f -> %f\n",frequency, freq); -#endif - - d700_SetControlBand( &rig, BAND_B ); - d700_SetFrequencyandStep( &rig, freq*1000, 0 ); -} diff --git a/clients/gsat-1.1.0/plugins/radio_print.c b/clients/gsat-1.1.0/plugins/radio_print.c deleted file mode 100644 index 51042cd..0000000 --- a/clients/gsat-1.1.0/plugins/radio_print.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Print Frequency demo plugin for gsat - * - * (c)2001 by Xavier Crehueras, EB3CZS - */ - -#include - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -char * plugin_info( void ) -{ - return "PrintFrequency V1.0"; -} - -int plugin_open_rig( char * config ) -{ - printf("PrintFrequency plugin opened.\n"); - - return 1; -} - -void plugin_close_rig( void ) -{ - printf("PrintFrequency plugin closed.\n"); -} - -void plugin_set_downlink_frequency( double frequency ) -{ - printf("Downlink Frequency: %f kHz\n", frequency); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - printf("Uplink Frequency: %f kHz\n", frequency); -} diff --git a/clients/gsat-1.1.0/plugins/radio_test.c b/clients/gsat-1.1.0/plugins/radio_test.c deleted file mode 100644 index 9ab208d..0000000 --- a/clients/gsat-1.1.0/plugins/radio_test.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include - -char * plugin_info( void ); -int plugin_open_rig( char * config ); -void plugin_close_rig( void ); -void plugin_set_downlink_frequency( double frequency ); -void plugin_set_uplink_frequency( double frequency ); - -char * plugin_info( void ) -{ - return "Test V0.1"; -} - -int plugin_open_rig( char * config ) -{ - printf("Test plugin opened.\n"); - - return 1; -} - -void plugin_close_rig( void ) -{ - printf("Test plugin closed.\n"); -} - -void plugin_set_downlink_frequency( double frequency ) -{ - double freq; - - freq=frequency-fmod(frequency,5); - if(fmod(frequency,5)>2.5) - freq+=5; - - printf("Downlink Frequency: %f kHz -> %f kHz\n", frequency, freq); -} - -void plugin_set_uplink_frequency( double frequency ) -{ - double freq; - - freq=frequency-fmod(frequency,5); - if(fmod(frequency,5)>2.5) - freq+=5; - - printf("Uplink Frequency: %f kHz -> %f kHz\n", frequency, freq); -} diff --git a/clients/gsat-1.1.0/plugins/rotor_pictrack.c b/clients/gsat-1.1.0/plugins/rotor_pictrack.c deleted file mode 100644 index a9a97df..0000000 --- a/clients/gsat-1.1.0/plugins/rotor_pictrack.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * PicTrack rotor plugin for gsat - * - * (c)2001 by Xavier Crehueras, EB3CZS - */ - -#include -#include -#include -#include -#include - -char * plugin_info( void ); -int plugin_open_rotor( char * config ); -void plugin_close_rotor( void ); -void plugin_set_rotor( double azimuth, double elevation ); - -int antfd; - -char * plugin_info( void ) -{ - return "PicTrack V1.0"; -} - -int plugin_open_rotor( char * config ) -{ - antfd=open(config, O_RDWR | O_NOCTTY | O_NDELAY); - - if (antfd!=-1) - fcntl(antfd, F_SETFL, 0); - else { - fprintf(stderr,"Unable To Open Antenna Port\n"); - return 0; - } - - return 1; -} - -void plugin_close_rotor( void ) -{ - close(antfd); -} - -void plugin_set_rotor( double azimuth, double elevation ) -{ - /* This function sends Azimuth and Elevation data - to an antenna tracker connected to the serial port */ - - int n; - char message[30]="\n"; - - sprintf(message, "AZ%3.1f EL%3.1f \x0D\x0A", azimuth,elevation); - n=write(antfd,message,30); - - if (n<0) - fprintf(stderr, "Error Writing To Antenna Port\n"); - - return; -} diff --git a/clients/gsat-1.1.0/plugins/rotor_print.c b/clients/gsat-1.1.0/plugins/rotor_print.c deleted file mode 100644 index b55efb5..0000000 --- a/clients/gsat-1.1.0/plugins/rotor_print.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Print Azimuth/Elevation demo rotor plugin for gsat - * - * (c)2001 by Xavier Crehueras, EB3CZS - */ - -#include - -char * plugin_info( void ); -int plugin_open_rotor( char * config ); -void plugin_close_rotor( void ); -void plugin_set_rotor( double azimuth, double elevation ); - -char * plugin_info( void ) -{ - return "PrintAzimuth/Elevation V1.0"; -} - -int plugin_open_rotor( char * config ) -{ - printf("PrintAzimuth/Elevation plugin opened.\n"); - - return 1; -} - -void plugin_close_rotor( void ) -{ - printf("PrintAzimuth/Elevation plugin closed.\n"); -} - -void plugin_set_rotor( double azimuth, double elevation ) -{ - printf("Azimuth: %f deg - Elevation: %f deg\n", azimuth, elevation); -} diff --git a/clients/gsat-1.1.0/po/ChangeLog b/clients/gsat-1.1.0/po/ChangeLog deleted file mode 100644 index 1b7b1dc..0000000 --- a/clients/gsat-1.1.0/po/ChangeLog +++ /dev/null @@ -1,6 +0,0 @@ -2003-06-12 gettextize - - * Makefile.in.in: Upgrade to gettext-0.10.40. - * cat-id-tbl.c: Remove file. - * stamp-cat-id: Remove file. - diff --git a/clients/gsat-1.1.0/po/ChangeLog~ b/clients/gsat-1.1.0/po/ChangeLog~ deleted file mode 100644 index e69de29..0000000 diff --git a/clients/gsat-1.1.0/po/Makefile b/clients/gsat-1.1.0/po/Makefile deleted file mode 100644 index c6ca4bb..0000000 --- a/clients/gsat-1.1.0/po/Makefile +++ /dev/null @@ -1,200 +0,0 @@ -# Generated automatically from Makefile.in.in by configure. -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper -# -# This file file be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -PACKAGE = gsat -VERSION = 0.1 - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - -prefix = /usr/local -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = /usr/bin/ginstall -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = ./mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -CC = gcc -GMSGFMT = /usr/bin/msgfmt -MSGFMT = /usr/bin/msgfmt -XGETTEXT = /usr/bin/xgettext -MSGMERGE = msgmerge - -DEFS = -DHAVE_CONFIG_H -CFLAGS = -g -O2 -Wall -CPPFLAGS = - -INCLUDES = -I.. -I$(top_srcdir)/intl - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -POFILES = -GMOFILES = -DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ -$(POFILES) $(GMOFILES) - -POTFILES = \ - ../src/main.c \ - ../src/interface.c \ - ../src/callbacks.c \ - ../src/support.c - -CATALOGS = - -.SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo - -.c.o: - $(COMPILE) $< - -.po.pox: - $(MAKE) $(PACKAGE).pot - $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox - -.po.mo: - $(MSGFMT) -o $@ $< - -.po.gmo: - file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) --statistics -o $$file $< - - -all: all-yes - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ - --add-comments --keyword=_ --keyword=N_ \ - --files-from=$(srcdir)/POTFILES.in \ - && test ! -f $(PACKAGE).po \ - || ( rm -f $(srcdir)/$(PACKAGE).pot \ - && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) - - -install: install-exec install-data -install-exec: -install-data: install-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $(srcdir)/$$cat as" \ - "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ - fi; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ - done - if test "$(PACKAGE)" = "gettext"; then \ - rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - for file in $$dists; do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - cp -p $$dir/$$file $(distdir); \ - done - -update-po: Makefile - $(MAKE) $(PACKAGE).pot - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - cd $(srcdir); \ - catalogs='$(GMOFILES)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - echo "$$lang:"; \ - if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ - mv -f $$lang.new.po $$lang.po; \ - else \ - echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.new.po; \ - fi; \ - done - $(MAKE) update-gmo - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/clients/gsat-1.1.0/po/Makefile.in b/clients/gsat-1.1.0/po/Makefile.in deleted file mode 100644 index 1434110..0000000 --- a/clients/gsat-1.1.0/po/Makefile.in +++ /dev/null @@ -1,196 +0,0 @@ -# Generated automatically from Makefile.in.in by configure. -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper -# -# This file file be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -PACKAGE = gsat -VERSION = 0.1 - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - -prefix = /usr/local -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = /usr/bin/ginstall -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = ./mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -CC = gcc -GMSGFMT = /usr/bin/msgfmt -MSGFMT = /usr/bin/msgfmt -XGETTEXT = /usr/bin/xgettext -MSGMERGE = msgmerge - -DEFS = -DHAVE_CONFIG_H -CFLAGS = -g -O2 -Wall -CPPFLAGS = - -INCLUDES = -I.. -I$(top_srcdir)/intl - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -POFILES = -GMOFILES = -DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ -$(POFILES) $(GMOFILES) - -POTFILES = \ - -CATALOGS = - -.SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo - -.c.o: - $(COMPILE) $< - -.po.pox: - $(MAKE) $(PACKAGE).pot - $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox - -.po.mo: - $(MSGFMT) -o $@ $< - -.po.gmo: - file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) --statistics -o $$file $< - - -all: all-yes - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ - --add-comments --keyword=_ --keyword=N_ \ - --files-from=$(srcdir)/POTFILES.in \ - && test ! -f $(PACKAGE).po \ - || ( rm -f $(srcdir)/$(PACKAGE).pot \ - && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) - - -install: install-exec install-data -install-exec: -install-data: install-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $(srcdir)/$$cat as" \ - "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ - fi; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ - done - if test "$(PACKAGE)" = "gettext"; then \ - rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - for file in $$dists; do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - cp -p $$dir/$$file $(distdir); \ - done - -update-po: Makefile - $(MAKE) $(PACKAGE).pot - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - cd $(srcdir); \ - catalogs='$(GMOFILES)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - echo "$$lang:"; \ - if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ - mv -f $$lang.new.po $$lang.po; \ - else \ - echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.new.po; \ - fi; \ - done - $(MAKE) update-gmo - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/clients/gsat-1.1.0/po/Makefile.in.in b/clients/gsat-1.1.0/po/Makefile.in.in deleted file mode 100644 index 28726a2..0000000 --- a/clients/gsat-1.1.0/po/Makefile.in.in +++ /dev/null @@ -1,196 +0,0 @@ -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper -# -# This file file be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -CC = @CC@ -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge - -DEFS = @DEFS@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ - -INCLUDES = -I.. -I$(top_srcdir)/intl - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ -$(POFILES) $(GMOFILES) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -.SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo - -.c.o: - $(COMPILE) $< - -.po.pox: - $(MAKE) $(PACKAGE).pot - $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox - -.po.mo: - $(MSGFMT) -o $@ $< - -.po.gmo: - file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) --statistics -o $$file $< - - -all: all-@USE_NLS@ - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ - --add-comments --keyword=_ --keyword=N_ \ - --files-from=$(srcdir)/POTFILES.in \ - && test ! -f $(PACKAGE).po \ - || ( rm -f $(srcdir)/$(PACKAGE).pot \ - && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $(srcdir)/$$cat as" \ - "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ - fi; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ - done - if test "$(PACKAGE)" = "gettext"; then \ - rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - for file in $$dists; do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - cp -p $$dir/$$file $(distdir); \ - done - -update-po: Makefile - $(MAKE) $(PACKAGE).pot - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - cd $(srcdir); \ - catalogs='$(GMOFILES)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - echo "$$lang:"; \ - if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ - mv -f $$lang.new.po $$lang.po; \ - else \ - echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.new.po; \ - fi; \ - done - $(MAKE) update-gmo - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/clients/gsat-1.1.0/po/POTFILES b/clients/gsat-1.1.0/po/POTFILES deleted file mode 100644 index 2f8e048..0000000 --- a/clients/gsat-1.1.0/po/POTFILES +++ /dev/null @@ -1,4 +0,0 @@ - ../src/main.c \ - ../src/interface.c \ - ../src/callbacks.c \ - ../src/support.c diff --git a/clients/gsat-1.1.0/po/POTFILES.in b/clients/gsat-1.1.0/po/POTFILES.in deleted file mode 100644 index ab2d29e..0000000 --- a/clients/gsat-1.1.0/po/POTFILES.in +++ /dev/null @@ -1,6 +0,0 @@ -# List of source files containing translatable strings. - -src/main.c -src/interface.c -src/callbacks.c -src/support.c diff --git a/clients/gsat-1.1.0/po/gsat.pot b/clients/gsat-1.1.0/po/gsat.pot deleted file mode 100644 index e5762e6..0000000 --- a/clients/gsat-1.1.0/po/gsat.pot +++ /dev/null @@ -1,301 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2002-09-07 18:08+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" - -#: src/interface.c:95 -msgid "gsat - Satellite Tracking" -msgstr "" - -#: src/interface.c:370 src/interface.c:1598 -msgid "Connect" -msgstr "" - -#: src/interface.c:382 -msgid "Disconnect" -msgstr "" - -#: src/interface.c:394 -msgid "Grid" -msgstr "" - -#: src/interface.c:406 -msgid "UTC Time" -msgstr "" - -#: src/interface.c:418 src/interface.c:603 src/interface.c:1750 -#: src/interface.c:1845 src/interface.c:1975 -msgid "Satellite" -msgstr "" - -#: src/interface.c:430 -msgid "QTH" -msgstr "" - -#: src/interface.c:442 -msgid "Track" -msgstr "" - -#: src/interface.c:454 -msgid "AutoFreq" -msgstr "" - -#: src/interface.c:466 -msgid "AZ/EL" -msgstr "" - -#: src/interface.c:478 -msgid "Prefs" -msgstr "" - -#: src/interface.c:490 -msgid "SatDB" -msgstr "" - -#: src/interface.c:533 -msgid "Rotor" -msgstr "" - -#: src/interface.c:543 src/interface.c:553 src/interface.c:563 -msgid "Radio" -msgstr "" - -#: src/interface.c:573 -msgid "Orbit" -msgstr "" - -#: src/interface.c:583 -msgid "Date" -msgstr "" - -#: src/interface.c:593 -msgid "Next AOS" -msgstr "" - -#: src/interface.c:632 -msgid "Range" -msgstr "" - -#: src/interface.c:642 -msgid "Altitude" -msgstr "" - -#: src/interface.c:652 -msgid "Latitude" -msgstr "" - -#: src/interface.c:662 -msgid "Longitude" -msgstr "" - -#: src/interface.c:672 -msgid "Footprint" -msgstr "" - -#: src/interface.c:682 -msgid "Velocity" -msgstr "" - -#: src/interface.c:692 -msgid "Uplink Frequency" -msgstr "" - -#: src/interface.c:702 src/interface.c:732 src/interface.c:762 -msgid "Doppler Shift" -msgstr "" - -#: src/interface.c:712 src/interface.c:742 src/interface.c:772 -msgid "Doppler Frequency" -msgstr "" - -#: src/interface.c:722 -msgid "Downlink Frequency" -msgstr "" - -#: src/interface.c:752 -msgid "Beacon Frequency" -msgstr "" - -#: src/interface.c:782 src/interface.c:1770 -msgid "Azimuth" -msgstr "" - -#: src/interface.c:792 src/interface.c:1760 -msgid "Elevation" -msgstr "" - -#: src/interface.c:933 -msgid "gsat - Preferences" -msgstr "" - -#: src/interface.c:950 -msgid "Radio Control" -msgstr "" - -#: src/interface.c:999 src/interface.c:1019 src/interface.c:1075 -#: src/interface.c:1152 -msgid "Plugin Config" -msgstr "" - -#: src/interface.c:1009 -msgid "Beacon plugin" -msgstr "" - -#: src/interface.c:1065 -msgid "Downlink plugin" -msgstr "" - -#: src/interface.c:1085 -msgid "Uplink plugin" -msgstr "" - -#: src/interface.c:1113 -msgid "Rotor Control" -msgstr "" - -#: src/interface.c:1142 -msgid "Rotor plugin" -msgstr "" - -#: src/interface.c:1180 -msgid "Program Options" -msgstr "" - -#: src/interface.c:1219 -msgid "Time format" -msgstr "" - -#: src/interface.c:1229 -msgid "Local time" -msgstr "" - -#: src/interface.c:1240 -msgid "UTC time" -msgstr "" - -#: src/interface.c:1251 -msgid "Map grid" -msgstr "" - -#: src/interface.c:1261 src/interface.c:1293 src/interface.c:1325 -#: src/interface.c:1357 src/interface.c:1389 -msgid "On" -msgstr "" - -#: src/interface.c:1272 src/interface.c:1304 src/interface.c:1336 -#: src/interface.c:1368 src/interface.c:1400 -msgid "Off" -msgstr "" - -#: src/interface.c:1283 -msgid "Satellite footprint" -msgstr "" - -#: src/interface.c:1315 -msgid "Station footprint" -msgstr "" - -#: src/interface.c:1347 -msgid "Ground Track" -msgstr "" - -#: src/interface.c:1379 -msgid "Auto Frequency" -msgstr "" - -#: src/interface.c:1411 -msgid "AOS command" -msgstr "" - -#: src/interface.c:1421 -msgid "LOS command" -msgstr "" - -#: src/interface.c:1437 -msgid "Apply" -msgstr "" - -#: src/interface.c:1449 -msgid "Save" -msgstr "" - -#: src/interface.c:1461 src/interface.c:1611 -msgid "Cancel" -msgstr "" - -#: src/interface.c:1515 -msgid "gsat - Connect" -msgstr "" - -#: src/interface.c:1549 -msgid "localhost" -msgstr "" - -#: src/interface.c:1560 -msgid "1210" -msgstr "" - -#: src/interface.c:1562 -msgid "Port" -msgstr "" - -#: src/interface.c:1572 -msgid "Server" -msgstr "" - -#: src/interface.c:1582 -msgid "Enter predict server and port" -msgstr "" - -#: src/interface.c:1659 -msgid "gsat - AZ/EL tracking" -msgstr "" - -#: src/interface.c:1818 -msgid "gsat - Satellite DB" -msgstr "" - -#: src/interface.c:1853 src/interface.c:1985 -msgid "Uplink" -msgstr "" - -#: src/interface.c:1861 src/interface.c:1995 -msgid "Downlink" -msgstr "" - -#: src/interface.c:1869 src/interface.c:2005 -msgid "Beacon" -msgstr "" - -#: src/interface.c:1945 -msgid "Add" -msgstr "" - -#: src/interface.c:1955 -msgid "Update" -msgstr "" - -#: src/interface.c:1965 -msgid "Delete" -msgstr "" - -#: src/support.c:121 -#, c-format -msgid "Couldn't find pixmap file: %s" -msgstr "" - -#: src/support.c:130 -#, c-format -msgid "Error loading pixmap file: %s" -msgstr "" diff --git a/clients/gsat-1.1.0/src/.deps/callbacks.P b/clients/gsat-1.1.0/src/.deps/callbacks.P deleted file mode 100644 index 1e77241..0000000 --- a/clients/gsat-1.1.0/src/.deps/callbacks.P +++ /dev/null @@ -1,297 +0,0 @@ -callbacks.o: callbacks.c ../config.h /usr/include/gtk-1.2/gtk/gtk.h \ - /usr/include/gtk-1.2/gdk/gdk.h /usr/include/gtk-1.2/gdk/gdktypes.h \ - /usr/include/glib-1.2/glib.h /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ - /usr/include/gnu/stubs.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h /usr/include/stdio.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/types.h /usr/include/bits/wordsize.h \ - /usr/include/bits/typesizes.h /usr/include/libio.h \ - /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ - /usr/include/gconv.h /usr/include/bits/stdio_lim.h \ - /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ - /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h \ - /usr/include/endian.h /usr/include/bits/endian.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/sigset.h /usr/include/bits/time.h \ - /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ - /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/string.h \ - /usr/include/bits/string.h /usr/include/bits/string2.h \ - /usr/include/unistd.h /usr/include/bits/posix_opt.h \ - /usr/include/bits/confname.h /usr/include/getopt.h /usr/include/dlfcn.h \ - /usr/include/bits/dlfcn.h callbacks.h interface.h support.h \ - /usr/include/libintl.h /usr/include/locale.h /usr/include/bits/locale.h \ - db.h globals.h -callbacks.c : -../config.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -/usr/include/stdio.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/include/bits/typesizes.h : -/usr/include/libio.h : -/usr/include/_G_config.h : -/usr/include/wchar.h : -/usr/include/bits/wchar.h : -/usr/include/gconv.h : -/usr/include/bits/stdio_lim.h : -/usr/include/bits/sys_errlist.h : -/usr/include/bits/stdio.h : -/usr/include/stdlib.h : -/usr/include/sys/types.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/alloca.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/dlfcn.h : -/usr/include/bits/dlfcn.h : -callbacks.h : -interface.h : -support.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : -db.h : -globals.h : diff --git a/clients/gsat-1.1.0/src/.deps/comms.P b/clients/gsat-1.1.0/src/.deps/comms.P deleted file mode 100644 index 49fa6dc..0000000 --- a/clients/gsat-1.1.0/src/.deps/comms.P +++ /dev/null @@ -1,347 +0,0 @@ -comms.o: comms.c /usr/include/stdio.h /usr/include/features.h \ - /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/types.h /usr/include/bits/wordsize.h \ - /usr/include/bits/typesizes.h /usr/include/libio.h \ - /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ - /usr/include/gconv.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ - /usr/include/bits/stdio.h /usr/include/stdlib.h \ - /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/sigset.h \ - /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ - /usr/include/alloca.h /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ - /usr/include/getopt.h /usr/include/sys/time.h /usr/include/sys/socket.h \ - /usr/include/sys/uio.h /usr/include/bits/uio.h \ - /usr/include/bits/socket.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/sockaddr.h \ - /usr/include/asm/socket.h /usr/include/asm/sockios.h \ - /usr/include/netinet/in.h /usr/include/stdint.h /usr/include/bits/in.h \ - /usr/include/bits/byteswap.h /usr/include/netdb.h \ - /usr/include/rpc/netdb.h /usr/include/bits/netdb.h \ - /usr/include/signal.h /usr/include/bits/signum.h \ - /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ - /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h \ - /usr/include/bits/sigstack.h /usr/include/bits/sigthread.h \ - /usr/include/errno.h /usr/include/bits/errno.h \ - /usr/include/linux/errno.h /usr/include/asm/errno.h \ - /usr/include/arpa/inet.h /usr/include/math.h \ - /usr/include/bits/huge_val.h /usr/include/bits/mathdef.h \ - /usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \ - /usr/include/dlfcn.h /usr/include/bits/dlfcn.h /usr/include/dirent.h \ - /usr/include/bits/dirent.h support.h ../config.h \ - /usr/include/gtk-1.2/gtk/gtk.h /usr/include/gtk-1.2/gdk/gdk.h \ - /usr/include/gtk-1.2/gdk/gdktypes.h /usr/include/glib-1.2/glib.h \ - /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h /usr/include/libintl.h \ - /usr/include/locale.h /usr/include/bits/locale.h comms.h globals.h -comms.c : -/usr/include/stdio.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/include/bits/typesizes.h : -/usr/include/libio.h : -/usr/include/_G_config.h : -/usr/include/wchar.h : -/usr/include/bits/wchar.h : -/usr/include/gconv.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/bits/stdio_lim.h : -/usr/include/bits/sys_errlist.h : -/usr/include/bits/stdio.h : -/usr/include/stdlib.h : -/usr/include/sys/types.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/alloca.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/sys/time.h : -/usr/include/sys/socket.h : -/usr/include/sys/uio.h : -/usr/include/bits/uio.h : -/usr/include/bits/socket.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/include/bits/sockaddr.h : -/usr/include/asm/socket.h : -/usr/include/asm/sockios.h : -/usr/include/netinet/in.h : -/usr/include/stdint.h : -/usr/include/bits/in.h : -/usr/include/bits/byteswap.h : -/usr/include/netdb.h : -/usr/include/rpc/netdb.h : -/usr/include/bits/netdb.h : -/usr/include/signal.h : -/usr/include/bits/signum.h : -/usr/include/bits/siginfo.h : -/usr/include/bits/sigaction.h : -/usr/include/bits/sigcontext.h : -/usr/include/asm/sigcontext.h : -/usr/include/bits/sigstack.h : -/usr/include/bits/sigthread.h : -/usr/include/errno.h : -/usr/include/bits/errno.h : -/usr/include/linux/errno.h : -/usr/include/asm/errno.h : -/usr/include/arpa/inet.h : -/usr/include/math.h : -/usr/include/bits/huge_val.h : -/usr/include/bits/mathdef.h : -/usr/include/bits/mathcalls.h : -/usr/include/bits/mathinline.h : -/usr/include/dlfcn.h : -/usr/include/bits/dlfcn.h : -/usr/include/dirent.h : -/usr/include/bits/dirent.h : -support.h : -../config.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : -comms.h : -globals.h : diff --git a/clients/gsat-1.1.0/src/.deps/db.P b/clients/gsat-1.1.0/src/.deps/db.P deleted file mode 100644 index 2256fb9..0000000 --- a/clients/gsat-1.1.0/src/.deps/db.P +++ /dev/null @@ -1,298 +0,0 @@ -db.o: db.c /usr/include/stdio.h /usr/include/features.h \ - /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/types.h /usr/include/bits/wordsize.h \ - /usr/include/bits/typesizes.h /usr/include/libio.h \ - /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ - /usr/include/gconv.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ - /usr/include/bits/stdio.h /usr/include/stdlib.h \ - /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/sigset.h \ - /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ - /usr/include/alloca.h /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ - /usr/include/getopt.h /usr/include/errno.h /usr/include/bits/errno.h \ - /usr/include/linux/errno.h /usr/include/asm/errno.h support.h \ - ../config.h /usr/include/gtk-1.2/gtk/gtk.h \ - /usr/include/gtk-1.2/gdk/gdk.h /usr/include/gtk-1.2/gdk/gdktypes.h \ - /usr/include/glib-1.2/glib.h /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h /usr/include/libintl.h \ - /usr/include/locale.h /usr/include/bits/locale.h comms.h globals.h -db.c : -/usr/include/stdio.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/include/bits/typesizes.h : -/usr/include/libio.h : -/usr/include/_G_config.h : -/usr/include/wchar.h : -/usr/include/bits/wchar.h : -/usr/include/gconv.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/bits/stdio_lim.h : -/usr/include/bits/sys_errlist.h : -/usr/include/bits/stdio.h : -/usr/include/stdlib.h : -/usr/include/sys/types.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/alloca.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/errno.h : -/usr/include/bits/errno.h : -/usr/include/linux/errno.h : -/usr/include/asm/errno.h : -support.h : -../config.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : -comms.h : -globals.h : diff --git a/clients/gsat-1.1.0/src/.deps/interface.P b/clients/gsat-1.1.0/src/.deps/interface.P deleted file mode 100644 index a22114b..0000000 --- a/clients/gsat-1.1.0/src/.deps/interface.P +++ /dev/null @@ -1,283 +0,0 @@ -interface.o: interface.c ../config.h /usr/include/sys/types.h \ - /usr/include/features.h /usr/include/sys/cdefs.h \ - /usr/include/gnu/stubs.h /usr/include/bits/types.h \ - /usr/include/bits/wordsize.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/sigset.h \ - /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ - /usr/include/sys/stat.h /usr/include/bits/stat.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ - /usr/include/getopt.h /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h /usr/include/stdlib.h \ - /usr/include/gtk-1.2/gdk/gdkkeysyms.h /usr/include/gtk-1.2/gtk/gtk.h \ - /usr/include/gtk-1.2/gdk/gdk.h /usr/include/gtk-1.2/gdk/gdktypes.h \ - /usr/include/glib-1.2/glib.h /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h callbacks.h interface.h \ - support.h /usr/include/libintl.h /usr/include/locale.h \ - /usr/include/bits/locale.h -interface.c : -../config.h : -/usr/include/sys/types.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/typesizes.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/sys/stat.h : -/usr/include/bits/stat.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -/usr/include/stdlib.h : -/usr/include/gtk-1.2/gdk/gdkkeysyms.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -callbacks.h : -interface.h : -support.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : diff --git a/clients/gsat-1.1.0/src/.deps/main.P b/clients/gsat-1.1.0/src/.deps/main.P deleted file mode 100644 index b66ef49..0000000 --- a/clients/gsat-1.1.0/src/.deps/main.P +++ /dev/null @@ -1,302 +0,0 @@ -main.o: main.c ../config.h /usr/include/gtk-1.2/gtk/gtk.h \ - /usr/include/gtk-1.2/gdk/gdk.h /usr/include/gtk-1.2/gdk/gdktypes.h \ - /usr/include/glib-1.2/glib.h /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ - /usr/include/gnu/stubs.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h /usr/include/stdio.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/types.h /usr/include/bits/wordsize.h \ - /usr/include/bits/typesizes.h /usr/include/libio.h \ - /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ - /usr/include/gconv.h /usr/include/bits/stdio_lim.h \ - /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ - /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h \ - /usr/include/endian.h /usr/include/bits/endian.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/sigset.h /usr/include/bits/time.h \ - /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ - /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ - /usr/include/getopt.h /usr/include/errno.h /usr/include/bits/errno.h \ - /usr/include/linux/errno.h /usr/include/asm/errno.h \ - /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h interface.h support.h \ - /usr/include/libintl.h /usr/include/locale.h /usr/include/bits/locale.h \ - comms.h graphics.h prefs.h plugins.h globals.h -main.c : -../config.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -/usr/include/stdio.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/include/bits/typesizes.h : -/usr/include/libio.h : -/usr/include/_G_config.h : -/usr/include/wchar.h : -/usr/include/bits/wchar.h : -/usr/include/gconv.h : -/usr/include/bits/stdio_lim.h : -/usr/include/bits/sys_errlist.h : -/usr/include/bits/stdio.h : -/usr/include/stdlib.h : -/usr/include/sys/types.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/alloca.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/errno.h : -/usr/include/bits/errno.h : -/usr/include/linux/errno.h : -/usr/include/asm/errno.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -interface.h : -support.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : -comms.h : -graphics.h : -prefs.h : -plugins.h : -globals.h : diff --git a/clients/gsat-1.1.0/src/.deps/plugins.P b/clients/gsat-1.1.0/src/.deps/plugins.P deleted file mode 100644 index bb2b998..0000000 --- a/clients/gsat-1.1.0/src/.deps/plugins.P +++ /dev/null @@ -1,304 +0,0 @@ -plugins.o: plugins.c /usr/include/stdio.h /usr/include/features.h \ - /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/types.h /usr/include/bits/wordsize.h \ - /usr/include/bits/typesizes.h /usr/include/libio.h \ - /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ - /usr/include/gconv.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ - /usr/include/bits/stdio.h /usr/include/stdlib.h \ - /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/sigset.h \ - /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ - /usr/include/alloca.h /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ - /usr/include/getopt.h /usr/include/errno.h /usr/include/bits/errno.h \ - /usr/include/linux/errno.h /usr/include/asm/errno.h \ - /usr/include/dlfcn.h /usr/include/bits/dlfcn.h /usr/include/dirent.h \ - /usr/include/bits/dirent.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/gtk-1.2/gtk/gtk.h /usr/include/gtk-1.2/gdk/gdk.h \ - /usr/include/gtk-1.2/gdk/gdktypes.h /usr/include/glib-1.2/glib.h \ - /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix2_lim.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h support.h ../config.h \ - /usr/include/libintl.h /usr/include/locale.h /usr/include/bits/locale.h \ - comms.h globals.h -plugins.c : -/usr/include/stdio.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/include/bits/typesizes.h : -/usr/include/libio.h : -/usr/include/_G_config.h : -/usr/include/wchar.h : -/usr/include/bits/wchar.h : -/usr/include/gconv.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/bits/stdio_lim.h : -/usr/include/bits/sys_errlist.h : -/usr/include/bits/stdio.h : -/usr/include/stdlib.h : -/usr/include/sys/types.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/alloca.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/errno.h : -/usr/include/bits/errno.h : -/usr/include/linux/errno.h : -/usr/include/asm/errno.h : -/usr/include/dlfcn.h : -/usr/include/bits/dlfcn.h : -/usr/include/dirent.h : -/usr/include/bits/dirent.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -support.h : -../config.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : -comms.h : -globals.h : diff --git a/clients/gsat-1.1.0/src/.deps/prefs.P b/clients/gsat-1.1.0/src/.deps/prefs.P deleted file mode 100644 index dcee6ad..0000000 --- a/clients/gsat-1.1.0/src/.deps/prefs.P +++ /dev/null @@ -1,298 +0,0 @@ -prefs.o: prefs.c /usr/include/stdio.h /usr/include/features.h \ - /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/types.h /usr/include/bits/wordsize.h \ - /usr/include/bits/typesizes.h /usr/include/libio.h \ - /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ - /usr/include/gconv.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ - /usr/include/bits/stdio.h /usr/include/stdlib.h \ - /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/sigset.h \ - /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ - /usr/include/alloca.h /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ - /usr/include/getopt.h /usr/include/errno.h /usr/include/bits/errno.h \ - /usr/include/linux/errno.h /usr/include/asm/errno.h support.h \ - ../config.h /usr/include/gtk-1.2/gtk/gtk.h \ - /usr/include/gtk-1.2/gdk/gdk.h /usr/include/gtk-1.2/gdk/gdktypes.h \ - /usr/include/glib-1.2/glib.h /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h /usr/include/libintl.h \ - /usr/include/locale.h /usr/include/bits/locale.h plugins.h globals.h -prefs.c : -/usr/include/stdio.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/include/bits/typesizes.h : -/usr/include/libio.h : -/usr/include/_G_config.h : -/usr/include/wchar.h : -/usr/include/bits/wchar.h : -/usr/include/gconv.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/bits/stdio_lim.h : -/usr/include/bits/sys_errlist.h : -/usr/include/bits/stdio.h : -/usr/include/stdlib.h : -/usr/include/sys/types.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/alloca.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/errno.h : -/usr/include/bits/errno.h : -/usr/include/linux/errno.h : -/usr/include/asm/errno.h : -support.h : -../config.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : -plugins.h : -globals.h : diff --git a/clients/gsat-1.1.0/src/.deps/support.P b/clients/gsat-1.1.0/src/.deps/support.P deleted file mode 100644 index 2e831bd..0000000 --- a/clients/gsat-1.1.0/src/.deps/support.P +++ /dev/null @@ -1,279 +0,0 @@ -support.o: support.c ../config.h /usr/include/sys/types.h \ - /usr/include/features.h /usr/include/sys/cdefs.h \ - /usr/include/gnu/stubs.h /usr/include/bits/types.h \ - /usr/include/bits/wordsize.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h \ - /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ - /usr/include/bits/endian.h /usr/include/sys/select.h \ - /usr/include/bits/select.h /usr/include/bits/sigset.h \ - /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ - /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ - /usr/include/sys/stat.h /usr/include/bits/stat.h /usr/include/unistd.h \ - /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ - /usr/include/getopt.h /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h /usr/include/stdlib.h \ - /usr/include/gtk-1.2/gtk/gtk.h /usr/include/gtk-1.2/gdk/gdk.h \ - /usr/include/gtk-1.2/gdk/gdktypes.h /usr/include/glib-1.2/glib.h \ - /usr/lib/glib/include/glibconfig.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h \ - /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h \ - /usr/include/gtk-1.2/gdk/gdkcursors.h /usr/include/gtk-1.2/gdk/gdkrgb.h \ - /usr/include/gtk-1.2/gtk/gtkaccelgroup.h \ - /usr/include/gtk-1.2/gtk/gtkobject.h /usr/include/gtk-1.2/gtk/gtkarg.h \ - /usr/include/gtk-1.2/gtk/gtktypeutils.h \ - /usr/include/gtk-1.2/gtk/gtktypebuiltins.h \ - /usr/include/gtk-1.2/gtk/gtkenums.h /usr/include/gtk-1.2/gtk/gtkdebug.h \ - /usr/include/gtk-1.2/gtk/gtkaccellabel.h \ - /usr/include/gtk-1.2/gtk/gtklabel.h /usr/include/gtk-1.2/gtk/gtkmisc.h \ - /usr/include/gtk-1.2/gtk/gtkwidget.h \ - /usr/include/gtk-1.2/gtk/gtkadjustment.h \ - /usr/include/gtk-1.2/gtk/gtkdata.h /usr/include/gtk-1.2/gtk/gtkstyle.h \ - /usr/include/gtk-1.2/gtk/gtkalignment.h \ - /usr/include/gtk-1.2/gtk/gtkbin.h \ - /usr/include/gtk-1.2/gtk/gtkcontainer.h \ - /usr/include/gtk-1.2/gtk/gtkaspectframe.h \ - /usr/include/gtk-1.2/gtk/gtkframe.h /usr/include/gtk-1.2/gtk/gtkarrow.h \ - /usr/include/gtk-1.2/gtk/gtkbindings.h \ - /usr/include/gtk-1.2/gtk/gtkbox.h /usr/include/gtk-1.2/gtk/gtkbbox.h \ - /usr/include/gtk-1.2/gtk/gtkbutton.h \ - /usr/include/gtk-1.2/gtk/gtkcalendar.h \ - /usr/include/gtk-1.2/gtk/gtksignal.h \ - /usr/include/gtk-1.2/gtk/gtkmarshal.h \ - /usr/include/gtk-1.2/gtk/gtkcheckbutton.h \ - /usr/include/gtk-1.2/gtk/gtktogglebutton.h \ - /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkitem.h /usr/include/gtk-1.2/gtk/gtkclist.h \ - /usr/include/gtk-1.2/gtk/gtkhscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkrange.h \ - /usr/include/gtk-1.2/gtk/gtkvscrollbar.h \ - /usr/include/gtk-1.2/gtk/gtkcolorsel.h \ - /usr/include/gtk-1.2/gtk/gtkwindow.h /usr/include/gtk-1.2/gtk/gtkvbox.h \ - /usr/include/gtk-1.2/gtk/gtkpreview.h \ - /usr/include/gtk-1.2/gtk/gtkentry.h \ - /usr/include/gtk-1.2/gtk/gtkeditable.h \ - /usr/include/gtk-1.2/gtk/gtkhbox.h /usr/include/gtk-1.2/gtk/gtkmain.h \ - /usr/include/gtk-1.2/gtk/gtkscale.h \ - /usr/include/gtk-1.2/gtk/gtkhscale.h \ - /usr/include/gtk-1.2/gtk/gtktable.h \ - /usr/include/gtk-1.2/gtk/gtkeventbox.h \ - /usr/include/gtk-1.2/gtk/gtkcombo.h \ - /usr/include/gtk-1.2/gtk/gtkcompat.h \ - /usr/include/gtk-1.2/gtk/gtkctree.h /usr/include/gtk-1.2/gtk/gtkcurve.h \ - /usr/include/gtk-1.2/gtk/gtkdrawingarea.h \ - /usr/include/gtk-1.2/gtk/gtkdialog.h /usr/include/gtk-1.2/gtk/gtkdnd.h \ - /usr/include/gtk-1.2/gtk/gtkselection.h \ - /usr/include/gtk-1.2/gtk/gtkfeatures.h \ - /usr/include/gtk-1.2/gtk/gtkfilesel.h \ - /usr/include/gtk-1.2/gtk/gtkfixed.h \ - /usr/include/gtk-1.2/gtk/gtkfontsel.h \ - /usr/include/gtk-1.2/gtk/gtknotebook.h \ - /usr/include/gtk-1.2/gtk/gtkgamma.h /usr/include/gtk-1.2/gtk/gtkgc.h \ - /usr/include/gtk-1.2/gtk/gtkhandlebox.h \ - /usr/include/gtk-1.2/gtk/gtkhbbox.h \ - /usr/include/gtk-1.2/gtk/gtkhpaned.h \ - /usr/include/gtk-1.2/gtk/gtkpaned.h \ - /usr/include/gtk-1.2/gtk/gtkhruler.h \ - /usr/include/gtk-1.2/gtk/gtkruler.h \ - /usr/include/gtk-1.2/gtk/gtkhseparator.h \ - /usr/include/gtk-1.2/gtk/gtkseparator.h \ - /usr/include/gtk-1.2/gtk/gtkimage.h \ - /usr/include/gtk-1.2/gtk/gtkinputdialog.h \ - /usr/include/gtk-1.2/gtk/gtkitemfactory.h \ - /usr/include/gtk-1.2/gtk/gtkmenufactory.h \ - /usr/include/gtk-1.2/gtk/gtklayout.h /usr/include/gtk-1.2/gtk/gtklist.h \ - /usr/include/gtk-1.2/gtk/gtklistitem.h \ - /usr/include/gtk-1.2/gtk/gtkmenu.h \ - /usr/include/gtk-1.2/gtk/gtkmenushell.h \ - /usr/include/gtk-1.2/gtk/gtkmenubar.h \ - /usr/include/gtk-1.2/gtk/gtkoptionmenu.h \ - /usr/include/gtk-1.2/gtk/gtkpacker.h \ - /usr/include/gtk-1.2/gtk/gtkpixmap.h /usr/include/gtk-1.2/gtk/gtkplug.h \ - /usr/include/gtk-1.2/gtk/gtkprogress.h \ - /usr/include/gtk-1.2/gtk/gtkprogressbar.h \ - /usr/include/gtk-1.2/gtk/gtkradiobutton.h \ - /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-1.2/gtk/gtkrc.h \ - /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-1.2/gtk/gtkviewport.h \ - /usr/include/gtk-1.2/gtk/gtksocket.h \ - /usr/include/gtk-1.2/gtk/gtkspinbutton.h \ - /usr/include/gtk-1.2/gtk/gtkstatusbar.h \ - /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-1.2/gtk/gtktext.h /usr/include/gtk-1.2/gtk/gtkthemes.h \ - /usr/include/gtk-1.2/gtk/gtktipsquery.h \ - /usr/include/gtk-1.2/gtk/gtktoolbar.h \ - /usr/include/gtk-1.2/gtk/gtktooltips.h \ - /usr/include/gtk-1.2/gtk/gtktree.h \ - /usr/include/gtk-1.2/gtk/gtktreeitem.h \ - /usr/include/gtk-1.2/gtk/gtkvbbox.h \ - /usr/include/gtk-1.2/gtk/gtkvpaned.h \ - /usr/include/gtk-1.2/gtk/gtkvruler.h \ - /usr/include/gtk-1.2/gtk/gtkvscale.h \ - /usr/include/gtk-1.2/gtk/gtkvseparator.h support.h \ - /usr/include/libintl.h /usr/include/locale.h /usr/include/bits/locale.h -support.c : -../config.h : -/usr/include/sys/types.h : -/usr/include/features.h : -/usr/include/sys/cdefs.h : -/usr/include/gnu/stubs.h : -/usr/include/bits/types.h : -/usr/include/bits/wordsize.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stddef.h : -/usr/include/bits/typesizes.h : -/usr/include/time.h : -/usr/include/endian.h : -/usr/include/bits/endian.h : -/usr/include/sys/select.h : -/usr/include/bits/select.h : -/usr/include/bits/sigset.h : -/usr/include/bits/time.h : -/usr/include/sys/sysmacros.h : -/usr/include/bits/pthreadtypes.h : -/usr/include/bits/sched.h : -/usr/include/sys/stat.h : -/usr/include/bits/stat.h : -/usr/include/unistd.h : -/usr/include/bits/posix_opt.h : -/usr/include/bits/confname.h : -/usr/include/getopt.h : -/usr/include/string.h : -/usr/include/bits/string.h : -/usr/include/bits/string2.h : -/usr/include/stdlib.h : -/usr/include/gtk-1.2/gtk/gtk.h : -/usr/include/gtk-1.2/gdk/gdk.h : -/usr/include/gtk-1.2/gdk/gdktypes.h : -/usr/include/glib-1.2/glib.h : -/usr/lib/glib/include/glibconfig.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/limits.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/syslimits.h : -/usr/include/limits.h : -/usr/include/bits/posix1_lim.h : -/usr/include/bits/local_lim.h : -/usr/include/linux/limits.h : -/usr/include/bits/posix2_lim.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/float.h : -/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include/stdarg.h : -/usr/include/gtk-1.2/gdk/gdkcursors.h : -/usr/include/gtk-1.2/gdk/gdkrgb.h : -/usr/include/gtk-1.2/gtk/gtkaccelgroup.h : -/usr/include/gtk-1.2/gtk/gtkobject.h : -/usr/include/gtk-1.2/gtk/gtkarg.h : -/usr/include/gtk-1.2/gtk/gtktypeutils.h : -/usr/include/gtk-1.2/gtk/gtktypebuiltins.h : -/usr/include/gtk-1.2/gtk/gtkenums.h : -/usr/include/gtk-1.2/gtk/gtkdebug.h : -/usr/include/gtk-1.2/gtk/gtkaccellabel.h : -/usr/include/gtk-1.2/gtk/gtklabel.h : -/usr/include/gtk-1.2/gtk/gtkmisc.h : -/usr/include/gtk-1.2/gtk/gtkwidget.h : -/usr/include/gtk-1.2/gtk/gtkadjustment.h : -/usr/include/gtk-1.2/gtk/gtkdata.h : -/usr/include/gtk-1.2/gtk/gtkstyle.h : -/usr/include/gtk-1.2/gtk/gtkalignment.h : -/usr/include/gtk-1.2/gtk/gtkbin.h : -/usr/include/gtk-1.2/gtk/gtkcontainer.h : -/usr/include/gtk-1.2/gtk/gtkaspectframe.h : -/usr/include/gtk-1.2/gtk/gtkframe.h : -/usr/include/gtk-1.2/gtk/gtkarrow.h : -/usr/include/gtk-1.2/gtk/gtkbindings.h : -/usr/include/gtk-1.2/gtk/gtkbox.h : -/usr/include/gtk-1.2/gtk/gtkbbox.h : -/usr/include/gtk-1.2/gtk/gtkbutton.h : -/usr/include/gtk-1.2/gtk/gtkcalendar.h : -/usr/include/gtk-1.2/gtk/gtksignal.h : -/usr/include/gtk-1.2/gtk/gtkmarshal.h : -/usr/include/gtk-1.2/gtk/gtkcheckbutton.h : -/usr/include/gtk-1.2/gtk/gtktogglebutton.h : -/usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkmenuitem.h : -/usr/include/gtk-1.2/gtk/gtkitem.h : -/usr/include/gtk-1.2/gtk/gtkclist.h : -/usr/include/gtk-1.2/gtk/gtkhscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkrange.h : -/usr/include/gtk-1.2/gtk/gtkvscrollbar.h : -/usr/include/gtk-1.2/gtk/gtkcolorsel.h : -/usr/include/gtk-1.2/gtk/gtkwindow.h : -/usr/include/gtk-1.2/gtk/gtkvbox.h : -/usr/include/gtk-1.2/gtk/gtkpreview.h : -/usr/include/gtk-1.2/gtk/gtkentry.h : -/usr/include/gtk-1.2/gtk/gtkeditable.h : -/usr/include/gtk-1.2/gtk/gtkhbox.h : -/usr/include/gtk-1.2/gtk/gtkmain.h : -/usr/include/gtk-1.2/gtk/gtkscale.h : -/usr/include/gtk-1.2/gtk/gtkhscale.h : -/usr/include/gtk-1.2/gtk/gtktable.h : -/usr/include/gtk-1.2/gtk/gtkeventbox.h : -/usr/include/gtk-1.2/gtk/gtkcombo.h : -/usr/include/gtk-1.2/gtk/gtkcompat.h : -/usr/include/gtk-1.2/gtk/gtkctree.h : -/usr/include/gtk-1.2/gtk/gtkcurve.h : -/usr/include/gtk-1.2/gtk/gtkdrawingarea.h : -/usr/include/gtk-1.2/gtk/gtkdialog.h : -/usr/include/gtk-1.2/gtk/gtkdnd.h : -/usr/include/gtk-1.2/gtk/gtkselection.h : -/usr/include/gtk-1.2/gtk/gtkfeatures.h : -/usr/include/gtk-1.2/gtk/gtkfilesel.h : -/usr/include/gtk-1.2/gtk/gtkfixed.h : -/usr/include/gtk-1.2/gtk/gtkfontsel.h : -/usr/include/gtk-1.2/gtk/gtknotebook.h : -/usr/include/gtk-1.2/gtk/gtkgamma.h : -/usr/include/gtk-1.2/gtk/gtkgc.h : -/usr/include/gtk-1.2/gtk/gtkhandlebox.h : -/usr/include/gtk-1.2/gtk/gtkhbbox.h : -/usr/include/gtk-1.2/gtk/gtkhpaned.h : -/usr/include/gtk-1.2/gtk/gtkpaned.h : -/usr/include/gtk-1.2/gtk/gtkhruler.h : -/usr/include/gtk-1.2/gtk/gtkruler.h : -/usr/include/gtk-1.2/gtk/gtkhseparator.h : -/usr/include/gtk-1.2/gtk/gtkseparator.h : -/usr/include/gtk-1.2/gtk/gtkimage.h : -/usr/include/gtk-1.2/gtk/gtkinputdialog.h : -/usr/include/gtk-1.2/gtk/gtkitemfactory.h : -/usr/include/gtk-1.2/gtk/gtkmenufactory.h : -/usr/include/gtk-1.2/gtk/gtklayout.h : -/usr/include/gtk-1.2/gtk/gtklist.h : -/usr/include/gtk-1.2/gtk/gtklistitem.h : -/usr/include/gtk-1.2/gtk/gtkmenu.h : -/usr/include/gtk-1.2/gtk/gtkmenushell.h : -/usr/include/gtk-1.2/gtk/gtkmenubar.h : -/usr/include/gtk-1.2/gtk/gtkoptionmenu.h : -/usr/include/gtk-1.2/gtk/gtkpacker.h : -/usr/include/gtk-1.2/gtk/gtkpixmap.h : -/usr/include/gtk-1.2/gtk/gtkplug.h : -/usr/include/gtk-1.2/gtk/gtkprogress.h : -/usr/include/gtk-1.2/gtk/gtkprogressbar.h : -/usr/include/gtk-1.2/gtk/gtkradiobutton.h : -/usr/include/gtk-1.2/gtk/gtkradiomenuitem.h : -/usr/include/gtk-1.2/gtk/gtkrc.h : -/usr/include/gtk-1.2/gtk/gtkscrolledwindow.h : -/usr/include/gtk-1.2/gtk/gtkviewport.h : -/usr/include/gtk-1.2/gtk/gtksocket.h : -/usr/include/gtk-1.2/gtk/gtkspinbutton.h : -/usr/include/gtk-1.2/gtk/gtkstatusbar.h : -/usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h : -/usr/include/gtk-1.2/gtk/gtktext.h : -/usr/include/gtk-1.2/gtk/gtkthemes.h : -/usr/include/gtk-1.2/gtk/gtktipsquery.h : -/usr/include/gtk-1.2/gtk/gtktoolbar.h : -/usr/include/gtk-1.2/gtk/gtktooltips.h : -/usr/include/gtk-1.2/gtk/gtktree.h : -/usr/include/gtk-1.2/gtk/gtktreeitem.h : -/usr/include/gtk-1.2/gtk/gtkvbbox.h : -/usr/include/gtk-1.2/gtk/gtkvpaned.h : -/usr/include/gtk-1.2/gtk/gtkvruler.h : -/usr/include/gtk-1.2/gtk/gtkvscale.h : -/usr/include/gtk-1.2/gtk/gtkvseparator.h : -support.h : -/usr/include/libintl.h : -/usr/include/locale.h : -/usr/include/bits/locale.h : diff --git a/clients/gsat-1.1.0/src/Makefile b/clients/gsat-1.1.0/src/Makefile deleted file mode 100644 index f0fde23..0000000 --- a/clients/gsat-1.1.0/src/Makefile +++ /dev/null @@ -1,343 +0,0 @@ -# Generated automatically from Makefile.in by configure. -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 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. - - -SHELL = /bin/sh - -srcdir = . -top_srcdir = .. -prefix = /usr/local -exec_prefix = ${prefix} - -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 -infodir = ${prefix}/info -mandir = ${prefix}/man -includedir = ${prefix}/include -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/gsat -pkglibdir = $(libdir)/gsat -pkgincludedir = $(includedir)/gsat - -top_builddir = .. - -ACLOCAL = aclocal -AUTOCONF = autoconf -AUTOMAKE = automake -AUTOHEADER = autoheader - -INSTALL = /usr/bin/ginstall -c -INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_SCRIPT = ${INSTALL_PROGRAM} -transform = s,x,x, - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -BUILD_INCLUDED_LIBINTL = no -CATALOGS = -CATOBJEXT = .gmo -CC = gcc -DATADIRNAME = share -GENCAT = gencat -GLIBC21 = yes -GMOFILES = -GMSGFMT = /usr/bin/msgfmt -GTK_CFLAGS = -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include -GTK_CONFIG = /usr/bin/gtk-config -GTK_LIBS = -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm -INSTOBJEXT = .mo -INTLBISON = bison -INTLLIBS = -INTLOBJS = -INTL_LIBTOOL_SUFFIX_PREFIX = -LIBICONV = -MAKEINFO = makeinfo -MKINSTALLDIRS = ./mkinstalldirs -MSGFMT = /usr/bin/msgfmt -PACKAGE = gsat -POFILES = -POSUB = po -RANLIB = ranlib -USE_INCLUDED_LIBINTL = no -USE_NLS = yes -VERSION = 0.1 - -INCLUDES = -I$(top_srcdir)/intl -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include - - -bin_PROGRAMS = gsat - -gsat_SOURCES = main.c support.c support.h interface.c interface.h callbacks.c callbacks.h comms.c comms.h plugins.c plugins.h db.c db.h prefs.c prefs.h - - -gsat_LDADD = -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm $(INTLLIBS) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -PROGRAMS = $(bin_PROGRAMS) - - -DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I.. -CPPFLAGS = -LDFLAGS = -LIBS = -gsat_OBJECTS = main.o support.o interface.o callbacks.o comms.o \ -plugins.o db.o prefs.o -gsat_DEPENDENCIES = -gsat_LDFLAGS = -CFLAGS = -g -O2 -Wall -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -DEP_FILES = .deps/callbacks.P .deps/comms.P .deps/db.P \ -.deps/interface.P .deps/main.P .deps/plugins.P .deps/prefs.P \ -.deps/support.P -SOURCES = $(gsat_SOURCES) -OBJECTS = $(gsat_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .o .s -$(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 $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -mostlyclean-binPROGRAMS: - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -distclean-binPROGRAMS: - -maintainer-clean-binPROGRAMS: - -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - list='$(bin_PROGRAMS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - done - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -gsat: $(gsat_OBJECTS) $(gsat_DEPENDENCIES) - @rm -f gsat - $(LINK) $(gsat_LDFLAGS) $(gsat_OBJECTS) $(gsat_LDADD) $(LIBS) - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = src - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - -DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) - --include $(DEP_FILES) - -mostlyclean-depend: - -clean-depend: - -distclean-depend: - -rm -rf .deps - -maintainer-clean-depend: - -%.o: %.c - @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp - -%.lo: %.c - @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: all-am -check: check-am -installcheck-am: -installcheck: installcheck-am -install-exec-am: install-binPROGRAMS -install-exec: install-exec-am - -install-data-am: -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: uninstall-binPROGRAMS -uninstall: uninstall-am -all-am: Makefile $(PROGRAMS) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - $(mkinstalldirs) $(DESTDIR)$(bindir) - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ - mostlyclean-tags mostlyclean-depend mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-binPROGRAMS clean-compile clean-tags clean-depend \ - clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ - distclean-depend distclean-generic clean-am - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-binPROGRAMS \ - maintainer-clean-compile maintainer-clean-tags \ - maintainer-clean-depend maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ -maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir mostlyclean-depend \ -distclean-depend clean-depend maintainer-clean-depend info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ -install-exec install-data-am install-data install-am install \ -uninstall-am uninstall all-redirect all-am all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -# 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/clients/gsat-1.1.0/src/Makefile.am b/clients/gsat-1.1.0/src/Makefile.am deleted file mode 100644 index e46cbcf..0000000 --- a/clients/gsat-1.1.0/src/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -## Process this file with automake to produce Makefile.in - -INCLUDES = \ - -I$(top_srcdir)/intl \ - @GTK_CFLAGS@ - -bin_PROGRAMS = gsat - -gsat_SOURCES = \ - main.c \ - support.c support.h \ - interface.c interface.h \ - callbacks.c callbacks.h \ - comms.c comms.h \ - plugins.c plugins.h \ - db.c db.h \ - prefs.c prefs.h - -gsat_LDADD = @GTK_LIBS@ $(INTLLIBS) - diff --git a/clients/gsat-1.1.0/src/Makefile.in b/clients/gsat-1.1.0/src/Makefile.in deleted file mode 100644 index 0e5ac75..0000000 --- a/clients/gsat-1.1.0/src/Makefile.in +++ /dev/null @@ -1,343 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 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. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -DATADIRNAME = @DATADIRNAME@ -GENCAT = @GENCAT@ -GLIBC21 = @GLIBC21@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -INSTOBJEXT = @INSTOBJEXT@ -INTLBISON = @INTLBISON@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -LIBICONV = @LIBICONV@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ - -INCLUDES = -I$(top_srcdir)/intl @GTK_CFLAGS@ - - -bin_PROGRAMS = gsat - -gsat_SOURCES = main.c support.c support.h interface.c interface.h callbacks.c callbacks.h comms.c comms.h plugins.c plugins.h db.c db.h prefs.c prefs.h - - -gsat_LDADD = @GTK_LIBS@ $(INTLLIBS) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -PROGRAMS = $(bin_PROGRAMS) - - -DEFS = @DEFS@ -I. -I$(srcdir) -I.. -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -gsat_OBJECTS = main.o support.o interface.o callbacks.o comms.o \ -plugins.o db.o prefs.o -gsat_DEPENDENCIES = -gsat_LDFLAGS = -CFLAGS = @CFLAGS@ -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -DEP_FILES = .deps/callbacks.P .deps/comms.P .deps/db.P \ -.deps/interface.P .deps/main.P .deps/plugins.P .deps/prefs.P \ -.deps/support.P -SOURCES = $(gsat_SOURCES) -OBJECTS = $(gsat_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .o .s -$(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 $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -mostlyclean-binPROGRAMS: - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -distclean-binPROGRAMS: - -maintainer-clean-binPROGRAMS: - -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(bindir) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - if test -f $$p; then \ - echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - list='$(bin_PROGRAMS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ - done - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -gsat: $(gsat_OBJECTS) $(gsat_DEPENDENCIES) - @rm -f gsat - $(LINK) $(gsat_LDFLAGS) $(gsat_OBJECTS) $(gsat_LDADD) $(LIBS) - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = src - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - -DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) - --include $(DEP_FILES) - -mostlyclean-depend: - -clean-depend: - -distclean-depend: - -rm -rf .deps - -maintainer-clean-depend: - -%.o: %.c - @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp - -%.lo: %.c - @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: all-am -check: check-am -installcheck-am: -installcheck: installcheck-am -install-exec-am: install-binPROGRAMS -install-exec: install-exec-am - -install-data-am: -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: uninstall-binPROGRAMS -uninstall: uninstall-am -all-am: Makefile $(PROGRAMS) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - $(mkinstalldirs) $(DESTDIR)$(bindir) - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ - mostlyclean-tags mostlyclean-depend mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-binPROGRAMS clean-compile clean-tags clean-depend \ - clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ - distclean-depend distclean-generic clean-am - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-binPROGRAMS \ - maintainer-clean-compile maintainer-clean-tags \ - maintainer-clean-depend maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ -maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir mostlyclean-depend \ -distclean-depend clean-depend maintainer-clean-depend info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ -install-exec install-data-am install-data install-am install \ -uninstall-am uninstall all-redirect all-am all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -# 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/clients/gsat-1.1.0/src/callbacks.c b/clients/gsat-1.1.0/src/callbacks.c deleted file mode 100644 index ad394b8..0000000 --- a/clients/gsat-1.1.0/src/callbacks.c +++ /dev/null @@ -1,1071 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "callbacks.h" -#include "interface.h" -#include "support.h" -#include "db.h" - -#include "globals.h" - -void error_dialog(gchar *message); -void show_status( const gchar *statusmsg ); -int get_response(int sock, char *buf); -int connect_server( void ); -void disconnect_server( void ); -int open_downlink_plugin( char * plugin ); -int open_uplink_plugin( char * plugin ); -int open_beacon_plugin( char * plugin ); -void search_radio_plugins( void ); -int open_rotor_plugin( char * plugin ); -void search_rotor_plugins( void ); -void save_preferences( void ); -void lookup_sat_db( void ); -void save_sat_db( void ); - -gboolean -mainwindow_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - gtk_main_quit(); - - return FALSE; -} - - -gboolean -maparea_expose_event (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data) -{ - /* Copy internal buffer to screen area */ - gdk_draw_pixmap(widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE (widget)], - drawmap, - event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width, event->area.height); - - return FALSE; -} - -void -combo_tx_satname_changed (GtkEditable *editable, - gpointer user_data) -{ - int i; - GtkWidget *widget; - GdkRectangle updatewin; - - /* copy original map to draw map */ - if( drawmap ) - gdk_draw_pixmap(drawmap,yellow_gc,sourcemap,0,0,0,0,MAPSIZEX,MAPSIZEY); - - /* Reset dots array */ - for( i=0; iallocation.width; - updatewin.height = widget->allocation.height; - gtk_widget_draw ( widget, &updatewin); - } - - /* Reset dots array */ - for( i=0; idata,plugin, 29 )==0) { - listidx=i; - break; - } - list=g_list_next( list ); - } - if( listidx > 0 ) { - strcpy( filename, pluginsdir ); - strcat( filename, pluginfiles[ listidx ] ); - open_downlink_plugin( filename ); - } - strncpy( prefs_down_plugin, pluginfiles[ listidx ], 255 ); - strncpy( prefs_down_plugin_config, downpluginconfig, 255 ); - - /* Setup uplink plugin */ - widget = lookup_widget( dialog_preferences, "entry_upplugin" ); - plugin=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_preferences, "tx_uppluginconfig" ); - uppluginconfig=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - - list=g_list_first( pluginlist ); - listidx=0; - for( i=0; idata,plugin, 29 )==0) { - listidx=i; - break; - } - list=g_list_next( list ); - } - if( listidx > 0 ) { - strcpy( filename, pluginsdir ); - strcat( filename, pluginfiles[ listidx ] ); - open_uplink_plugin( filename ); - } - strncpy( prefs_up_plugin, pluginfiles[ listidx ], 255 ); - strncpy( prefs_up_plugin_config, uppluginconfig, 255 ); - - /* Setup beacon plugin */ - widget = lookup_widget( dialog_preferences, "entry_beaconplugin" ); - plugin=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_preferences, "tx_beaconpluginconfig" ); - beaconpluginconfig=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - - list=g_list_first( pluginlist ); - listidx=0; - for( i=0; idata,plugin, 29 )==0) { - listidx=i; - break; - } - list=g_list_next( list ); - } - if( listidx > 0 ) { - strcpy( filename, pluginsdir ); - strcat( filename, pluginfiles[ listidx ] ); - open_beacon_plugin( filename ); - } - strncpy( prefs_beacon_plugin, pluginfiles[ listidx ], 255 ); - strncpy( prefs_beacon_plugin_config, beaconpluginconfig, 255 ); - - /* Setup rotor plugin */ - widget = lookup_widget( dialog_preferences, "entry_rotorplugin" ); - plugin=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_preferences, "tx_rotorpluginconfig" ); - rotorpluginconfig=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - - list=g_list_first( rotorpluginlist ); - listidx=0; - for( i=0; idata,plugin, 29 )==0) { - listidx=i; - break; - } - list=g_list_next( list ); - } - if( listidx > 0 ) { - strcpy( filename, pluginsdir ); - strcat( filename, rotorpluginfiles[ listidx ] ); - open_rotor_plugin( filename ); - } - strncpy( prefs_rotor_plugin, rotorpluginfiles[ listidx ], 255 ); - strncpy( prefs_rotor_plugin_config, rotorpluginconfig, 255 ); - - /* Setup program options */ - widget = lookup_widget( dialog_preferences, "rd_prefs_gridon" ); - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) == TRUE ) { - state=TRUE; - prefs_grid[0]='1'; - } - else { - state=FALSE; - prefs_grid[0]='0'; - } - widget=lookup_widget( mainwindow, "tb_grid" ); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), state ); - - widget = lookup_widget( dialog_preferences, "rd_prefs_utc" ); - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) == TRUE ) { - state=TRUE; - prefs_utctime[0]='1'; - } - else { - state=FALSE; - prefs_utctime[0]='0'; - } - widget=lookup_widget( mainwindow, "tb_utctime" ); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), state ); - - widget = lookup_widget( dialog_preferences, "rd_prefs_fpsaton" ); - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) == TRUE ) { - state=TRUE; - prefs_satfootprint[0]='1'; - } - else { - state=FALSE; - prefs_satfootprint[0]='0'; - } - widget=lookup_widget( mainwindow, "tb_footpsat" ); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), state ); - - widget = lookup_widget( dialog_preferences, "rd_prefs_fpqthon" ); - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) == TRUE ) { - state=TRUE; - prefs_qthfootprint[0]='1'; - } - else { - state=FALSE; - prefs_qthfootprint[0]='0'; - } - widget=lookup_widget( mainwindow, "tb_footpqth" ); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), state ); - - widget = lookup_widget( dialog_preferences, "rd_prefs_trackon" ); - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) == TRUE ) { - state=TRUE; - prefs_track[0]='1'; - } - else { - state=FALSE; - prefs_track[0]='0'; - } - widget=lookup_widget( mainwindow, "tb_track" ); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), state ); - - widget = lookup_widget( dialog_preferences, "rd_prefs_autofreqon" ); - if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) == TRUE ) { - state=TRUE; - prefs_autofreq[0]='1'; - if(connected==TRUE) - lookup_sat_db(); - } - else { - state=FALSE; - prefs_autofreq[0]='0'; - } - widget=lookup_widget( mainwindow, "tb_autofreq" ); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widget ), state ); - - /* Setup AOS and LOS commands */ - widget = lookup_widget( dialog_preferences, "tx_aoscommand" ); - dummy=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - strncpy( prefs_aos_command, dummy, 1024 ); - widget = lookup_widget( dialog_preferences, "tx_loscommand" ); - dummy=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - strncpy( prefs_los_command, dummy, 1024 ); -} - -void -on_bt_prefs_save_clicked (GtkButton *button, - gpointer user_data) -{ - on_bt_prefs_apply_clicked( button, NULL ); - - save_preferences(); -} - -void -on_bt_prefs_cancel_clicked (GtkButton *button, - gpointer user_data) -{ - gtk_widget_set_sensitive( GTK_WIDGET( mainwindow ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( dialog_preferences ), FALSE ); - gtk_widget_hide( GTK_WIDGET( dialog_preferences ) ); -} - - -void -on_bt_con_connect_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget * widget; - - gtk_widget_set_sensitive( GTK_WIDGET( mainwindow ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( dialog_connect ), FALSE ); - gtk_widget_hide( GTK_WIDGET( dialog_connect ) ); - - widget = lookup_widget( dialog_connect, "tx_con_server" ); - predicthost=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_connect, "tx_con_port" ); - predictport=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - - /* Setup status bar */ - sprintf(statusmsg,"Connecting to predict server %s ...", predicthost); - show_status(statusmsg); - - if(connect_server()==0) { - /* if connected, disable connect button enable disconnect button */ - widget=lookup_widget( mainwindow, "cb_connect" ); - gtk_widget_set_sensitive( widget, FALSE ); - widget=lookup_widget( mainwindow, "cb_disconnect" ); - gtk_widget_set_sensitive( widget, TRUE ); - widget=lookup_widget( mainwindow, "tb_footpsat" ); - gtk_widget_set_sensitive( widget, TRUE ); - widget=lookup_widget( mainwindow, "tb_footpqth" ); - gtk_widget_set_sensitive( widget, TRUE ); - widget=lookup_widget( mainwindow, "tb_track" ); - gtk_widget_set_sensitive( widget, TRUE ); - widget=lookup_widget( mainwindow, "tb_autofreq" ); - gtk_widget_set_sensitive( widget, TRUE ); - widget=lookup_widget( mainwindow, "bt_azelgraph" ); - gtk_widget_set_sensitive( widget, TRUE ); - - connected=TRUE; - } - else { - show_status("Error connecting to predict server."); - connected=FALSE; - } -} - - -void -on_bt_con_cancel_clicked (GtkButton *button, - gpointer user_data) -{ - gtk_widget_set_sensitive( GTK_WIDGET( mainwindow ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( dialog_connect ), FALSE ); - gtk_widget_hide( GTK_WIDGET( dialog_connect ) ); -} - - -gboolean -on_dialog_preferences_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - gtk_widget_set_sensitive( GTK_WIDGET( mainwindow ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( dialog_preferences ), FALSE ); - gtk_widget_hide( GTK_WIDGET( dialog_preferences ) ); - - return TRUE; -} - - -gboolean -on_dialog_connect_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - - gtk_widget_set_sensitive( GTK_WIDGET( mainwindow ), TRUE ); - gtk_widget_set_sensitive( GTK_WIDGET( dialog_connect ), FALSE ); - gtk_widget_hide( GTK_WIDGET( dialog_connect ) ); - - return TRUE; -} - - -void -on_tb_footpsat_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) - satfootprint=TRUE; - else - satfootprint=FALSE; -} - - -void -on_tb_footpqth_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) - qthfootprint=TRUE; - else - qthfootprint=FALSE; -} - - -void -on_tb_track_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) - drawtrack=TRUE; - else - drawtrack=FALSE; -} - - -void -on_cb_updoppler_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) { - if( uppluginenable==TRUE ) { - if( (*plugin_open_rig_uplink)( uppluginconfig )==TRUE ) - enableupdoppler=TRUE; - else - error_dialog("Error opening uplink plugin"); - } - } - else { - if( uppluginenable==TRUE ) { - (*plugin_close_rig_uplink)(); - enableupdoppler=FALSE; - } - } -} - - -void -on_cb_dwdoppler_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) { - if( downpluginenable==TRUE ) { - if( (*plugin_open_rig_downlink)( downpluginconfig )==TRUE ) - enabledowndoppler=TRUE; - else - error_dialog("Error opening downlink plugin"); - } - } - else { - if( downpluginenable==TRUE ) { - (*plugin_close_rig_downlink)(); - enabledowndoppler=FALSE; - } - } -} - - -void -on_cb_beacondoppler_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) { - if( beaconpluginenable==TRUE ) { - if( (*plugin_open_rig_beacon)( beaconpluginconfig )==TRUE ) - enablebeacondoppler=TRUE; - else - error_dialog("Error opening beacon plugin"); - } - } - else { - if( beaconpluginenable==TRUE ) { - (*plugin_close_rig_beacon)(); - enablebeacondoppler=FALSE; - } - } -} - - -gboolean -on_dialog_azel_graph_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - GtkWidget *mywidget; - - - gtk_widget_hide( GTK_WIDGET( dialog_azel_graph ) ); - mywidget=lookup_widget( mainwindow, "bt_azelgraph" ); - gtk_widget_set_sensitive( mywidget, TRUE ); - azelgraph=FALSE; - - return TRUE; -} - - -gboolean -on_azelgraph_expose_event (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data) -{ - /* Copy internal buffer to screen area */ - gdk_draw_pixmap(widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE (widget)], - drawazel, - event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width, event->area.height); - - return FALSE; -} - -void -on_tb_autofreq_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) { - autofreq=TRUE; - if(connected==TRUE) - lookup_sat_db(); - } - else - autofreq=FALSE; -} - - -void -on_bt_azelgraph_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget *widget; - - gtk_widget_show(dialog_azel_graph); - widget=lookup_widget( mainwindow, "bt_azelgraph" ); - gtk_widget_set_sensitive( widget, FALSE ); - azelgraph=TRUE; -} - -void -on_bt_dbedit_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget *widget; - char filename[256], inbuf[50], *bp, *row[5]; - FILE * fd; - - widget=lookup_widget( dialog_dbedit, "clist_satdb" ); - gtk_clist_clear(GTK_CLIST(widget)); - gtk_clist_set_sort_type(GTK_CLIST(widget),GTK_SORT_ASCENDING); - gtk_clist_set_auto_sort(GTK_CLIST(widget),TRUE); - - strncpy(filename,getenv("HOME"),256); - strcat(filename,"/.gsat.db"); - - if((fd=fopen( filename, "r" ))==NULL) { - /* If db file doesn't exist in HOME, copy it from global sat db */ - copy_sat_db(filename); - if((fd=fopen( filename, "r" ))==NULL) { - error_dialog("ERROR: Can't open satellite database file"); - return; - } - } - - while(fgets(inbuf, 50, fd)) { - bp=inbuf; - row[0]=strsep(&bp,":\n"); - row[1]=strsep(&bp,":\n"); - row[2]=strsep(&bp,":\n"); - row[3]=strsep(&bp,":\n"); - row[4]=strsep(&bp,":\n"); - gtk_clist_append(GTK_CLIST(widget), row); - } - fclose( fd ); - - gtk_widget_show(dialog_dbedit); - widget=lookup_widget( mainwindow, "bt_dbedit" ); - gtk_widget_set_sensitive( widget, FALSE ); -} - -void -on_cb_rotor_toggled (GtkToggleButton *togglebutton, - gpointer user_data) -{ - if( gtk_toggle_button_get_active( togglebutton ) ) { - if( rotorpluginenable==TRUE ) { - if( (*plugin_open_rotor)( rotorpluginconfig )==TRUE ) - enablerotor=TRUE; - else - error_dialog("Error opening rotor plugin"); - } - } - else { - if( rotorpluginenable==TRUE ) { - (*plugin_close_rotor)(); - enablerotor=FALSE; - } - } -} - -void -on_clist_satdb_select_row (GtkCList *clist, - gint row, - gint column, - GdkEvent *event, - gpointer user_data) -{ - GtkWidget *widget; - char *sat, *mode, *uplink, *downlink, *beacon; - - selectedrow = row; - - gtk_clist_get_text(clist, row, 0, &sat); - gtk_clist_get_text(clist, row, 1, &mode); - gtk_clist_get_text(clist, row, 2, &uplink); - gtk_clist_get_text(clist, row, 3, &downlink); - gtk_clist_get_text(clist, row, 4, &beacon); - widget = lookup_widget( dialog_dbedit, "tx_dbsat" ); - gtk_entry_set_text(GTK_ENTRY(widget), sat); - widget = lookup_widget( dialog_dbedit, "tx_dbmode" ); - gtk_entry_set_text(GTK_ENTRY(widget), mode); - widget = lookup_widget( dialog_dbedit, "tx_dbuplink" ); - gtk_entry_set_text(GTK_ENTRY(widget), uplink); - widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" ); - gtk_entry_set_text(GTK_ENTRY(widget), downlink); - widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" ); - gtk_entry_set_text(GTK_ENTRY(widget), beacon); -} - - -void -on_bt_dbadd_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget *widget; - char *row[5]; - - widget = lookup_widget( dialog_dbedit, "tx_dbsat" ); - row[0]=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - - if(strlen(row[0])==0) - return; - - widget = lookup_widget( dialog_dbedit, "tx_dbmode" ); - row[1]=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_dbedit, "tx_dbuplink" ); - row[2]=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" ); - row[3]=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" ); - row[4]=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - - widget=lookup_widget( dialog_dbedit, "clist_satdb" ); - gtk_clist_append(GTK_CLIST(widget), row); - - widget = lookup_widget( dialog_dbedit, "tx_dbsat" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbmode" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbuplink" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - - save_sat_db(); -} - - -void -on_bt_dbupdate_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget *widget; - char *sat, *mode, *uplink, *downlink, *beacon; - - if(selectedrow < 0) - return; - - widget = lookup_widget( dialog_dbedit, "tx_dbsat" ); - sat=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_dbedit, "tx_dbmode" ); - mode=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_dbedit, "tx_dbuplink" ); - uplink=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" ); - downlink=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" ); - beacon=(char *)gtk_entry_get_text(GTK_ENTRY(widget)); - - widget=lookup_widget( dialog_dbedit, "clist_satdb" ); - gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 0, sat); - gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 1, mode); - gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 2, uplink); - gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 3, downlink); - gtk_clist_set_text(GTK_CLIST(widget), selectedrow, 4, beacon); - gtk_clist_unselect_row(GTK_CLIST(widget), selectedrow, 0); - - selectedrow=-1; - - widget = lookup_widget( dialog_dbedit, "tx_dbsat" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbmode" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbuplink" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - - save_sat_db(); -} - - -void -on_bt_dbdelete_clicked (GtkButton *button, - gpointer user_data) -{ - GtkWidget *widget; - - if(selectedrow < 0) - return; - - widget=lookup_widget( dialog_dbedit, "clist_satdb" ); - gtk_clist_remove(GTK_CLIST(widget), selectedrow); - - widget = lookup_widget( dialog_dbedit, "tx_dbsat" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbmode" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbuplink" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbdownlink" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - widget = lookup_widget( dialog_dbedit, "tx_dbbeacon" ); - gtk_entry_set_text(GTK_ENTRY(widget), ""); - - save_sat_db(); -} - -gboolean -on_dialog_dbedit_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - GtkWidget *mywidget; - - - gtk_widget_hide( GTK_WIDGET( dialog_dbedit ) ); - mywidget=lookup_widget( mainwindow, "bt_dbedit" ); - gtk_widget_set_sensitive( mywidget, TRUE ); - - return TRUE; -} - -void -on_bt_about_clicked (GtkButton *button, - gpointer user_data) -{ - gtk_widget_show( GTK_WIDGET(dialog_about) ); -} - -int -compare_mode(const gpointer *mode1, const gpointer *mode2 ) -{ - return( strcmp( (char *)mode1, (char *)mode2 )); -} - -void -combo_tx_mode_changed (GtkEditable *editable, - gpointer user_data) -{ - GtkWidget *widget; - char *mode, *upfreq, *dwfreq, *bcnfreq; - GList *lmode; - gint n; - - widget = lookup_widget( mainwindow, "combo_mode" ); - mode = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(widget)->entry)); - - modelist=g_list_first( modelist ); - lmode = g_list_find_custom( modelist, mode, (GCompareFunc)&compare_mode ); - n=g_list_position( modelist, lmode ); - if( n > -1 ) { - upfreq=g_list_nth_data( uplinklist, n ); - dwfreq=g_list_nth_data( downlinklist, n ); - bcnfreq=g_list_nth_data( beaconlist, n ); - widget = lookup_widget( mainwindow, "tx_uplink" ); - gtk_entry_set_text(GTK_ENTRY(widget),upfreq); - widget = lookup_widget( mainwindow, "tx_downlink" ); - gtk_entry_set_text(GTK_ENTRY(widget),dwfreq); - widget = lookup_widget( mainwindow, "tx_beacon" ); - gtk_entry_set_text(GTK_ENTRY(widget),bcnfreq); - } - else { - widget = lookup_widget( mainwindow, "tx_uplink" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - widget = lookup_widget( mainwindow, "tx_downlink" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - widget = lookup_widget( mainwindow, "tx_beacon" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - } -} - - -gboolean -on_dialog_about_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - gtk_widget_hide( GTK_WIDGET(dialog_about) ); - - return TRUE; -} - - -void -on_bt_about_ok_clicked (GtkButton *button, - gpointer user_data) -{ - gtk_widget_hide( GTK_WIDGET(dialog_about) ); -} - - - - - - diff --git a/clients/gsat-1.1.0/src/callbacks.h b/clients/gsat-1.1.0/src/callbacks.h deleted file mode 100644 index 41d694c..0000000 --- a/clients/gsat-1.1.0/src/callbacks.h +++ /dev/null @@ -1,166 +0,0 @@ -#include - - -gboolean -mainwindow_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - -gboolean -maparea_configure_event (GtkWidget *widget, - GdkEventConfigure *event, - gpointer user_data); - -gboolean -maparea_expose_event (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data); - -void -combo_entry1_changed (GtkEditable *editable, - gpointer user_data); - -void -on_cb_connect_clicked (GtkButton *button, - gpointer user_data); - -void -on_cb_disconnect_clicked (GtkButton *button, - gpointer user_data); - -void -on_tb_grid_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_tb_utctime_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_bt_preferences_clicked (GtkButton *button, - gpointer user_data); - -void -on_bt_prefs_apply_clicked (GtkButton *button, - gpointer user_data); - -void -on_bt_prefs_cancel_clicked (GtkButton *button, - gpointer user_data); - -void -on_bt_con_connect_clicked (GtkButton *button, - gpointer user_data); - -void -on_bt_con_cancel_clicked (GtkButton *button, - gpointer user_data); - -gboolean -on_dialog_preferences_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - -gboolean -on_dialog_connect_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - -void -on_tb_footpsat_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_tb_footpqth_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_tb_track_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_cb_updoppler_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_cb_dwdoppler_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_bt_prefs_save_clicked (GtkButton *button, - gpointer user_data); - -gboolean -on_dialog_azel_graph_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - -gboolean -on_azelgraph_expose_event (GtkWidget *widget, - GdkEventExpose *event, - gpointer user_data); - -void -on_tb_autofreq_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_bt_azelgraph_clicked (GtkButton *button, - gpointer user_data); - -void -on_bt_dbedit_clicked (GtkButton *button, - gpointer user_data); - -void -on_cb_beacondoppler_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_cb_rotor_toggled (GtkToggleButton *togglebutton, - gpointer user_data); - -void -on_clist_satdb_select_row (GtkCList *clist, - gint row, - gint column, - GdkEvent *event, - gpointer user_data); - -void -on_bt_dbadd_clicked (GtkButton *button, - gpointer user_data); - -void -on_bt_dbupdate_clicked (GtkButton *button, - gpointer user_data); - -void -on_bt_dbdelete_clicked (GtkButton *button, - gpointer user_data); - -gboolean -on_dialog_dbedit_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - -void -on_bt_about_clicked (GtkButton *button, - gpointer user_data); - -void -combo_tx_satname_changed (GtkEditable *editable, - gpointer user_data); - -void -combo_tx_mode_changed (GtkEditable *editable, - gpointer user_data); - -gboolean -on_dialog_about_delete_event (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - -void -on_bt_about_ok_clicked (GtkButton *button, - gpointer user_data); diff --git a/clients/gsat-1.1.0/src/comms.c b/clients/gsat-1.1.0/src/comms.c deleted file mode 100644 index f8b311a..0000000 --- a/clients/gsat-1.1.0/src/comms.c +++ /dev/null @@ -1,1175 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -/* Main processing loop and network functions */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "support.h" -#include "comms.h" - -#include "globals.h" - -#ifndef PI -#define PI 3.141592653589793 -#endif - -void on_cb_disconnect_clicked(void); - -double arccos(x,y) -double x, y; -{ - /* This function implements the arccosine function, - returning a value between 0 and two pi. */ - - double result=0.0, fraction; - - fraction=x/y; - - if ((x>0.0) && (y>0.0)) - result=acos(fraction); - - if ((x<0.0) && (y>0.0)) - result=acos(fraction); - - if ((x<0.0) && (y<0.0)) - result=PI+acos(fraction); - - if ((x>0.0) && (y<0.0)) - result=PI+acos(fraction); - - return result; -} - -/* Function to open a dialog box displaying error messages. */ - -void error_dialog(gchar *message) -{ - - GtkWidget *dialog, *frame, *box, *vbox1, *vbox2, *vbox3, *label, *okay_button; - - /* Create the widgets */ - - dialog = gtk_dialog_new(); - frame = gtk_frame_new(NULL); - box = gtk_vbox_new( TRUE, 2 ); - vbox1 = gtk_vbox_new( FALSE, 2 ); - vbox2 = gtk_vbox_new( TRUE, 2 ); - vbox3 = gtk_vbox_new( FALSE, 2 ); - label = gtk_label_new (message); - okay_button = gtk_button_new_with_label("Okay"); - - /* Ensure that the dialog box is destroyed when the user clicks ok. */ - - gtk_signal_connect_object (GTK_OBJECT (okay_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT(dialog)); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), - okay_button); - - /* Add the label, and show everything we've added to the dialog. */ - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), frame); - gtk_container_add (GTK_CONTAINER (frame), box); - gtk_container_set_border_width (GTK_CONTAINER (frame), 4); - gtk_box_pack_start (GTK_BOX(box), vbox1, FALSE, FALSE, 2); - gtk_box_pack_start (GTK_BOX(box), vbox2, TRUE, TRUE, 2); - gtk_box_pack_start (GTK_BOX(box), vbox3, FALSE, FALSE, 2); - gtk_container_add (GTK_CONTAINER (vbox2), label); - gtk_window_set_title( GTK_WINDOW(dialog),"gsat - ERROR"); - gtk_widget_show_all (dialog); -} - -void show_status( const gchar * statusmsg ) -{ - GtkWidget *widget; - gint ctxid; - - widget = lookup_widget( mainwindow, "statusbar" ); - ctxid = gtk_statusbar_get_context_id(GTK_STATUSBAR(widget),"Status"); - gtk_statusbar_pop(GTK_STATUSBAR(widget),ctxid); - gtk_statusbar_push(GTK_STATUSBAR(widget),ctxid,statusmsg); -} - -/* Establish network conection */ - -int connectsock(char *host, char *service, char *protocol) -{ - /* This function is used to connect to the server. "host" is the - name host is the name of the computer the server program resides - on. "service" is the name of the socket port. "protocol" is the - socket protocol. It should be set to UDP. */ - - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - bzero((char *)&sin,sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=pse->s_port; - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) { - fprintf(stderr,"WARNING: Can't get predict services. Check /etc/services. Trying with default port.\n"); - sin.sin_port=htons(1210); - } - - if ((phe=gethostbyname(host))) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE) { - fprintf(stderr,"ERROR: Can't get host address.\n"); - error_dialog("ERROR: Can't get host address.\n"); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) { - fprintf(stderr,"ERROR: Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) { - fprintf(stderr,"ERROR: Can't connect to socket.\n"); - return -1; - } - - return s; -} - -/* Send the command to the server */ - -int send_command(int sock, char *command) -{ - int len; - - len=write(sock,command,strlen(command)); - - return len; -} - -/* Read from network socket */ - -int read_socket(int sock, char *buf) -{ - int n; - struct timeval tv; - fd_set rfds; - time_t now; - - FD_ZERO( &rfds ); - FD_SET( sock, &rfds ); - tv.tv_sec=NETTIMEOUT; - tv.tv_usec=0; - - if( select(sock+1,&rfds,NULL,NULL,&tv)) - n=read(sock,buf,NETBUFSIZE); -/* n=recvfrom(sock,buf,strlen(buf),0,NULL,NULL); */ - else { - now=time(NULL); - fprintf(stderr,"Timeout reading from socket.\n"); - return -1; - } - - buf[n]='\0'; - - return n; -} - -/* Get response to command from server */ - -int get_response(int sock, char *buf) -{ - int len; - int timeouts; - - len=0; - timeouts=0; - while(timeouts180.0) { - slong = slong - 180.0; - sx = (int)(MAPSIZEX - (slong * MAPSIZEX / 360.0)); - } - else { - sx = (int)((MAPSIZEX/2.0) - (slong * MAPSIZEX / 360.0)); - } - sy = (int)((MAPSIZEY/2.0) - (slat * MAPSIZEY / 180.0)); - - /* do not draw repeated dots in the orbit */ - if( dots[cnt-1].x!=sx || dots[cnt-1].y!=sy ) { - dots[cnt].x=sx; - dots[cnt].y=sy; - cnt++; - } - } - - fprintf(stderr,"Count: %d\n",cnt); - ndots=cnt; -} - - -/* Main processing loop */ - -gint -timeout_callback( gpointer data ) -{ - int i, j, azi, ctxid; - char buf[NETBUFSIZE], buf2[NETBUFSIZE], buf3[NETBUFSIZE], - satname[26], *sat, callsign[16], param[30], *dopplerptr; - long aostime,orbitnumber; - float az, el, slong, slat, footprint, range, doppler, altitude, - velocity, qthlat, qthlong, qthalt, phase, eclipse, squint; - time_t t, now; - GtkWidget *widget; - double uplink, downlink, beacon, updoppler, downdoppler, beacondoppler, - dopplershiftup, dopplershiftdown, dopplershiftbeacon, - rangelat, rangelong, azimuth, ssplat, - ssplong, TWOPI, HALFPI, deg2rad=1.74532925199e-02, - R0=6378.16, beta, num, dem; - GdkRectangle updatewin; - gint sx, sy; - GdkPoint footprintdots[360], qthfootprintdots[360]; - char visible; - static int flash, azflash; - - TWOPI=2.0*PI; - HALFPI=PI/2.0; - - /* Show date and time */ - now = time(NULL); - if( timeUTC ) - sprintf(param,"%s",asctime(gmtime(&now))); - else - sprintf(param,"%s",asctime(localtime(&now))); - param[strlen(param)-1]='\0'; - widget = lookup_widget( mainwindow, "tx_date" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - /* if we are not connected, don't do anything more */ - if( connected == FALSE ) - return TRUE; /* allow more timeouts to ocur */ - - /* Get Satellite name from combo entry */ - widget = lookup_widget( mainwindow, "combo" ); - sat = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(widget)->entry)); - strncpy( satname, sat, 25 ); - satname[ 26 ] = '\0'; - if( azelgraph==TRUE) { - widget = lookup_widget( dialog_azel_graph, "tx_azel_sat" ); - gtk_entry_set_text(GTK_ENTRY(widget),satname); - } - -/* if(doprediction==TRUE) { */ -/* get_orbitdata(satname); */ -/* doprediction=FALSE; */ -/* } */ - - /* Get satellite data */ - /* Build a command buffer */ - sprintf(buf,"GET_SAT %s\n",satname); - - /* Send the command to the server */ - send_command(netsocket,buf); - - /* Get the response */ - if(get_response(netsocket,buf)==-1) { - error_dialog("Too many errors receiving response from server, disconnecting"); - on_cb_disconnect_clicked(); - return TRUE; - } - - /* Get doppler data */ - /* Build a command buffer */ - sprintf(buf2,"GET_DOPPLER %s\n",satname); - - /* Send the command to the server */ - send_command(netsocket,buf2); - - /* Get the response */ - if(get_response(netsocket,buf2)==-1) { - error_dialog("Too many errors receiving response from server, disconnecting"); - on_cb_disconnect_clicked(); - return TRUE; - } - - /* Parse the satellite data */ - - /* The first element of the response is the satellite name. - It is ended with a '\n' character and may contain spaces. */ - - for (i=0; buf[i]!='\n'; i++) - satname[i]=buf[i]; - - satname[i]=0; - i++; - - /* The rest of the data can be parsed using the sscanf() - function. First, the satellite name is removed from - "buf", and then "buf" is parsed for numerical data - using an sscanf(). */ - - for (j=0; buf[i+j]!=0; j++) - buf[j]=buf[i+j]; - - buf[j]=0; - - sscanf(buf,"%f %f %f %f %ld %f %f %f %f %ld %c %f %f %f", - &slong, &slat, &az, &el, &aostime, &footprint, &range, - &altitude, &velocity, &orbitnumber, &visible, &phase, &eclipse, &squint); - - /* Get doppler shift */ - sscanf(buf2,"%f",&doppler ); - - /* Get qth data */ - /* Build a command buffer */ - sprintf(buf3,"GET_QTH\n"); - - /* Send the command to the server */ - send_command(netsocket,buf3); - - /* Get the response */ - if(get_response(netsocket,buf3)==-1) { - error_dialog("Too many errors receiving response from server, disconnecting"); - on_cb_disconnect_clicked(); - return TRUE; - } - - /* Parse the satellite data */ - - /* The first element of the response is the callsign. - It is ended with a '\n' character and may contain spaces. */ - - for (i=0; buf3[i]!='\n'; i++) - callsign[i]=buf3[i]; - - callsign[i]=0; - i++; - - /* The rest of the data can be parsed using the sscanf() - function. First, the callsign is removed from - "buf3", and then "buf3" is parsed for numerical data - using an sscanf(). */ - - for (j=0; buf3[i+j]!=0; j++) - buf3[j]=buf3[i+j]; - - buf3[j]=0; - - sscanf(buf3,"%f %f %f",&qthlat,&qthlong,&qthalt); - - /* Check if satellite has decayed */ - if(aostime==0 && altitude==0) { - clear_widgets(); - clear_map(); - plot_QTH(qthlat,qthlong,callsign); - widget = lookup_widget( data, "tx_aos" ); - gtk_entry_set_text(GTK_ENTRY(widget),"Never"); - widget = lookup_widget( data, "satbar" ); - ctxid = gtk_statusbar_get_context_id(GTK_STATUSBAR(widget),"Status"); - gtk_statusbar_pop(GTK_STATUSBAR(widget),ctxid); - gtk_statusbar_push(GTK_STATUSBAR(widget),ctxid, - "Satellite has decayed"); - return TRUE; - } - - /* Now display all the satellite data on the widgets */ - sprintf(param,"%7.2f %c",(slong>180?360.0-slong:slong),(slong>180?'E':'W')); - widget = lookup_widget( data, "tx_longitude" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - sprintf(param,"%7.2f %c",fabs((double)slat),(slat<0?'S':'N')); - widget = lookup_widget( data, "tx_latitude" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - sprintf(param,"%7.2f deg",az); - widget = lookup_widget( data, "tx_azimuth" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - if( azelgraph==TRUE) { - sprintf(param,"%7.2f",az); - widget = lookup_widget( dialog_azel_graph, "tx_azel_azimuth" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - } - - sprintf(param,"%+-6.2f deg",el); - widget = lookup_widget( data, "tx_elevation" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - if( azelgraph==TRUE) { - sprintf(param,"%+-6.2f",el); - widget = lookup_widget( dialog_azel_graph, "tx_azel_elevation" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - } - - if(enablerotor==TRUE) - (*plugin_set_rotor)(az, el); - - sprintf(param,"%7.2f km",footprint); - widget = lookup_widget( data, "tx_footprint" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - sprintf(param,"%7.2f km",range); - widget = lookup_widget( data, "tx_range" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - sprintf(param,"%7.2f km",altitude); - widget = lookup_widget( data, "tx_altitude" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - if(strncmp(predictversion,"2.1",3)==0) - sprintf(param,"%7.2f km/h",velocity); - else - sprintf(param,"%7.2f km/s",velocity); - - widget = lookup_widget( data, "tx_velocity" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - sprintf(param,"%ld",orbitnumber); - widget = lookup_widget( data, "tx_orbit" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - sprintf(param,"%3.1f deg",phase); - widget = lookup_widget( data, "tx_ma" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - /* Check if we have a valid squint angle (360=no squint) */ - if(squint==360.0) { - sprintf(param,"N/A"); - } else { - sprintf(param,"%3.1f deg",squint); - } - widget = lookup_widget( data, "tx_squint" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - /* change label of AOS widget to AOS/LOS */ - widget = lookup_widget( data, "lb_aos" ); - if( el>=0 ) - gtk_label_set_text(GTK_LABEL(widget)," LOS at"); - else - gtk_label_set_text(GTK_LABEL(widget),"Next AOS"); - - t=(time_t)aostime; - if( timeUTC ) - sprintf(param,"%s",asctime(gmtime(&t))); - else - sprintf(param,"%s",asctime(localtime(&t))); - param[strlen(param)-1]='\0'; - widget = lookup_widget( data, "tx_aos" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - /* execute AOS and LOS commands */ - if( newsat==0 ) { - if( (lastel < 0 && el >= 0)||(lastel >=0 && el < 0) ) { - if( el >= 0 ) { - if(strlen(prefs_aos_command)>0) - system(prefs_aos_command); - } - else { - if(strlen(prefs_los_command)>0) - system(prefs_los_command); - } - } - } - newsat=0; - - /* Show doppler correction if elevation > 0 */ - widget = lookup_widget( data, "tx_uplink" ); - dopplerptr=(gchar *)gtk_entry_get_text(GTK_ENTRY(widget)); - uplink=atof(dopplerptr); - if(el >= 0 && uplink > 0.0) { - dopplershiftup=(-uplink)/100000.0*doppler; - sprintf(param,"%7.2f Hz",dopplershiftup); - widget = lookup_widget( data, "tx_upshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - updoppler=uplink+(dopplershiftup/1000.0); - sprintf(param,"%7.2f kHz",updoppler); - widget = lookup_widget( data, "tx_updoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - /* Set Uplink frequency on the radio */ - if( enableupdoppler==TRUE ) - (*plugin_set_uplink_frequency)(updoppler); - } - else { - widget = lookup_widget( data, "tx_upshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),"--------"); - widget = lookup_widget( data, "tx_updoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),"--------"); - } - - widget = lookup_widget( data, "tx_downlink" ); - dopplerptr=(gchar *)gtk_entry_get_text(GTK_ENTRY(widget)); - downlink=atof(dopplerptr); - if(el >= 0 && downlink > 0.0) { - dopplershiftdown=downlink/100000.0*doppler; - sprintf(param,"%7.2f Hz",dopplershiftdown); - widget = lookup_widget( data, "tx_downshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - downdoppler=downlink+(dopplershiftdown/1000.0); - sprintf(param,"%7.2f kHz",downdoppler); - widget = lookup_widget( data, "tx_dwdoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - /* Set Downlink frequency on the radio */ - if( enabledowndoppler==TRUE ) - (*plugin_set_downlink_frequency)(downdoppler); - } - else { - widget = lookup_widget( data, "tx_downshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),"--------"); - widget = lookup_widget( data, "tx_dwdoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),"--------"); - } - - widget = lookup_widget( data, "tx_beacon" ); - dopplerptr=(gchar *)gtk_entry_get_text(GTK_ENTRY(widget)); - beacon=atof(dopplerptr); - if(el >= 0 && beacon > 0.0) { - dopplershiftbeacon=beacon/100000.0*doppler; - sprintf(param,"%7.2f Hz",dopplershiftbeacon); - widget = lookup_widget( data, "tx_beaconshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - beacondoppler=beacon+(dopplershiftbeacon/1000.0); - sprintf(param,"%7.2f kHz",beacondoppler); - widget = lookup_widget( data, "tx_beacondoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),param); - - /* Set Beacon frequency on the radio */ - if( enablebeacondoppler==TRUE ) - (*plugin_set_beacon_frequency)(beacondoppler); - } - else { - widget = lookup_widget( data, "tx_beaconshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),"--------"); - widget = lookup_widget( data, "tx_beacondoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),"--------"); - } - - /* Show satellite visibility in 2nd status bar */ - widget = lookup_widget( data, "satbar" ); - ctxid = gtk_statusbar_get_context_id(GTK_STATUSBAR(widget),"Status"); - switch( visible ) { - case 'D': - gtk_statusbar_pop(GTK_STATUSBAR(widget),ctxid); - gtk_statusbar_push(GTK_STATUSBAR(widget),ctxid, - "Satellite is in daylight"); - break; - case 'N': - gtk_statusbar_pop(GTK_STATUSBAR(widget),ctxid); - gtk_statusbar_push(GTK_STATUSBAR(widget),ctxid, - "Satellite is in darkness"); - break; - case 'V': - gtk_statusbar_pop(GTK_STATUSBAR(widget),ctxid); - gtk_statusbar_push(GTK_STATUSBAR(widget),ctxid, - "Satellite is visible"); - break; - default: - gtk_statusbar_pop(GTK_STATUSBAR(widget),ctxid); - gtk_statusbar_push(GTK_STATUSBAR(widget),ctxid, - "No visibility information available"); - } - - /* Graphical representation */ - - /* Range Circle Calculations by KD2BD */ - - if( satfootprint ) { - ssplat=slat*deg2rad; - ssplong=slong*deg2rad; - beta=(0.5*footprint)/R0; - - for (azi=0; azi<360; azi++) - { - azimuth=deg2rad*(double)azi; - rangelat=asin(sin(ssplat)*cos(beta)+cos(azimuth)*sin(beta)*cos(ssplat)); - num=cos(beta)-(sin(ssplat)*sin(rangelat)); - dem=cos(ssplat)*cos(rangelat); - - if (azi==0 && (beta > HALFPI-ssplat)) - rangelong=ssplong+PI; - - else if (azi==180 && (beta > HALFPI+ssplat)) - rangelong=ssplong+PI; - - else if (fabs(num/dem)>1.0) - rangelong=ssplong; - - else - { - if ((180-azi)>=0) - rangelong=ssplong-arccos(num,dem); - else - rangelong=ssplong+arccos(num,dem); - } - - while (rangelong<0.0) - rangelong+=TWOPI; - - while (rangelong>(2.0*PI)) - rangelong-=TWOPI; - - rangelat=rangelat/deg2rad; - rangelong=rangelong/deg2rad; - - /* Convert range circle data to map-based - coordinates and draw on map */ - - if (rangelong>180.0) - { - rangelong=rangelong-180.0; - sx=(int)(MAPSIZEX-(rangelong*MAPSIZEX/360.0)); - } - - else - sx=(int)((MAPSIZEX/2.0)-(rangelong*MAPSIZEX/360.0)); - - sy=(int)((MAPSIZEY/2.0)-(rangelat*MAPSIZEY/180.0)); - - /* store position for Plot Range Circle */ - footprintdots[azi].x=sx; - footprintdots[azi].y=sy; - } - } - - if( qthfootprint ) { - ssplat=qthlat*deg2rad; - ssplong=qthlong*deg2rad; - beta=(0.5*footprint)/R0; - - for (azi=0; azi<360; azi++) - { - azimuth=deg2rad*(double)azi; - rangelat=asin(sin(ssplat)*cos(beta)+cos(azimuth)*sin(beta)*cos(ssplat)); - num=cos(beta)-(sin(ssplat)*sin(rangelat)); - dem=cos(ssplat)*cos(rangelat); - - if (azi==0 && (beta > HALFPI-ssplat)) - rangelong=ssplong+PI; - - else if (azi==180 && (beta > HALFPI+ssplat)) - rangelong=ssplong+PI; - - else if (fabs(num/dem)>1.0) - rangelong=ssplong; - - else - { - if ((180-azi)>=0) - rangelong=ssplong-arccos(num,dem); - else - rangelong=ssplong+arccos(num,dem); - } - - while (rangelong<0.0) - rangelong+=TWOPI; - - while (rangelong>(2.0*PI)) - rangelong-=TWOPI; - - rangelat=rangelat/deg2rad; - rangelong=rangelong/deg2rad; - - /* Convert range circle data to map-based - coordinates and draw on map */ - - if (rangelong>180.0) - { - rangelong=rangelong-180.0; - sx=(int)(MAPSIZEX-(rangelong*MAPSIZEX/360.0)); - } - - else - sx=(int)((MAPSIZEX/2.0)-(rangelong*MAPSIZEX/360.0)); - - sy=(int)((MAPSIZEY/2.0)-(rangelat*MAPSIZEY/180.0)); - - /* store position for Plot Range Circle */ - qthfootprintdots[azi].x=sx; - qthfootprintdots[azi].y=sy; - } - } - - /* AZ/EL dots */ - if( lastel < 0 && el >= 0 ) /* if sat is beginning a new pass ... */ - nazeldots=0; /* reset az/el dots counter */ - - /* save last elevation value */ - lastel=el; - - if(el>=0) { - azimuth=(double)(az-90.0)*deg2rad; - sx=(AZELSIZEX/2)+cos(azimuth)*((double)(AZELSIZEX/2)-el*(double)(AZELSIZEX/2)/90.0); - sy=(AZELSIZEY/2)+sin(azimuth)*((double)(AZELSIZEY/2)-el*(double)(AZELSIZEY/2)/90.0); - - if( nazeldots > 0 ) { - if( azeldots[nazeldots-1].x!=sx || azeldots[nazeldots-1].y!=sy) { - azeldots[nazeldots].x=sx; - azeldots[nazeldots].y=sy; - nazeldots++; - } - } - else { - azeldots[0].x=sx; - azeldots[0].y=sy; - nazeldots=1; - } - } - - /* First draw the empty map */ - gdk_draw_pixmap( drawmap, yellow_gc, sourcemap, 0, 0, 0, 0, MAPSIZEX, MAPSIZEY ); - - /* Draw grid if needed */ - if(drawgrid==TRUE) { - draw_grid(); - } - - /* Draw orbit */ - if( drawtrack==TRUE ) - if( ndots>0 ) - gdk_draw_points(drawmap,red_gc,dots,ndots); - - /* Draw footprints */ - if( satfootprint==TRUE) { - for(i=0; i<359; i++) { - if( abs( footprintdots[i].x - footprintdots[i+1].x ) < MAPSIZEX/2 ) - gdk_draw_line(drawmap, yellow_gc, footprintdots[i].x,footprintdots[i].y, - footprintdots[i+1].x,footprintdots[i+1].y); - } - if( abs( footprintdots[0].x - footprintdots[i].x ) < MAPSIZEX/2 ) - gdk_draw_line(drawmap, yellow_gc, footprintdots[0].x,footprintdots[0].y, - footprintdots[i].x,footprintdots[i].y); - } - - if( qthfootprint==TRUE) { - for(i=0; i<359; i++) { - if( abs( qthfootprintdots[i].x - qthfootprintdots[i+1].x ) < MAPSIZEX/2 ) - gdk_draw_line(drawmap, cyan_gc, qthfootprintdots[i].x,qthfootprintdots[i].y, - qthfootprintdots[i+1].x,qthfootprintdots[i+1].y); - } - if( abs( qthfootprintdots[0].x - qthfootprintdots[i].x ) < MAPSIZEX/2 ) - gdk_draw_line(drawmap, cyan_gc, qthfootprintdots[0].x,qthfootprintdots[0].y, - qthfootprintdots[i].x,qthfootprintdots[i].y); - } - - /* Plot sub-satellite point */ - - if(slong>180.0) { - slong = slong - 180.0; - sx = (int)(MAPSIZEX - (slong * MAPSIZEX / 360.0)); - } - else { - sx = (int)((MAPSIZEX/2.0) - (slong * MAPSIZEX / 360.0)); - } - sy = (int)((MAPSIZEY/2.0) - (slat * MAPSIZEY / 180.0)); - - /* do not draw repeated dots in the orbit */ - if( dots[ndots-1].x!=sx || dots[ndots-1].y!=sy ) { - if( ndotsallocation.width; - updatewin.height = widget->allocation.height; - gtk_widget_draw ( widget, &updatewin); - - /* draw AZ/EL graphic */ - if(azelgraph==TRUE) { - /* First draw the empty az/el graphic */ - gdk_draw_pixmap( drawazel, blue_gc, sourceazel, - 0, 0, 0, 0, AZELSIZEX, AZELSIZEY ); - /* Then draw the track */ - if( nazeldots>0 ) - gdk_draw_lines(drawazel,blue_gc,azeldots,nazeldots); - - /* and a flashing square */ - if(el>=0) { - sx=azeldots[nazeldots-1].x; - sy=azeldots[nazeldots-1].y; - if( azflash==0 ) { - gdk_draw_rectangle( drawazel, cyan_gc, TRUE, sx-1, sy-1, 3, 3 ); - azflash=1; - } - else { - gdk_draw_rectangle( drawazel, blue_gc, TRUE, sx-1, sy-1, 3, 3 ); - azflash=0; - } - } - - /* Force AZ/EL redraw */ - widget = lookup_widget( dialog_azel_graph, "azelgraph" ); - updatewin.x = 0; - updatewin.y = 0; - updatewin.width = widget->allocation.width; - updatewin.height = widget->allocation.height; - gtk_widget_draw ( widget, &updatewin); - } - - return TRUE; -} - -/* Connect to predict server */ - -#define LISTBUFSIZE 2048 - -int connect_server( void ) -{ - GtkWidget * widget; - int i; - char bufr[LISTBUFSIZE]; - char *sname; - char *bufp; - gpointer *satname; - - /* Get satellite list from server */ - netsocket=connectsock(predicthost,predictport,"udp"); - - if (netsocket<0) { - fprintf(stderr, "ERROR: Can't connect to the predict server on %s.\n", predicthost); - error_dialog("Can't connect to the predict server."); - return 1; - } - - send_command(netsocket,"GET_LIST"); - - if(get_response(netsocket,bufr)==-1) { - error_dialog("Too many errors receiving response from server, disconnecting"); - on_cb_disconnect_clicked(); - return 1; - } - - /* Parse the response and place each name - in the GList satlist. */ - - bufp=bufr; - while( (sname=strsep(&bufp,"\n")) != NULL) { - if(strlen(sname)>0) { - satname=g_malloc0(strlen(sname)+1); - strncpy((char *)satname,(const char*)sname,strlen(sname)); - satlist=g_list_append(satlist,satname); - } - } - - /* Attach satellite list */ - widget=lookup_widget( mainwindow, "combo" ); - gtk_combo_set_popdown_strings( GTK_COMBO(widget), satlist); - - /* Get predict version from server */ - send_command(netsocket,"GET_VERSION"); - - if(get_response(netsocket,predictversion)==-1) { - error_dialog("Too many errors receiving response from server, disconnecting"); - on_cb_disconnect_clicked(); - return TRUE; - } - - for(i=0;iallocation.width; - updatewin.height = widget->allocation.height; - gtk_widget_draw ( widget, &updatewin); -} - -void draw_grid( void ) -{ - GtkWidget *widget; - gint sx, sy, i; - - widget=lookup_widget(mainwindow, "maparea"); - for(i=-90; i<90; i=i+30) { - sy = (int)((MAPSIZEY/2.0) - (i * MAPSIZEY / 180.0)); - gdk_draw_line(drawmap,widget->style->black_gc,0,sy,MAPSIZEX,sy); - } - for(i=-180; i<180; i=i+30) { - sx = (int)((MAPSIZEX/2.0) - (i * MAPSIZEX / 360.0)); - gdk_draw_line(drawmap,widget->style->black_gc,sx,0,sx,MAPSIZEY); - } -} - -void plot_QTH( float qthlat, float qthlong, char *callsign ) -{ - gint qthx, qthy; - - if(qthlong>180.0) { - qthlong = qthlong - 180.0; - qthx = (int)(MAPSIZEX - (qthlong * MAPSIZEX / 360.0)); - } - else { - qthx = (int)((MAPSIZEX/2.0) - (qthlong * MAPSIZEX / 360.0)); - } - qthy = (int)((MAPSIZEY/2.0) - (qthlat * MAPSIZEY / 180.0)); - - gdk_draw_rectangle( drawmap, cyan_gc, TRUE, qthx-1, qthy-1, 3, 3 ); - gdk_draw_string( drawmap, drawfont, cyan_gc, qthx+4, qthy+4, callsign ); -} - -void clear_widgets( void ) -{ - GtkWidget *widget; - - widget = lookup_widget( mainwindow, "tx_longitude" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_latitude" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_azimuth" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_elevation" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_footprint" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_range" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_altitude" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_velocity" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_ma" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_squint" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_orbit" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "lb_aos" ); - gtk_label_set_text(GTK_LABEL(widget),"Next AOS"); - - widget = lookup_widget( mainwindow, "tx_aos" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_upshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_updoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_downshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - widget = lookup_widget( mainwindow, "tx_dwdoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( mainwindow, "tx_beaconshift" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - widget = lookup_widget( mainwindow, "tx_beacondoppler" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( dialog_azel_graph, "tx_azel_sat" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( dialog_azel_graph, "tx_azel_azimuth" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - - widget = lookup_widget( dialog_azel_graph, "tx_azel_elevation" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); -} - -void disconnect_server( void ) -{ - GtkWidget *widget; - gint ctxid; - gpointer *satname; - - /* if we are not connected, don't do anything more */ - if( connected == FALSE ) - return; - - /* Disable main loop processing */ - connected=FALSE; - - /* Close network socket */ - close(netsocket); - - /* Setup status bar */ - show_status("Not connected"); - - /* Clear all data from widgets */ - widget=lookup_widget( mainwindow, "combo" ); - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(widget)->entry), ""); - gtk_list_clear_items(GTK_LIST(GTK_COMBO(widget)->list), 0, -1); - - clear_map(); - clear_widgets(); - - /* Empty the satellite list and free memory */ - satlist=g_list_first( satlist ); - while( g_list_length( satlist ) > 0 ) { - satname=satlist->data; - satlist=g_list_remove( satlist, satname ); - g_free( satname ); - } - - widget = lookup_widget( mainwindow, "satbar" ); - ctxid = gtk_statusbar_get_context_id(GTK_STATUSBAR(widget),"Status"); - gtk_statusbar_pop(GTK_STATUSBAR(widget),ctxid); - gtk_statusbar_push(GTK_STATUSBAR(widget),ctxid, - "No visibility information available"); -} diff --git a/clients/gsat-1.1.0/src/comms.h b/clients/gsat-1.1.0/src/comms.h deleted file mode 100644 index ead9dee..0000000 --- a/clients/gsat-1.1.0/src/comms.h +++ /dev/null @@ -1,14 +0,0 @@ -/* Prototypes for the communications functions */ - -int connectsock(char *host, char *service, char *protocol); -int send_command(int sock, char *command); -int get_response(int sock, char *buf); -gint timeout_callback( gpointer data ); -void error_dialog(gchar *message); -void show_status( const gchar * statusmsg ); -int connect_server( void ); -void clear_map( void ); -void draw_grid( void ); -void plot_QTH( float qthlat, float qthlong, char *callsign ); -void clear_widgets( void ); -void disconnect_server( void ); diff --git a/clients/gsat-1.1.0/src/db.c b/clients/gsat-1.1.0/src/db.c deleted file mode 100644 index 214db65..0000000 --- a/clients/gsat-1.1.0/src/db.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -/* Satellite database functions */ - -#include -#include -#include -#include -#include - -#include "support.h" -#include "comms.h" - -#include "globals.h" - -void lookup_sat_db( void ) -{ - char filename[256], inbuf[50], *bp, *satn, *moden, *upfreqn, *dwfreqn, *bcnfreqn, - satname[26], *sat, *mode, *upfreq, *dwfreq, *bcnfreq, *item; - FILE * fd; - GtkWidget *widget, *newitem; - int found, i, itemlistlen; - GList *itemlist=NULL; - - upfreq=dwfreq=bcnfreq=NULL; - - /* Clear mode combo */ - widget=lookup_widget( mainwindow, "combo_mode" ); - gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(widget)->entry), ""); - gtk_list_clear_items(GTK_LIST(GTK_COMBO(widget)->list), 0, -1); - - /* Empty the mode and frequencies lists and free memory */ - modelist=g_list_first( modelist ); - while( g_list_length( modelist ) > 0 ) { - mode=modelist->data; - modelist=g_list_remove( modelist, mode ); - g_free( mode ); - } - uplinklist=g_list_first( uplinklist ); - while( g_list_length( uplinklist ) > 0 ) { - upfreq=uplinklist->data; - uplinklist=g_list_remove( uplinklist, upfreq ); - g_free( upfreq ); - } - downlinklist=g_list_first( downlinklist ); - while( g_list_length( downlinklist ) > 0 ) { - dwfreq=downlinklist->data; - downlinklist=g_list_remove( downlinklist, dwfreq ); - g_free( dwfreq ); - } - beaconlist=g_list_first( beaconlist ); - while( g_list_length( beaconlist ) > 0 ) { - bcnfreq=beaconlist->data; - beaconlist=g_list_remove( beaconlist, bcnfreq ); - g_free( bcnfreq ); - } - itemlist=g_list_first( itemlist ); - while( g_list_length( itemlist ) > 0 ) { - item=itemlist->data; - modelist=g_list_remove( itemlist, item ); - g_free( item ); - } - - /* Get Satellite name from combo entry */ - widget = lookup_widget( mainwindow, "combo" ); - sat = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(widget)->entry)); - strncpy( satname, sat, 25 ); - satname[ 26 ] = '\0'; - - strncpy(filename,getenv("HOME"),256); - strcat(filename,"/.gsat.db"); - - if((fd=fopen( filename, "r" ))==NULL) { - strncpy(filename,GSATLIBDIR"/gsat.db",256); - if((fd=fopen( filename, "r" ))==NULL) - return; - } - - found=0; - while(fgets(inbuf, 50, fd)) { - bp=inbuf; - satn=strsep(&bp,":\n"); - moden=strsep(&bp,":\n"); - upfreqn=strsep(&bp,":\n"); - dwfreqn=strsep(&bp,":\n"); - bcnfreqn=strsep(&bp,":\n"); - if(strncmp(satname,satn,26)==0) { - mode=g_malloc0(strlen(moden)+1); - strncpy((char *)mode,(const char*)moden,strlen(moden)); - modelist=g_list_append(modelist,mode); - upfreq=g_malloc0(strlen(upfreqn)+1); - strncpy((char *)upfreq,(const char*)upfreqn,strlen(upfreqn)); - uplinklist=g_list_append(uplinklist,upfreq); - dwfreq=g_malloc0(strlen(dwfreqn)+1); - strncpy((char *)dwfreq,(const char*)dwfreqn,strlen(dwfreqn)); - downlinklist=g_list_append(downlinklist,dwfreq); - bcnfreq=g_malloc0(strlen(bcnfreqn)+1); - strncpy((char *)bcnfreq,(const char*)bcnfreqn,strlen(bcnfreqn)); - beaconlist=g_list_append(beaconlist,bcnfreq); - item=g_malloc0(strlen(moden)+1); - strncpy((char *)item,(const char*)moden,strlen(moden)); - itemlist=g_list_append(itemlist,item); - - found=1; - } - } - fclose( fd ); - - /* Attach mode list */ - itemlistlen=g_list_length( itemlist ); - if( itemlistlen > 0 ) { - itemlist=g_list_first( itemlist ); - widget=lookup_widget( mainwindow, "combo_mode" ); - for( i=0; i < itemlistlen; i++ ) { - newitem=gtk_list_item_new_with_label(itemlist->data); - gtk_widget_show(newitem); - gtk_container_add(GTK_CONTAINER(GTK_COMBO(widget)->list), newitem); - itemlist=g_list_next(itemlist); - } - } - - if(found==1) { - widget = lookup_widget( mainwindow, "tx_uplink" ); - gtk_entry_set_text(GTK_ENTRY(widget),g_list_first(uplinklist)->data); - widget = lookup_widget( mainwindow, "tx_downlink" ); - gtk_entry_set_text(GTK_ENTRY(widget),g_list_first(downlinklist)->data); - widget = lookup_widget( mainwindow, "tx_beacon" ); - gtk_entry_set_text(GTK_ENTRY(widget),g_list_first(beaconlist)->data); - } - else { - widget = lookup_widget( mainwindow, "tx_uplink" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - widget = lookup_widget( mainwindow, "tx_downlink" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - widget = lookup_widget( mainwindow, "tx_beacon" ); - gtk_entry_set_text(GTK_ENTRY(widget),""); - } -} - -void save_sat_db( void ) -{ - GtkWidget *clist; - char filename[256], *sat, *mode, *uplink, *downlink, *beacon; - FILE * fd; - int nrows, n; - - clist=lookup_widget( dialog_dbedit, "clist_satdb" ); - nrows = GTK_CLIST(clist)->rows; - - strncpy(filename,getenv("HOME"),256); - strcat(filename,"/.gsat.db"); - - fd=fopen( filename, "w" ); - - for(n=0; n < nrows; n++) { - gtk_clist_get_text(GTK_CLIST(clist), n, 0, &sat); - gtk_clist_get_text(GTK_CLIST(clist), n, 1, &mode); - gtk_clist_get_text(GTK_CLIST(clist), n, 2, &uplink); - gtk_clist_get_text(GTK_CLIST(clist), n, 3, &downlink); - gtk_clist_get_text(GTK_CLIST(clist), n, 4, &beacon); - fputs(sat, fd); - fputc(':', fd); - fputs(mode, fd); - fputc(':', fd); - fputs(uplink, fd); - fputc(':', fd); - fputs(downlink, fd); - fputc(':', fd); - fputs(beacon, fd); - fputc('\n', fd); - } - - fclose( fd ); -} - -void copy_sat_db( char *filename ) -{ - FILE *fdin, *fdout; - char buf[50]; - - if((fdout=fopen( filename, "w" ))==NULL) { - error_dialog("ERROR: Can't create satellite database file"); - return; - } - - /* If global satellite db file does exist, create a copy in HOME */ - if((fdin=fopen( GSATLIBDIR"/gsat.db", "r" ))!=NULL) { - while(fgets(buf, 50, fdin)) { - fputs(buf,fdout); - } - fclose( fdin ); - } - - fclose( fdout ); -} diff --git a/clients/gsat-1.1.0/src/db.h b/clients/gsat-1.1.0/src/db.h deleted file mode 100644 index 773c82e..0000000 --- a/clients/gsat-1.1.0/src/db.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -/* Satellite database functions */ - -void lookup_sat_db( void ); -void save_sat_db( void ); -void copy_sat_db( char *filename ); diff --git a/clients/gsat-1.1.0/src/globals.h b/clients/gsat-1.1.0/src/globals.h deleted file mode 100644 index b6c580d..0000000 --- a/clients/gsat-1.1.0/src/globals.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -/* Global definitions */ - -#define GSATVERSION "1.1.0" -#define WINTITLE(VERS) "gsat #VERS: Real-Time Satellite Tracking Display" - -#ifndef GSATLIBDIR -#define GSATLIBDIR "/usr/local/lib/gsat" -#endif - -#define MAXPLUGINS 20 -#define DEFAULTPLUGINSDIR GSATLIBDIR"/plugins/" - -/* Buffer size for network reads */ -#define NETBUFSIZE 1024 - -/* Network timeout */ -#define NETTIMEOUT 10 - -/* Network maximum number of timeouts */ -#define MAXTIMEOUTS 3 - -/* Size of world map */ -#define MAPSIZEX 700 -#define MAPSIZEY 350 - -/* Maximum number of dots for drawing orbits */ -#define MAXDOTS 2800 - -/* Size of az/el graphic */ -#define AZELSIZEX 250 -#define AZELSIZEY 250 - -/* Maximum number of dots for drawing az/el graphic */ -#define AZELMAXDOTS AZELSIZEX*2 - -int errno; - -/* Network parameters */ -char *predicthost; -char *predictport; -int netsocket; - -/* Main Widgets */ -GtkWidget * mainwindow; -GtkWidget * dialog_connect; -GtkWidget * dialog_preferences; -GtkWidget * dialog_azel_graph; -GtkWidget * dialog_dbedit; -GtkWidget * dialog_about; - -/* Main control parameters */ -int connected; -int timeUTC; -int drawgrid; -int satfootprint; -int qthfootprint; -int drawtrack; -int autofreq; -int azelgraph; -int enableupdoppler; -int enabledowndoppler; -char predictversion[10]; -GList *satlist; -char statusmsg[256]; -float lastel; -gint selectedrow; -GList *modelist; -GList *uplinklist; -GList *downlinklist; -GList *beaconlist; - -/* Graphics parameters */ -GdkPixmap *drawmap; -GdkPixmap *sourcemap; -GdkPoint dots[MAXDOTS]; -gint ndots; -GdkFont *drawfont; -GdkColor yellowclr, redclr, purpleclr, cyanclr, blueclr; -GdkGC *yellow_gc, *red_gc, *purple_gc, *cyan_gc, *blue_gc; -GdkPixmap *drawazel; -GdkPixmap *sourceazel; -GdkPoint azeldots[AZELMAXDOTS]; -gint nazeldots; - -/* Program flags */ -int doprediction; -int newsat; - -/* Plugin interface functions */ -char * (*plugin_info_uplink)( void ); -int (*plugin_open_rig_uplink)( char * config ); -void (*plugin_close_rig_uplink)( void ); -void (*plugin_set_uplink_frequency)( double frequency ); -char * (*plugin_info_downlink)( void ); -int (*plugin_open_rig_downlink)( char * config ); -void (*plugin_close_rig_downlink)( void ); -void (*plugin_set_downlink_frequency)( double frequency ); -char * (*plugin_info_beacon)( void ); -int (*plugin_open_rig_beacon)( char * config ); -void (*plugin_close_rig_beacon)( void ); -void (*plugin_set_beacon_frequency)( double frequency ); -char * (*plugin_info_rotor)( void ); -int (*plugin_open_rotor)( char * config ); -void (*plugin_close_rotor)( void ); -void (*plugin_set_rotor)( double azimuth, double elevation ); - -/* Plugin control parameters */ -int uppluginenable; -int enableupdoppler; -char * uppluginconfig; -void * upplugin_handle; - -int downpluginenable; -int enabledowndoppler; -char * downpluginconfig; -void * downplugin_handle; - -int beaconpluginenable; -int enablebeacondoppler; -char * beaconpluginconfig; -void * beaconplugin_handle; - -int rotorpluginenable; -int enablerotor; -char * rotorpluginconfig; -void * rotorplugin_handle; - -GList *pluginlist; -char pluginfiles[MAXPLUGINS][30]; -char plugindescriptions[MAXPLUGINS][30]; -char pluginsdir[256]; - -GList *rotorpluginlist; -char rotorpluginfiles[MAXPLUGINS][30]; -char rotorplugindescriptions[MAXPLUGINS][30]; - -/* Preferences */ -char prefs_grid[1]; -char prefs_utctime[1]; -char prefs_satfootprint[1]; -char prefs_qthfootprint[1]; -char prefs_track[1]; -char prefs_autofreq[1]; -char prefs_aos_command[1024]; -char prefs_los_command[1024]; -char prefs_up_plugin[256]; -char prefs_up_plugin_config[256]; -char prefs_down_plugin[256]; -char prefs_down_plugin_config[256]; -char prefs_beacon_plugin[256]; -char prefs_beacon_plugin_config[256]; -char prefs_rotor_plugin[256]; -char prefs_rotor_plugin_config[256]; diff --git a/clients/gsat-1.1.0/src/graphics.h b/clients/gsat-1.1.0/src/graphics.h deleted file mode 100644 index 6da7ecc..0000000 --- a/clients/gsat-1.1.0/src/graphics.h +++ /dev/null @@ -1,2605 +0,0 @@ -/* World Map pixmap */ - -static char *worldmap[] = { -/* columns rows colors chars-per-pixel */ -"700 350 256 2", -" c #142e3c", -". c #162c39", -"X c #15323d", -"o c #17323a", -"O c #112930", -"+ c #2c3832", -"@ c #111f24", -"# c #0e374c", -"$ c #0f3c52", -"% c #0e3e58", -"& c #142e41", -"* c #143444", -"= c #123649", -"- c #13364c", -"; c #143a4d", -": c #17394a", -"> c #123d52", -", c #143c53", -"< c #193e53", -"1 c #133d57", -"2 c #0e2e43", -"3 c #263b49", -"4 c #103f60", -"5 c #354b2a", -"6 c #374a36", -"7 c #3a552c", -"8 c #3b5735", -"9 c #2d482f", -"0 c #3d6234", -"q c #314a1f", -"w c #144156", -"e c #15435b", -"r c #1a4455", -"t c #1a465b", -"y c #1b495b", -"u c #19495a", -"i c #144253", -"p c #154663", -"a c #164963", -"s c #164b6b", -"d c #184763", -"f c #1a4b64", -"g c #1b4d6b", -"h c #184768", -"j c #184f71", -"k c #1c516d", -"l c #1c5166", -"z c #1c5373", -"x c #1b567a", -"c c #1d5a7c", -"v c #195575", -"b c #0e4866", -"n c #244a59", -"m c #29535a", -"M c #375758", -"N c #314e4b", -"B c #224e64", -"V c #22546b", -"C c #265467", -"Z c #215573", -"A c #235975", -"S c #235c7b", -"D c #295c77", -"F c #365967", -"G c #375b72", -"H c #3b6552", -"J c #29627c", -"K c #376778", -"L c #39676c", -"P c #1e617e", -"I c #473b38", -"U c #474b36", -"Y c #44582d", -"T c #475935", -"R c #55593a", -"E c #4c4d34", -"W c #4a6636", -"Q c #55693a", -"! c #56753b", -"~ c #4a6b34", -"^ c #65723d", -"/ c #625b3e", -"( c #495747", -") c #575a46", -"_ c #4d5652", -"` c #465c69", -"' c #496646", -"] c #596845", -"[ c #5a7644", -"{ c #516b55", -"} c #466877", -"| c #516f6f", -" . c #655b48", -".. c #6c5b52", -"X. c #666948", -"o. c #676856", -"O. c #687647", -"+. c #697655", -"@. c #74694c", -"#. c #786a55", -"$. c #75784b", -"%. c #797855", -"&. c #6f736b", -"*. c #635e62", -"=. c #1e5d81", -"-. c #1e6183", -";. c #215e81", -":. c #286685", -">. c #346b85", -",. c #33718e", -"<. c #4f7587", -"1. c #697b8c", -"2. c #717ea3", -"3. c #5b863d", -"4. c #68963c", -"5. c #698b3d", -"6. c #70a03f", -"7. c #598745", -"8. c #56884f", -"9. c #588472", -"0. c #688747", -"q. c #6a9646", -"w. c #77874a", -"e. c #7a8655", -"r. c #779749", -"t. c #799755", -"y. c #698b55", -"u. c #738a70", -"i. c #78a44f", -"p. c #7ca464", -"a. c #58848a", -"s. c #71898f", -"d. c #778ea9", -"f. c #7da38e", -"g. c #7c99c3", -"h. c #86795a", -"j. c #88725a", -"k. c #8a7964", -"l. c #957b66", -"z. c #8b766e", -"x. c #a27e6e", -"c. c #837e81", -"v. c #878759", -"b. c #889658", -"n. c #93895d", -"m. c #95975c", -"M. c #838c4c", -"N. c #8a8765", -"B. c #8a9665", -"V. c #988767", -"C. c #998875", -"Z. c #989666", -"A. c #909077", -"S. c #87a758", -"D. c #92aa5b", -"F. c #98a867", -"G. c #94ad6b", -"H. c #a48a6b", -"J. c #a78a75", -"K. c #a6976b", -"L. c #a99776", -"P. c #b69878", -"I. c #b29372", -"U. c #a7a66a", -"Y. c #a9a776", -"T. c #b8a778", -"R. c #aeb573", -"E. c #a1a15e", -"W. c #b6c378", -"Q. c #c39c7b", -"!. c #c4a77c", -"~. c #c4b67d", -"^. c #c5c67c", -"/. c #91928c", -"(. c #8d97ae", -"). c #96a68d", -"_. c #95a6b3", -"`. c #b89a85", -"'. c #aa978a", -"]. c #b9a787", -"[. c #b2ad8f", -"{. c #b0afb0", -"}. c #a39daa", -"|. c #99abce", -" X c #a9a9c6", -".X c #b8b8ca", -"XX c #b9bad6", -"oX c #a9b4d3", -"OX c #aab9e5", -"+X c #b2bde5", -"@X c #969ec6", -"#X c #bac48a", -"$X c #bcc3b1", -"%X c #b9c3d3", -"&X c #bccced", -"*X c #b6c5ea", -"=X c #bdccf1", -"-X c #bed1ed", -";X c #bbceef", -":X c #c39d87", -">X c #c8a787", -",X c #c9a996", -" 1 t <.1.<.<.<.<.<.<.>.B y n y B B n B n C F C B n n n F M m n F F F 1.s.1.1.1.d.(._.(.(.1.<.<.<.1.1.<.| } } ` } | ` F F F F F m M F M F F F G G L ` ` G F F G G } } 1.s.(.(.s.(.(.(.}..X.X X(.(.s.| } } } F L ` G } } L } } } G } } } ` } | } } <.<.} ` F F y u t r y r w r w w w w r u u r r , t t r r r r r t t y y y y u u e r w w r ; K {.sXpXpX{.8X8X.X8X8X8X8XpXpXpXsXsXpXaXdXaXsX.X.X{.(._._.(.(._._.{._.(.(.s.s.s.s.s.s.s.s.s.s.s.(.(.(.d.(.d.1.1./.(._._..XpXXX.X.X8X8X8X8X.X.X8X.X%X8X.X.X.X8X.XsXsX.XXXsX%X.X.X.X.X XoX X.X.X X.X X XXXsXsXsXsXsXaXsXaXsXsXsXXX8X9X8X8XsXsX8X.XsXaXhXsXaXsXaXsX8X9XsXMXnXnXnXnXnXnXHXJXHXJXHXFXnXJXJXHXJXJXHXFXFXnXbXfXfXbXfXMXMXbXbXnXbXnXFXJXJXJXnXnXnXJXJXnXAXJXFXnXnXbXnXbXbXbXvXMXbXMXMXhXhXsXXXsXMXnXFXnXnXbXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX", -"8X8X8XpX.XXXXX.X.X.XXXXXXXpX.X.XsXXX.XpXXXXX.XpXaXaXbXbXbXdXbXnXnXJXHXnXnXFXnXnXnXJXJXHXJXJXJXJXJXPXPXKXLXLXJXLXLXLXLXJXJXLXLXLXLXLXLXLXJXJXHXJXIXIXJXJXJXJXHXJXIXHXHXIXLXHXIXLXPXPXLXIXPXPXLXPXPXPXPXPXPXLXIXHXfXfXfXfXHXLXHXHXJXLXIXLXLXIXLXPXPXPXPXPXPXPXLXLXIXIXPXIXIXIXPXIXIXIXIXIXIXIXIXGXUXGXUXDXGXIXIXIXIXIXIXIXPXLXIXLXIXPXPXIXIXGXgXyXpXqXqX$XgXIXHXgXqX[.[.[.A.L.'.A.A.A./.{.qXgXgXgXgXIXIXIXgXgXqXyX5XA.'.[.[.[.[.qX5XqXqX{.[.[.qXDXyXDXqX5X/.).{.[.[.gXUXqXfXHXIXqXu.[.qXgX{.qX5X{.5X{.{.pX).{.{.$X{.}.}.[.$XHXGXgXgXHXLXIXUXIXPXKXIXIXPXPXPXPXPXPXPXPXLXLXLXIXIXHXFXfXaXdXdXdXfXfXaXdXaXbXbXsX.X.X|.@X(.(.2.<.<.>.V d.<.C C <.d.<.<.} <.2.d.(.@Xg.d.d.2.,.K V B y y y u u y y y u t y r r ; - 2 2 2 * * ; r r r r n n m n n r r r n n r r r i i ; ; ; # * * * = * * : - - = ; i w r u w r r < r r < 1 w r n n t r n n n B F C C B B y u u w w r r r u i w r r w w r w i i r r r w r u r u r r t y y n y r n n F F n n y y y t M | &.| | } | | &.| &.| ` ` F r m M m ` ` F n y r C (..X%X%XpXsX8X%X%X%X.X%X%X X_._.{.{.{.(.d.} F F n m B n y n m m B n n u y u y y t f y y y y u y t f n n n N M ` F m F d..X{.{.{.8X8X.X.X{..X.X.X.X.X.X.X.X8X8X.X.XsXaXdXaXdXnXnXMXMXMXMXaXsXsXaXaXMXbXnXnXbXnXnXfXbXbXnXbXbXbXbXfXfXaXMXdXMXbXbXnXHXJXJXJXJXFXAXHXFXnXnXbXbXnXfXaXdXbXnXJXJXJXJXFXnXnXnXFXnXnXbXbXdXdXsXsX9XsXMXbXbXbXMXbXbXbXnXnXnXAXnXnXmXnXnXAXnXJXJXJXmXnXbXMXMXMXMXMXhXMXMXhXsXhXlXbXnXnXnXbXbXbXbXaXaXaXaXdXdXaXaXaXaXaXbXaXaX", -".X.X.XXX.XXX.X.XXXXXXX.XXX.X.X.X.X.X.X.X.XXXaXsXaXnXnXnXHXHXJXHXFXHXJXFXHXnXJXJXHXJXJXJXJXKXLXJXLXLXLXJXLXLXLXLXLXLXLXLXPXLXJXLXJXLXJXJXJXLXLXHXHXJXJXJXHXHXJXJXJXHXHXHXHXIXLXLXPXPXPXJXIXPXIXIXPXPXPXPXPXPXPXPXLXIXFXgXfXUXgXgXFXLXIXIXIXHXIXPXPXPXPXPXPXPXPXPXPXLXIXPXPXPXPXPXPXIXPXPXPXPXIXPXPXPXIXIXIXIXGXLXIXIXIXIXIXIXPXPXPXIXIXIX5X&.[.A.#./.'.) E A.{.qX5X'.'.[.L.A.&.%.N.)./.A./.A.u.&.$XiX[.0XyXtXqX5X,X[.[.5XqXHXPXIXIXUX{.[.5XqXDX5X'.[.,X{.&.}.fX{.[.pXIX).&.$XpXgXgXpXpXHXLXPXIXLXLXPXPXLXLXPXIXPXPXPXPXPXLXPXPXPXPXPXPXPXPXPXPXPXPXLXIXPXPXPXPXPXPXPXPXPXPXPXPXPXLXHXFXfXfXHXfXgX.X.X{.XXbXfXsXaXoX.X8XMX@X<.G B <.<.<.1.d.g.|.d.d.d.d.<.<.1.<.<.C n y r t r y r r u r r r r u u r y y n n t w : < : : * : : = ; ; i $ i r r r r r n r r r n r r r r r r r r r r r r r n t y y y n y y y B B B B y y n < r r t u w t r r y y r r u u u y y n B n y y u u r y y y y y y y u r y y y y y u y y m F | *.| &.&.| &.&.&.u.| t n m F *.u.&.&.z.&.&.z.z.&.&.&.&.&././.` ` &.| &.{ ` m r y r t F F F ` | ` F M M M F F F C r F F n y r r n F C t u r y r r r r r u u u u y y t t y y r r r r n _ +.o.o.&.o.o.o._ m y C G <.2.(.(.(.s.1.| F F ` } 1.2.s.(.s.(.s./.(.(. XaXbXfXbXbXbXbXdXaXdXnXnXJXJXJXJXHXHXHXnXnXnXbXbXnXJXJXFXFXHXJXAXnXJXAXFXFXHXJXJXJXHXHXHXHXJXJXHXHXHXnXaXsX9XaXbXnXnXJXJXLXKXnXHXHXnXnXnXdXdX9X9X8XXXXXsX%XsXhXhXMXMXbXbXbXnXmXnXbXbXbXbXbXnXJXJXLXJXmXMXMXMXhXMXbXbXMXMXhXsXsXsXMXMXbXbXbXnXnXbXaXaXdXbXbXbXbXbXaXbXbXbXsX", -"sX8X.XsXXXXX.X.X.XsXsX%XsXsXsXXX.X.XXX.XsXbXbXnXbXnXnXFXHXnXHXHXHXJXJXJXJXJXJXJXJXJXJXJXLXJXJXJXJXLXKXKXLXJXLXPXLXLXLXLXLXJXHXJXJXJXJXJXLXJXIXJXHXJXJXFXHXUXFXJXHXFXHXUXfXfXFXIXIXPXLXLXPXPXPXPXLXIXIXIXPXPXPXPXPXLXLXIXHXHXHXFXfXHXHXIXHXHXIXIXHXHXHXIXLXPXPXPXPXLXIXIXIXIXIXGXIXIXIXIXIXIXIXIXGXIXIXIXIXIXIXIXIXIXIXGXqX{.qXHXGXUXUX/.&.+.&.{ /.gXgXpX).).A.A.e.[.{.A.[.{.'.'.].5X[.'.{.[.[.qXqXqXqXqXUXgXgXgXgXIXPXLXIXHXIXUXqXqXyX{.[.[.{./.&.&.5X5X[.5XqX{.UXIXfXgX{.u.{.{.).).{.%XUXIXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXLXIXHXHXHXJXHXnXbXdXnXFXUXfXbXDXfXnXFXbX9XXX{.{.oX@X@Xg.@Xd.d.d.<.G <.D d V V 4 r r t t t y y y u u y y n u u u y r r y y t r r < < : ; : : : : : : : : ; ; ; r r r r r r r y r y y y y y y y y d B r t t y y y n m m F *.*.` F F m n F M | ` F F M F C n n y y y n r B | | <.F r n u u r m C y y y y r u u u r y t y r r r y n M ` *.&.1.&.&.&.` _ M n F F | { ` M ` &.&.&.&.*.*.o.o.| F M n r n r r r r y y y y y n r r r r r r r r r r r r t t u u u y y n y y r r y y y y y y y y u u u y u y y y y y y y u r M _ o...o...o._ ) .) M n n n n B B C < t n r r r t r r : r ; : : : ; m ` 1.{.pXsXdXnXbXaXsXsXsXbXHXJXLXKXLXLXLXKXKXJXHXHXHXHXFXFXFXHXJXJXJXJXFXnXbXnXdXaXaXMXbXbXaXfXfXbXbXaXMXbXbXbXMXaXMXnXMXMXbXnXJXJXJXJXLXLXJXHXFXFXnXJXJXnXbXaXsXaXhXhXhXMXbXbXbXnXnXFXJXvXbXbXbXnXnXnXnXJXJXnXbXMXMXMXMXbXbXbXbXbXMXsXsXsXaXbXbXnXnXbXbXbXbXbXbXbXdXaXaXaXaXaX", -"aXaXsXsXsXsXsXsXaXaXfXaXaXaXaXaXsXsXsXaXbXbXbXbXnXnXbXnXJXnXnXKXJXJXKXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXLXLXLXJXJXLXLXLXLXLXJXJXJXHXHXLXJXJXJXIXLXLXHXJXJXHXHXHXHXLXPXPXPXIXLXPXLXLXLXLXLXLXJXIXLXJXIXIXLXLXLXIXIXPXPXLXIXHXIXLXIXIXIXIXHXHXLXPXPXPXPXPXPXPXPXPXPXLXLXIXHXHXJXGXUXDXUXUXUXGXHXIXUXgXgXIXUXUXIXIXIXPXIXgX}.'./.UXgXDXUX).&.N.) &.[.gXUX{.qXgX{.{./.z.k.Z.L.z.A.'.].[.J.K.Z.,X[.'.N.A.).gXHXgXfXUXgXUXGXgX{.{.qXgX{.[.qXyXqX{.qXqX{.qXDXIXGXGXIXGXgXGXHXPXPXLXIXIXUXHXIXLXPXPXPXPXLXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXPXPXPXPXPXPXPXPXPXPXLXJXHXIXIXFXfXUXFXUXFXDXFXFXfXUXFXUXDXFXFXfXbXbXXXoX X X_.d.d.G G G g u t t y t r t u u n u y y u u u u u u r r y n t r r r r r r : w r : : ; : * : = = * ; : ; w r r r r y y y t B ` F M m M ` M m B M _ ` ` *.&.*.#.*.*.&.&.*.*.&.*.&.&.&.*.*.| G t r y y r w u B G n n n r u u u u n n u y r r y y y u n y y r y u y u u r r w y r r N m F F M y r r r r r u r n m n r r M ` M m r y y y y y u y y y y n r t n r n n n n n n r r n y r r r t y n n m y y y y y y y y y r y u u u u y r y y y u u y y u y M _ ( ( N ( ) ) ) ) ) ) ) _ *.*.{ m r r n n n y y y y y n y B y y n r r } _..XdXFXFXnXnXnXnXnXbXaXnXJXLXLXLXJXHXJXLXLXLXLXLXJXLXPXPXJXJXLXPXPXPXPXPXPXLXLXJXJXnXdXaX8XsX8X8XMXMXsX%XXXXXXX.XXXoX X X.XXX9XaX9XdXnXbXbXbXMXdXMXnXAXHXJXHXbXbXJXHXnXnXnXbXhXMXbXnXmXnXnXnXnXnXFXFXFXJXJXJXJXJXnXbXMXbXMXbXbXbXnXbXsXaXaXaXaXbXbXnXnXnXbXbXbXbXbXbXbXbXdXaX", -"aXdXaXdXdXaXpX%X.X.X.X.X8X8XsXsXsXaXbXnXnXHXnXnXnXnXnXFXJXJXKXKXJXJXJXJXJXJXLXJXHXHXJXJXJXLXHXJXJXJXHXJXJXIXJXJXLXJXJXJXLXJXLXLXLXJXHXLXIXHXFXIXIXLXJXJXJXJXFXHXHXHXIXPXPXHXHXJXJXJXHXHXJXJXJXJXIXIXHXHXHXHXnXHXIXHXLXLXLXLXIXLXIXIXHXFXFXHXHXHXIXIXPXPXPXPXPXPXPXPXPXPXPXPXHXUXIXPXPXPXIXHXHXPXPXUX{.pXqX'./.UXqX{.fXIXPXLXIXUXHXIXIXPXIX{.{.{.&.#.A.) &./.&.&.}.UX).#.k.C.'.C.z.z.A.N.N.).{.}.A.).).{.{.[.[.[.[.qX'.[.[.qXDXGXDXIXIXIXIXPXIXIXGXDXtX[.).}.qXPXIXGXIXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXPXPXIXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXLXPXPXLXPXPXPXPXPXPXPXPXPXPXPXPXLXLXPXLXHXIXHXFXFXFXfXFXFXUXfXFXUXHXFXFXFXFXFXFXFXFXFXfX%X%XoX|.<.f r B B t y t y r y y n u u u y y u u u u n u y t t t t r r r , ; : ; ; i i ; : ; ; ; : = * ; : : ; i w r r y y y y C &.*.*.*.&.&.&.*.*.*.*.&.#.&.&.o.*.| F M M M ` ` _ m m ` M r w w y n y B n } y y t u u u u u u n u r u r r y u r y y u u y r u y u u y y y y y y u u r r r r u y r y y y y y y y r y r y t r t r y y y y y y y y y r y r t r r t y y r t r n r r r y t n y r y n n m y y y y y y r y u u n u u u u u y u y r r y r y u n n m M n r r N ( _ _ _ _ ) ) .. ._ n n ` _ _ M n n n u y y y y y y y y y w n F 1.(.8XbXbXbXbXnXbXnXFXJXKXLXJXnXfXnXbXnXHXHXHXHXJXJXJXLXnX8X8X.XMXnXHXnXnXFXJXJXbXMX9XXX9XXXXX X X X X@X(.2.(.2.2.(.(.(.@X_. X X.XsXaXMXaX9X9X8X.X9XbXnXJXHXJXJXJXJXJXJXJXFXmXnXnXbXMXMXMXMXMXnXmXnXnXnXmXFXAXJXJXnXMXMXbXbXbXnXnXbXbXaXaXaXdXbXbXbXnXnXnXbXbXbXbXbXbXMXaX", -"aXaXaXsXaXsX.X.X.XXX.XsXsXsXaXaXsXaXnXnXHXJXHXHXFXnXJXJXLXJXJXJXJXJXPXPXLXLXLXJXJXLXJXJXJXJXJXJXJXJXJXJXJXJXHXLXJXJXJXLXLXLXLXJXJXJXJXHXJXHXJXIXIXJXHXbXFXJXHXHXHXJXIXHXIXHXUXHXHXHXJXFXHXHXJXJXJXHXJXJXIXPXLXIXHXHXHXIXLXIXHXHXIXPXPXPXIXHXIXHXHXIXIXPXPXPXPXPXPXJXHXHXgX{.8X[./.}.UXLXLXHXHXJXIXLXgX/.'.'.z.C.C.'./.&.}.JXIX{.o.A./.}.qXgXIXUX{.A.o.( /.qX{._ /.).&.&./.&.%.A.'./.'.[.[.N.N.A.5XIXPXUXqXpX{.{.gXqX{.{.{.[.5XGXIXgXqXqX0X{.$X[.N.N.u.+.{.pXUXPXPXPXPXPXPXPXPXPXPXPXPXLXPXPXPXLXPXLXLXLXLXLXPXPXPXPXPXPXPXPXPXPXLXPXPXPXPXPXPXLXLXPXPXPXLXPXLXPXPXLXPXLXLXIXLXLXLXIXIXJXHXFXFXfXFXfXFXFXFXFXFXFXFXHXFXGXFXHXHXHXHXGXHXdX%XoXa.L B y m B y r y r r y y n u u u u y y u y n y y u y y r n r n r r i i r ; : : ; w r r w r r : i i r r ; i ; ; ; r r r n M *.&._ o.#.&.*...o.o.*.&.o.*.#.&.*.| *._ ` y e r u u w w r y C n y n n y r L y u y r y y n r u u u u u u u y y y y u u u y u y r y r r y r r r y n y y y r u y y r r r y y r r y y y r y y y y y r r r y r y y y r y y t t n n r r r r t n r n t r r n y y y r y y t y y y u y y y y y y y u u u y y y y y y y y y y y y y u y y y y r r r n < n n n N N N ` *.o.o.o.) _ _ M M m n y t r y y y y n n B F F 1._.bXbXbXbXbXdXsXsXaXbXnXnXHXHXaX.XsXMXnXdXdXnXHXJXFXnXaXXX.X.XXX.X X X X X X X X@X(.(.@X@X2.(.(.d.2.2.2.2.@X2.2.2.d.2.2.d.(.(.}. X{. XXX8X XXXXX.XXXMXMXhXbXFXJXJXKXKXKXLXPXJXJXJXJXJXJXFXnXFXnXbXbXbXnXnXnXnXnXbXbXbXnXbXnXnXbXaXaXaXbXaXbXbXbXbXbXbXbXaXdXaXaXaXaX", -".X.X.X.XsXfXfXfXdXbXfXbXnXnXnXnXnXHXJXHXJXKXJXJXJXJXJXJXJXKXJXPXPXLXLXLXJXLXLXLXJXKXKXJXJXHXJXJXLXJXJXJXJXJXJXJXLXIXJXLXJXLXLXLXLXLXJXJXLXIXJXJXJXJXJXUXUXHXIXIXIXHXIXHXJXLXJXJXHXHXHXFXFXHXUXIXJXHXHXLXJXJXHXJXIXIXLXLXHXJXIXJXHXHXJXLXHXHXIXLXPXPXPXIXPXPXLXgXgXpX{.pX5X/./.'././..XfXnXFXnXnXFXJXHXgXpXpX{.{.{.5X'.o.U /.HXUX{.N.#.A.A.A.gXIXIXHXgX{.{.{.[.{.tX/.[.HX{.u.A.'.5X[.`.`.[.C.X.o.UXPXPXPXIXHXUXHXgXgXfXqX/.1././.s.*.).gXqXqX{.).pXgXfXIXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXLXPXLXPXLXPXPXPXPXPXLXPXPXIXIXIXLXLXLXIXLXLXIXLXLXIXLXLXLXIXLXPXPXPXLXPXPXPXPXPXPXPXPXLXIXLXIXFXfXfXUXDXUXUXUXUXDXFXUXFXFXHXFXHXGXFXGXFXHXFXsX%X%Xs.; m L r n y y y y u u u u u u u u y y y y y y y u r y r y n r r : : ; ; : : : : ; : ; : r : : i r r : r r r : : = w r t y n M m m ` *.&.&.o.o.&.*.o.*.*.M n n F _ &.&.F M n r t y y y n y t y t u r w u r y y y y u u u u u u n u u u y y y u u u y u r y r y r y y y y y u u y y y y u u u y y y y y y u r y y r r y y y u y y y t y r r t r r t t t r n y r n r t n t r n r r r r y y y y y y y y u y y y u u u u u u u y y y y y r y r u y y y y y y y n n y y t t t t u r w w M _ _ M M M M n n n n n n m n y y y r t e t B C B G | (.{.%XsXdXfXbXbXbXbXnXnXnXnXnXbXbXbXnXnXbXMXMXdXFXHXnXnXbXbXbXMXMXsXsXhXXXXX.X X@X@X@X@X(.d.2.d.2.2.2.d.2.2.(.2.2.2.2.2.2.2.2.2.d.2.2.(.@X(.(.@X@XXX9XXXhXMXhXhXbXnXnXnXSXJXJXJXJXJXLXLXJXJXJXJXFXJXAXAXnXnXbXnXbXbXbXbXnXnXbXdXaXdXbXaXaXbXaXbXnXbXbXaXaXaXaXaXsX", -"%X.X.XsXsXfXfXbXbXaXaXaXfXbXFXHXJXJXJXKXLXLXJXJXJXJXJXJXPXPXPXLXPXPXLXLXLXLXJXJXLXJXJXJXJXJXJXLXJXJXLXLXLXLXLXJXLXHXJXJXHXJXLXLXLXJXHXHXLXJXHXJXHXJXLXLXHXIXUXUXHXUXgXFXFXFXFXfXpX8X8XfXgX8X8X8XfXfXdXnXnXHXHXHXIXJXHXJXJXfXgXFXHXHXfXLXHXFXIXIXHXUXHXgXgXfXpXpX{.fX{.&.5X5XN.s.}.pXLXnXnXHXnXHXfX&.}.nXnXaXfXfX{.8XfXgXgXpX8XUXIXIXGX[.X.&.&./.).gXIXIXIX{.u.{.IXIXIX{.) +.L.qX/.&.'.C.k.k.[.&.{.PXLXIXLXHXUX5XfXfXs.m m n ` ` r r M ` s.&.s.{.pXpXfX}././.qXfXPXPXPXPXPXPXPXPXPXPXPXLXPXPXPXPXPXLXLXLXPXLXLXLXJXJXJXHXHXHXHXJXIXJXHXHXJXJXJXJXHXHXLXLXLXLXHXLXIXLXIXLXLXLXLXLXPXLXIXHXUXUXFXHXFXFXFXHXGXGXFXFXHXHXGXHXFXGXFXFXHXbXfXaXsXoX_.d.d.} r D C r y y u u u n r y u u y u u y y y y y y r r r r r r r : : ; : : : ; : : : : : * : : ; : ; ; ; r : ; ; ; w r u r r y u y F | *.o.*.&.&.*.` M y y d f F *.o.o.*.*.m r y u u u y u u y y y y u u u y y y u u u u u u u u n u u u u n u u y y y u u u u u u u n u u u r r r r y u y y y u y r u u y y y y u y r y r r y u w u r y y t r r r r r r r t r n r n r r r n r r r u u u y y n u u u y u u u m m y y y r y y u r y y y y y y y y y n y y y y y y y t t t t t y y n n t y < < n n N N N n n n r t t t r r t w w r r r t n m ` } 1.s.(._.{..X8XsXsXsXMXbXfXbXnXnXnXdXbXfXdXaXaXaXaXbXbXMXbXnXnXnXbXnXnXnXnXAXnXMX9X9X9X8X9XXX8X XXXoX X X@X(.(.(.(.(.(.@X(.(.(.(.(.(.@X@X@X X.XXXoXXXhXaXaXaXhXsXsX9XMXMXaXbXbXnXnXnXJXJXJXJXJXJXJXJXJXFXnXbXbXnXnXnXnXbXbXbXbXbXMXdXaXbXbXbXdXdXaXaXaXaXsX", -"aXsXsXsXsXsXsXfXnXnXbXfXfXnXnXJXJXJXJXJXJXLXKXLXLXKXLXPXPXJXLXJXJXPXLXJXLXLXPXLXLXLXLXJXLXLXLXJXJXPXLXJXJXJXJXLXLXJXLXIXLXIXLXIXLXLXIXHXLXLXLXFXHXLXFXHXUXHXHXfXUX{.UXFXFXIXDXgXpXgXUXUXgXfXgXfXgX{.5X{.}.{.fXHXfXfXUXUXUXHXUXHXnXnX{.{.pX{.[.'.'.,X'.'.[.8X8XHXUXfXfXHXfXIXIXfXfXnXUXFXnXnXHXnXHXaX/.{.aXHXFXbXnXnXfXfXnXbXaXpX{.{.5XpX{.[.'.&.&.5XPXHX}.&.*._ {.DXqX{./.A.C.{.C.A.z.C.L.L.5XL.h.{.5XgXqXqXqXfX/.n r r t r ` m r n m F | s.s./.}./.'./.&.) /.gXPXPXPXPXPXPXPXPXPXPXPXLXPXLXLXLXLXIXLXJXHXHXHXHXHXJXHXnXnXnXbXnXHXnXfXnXHXnXnXHXHXFXFXnXnXFXHXJXHXHXJXIXJXHXHXHXIXIXHXHXHXHXHXGXFXHXFXGXHXFXGXFXHXUXFXFXHXHXHXHXfXdXsX|.%X&X@Xa.d.d.1.B r r r y u u u u u y y y y y y y y u r y u r r r r i i i i r r : ; ; ; ; ; ; ; ; ; ; : < r ; ; r r r ; ; ; ; : i w r r u y y B M *.*.*.*.m y t y y y y n n n M ` M t y n n u u y u y y y y y y u r y y y u u n r u u r u u u u u u u u u y y y y u u u u u u u u n u u u y r n r r y r u y y y y y y y t u r r t r y u u t t u u t t t n n m M m m y t r r r y y y y u y y u n u u u u u r n y y y y r n y y r y y y u u r y y n n r r t r r t u u r r n n N n r n t r r u y t m N ( _ ) _ _ _ ( N M N n r n r r t r n r y u t y u u r u y y m F G ` <.1.(.{..X8XsXaXaXdXaXaXaXaXsXpX8X8XXX%X.X.X.XsXsXsXMXbXnXbXfXnXnXnXFXnXnXnXFXFXFXFXAXFXJXJXnXJXJXJXJXJXnXJXFXJXJXJXJXFXJXnXbXbXlXMXsXsXnXnXnXFXHXFXMX9XaX9XXX%XsX%XsX%XsX*XsX%XhXbXmXnXnXnXAXJXAXnXnXbXbXbXbXnXbXbXbXbXnXbXbXbXdXaXsXaXaXaX", -"pXgXaXaXsXaXfXnXnXnXJXFXHXJXJXJXJXJXJXPXPXPXLXLXJXJXLXPXPXLXKXLXJXPXLXLXJXKXLXLXJXLXLXLXLXJXLXJXLXLXJXLXJXJXLXJXLXLXLXIXHXLXLXJXIXLXLXLXLXIXLXLXJXHXHXUXgXHXIXUXfXUXIXFXHXJXFXgXpX8XgXfX8X/.{.gXfXJXUXgXpXfXfXUXUXHXHXIXHXUXUXgX5XpX5X{.&.z.C.'.gX5Xx.{.gXJXIXgX{.%XHXHXfXHXHXHXgX{.&.}.nXJXLXHXHXJXLX.X/.pXgXJXsX}.'.{.'.{.5X{.*.+ _ &.[.,X5X[.&.[.qX{.o.&././.&.&.o.[.#.'./.gXUX{.[.[.[.{.[.[.).{.fXfX{.[.%Xs.r t t n n t n t r r y r n 1.` &.).{.fX{.UXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXJXJXJXJXJXJXJXJXHXnXJXHXnXHXnXnXnXnXnXbXFXHXnXnXnXnXnXFXFXFXUXfXnXnXnXHXnXFXHXHXHXHXHXIXHXHXHXHXIXHXHXHXHXHXHXHXHXHXFXHXFXUXHXGXFXUXfX%X X_.d.|.oXd.G h G K y r y y u y u y y u u u y y u u y u y r r r i ; : : : * * : X X : ; ; : : ; : ; ; ; ; ; : ; ; r : ; ; ; : r r : : = ; i w u t t t y m _ M t u y f f y y u f y u r t y r n m r y y y y y y r u u r y y y y u u u r r u n u u u y y u u u u y y y y u u n r u u y y r u u n y r r y r y y y y y y y t r r t r r r r r r r r r r n n m M _ *.o.&.&.&.` n y y y y y y y y y y u y u u y y y y n y y n y y r n n y y y y y n y y y y r r y t r y y y u r n m N ( _ M 3 r r r n n n N ( _ ) ) _ ) _ *.U ( _ _ ( _ N M N n N N M n t t y y y y y y r r y t t t < B 1.{.sXsX8X{.}.}._.}.(.(.(.(.d.<.} F ` | 1.1.1.1.s.(._.}.}._.{. X X X.X8X8XaXMXbXbXbXMX9X8XhXMXbXaX9XnXJXJXJXJXPXPXPXPXPXPXPXLXJXHXbXdXsXsXnXHXJXFXnXHXnXbXbXnXbXbXMXhXhXhXsX%XXXXXsXsXsXsX8XsXsXsXsXaXsXaXaXMXbXbXbXbXbXbXaXsXpXpXpXsX", -"sXaXaXsXaXaXbXnXnXFXJXAXJXKXKXLXJXJXPXLXPXJXLXKXJXLXJXJXJXJXLXJXJXJXJXLXJXPXLXJXLXJXPXJXJXLXJXLXJXJXIXJXIXLXJXLXJXJXIXJXLXLXLXLXLXLXLXLXIXIXLXHXHXIXIXHXHXIXHXHXUXIXHXUXUXUXFXUXUXgXfXUXgXsXfXPXIXUXgXHXIXHXGXHXHXFXfX{.}.}.nXfX5X{.{.pX{.pX{.}.{.{.pX.X/.gX5X[.gXUXUXgX{.gXfXLXgX{.&.&.{.gXUX{.pX{.JXaX1.u.A.}./.C./.}.'.J.'.'.'./.` &.&.o./.'.$XGX{.N.].qX5X'.&./.z.}.{.[./.$XIXUXgX{.qXgX{.}.&.M | | | ` r : r t y t t r y t r y t t y > t n N | _.$X{.%X{.{.{.{.{.{.qX}.}.{.gXgXgXnXHXnXSXSXFXnXnXHXHXHXnXnXnXnXHXnXnXHXHXnXFXFXFXHXnXHXnXnXFXnXnXFXFXnXnXHXJXSXJXJXHXHXHXHXHXHXUXHXHXHXHXHXHXGXFXHXHXHXHXHXHXHXIXJXHXFXaX8X.X%X.X%X%X.Xd.s.B C F w u u u u y y y y y y n r y r r r i i ; ; : : : * * * : * * = = = = : < r r : ; ; ; ; ; : ; ; r ; i ; ; r : ; i w r < : w w w u t e u t y t y y f y y y f y r y y r y n y y u u u r u y y r u r y u y r u u u u u u u u u u u r n u u r r u r y y u u u y u y y y u u u u y y u y y y y y y y y r r r r n n m M ` ` *.o.) { ] +.o.{ o.o.{ _ _ M m r t t y u u y y y y y y u y y y y y y y y n y u y m n n m n y y r y n y y y y y t t 1 t r B r N N N M ) ) ) _ 3 N N ( ( ( ( ( _ _ *._ ( _ ) _ _ ) _ ) ) _ ) ) ( U + + + 6 9 n t n y y y y r m y y n n r } X X}.s.| } n n n n n n B C n r n r r t r r r r w M K F F F F ` 2.@X}.@X X8XMXbXMXXX X}.1.<.<.<.` } 1.(. Xd.1.(. X{. XsX%XJXPXPXPXPXPXPXPXLXHXFXfX9XMXnXJXHXJXJXLXPXLXJXJXHXFXbXMXsX9XXXXX8X9XXX.X.X%XXXpXpXsXsXaXaXMXbXbXaXsXaXsXpXsX", -"bXdXaXsXaXfXbXFXnXHXJXJXJXLXJXPXPXLXJXKXJXJXJXLXJXJXLXJXJXJXLXJXJXKXLXJXLXLXLXJXJXJXLXLXLXPXLXLXJXPXKXLXJXIXJXIXJXJXIXLXLXLXLXLXLXLXLXLXLXHXHXHXLXIXHXHXHXfXHXHXUXfXIXHXgXUXUXgX5XFXUXpXgXfXgXgXgXpXgXHXIXLXPXHXHXFX(.n ` 5XPXHXgXgXfX{.gXpXpX}.c.8XfX/.'.{.'./.'.'.'.'.qX/.5XUXDXgX/.V.'.'.].k.R }.LX{.{.fX{./.{.{.5X'.&.'.`.C./.sX/.qX{.'.'.{.UXHXPXN.k.3XrX[.L.5X{.yXDXqXgXGXqX).$X$XgXHXpX{./.s.s.} G B r y r t t r t n n t y y r n r r r r r w = r m M n = r N 3 M } n * r M *.&.s..XdXaXbXbXbXbXbXnXnXSXFXnXFXJXnXFXnXHXnXFXFXnXnXHXHXHXHXFXFXnXbXnXnXHXnXnXSXJXJXJXJXJXHXHXHXIXHXJXJXHXHXHXHXJXJXIXLXLXJXJXLXJXLXLXJXHXHXHXHXHXdXsX.X.X%Xs.r n n y y y y u u y y y y y r r i : : * * * * = = : = * = ; : : = = : * * * : : r < : ; ; ; ; ; ; ; ; < < ; ; ; r < : r r r w u u u u u y y f y y f y f f y y a y y u y y y y u u y u r y y y y y n r r u u u u n y y u u u n u y y u u u u u y y y y u y u r r u u r u r u u y y n u u r y y y r n n r n N M { &.&.#.%.&.o.o.{ { { M N m n r w w w u y y r y y u y y u n u u n n r n u y y n y y y u y F M m m n n y n y y t t r r n n m N N n 3 N ( ) ) _ ) _ ) ) ) ( _ ) _ ) _ ) _ _ ( ) ) ( + U U ._ ( ( _ .) _ _ ( + o + + + n u y y y y y r y n y y y F <.} B r r r y y y y y y y y y n n n n n n n n n n u r t n M n 3 2. X8X X X XXX X X@X}.}.*.3 3 @ . 2 O O 3 * @ O & @ 2 G .XHX_.s.(./.(.%XdX%XfXPXJXaXdXaXfXFXnXbXHXJXJXLXPXPXPXPXLXJXHXHXnXnXbXaXXX X X_..X.X.X8X8XsXbXbXbXbXnXbXbXbX", -"nXbXfXfXfXfXFXHXnXJXJXJXJXKXLXLXJXLXJXLXLXJXJXJXJXLXKXLXKXJXLXLXJXLXJXJXKXLXJXJXJXJXJXJXLXJXJXJXLXKXJXJXJXJXLXJXHXJXJXLXJXJXLXLXLXJXJXHXfXIXJXIXIXHXHXHXHXHXLXLXUXHXHXpXfX{.{.{.UXpXfXfXgX{.{.5X{.pXHXLXHXHX}.| | | n : | _./.1.| /.{.aXHXfXpXFXLXPX5X[.gX5X5X{.[.{.'.'.}.z...%.C.'.5X'.'.[.'.}.}.HXfX/.}.sXnXbXfXbXHX{./.5X5X{.pXsX{.}.'.5X,X4X{.fXHX'.L.[.rXrX,X3X].3X3X0XqX[.qX[.qX{.pXHXPXPXPXIX/.*.F n n y n y n y r r r r r r r r r r r r r r r i ; ; w y t r t t ; r y r r n m 3 &.sX%XaXbXbXmXnXmXbXnXHXJXnXnXFXAXHXnXFXHXSXHXHXJXnXnXnXHXSXHXnXnXHXnXHXFXFXJXJXJXHXJXJXIXIXLXJXJXLXLXLXJXLXPXJXIXIXLXLXLXLXJXLXLXJXJXJXKXJXLXnXsX X_.d.<.G K K C y y y y y y y r i : ; = * * : * : : = = = = ; = = = = * = : * * : : * * * ; ; < < ; : = : ; ; : r ; ; ; ; < < < w i i w w w u u y y f f y y y y y y y y y y y y y r y r u u r y y y r n r r n u y y u u y y y u u u u n r u u u u u n y y y r n r y y u y u n u n u u y y u u u y r r r y r r N ( _ o.o.@.o.o.{ M r r r < ; , w w w u u t y y y y y y y y y y y u u n n u n y n y u u y n y y y m n t t t t y n r n n N M ( _ _ _ _ _ ( _ ) ) ) ) ) ) _ ) _ ( I ( ( ( ( U ( + + + 3 ( 6 + + + 6 + 6 + 6 ( ( _ ( ( ( + N r r u y y y r t y y t t t y y r r < t n n n y t y y y n n n n y y y n n y y y y y y y n n n B < 3 ` (. X@X(.@X@X@X X X X}./.` . . & ` N _ &././._._.{._.XXbXnX{.s.| M O & 3 : ` {.PXIXHXHXLXPXPXKXJXLXJXLXPXPXLXLXPXPXPXPXPXPXPXPXJXFXMXsX.XsX.X.XsXsXpXaXbXnXnXnXnXnX", -"nXbXfXfXFXFXnXFXJXJXJXJXLXPXLXLXLXLXJXLXLXLXLXJXJXPXPXJXJXLXJXLXLXJXJXJXJXJXJXJXJXJXJXJXJXJXJXLXJXJXJXJXJXLXLXJXLXLXJXLXHXHXJXLXLXLXLXHXHXIXLXIXHXLXHXHXIXIXLXIXIXHXHXgXgX{.{..XgXpXgXfXIXFXfX8XgX$X}._.(.1.n ; ; i r <.| ` F M ` | z./././.}.}.c.}.{.(.{.}.gXHXpX}.A.A./.{.{.gXfXHXLXIXHXHXfXFXFXFXHXFXHXHXLXJXJXLXLXIXJXLXHXpX{.8XnXpX5XgXgXgXgXfXJXgX{.'.z.&.s.&.&.&.)./.&.&.s.s.A.&._ _ | /.&.| N * n r r r r r r r r r r r r r r r r r w ; ; ; : : r ; = ; ; r r r r r r r t r r r n s.{.}.{.{.sXMXmXnXnXSXnXFXFXHXFXHXnXHXHXnXHXnXnXSXHXHXHXHXSXFXHXnXnXnXnXnXHXJXJXJXJXKXJXJXJXJXLXJXLXLXPXLXLXLXLXJXJXLXLXLXJXJXJXJXLXLXLXLXJXHXfXfXaX Xd.>.B B y u y y r r r ; : = : = = = : ; ; ; ; ; ; = = = : = = = - : : : : = : ; : : ; ; ; < ; ; ; ; ; ; ; , w r , i ; r w r ; i w i w w w w t y y y y C y u y a u y y u y r y r r y r r r r r r r r r r u u u r y u r u n u u u y y u u n u u u u u y y y r n r u y n u u u u u u u u y y y y y u w n M _ o.+.+.X.) M N N r w r t w t t r t r r r t r y n y y y y y y n y u y y n y u n n u y y m n y y y y t r r u u r r y n M { *.*.o.*...o.) ) ( ( ( _ _ *._ ( ( ( + + + 6 6 + + + 3 + + + 3 ( ( + + + N ( ( ( ( ( ( ( N 3 n : : r y y y r r n y t t u t t t t n y y y y y y t t t t y y n r r y n y y y y y y r y y y n < n n < < <.1.` n B <.(.(. X X X@X2.<.>.<.} <.2.(. X X%XaXnXKXLXHXLXPXLXFXHXdX%X X X XsXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXLXJXpX.XFXPXPXPXPXPXPXPXLXJXHXJXHXnXnXbXdXaXaXdXaXbX", -"nXfXaXdXfXnXFXJXJXJXLXKXLXJXJXJXJXJXJXJXJXJXJXLXJXJXLXJXJXKXJXLXLXJXLXLXKXLXLXJXJXJXLXJXJXJXJXJXJXJXJXHXJXJXJXHXJXLXLXLXJXHXLXLXLXLXHXIXIXHXLXLXLXLXHXJXHXUXHXIXIXIXIXgXgXpX{.5X{.{.{.5XUXgXDXgX{.| N u n y r y y n y d.{.#.H.P.J.`.P.P.'.C.k.'.x./.'.&.{.HXPXFXfXJXFXfXIXJXLXPXPXPXPXLXPXPXPXIXUXfXJXLXHXKXPXLXLXLXHXfXfXgX{.}.}.gXHXHXJXpX/.{.[.[.{.5X5X{.}.} r n i r n n n m n : w r i # i r , t n r w i r w w r r r r r r r r r r r r r r : r r ; : r ; : r n t r r r t r t r r r r t d } /././..XMXbXnXnXHXFXAXnXAXFXnXAXHXSXFXFXHXHXHXHXFXHXSXHXHXHXnXHXnXHXHXJXJXJXnXJXKXLXLXLXLXLXJXJXLXLXLXLXLXLXLXLXLXLXJXLXLXLXLXLXJXKXKXHXnXpX X(.<.C n r r r r r r i i $ ; ; ; ; i ; : i ; ; ; = ; ; = = = = = : : : ; ; ; ; ; ; ; ; ; ; ; ; : : , w r i , r t w w w w w w w i r r w r r u u t t y y y y B f f t u u y r y r y y n r r n y y r n y n r n r n u u u r u u y y r u u r r u r r u u u u r y y r r n r u u u y r u n u u u y y r y r u m _ _ o.o.O.] ) M n r w w r y y t y y y r r y y y r y n y y y y y y r r r n y y y u r n y y u u y y n y y y r n C n r r n m N N ) o.) ) ) ) 6 9 9 U ( 6 6 T T U 6 6 6 6 U 6 8 6 + + 6 6 ( _ _ _ _ ) ( ( ( ) ) ( ( ( N 3 3 3 n n n 3 r r r r y y t r r r t t t y t t t y y y y r r y t t y r y y y y y r y y y n y n n y y n n F t n t n >.<.<.2.(.2.(.}. X@X@X(.<.B B < <.2.<.} ` 2.(.@X X X X.X%XXX XoXlXJXnXJXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXPXLXJXPXHX{.{.nXLXPXPXLXLXPXPXPXLXPXLXJXJXHXbXbXaX", -"HXnXdXaXbXHXnXHXJXJXHXHXHXJXJXKXKXJXJXJXJXJXJXJXKXJXJXJXKXKXKXJXLXJXLXKXKXJXLXLXKXJXJXJXJXHXJXJXJXFXHXnXFXFXJXHXHXHXJXHXJXHXJXLXLXHXIXIXIXIXPXLXLXIXHXIXUXfXHXHXfXHXUXHXIXfX{.{.{.{.{.{.pXgXUXUX&.# r r n r y n y t t y /.C.H.P.P.:XP.:XP.P.:X`.,X`.`.4XA.z.fX5X8XPXLXLXPXPXPXLXLXPXPXPXgXgXfX/.'.'.C.pXPXLXLXLXPX{.*.&.C.x.z.*._ /.sXHX{.*.'.,X,X,X4X2X,X[.&.M ` *.| ).[.5XqXqXu.M M ` &.s.&.u.` ` /._./.s.s.1.M N n r r y y r r r r r r r r : r r ; : r r : r r ; r t t r n t n y y y y r r n &.&.c. XbXmXnXnXFXnXJXJXAXHXnXnXAXnXFXnXJXJXAXFXFXFXFXAXFXJXFXnXJXJXJXAXnXmXJXKXJXLXLXJXKXLXPXLXLXJXLXLXLXLXLXJXLXLXHXHXFXfXaX}.}.}.}.}.(.|.s.u r r y y r y r r i = : : : ; : ; ; : i : i r : : = ; ; : ; i : r : : ; ; < , r ; ; ; ; ; i w r w w r r r < , < w w w w r r w w r r r y y f y u t y y f y f y y u y y y y r t t r y r y r n y r r r r n y u u u u u u u u u n u u u u y u u y r y r n n r r n n y r y y y u r u u y r u r y y t N ) o.o.o.o.' H n u r u r r u y y r y y y y y y y y y y u y t r r r t u t t y y y y m C m y y y y y y n N N N M ( M ( H _ M ( 8 6 _ o.o.] ] ] ] T W T W T Y ~ W Y 7 8 Y Y 8 7 7 7 5 9 5 6 6 U 6 5 8 6 6 6 6 6 3 N N n n r N _ U N _ _ N N N N M N N N N r r n r r t t u t e t t r 6 N n n n t t n r t y y y r y y n y r n y y n n t r n y B C G 1.(.@X(.(.(.g.(.2.>.< < B n n r t t y n C G ` F F F C n y n F G <.s.1.(.{.%X{.(.(.(._.(.s.s.<.1.s.s.(._.{.%XfXnXaXMXdXaXHXJXLXPXPXPXPXPXPXJXJXJXJXJXHXnXnX", -"nXbXbXfXnXHXHXHXLXLXLXLXHXbXJXJXJXJXLXJXJXLXJXJXJXJXJXJXJXJXJXJXJXJXLXPXKXJXJXJXJXJXJXJXJXHXJXJXJXJXnXFXHXHXHXHXFXJXJXHXJXLXLXLXLXLXLXLXLXLXPXPXLXIXIXHXIXHXfXUXUXGXUXIXPXPXHXHXUXfXIXIXLXIXgX{.}.n r y y y y y t y > _ L.L.I.K.P.I.P.P.I.I.:X`.'.J.`.[.'.`.`.z.'.fX5X{.qXgXLXgX{.{.UXPX'.J.,X,X].C.{.fXIXLXHX/.}.pXpXA.x.`.x.#.1.}./.nX8X_ *.C.'.z.'.,X[.&./.z._ '.uXtXtXqXtX{.*.&.A.'.L.'.C.A.N.&.) o.A.{.{.{.}.&.N n n > ; r t n n r r r r r r , ; w ; n r ; : n ; 2 r r r r t r r r r y t n ` *._ *.}.XXMXnXnXFXJXnXFXHXJXJXJXJXJXFXFXnXJXFXAXFXJXFXFXAXJXFXnXJXFXnXnXnXJXJXLXLXLXLXPXLXLXKXLXLXLXLXJXJXJXJXHXHX.X(.(.(.d.(.(.(.1.1.` r w u y y y r r y r r : i i i ; i ; ; r ; : r : : ; r : r ; r r : : : ; : : < ; ; ; : r r r r i r w ; ; , < < < r r w w w w r i i w r u u u u y u u y f f f y y y f y y y y y y y t y r n n r n y y r y y y y u y y u n y u u u u u u r n y r n r n r r n r r r y r y u u y y u u u u y y y y t y _ ] o.+.] ] _ m r y r n u y y u y y u y y r y y y y t u t t t n N N N m n r t y n r n N n n n r y n N n n N ) o.) ) .) T ] o.] T T ' ' ] ' ] Q Q W 7 W ~ ~ Y W 7 T W 0 Y 0 8 7 5 5 9 q q 9 q 5 5 9 U U ( _ N 9 r N N N ( 6 ( o. ._ . .) 6 ( ( ( ] ) ) ) ) M N M N n n n r r r r 8 ) ( ) _ _ ( ( _ ( N r y y y y y y y t y y y y t y y y r y y r d < } <.<.` <.` B d < n B r r u t r t t y y r y r t t t t t t r u w u r w i r r r r r r r r r r r r r w r } 2.} } 1.(.(.(.(.}.aXnXnXnXnXMXFXHXnXSXbXbXbXnX", -"bXbXbXbXdXnXFXJXPXPXLXHXLXHXFXHXPXKXLXKXLXJXPXPXPXPXJXJXJXJXJXJXHXFXMXMXJXJXJXLXLXJXJXJXJXLXLXJXFXnXHXFXHXHXHXHXHXHXHXJXIXJXLXLXLXLXPXPXLXLXPXLXPXPXPXPXIXPXIXFXHXfX8X}.{.pXgX{././.{.).}.}.s._ | F r y y u y y r r ` ].].P.P.P.:XI.`.P.`.`.5X{.&.l.J.J.J.P.,X'.'.5X:XJ.l.#.5X{./.j.x.{.fXz.`.4XC._ pXPXPXPXHX5X&./.'.#.x.`.,X'.#.o.*.pXJX/.*. .'./._ /.}.5XyX/.&.qXrX0X0X3X].{.%.k.k.h.V.'.L.V.].z.o.&._ ( ) ( &./.&.s.&.| } n < ; ; > r r : , 3 n N r m * ; n 3 ( M ` : 2 ; r r t t y y y t t r n M *._ &.(.8XJXnXJXHXJXHXJXnXJXJXAXJXnXFXFXFXJXJXFXFXAXJXnXJXFXJXJXnXnXAXFXJXKXPXLXLXLXLXLXKXJXPXLXLXJXJXJXJXHXfXsX X(.(.(.(.{.8X X2.F t y r y y r r r r i w r r r r i i r r r r r r r r r ; ; r : ; ; , , r , < r : r r , w r r r < r i ; r r < ; ; , < : r w r r w w w w r w e e e u u y f y y y f y f y y y y y f y y y y y r r r r r u y r y r r r u y y u y u u u u r n y u u n r y r r r u r u y r r u y u y r r u u u y y y n r M o.o.o.X.( m r t n u r u u u y y y y y y y y y y y r t t y t n _ *._ _ _ ) M n t t n N N n y r r y n N N n N _ _ ) ) o.) ) ( ] ] Q ~ W W W W ~ ~ ~ Y 7 0 Y Y Y 0 8 Y 8 7 7 7 7 5 9 9 9 5 7 5 5 5 9 5 8 6 9 9 9 6 8 ( ) o. ._ ( _ o.o.*.) ) ( _ ..*.) ) ) ) ) ( ( o.) N ( _ ( ( 6 6 U T ( ( ( 6 6 ( ) _ ( n r y r t u e u y u u y r r t t t y t r n n n N 3 N 3 3 3 N n r < e r n n < r t t u t t r r e t t t t t y u u d u y u y y y r u y y y n n y y y n C <.<.<.<.} G } G G } | | <.<.<.} d.fXnXnXbXfXbXnX", -"HXfXaXbXnXHXnXLXPXPXPXPXLXIXLXJXJXJXJXJXJXJXXX(.(..XJXJXHXHXnXnXHXaX.X8XJXHXsX X{.%X%X.X.X%XbXHXJXHXFXJXJXFXFXFXHXFXHXfXaXJXLXPXHXLXPXPXPXPXfXgXpXgXpX{.%X{.1.| &.` F n N M } } N n n i = * w r i r y y y r r r r n &.A.A.L.].!.:X3X,X:XgX5X{./.C.J.J.`.'.J.`.J.'.[.l.z.J.J.'.'.`.,XC.*.8X/.l.,XJ.#.*.fXPXPXPXPXIXfX{.}./.#.,X[.`.&.*.HXPX/._ z.c.1.}.'.5XUXIX{.[.uXwXuXwXrXC._ &.#.@.N.[.[.,XT.'.&.#.C.C.z.&._ /.}.{.{.}.{.{.{._.a.<.| M 3 + N 3 3 3 ( *.s./._ _ _ *./.&.` o 3 r r n r y r t y y t ` &.&./.1.1.}.{.bXbXnXnXAXJXnXJXJXJXFXJXJXJXFXFXJXJXJXFXJXAXJXFXFXJXFXJXnXHXJXPXLXLXLXLXLXLXPXJXLXJXJXJXFXfXpXaX{.{.{.{.{.}.}.(.1.F r y y y r y y w i i r r r t r r i : : r : ; ; : ; i < ; ; i : r r r t r r r w w r r r , , ; ; ; : : i ; ; ; , ; ; < , r ; ; ; i w r w w w w w t t y f f f f y f y l f f f y y y y f y y u y y u u y y n y n y u y y y y y y r n u y y u y u u r n r r n n u u u y y y y y y y y n u u u u y n M _ ) o.X.#.] N w t r r y u u u y y y y y y y y y r y y r t u u r _ o.] ) ) ) ) _ n n n N N n n N N N N ( ( ( N 6 + N N ( ( ) ] W W W W W Y 7 T W W 7 7 Y 7 T Y 0 Y 7 0 7 7 5 7 5 5 q 5 9 + 5 5 9 5 5 9 q 9 9 5 6 ( ( U T R ( 8 6 T T U 8 ) _ ) *._ ) .) *. ._ _ *.*.{ ) ) o.o.*.) ( 8 6 9 6 9 9 + + ( + N m r u r r r t u u t t y r y r t t r r t r 3 N ( ) ) ) ..I ( ( 6 3 n N N _ _ N 6 n t t r t r r t r y t t y y r u t r y u u r y y u y y y y n y y y n t 3 i i r r r r u r r u w r w u u i <.aXFXHXHXHXKX", -"A.A.N.A./.HXPXPXHXJXLXLXPXPXPXLXJXJXJXJXHX.XF ; - ` pXJXJXJXJXHXnXbXFXJX}.| ` C n F F F M ` c.{.}.8XHX.X.XHXFXfXnXnXFX}.` (._.(..XfXpX{.(.1.| ` M M m n n r * # ; w r t w > w t e y y n B n y y y y y y y y r r u w r m _ A.>X].A.z.&.| <.G m &.x.l.z.C.l.l.x.`.x.J.'.`.J.`.P.J.`.H.j.z.C.l.'.x.x.( /.PXJXJXJXLXLXPXPXfX/.z.[.5XpXpX{.}.( j.z.&.&.FXgXIXPXPXqXA.0XqX3X2X2X[.&.) ..%.N.P.].].rXrX5XL.N.C.'.L.A.C./.A././.z.).{.[.{.)./.%X.X/.}./.&._ /./.'.{.N.{.'.z.}.'.}.}.&.r r t n r n y y t r ` | | *.1.*.s.s.c..XbXmXJXJXJXnXJXJXJXJXAXAXJXJXJXFXJXFXJXJXnXJXJXnXnXJXHXAXJXLXLXLXLXLXLXLXLXLXLXLXJXJXHXHXfXsX_.}.(.(.}..X{.(.s.<.G r y r r r : i r r r r r r r r y n r r r r r r r : n r r r r y t r r r , r r w ; ; ; , : < < ; ; ; ; ; ; < ; ; : , : w ; ; < < > < < w w w w w w u u y y f y l f y f y f y y t y r u w y r u y r r r r t y y y y n y y u u y u u u u u y u r r y r y y y y u u u r y y y y u u u u u u r u m N _ { ] X.X.+._ N r r r r u y y y y y y y y y y y y y u t y n m ` o.o.o.o.*.( N n t M { _ ( N r N _ M ( ) ) ) ] ( ) ( ( + 6 W ~ Y Y Y Y Y 7 7 Y 7 7 T 7 7 Y Y Y Y Y 0 7 q 7 7 5 5 7 5 5 5 5 5 5 9 9 8 6 9 5 7 8 ( ( 8 5 9 q 5 5 7 8 7 5 9 8 ) ) ) 8 ( ) *.) ) ( ( ) E U ( ( U 6 U U 6 8 8 8 7 8 8 9 9 6 8 9 3 u u u u t r r N N r r N 3 : : r r u r n 3 6 ( *.) ( ( N ( U 6 N _ _ ) ) ) 6 9 3 * i r r u r r r t t e u r r r u u u u y t d y r y y y y r r y r y y n n y n n y y t y y y y y y y y y i <.bXHXJXFX{.", -"'.'.[.[.{.JXPXPXLXLXLXJXJXHXKXKXLXJXJXFXFXaX} r n n F <.1.<.} | <.<.<.1.m ; < 3 n } _ 3 ( _ _ *._ &.c./.&.&.{.FXgXpXFXsX` n n < F L F B t w < 1 t r < < : r t t t r r r r y n n B y d y y y y y y y r t t r r t r u r w , > n M M r < < ; > w , ` '.z.'.J.'.`.[.,X].[.,X'.J.J.J.J.J.l.z.z.k.j.k.j.x.#.*.{.LXHXLXLXPXLXIXPXPXFXHXPXPXUX&.z.#.j.z.j. .{.PXPXPXPXIXqXs./.{.Y.n.V.V.l.@.C.j.@.j.h.h.v.h.#.%.#.%.l.l.k.C.C.C./.'.z./.}././.}.).HXIXIXPXLXHXUXpXpXgXUXHXgX'.DX5XA.5X5X_ w n y t r r r t r r t B 3 _ M M _ ` &..XmXnXAXAXJXFXJXFXFXFXJXJXmXAXJXFXJXJXFXJXJXJXJXJXJXJXJXJXJXJXLXLXPXLXLXLXLXKXLXLXLXPXPXKXaX.X.X(.} y 1..X{.{.(.<.n y y r ; i r r r r r , ; , r r r r r t r r y n } ` m < r r r w i , , < , : ; ; ; , > , ; , ; < : : < : ; : , ; ; , : < ; < ; < < > w w w w > w w w u y y f l a u u u t y y y n n ` | M M F M A.| ` M N n r y y y y y n u y y u u u u y y y y y y y y y y y y u u u r y y u y n u u y y u y y y M M _ { o.] { N N m r r u y y u r u u y y y r u y y u n _ o.o.o.o.] *.o.) U N n N _ ) ( 6 ( N 8 N N 8 5 ( _ ] o.o.( + 6 Y T 7 7 7 7 7 7 7 7 Y 7 Y 7 7 Y Y Y Y 7 0 7 7 7 8 7 7 5 5 5 9 q 5 5 5 7 8 9 9 6 5 7 7 8 7 9 9 8 T W W 8 W W 5 6 6 6 6 9 5 ( ) ( U 7 Y Y 8 5 q 5 5 5 5 q 5 8 8 7 7 7 7 5 5 + 9 9 5 9 N r i r 9 9 9 6 6 T T 6 + + + n 3 + 9 6 6 ( ) ( ( ( ( ( ( ( ( ( N + ( ( U 9 9 + 9 + o r r t r r n r N H N N 6 N m r r n y r y y y t t y r t t t y y y y y t t t u t t t t e e t y t u e s.JXJX.X).", -"PXPXPXPXPXPXPXPXPXIXHX_.| _.nXLXHXHXJXHXHX%X} r n n e u r < > $ < 1 < < n _ _ _ ) .. .) . .I . ... .*.*.......*.z.&.&.&.&._ N r N r r r y n n n y n y y y t t r y n n y y t t t t e t e t y t r n r t r _ { n r r t r r y t > $ 1 < , r r t r 1 n N _ &.&.z././.z.&...j.k.l.x.J.J.l.l.#.&.z./.z.x.k.j.z.&.&./.pXHXHXUXPXPXPXPXPXPXFX&.x.l.j.j.z.#.../.HXPXPXPXPXgX/.k.h.h. . .j.#.@.@.....#... .k.j.@.) ) ..... .C.gX{.{.pX{./.*.}./.}.'.}.A.&./.qXHXgXHXPXLXIXIXUXGXpXgXqX1.n r r r n t y y t t < B ` ` &.| &.1.&._ 1.9XnXnXJXnXAXJXAXJXJXAXJXAXJXJXFXJXJXnXJXJXnXJXnXJXnXJXJXJXJXLXLXLXLXLXLXKXLXJXJXHXsX.XXX%XsX X(.` 1 y | s.1.` F r t r y n r r r r r r r r r r r w ; ; ; ; < r r n n y r ; : ; ; ; , , < , , > , , < > > > > , ; : ; ; , r ; : ; < , ; ; r ; < < > < w w w w w w w w t y f f y B C n n F ` | /.N.A.B.o._ &._ _ %.o.o.&.A.&.` t y y r u y r u y n n y y y y y y u y y r y y y y y y y y y u y y y y u y y y y y y r n n r n n N N M m y n m u u u u y y r y r r r t u e t N ) ( ' ] ] _ _ _ U 6 3 3 N _ ) ] ) R ] ' ( ] ) ( ( T T T 6 6 9 6 7 7 7 q 5 Y 7 7 Y Y Y Y Y T Y Y Y Y 7 7 7 Y 8 W T 8 7 5 7 5 8 8 7 5 5 8 9 9 6 8 7 T 8 8 9 9 8 W W T 8 7 8 9 9 9 9 9 5 7 8 8 8 7 5 9 + 9 5 9 5 q 9 9 q q 9 5 5 5 5 + 9 5 6 5 7 W T T 7 8 8 T 5 7 Y Y 8 5 8 5 5 5 8 T 7 7 Y Y T Y U ) ) ) ( ) ( ) U + ( ( U 6 8 W W T 7 9 9 8 6 8 T ] ' W W ' W W Q ( H N r t t y y t u e t y t t u r w u y r u y r u u r r u t r t r r u u t d.IXLXLX", -"PXPXHXIXPXPXPXPXLXLXpXM r n ` 1.s.s.} } | n n y y n n n n r u r r N _ *.#.#.#.#...........j......... .......@.....j.j.j.#.z.w.[ w.O.$.+.] { O.O.[ ' _ N N r n n r r t t t t e e t r B n n n N ( _ _ _ N M X.X.o.N r r { *.n t M M N M M n w w w 1 1 | }.5X`.'.'.,XJ.z.z.J.l.C.l.z.l.l.k.j.k.o.#.#.k.k.l.z.z.&.z./.*.}.PXPXPXPXgX{.UXFXc.#.x.l.C.z.z.#.}..XUXHXLXPXPXPXIXfX{.{.[.z.z.@.z.&...) I ( .#.#.o._ 3 I ) U ).}._ &.gXIXpX&.#.&.C.)././.z.A.&./.{.qXIXIXIXIXIXIXDXgXqX&.M , r r r r y y y y e B &././.(.` *.1.&.*.}.MXnXmXmXJXJXJXFXJXFXJXJXHXFXAXJXFXAXnXFXJXJXJXJXJXHXJXJXJXJXKXLXLXPXLXLXLXLXJXHXHX.X_._.{.sXbX.X_.<.<.<.B r r t y y y r r r r r i r r r r r r r r r r r : ; ; ; r w < < : , ; < ; = ; , , < w w > > > > > > r : ; ; ; ; , : ; ; , , ; ; < ; < > < w w > 1 w t t d g B C M | u.&.s./.).qX[.o.N.$.X.] X.%.@.X.#.] ) ( _ N N n n n n r u n r u r u y u y y y y u u u y u u y y y y n y n y u y r r r u y y y r n r r r r t t t y n n n r N N m n r r r r y y y r u u u n M ] ] ] W 6 + + 6 6 N 3 N _ o.o.) ] o.X.( 7 T T W 0 W Y T Y 5 5 Y 7 7 7 7 Y T 5 Y Y W W W W Q Q ~ Q W ~ Y Y ~ T ' ' ( 8 T ( 8 8 8 8 5 5 7 8 9 9 8 8 8 T T N 8 ' M H 8 6 9 9 9 q 5 8 5 9 8 7 9 5 5 5 9 + q q 9 q 5 9 q 9 9 9 9 q q 5 5 7 7 Y T ] ] Q W W 8 7 7 5 7 Y 6 9 q 9 9 5 7 W T T T T T 8 8 8 T U E T R ) _ ( I ( + 5 Y 8 W W W ~ 8 7 0 0 W W W W W W W W W T W ] _ y y d t r r n n y y t t u u u m N n r r m m N N M m N N N N N N H f.fXPXPXPX", -"HXIXPXPXPXPXHXfXLXPXHX(.m r y r r r r t t t n n n y n n u u y n N ( . ./ @.@.@.@.@.$.%.@.%.$.%.h.h.$.h.h.h.k.j.j.j.k.V.k.%.$.w.B.O.X.%.X.@.h.X.^ ^ / @.X.O.X.] ' M n t r r n _ _ ] o.) ) ) ) / ] X.X.X.X.X./ @.o._ _ X.o._ ( o.k.z.'.].z.&.` F C n i M &.&./.&.z.C.J.J.l.l.l.l.#.j.l.#.#. .&.}.&.A.o...X.#.#.&..XfXgXgXHXHX{...k.C.'./.}.qX$X/.&.&._ }.&.) #.5XIXgXIXIXPXPXPXPX}.) @.j.C.C.o.&._ 3 I 3 3 _ _ &.*.( ) &.#... .&.#./.z.j.l.%.&.{.{.}.'./.{.gXfXIXPXPXPXPXGXUXgXqX/.r : , r t r y y y r n F | &._.| n < ` 3 1.MXbXnXJXJXmXJXJXJXmXAXJXJXJXJXFXJXJXJXJXJXJXJXJXJXJXHXHXJXJXJXKXLXLXLXLXLXLXLXLXLXPXKXJXJXHXfX{.(.s.} n y r r r r r r , w r r r t u r r r r r , : : r r ; ; ; ; i r , ; ; ; : ; < , ; < ; , w > w > w > $ > < , ; ; ; , , , , < < > > > > > > < < > w t y y y f k C | +.&./.[.{.{.qX[.[.].$.X.X.X.X.X.] ) ) R ) ( ) ) _ ( _ ( ( N N n 3 n < n n r t y u t t t y y r u u u u y y y n n y y r N ` ` M n y y t y y t y r y y u y y y t u n u n N 8 0 0 8 N N N u u u r r n _ o.8 7 9 9 8 7 7 N 3 + _ ._ ) ) ' { 0 0 0 0 0 0 0 7 0 7 7 7 7 7 5 7 Y Y Y 5 + T Y 5 7 T R ! ^ X.X.X.X.O.O.] ] { ( { ] ' ' T R T 8 6 9 9 9 5 7 8 6 8 W 8 W 8 9 9 9 9 8 9 7 7 7 8 8 9 9 9 9 9 6 5 9 9 7 6 7 5 5 7 5 5 5 5 q 5 5 7 T T W ] ] X.X.] ] Q 8 7 8 8 8 6 6 8 8 8 8 8 W T ( T W ( 7 7 8 T T T 7 7 Y T T T ( ( 9 8 0 8 W W W W ~ W W ' W W W 8 W 0 0 W W W T ' { N H M H { { ' { { ` { _ M H { ' m n y t M o.' ( ] o.+.] ] ] ( T ] u.A.).{.pX", -"&./.{.fXPXPXPXIXHXHXLXHX(.n m M n n y y n y y y y n r M _ _ _ _ ] &.*.o./.#.&.#.N.k.k.&.&.%.%.@.^ O.$.$.$.$.$.h.h.%.%.C.k.N.N./.) X.X.@...%.k.X./ / / ^ / ^ ^ ^ O.O.{ ' M N N ] Q R X.@.R X.X.X.X.X./ ) ) . .X.) / X.X.X.X.X.#.o.%.l.J.J.J.J.C.&.*.*.| *.&.&._ N ` C.k.j.#.#.z./.C.&.o./.&././.*.}././.}././.A./.JXfX}.fX{.}./.l.C.x.o.%XfXgX}.&.R &.k.C.h.C.'.).N./.{.PXPXPXPX}.) @.@.Z.'.C./.+ 3 &./.&._ *.{./._ *.#. . . ...@.@. .@.@.#.o.'.c.&.&./.{ *.}.gX}.pXIXPXPXIXGXUXgX'.| y t y y y y u u u r n m r 3 < B N _ /.%XaXbXJXmXJXJXJXJXJXJXJXJXAXAXJXJXFXJXFXnXJXJXnXJXnXJXJXJXJXJXKXHXfXHXKXJXJXHXJXJXnX%X{.(.d.a.` C r w r r r r w r w r r r t r r w w w w w w , r r r r ; i r r r r w < < < ; ; ; ; ; ; ; ; ; w > w w w > < > > > , , , < > > > < < > w w > w w t f f B B B M | | | ` A.A.).A.[.#XK.C.#.X./ X.X.@.$.@.] ) ) _ _ N ( _ ) ' _ ( ( _ ( _ _ ) ) _ ( _ N n n r t e t n y y u u m M m r r r r y n r M &.&.F r r w u u r n y y u r y r y y N 9 N u u r 7 ~ ~ ~ ~ ~ ~ W W N N m r i r N 8 q 8 W 0 7 9 N r 3 N 6 9 9 9 9 q 0 7 8 7 7 9 q 7 7 7 7 7 7 7 Y 7 5 Y W T T q 5 T T E Y Q ^ O.] X.X.+.@.O.] { { ] o.] ' W T 8 5 9 9 9 9 9 9 9 8 7 8 9 + + + 9 9 9 9 7 7 8 8 6 8 8 7 7 7 5 7 8 6 8 6 7 7 7 7 7 7 5 5 5 9 5 7 7 W ' ] X.%.+.X.] W T T 8 8 7 7 5 5 7 8 8 8 T ] W W ' ' T 8 7 6 5 5 9 6 8 8 8 8 8 8 6 6 8 8 8 0 W 8 W W W ' W T W W 0 W W W 0 W T Q ] Q Q [ +.+.+.[ [ +.+.+.+.+.+.+.&.{ H m r N { o.+.Q ( ( 8 T ( T ( T T T T 5 6 ", -"T Y U ) A./.8XLXPXLXFXnXaX<.r n n n n n n n n n n n } u.&.o.X.X.#.&._ &.{./.{.}././.)././.&.o.E u./././.+.o.&.A.'.$X{.{./././.o.] @. ./ ^ O.X.Q ^ ^ ^ ^ / ^ Q X.X.^ $.$.O.O.X.R E E R Q ) X.R Q R R R R R R R / . . .X.X.@.@.@.@.X.k.J.#. .z.@. .%.k.k.V.J.C.&.M n M ` ` ` | &.1.` ` ` *._ U ( U _ /.}.fXfXLXPXbXPXHXJXPXPXfX/.#.o.&.}.aXaX$X/.&.h.l.k.k.N.].N.#.Z.X.&.fXqXHXgXz.z.#. .V.#.) ..z.}.HXPX{.3 *.5XUX&.&._ ) ) #.z.o.) j.#.j.k.V.C.J.z.A.{.}.&./.z._ *.5XpX{.{.{.5XgXGX&.n y y y r r y y y r r y N _ *._ ( *.sXlXMXmXJXJXJXJXJXJXJXmXJXJXJXJXAXJXJXJXAXJXJXFXJXAXHXJXJXJXJXJXJXLXaX(.(..X_.(.d.s.} m n r $ # i i i w , w r r r r r r r t t t u r r u w u r r r w i : ; ; w r r < < r r < ; ; ; ; > ; : ; ; > > > w w w w t u t y t t u t t u u w t t y y B B V V V C n C _ *.o.&.u.[.qXgXqX%.%.@. .X.X.X.X. . .X.] ) ) ) _ _ _ _ ' ( H ` ( _ _ _ N ( ) ) ) ) ) ) ) ( N m n r y y n n y n M ' { *.| M y y u y y r r m M F M M 6 6 N n m 8 ' W N 8 ~ 0 8 N 9 5 7 7 Y Y ~ ~ ! ! ! O.+.' H N n N T 9 8 7 9 8 7 8 r : N 8 8 7 9 O @ 7 7 7 7 q q q 7 7 7 7 7 8 Y Y Y 5 Y T 7 8 5 5 5 5 6 U R R Q Q Q ] X.X.X.] ] ] ] ] X.X.] W 7 8 8 6 9 9 9 9 5 8 9 9 9 9 9 9 9 N 9 9 6 8 8 6 9 9 9 7 9 6 7 7 5 8 7 7 7 8 8 8 7 Y Y 7 7 7 7 8 8 W ] ] +.+.+.+.] Q W T 6 7 8 7 7 5 Y T W ] Q R X.] T ] ] T 8 5 6 9 9 9 6 8 6 8 8 6 6 8 8 0 8 8 W T 8 8 W 0 ~ ' 0 T W W ~ ' ' ~ ~ W ! ! ~ ~ [ [ ~ Q ! ~ [ [ O.[ +.+.+.+.+.+.' [ o.&.+.] T 8 T T ( ] T ( ' _ ] ( N ", -"@ 9 T 5 + + ) &./.{.JXHXfXs.; t y r n n y y y n y t G } m | u._ /.o.R &.&.*./.&.*.&.&.z.o.&.) /.sX}./.&.A.o.u.&.A.)././.A.o.X.Q $.O.Q ^ O./ ^ Q R R Q ^ Q Q E R Q Q ^ Q R / ^ Q E E T E E E E E R E R R E R R E R .) ) ) .] R R .@.#.@.o.o. .@.@.@.X.X.o.o.( M N m N N M ` *.) N N : N ( ) o. .X.R .#.#.u.}.{.'.[.'.'.{.A. .'.A.X.).{.o.%.%.j.#.X.) #.'.C.L.V.h.R qXLX}.&.[.'.C./.'.[.'.&.*.5XPXIXIXFX5XgXPX{.#.C.E &./.s./.{.U ..j.l.j.l.H.P.>X'.'./././.&./.{.UXUXgXqXgXUX5X}.M r r r y y r y y y y u M _ ..o.( ( ) /.%XbXJXJXmXJXJXJXJXJXJXJXJXJXJXJXJXJXAXJXFXJXJXJXAXJXJXHXJXJXJXKXFX(.m t F C B t > > r r y u n i i r r t y y r y y y t t y t e u u y u u u r r : r r r r r r r r r r < ; ; ; ; ; ; > ; ; < > , > $ $ w u t y u u y y y y f y f t t t y B V C B B B B m m B M &./.5XqX[.gXqXA.+.X.X.X./ / ) .) .R ) .) ] _ ( ) ) ( ) ' ( ) ( ( _ _ _ ( _ _ ( ) ) ) . . .) _ M n y n n r w ` &.&.&.` m y y r m M ` o.+.+.+.' 7 8 8 W W ~ ~ ! ~ ~ ~ ~ W 0 ~ ~ ~ ~ Y Y ~ ~ Q ~ ] +.o.] [ [ W 0 7 0 0 5 9 8 7 6 + 3 r 8 8 7 7 7 q 9 7 7 7 7 5 7 7 7 7 7 7 Y Y Y Y 5 Y + + 5 Y Y U Y T T T Q ] ] ] Q ] ] Q Q ] ] ] W Q ] ] ( H 8 9 N 8 9 8 8 8 6 9 9 9 9 9 8 6 6 9 9 6 6 9 8 9 9 8 8 8 8 7 8 8 7 7 Y Y T T Y Y T 8 8 8 W T 0 8 ] O.X.+.+.X.] ] T T Y 7 7 7 Y 7 5 5 5 5 Y ' R ] +.T T T 6 W Q W 7 5 9 9 9 9 9 6 8 W W 0 0 8 8 W W T 0 ' ' 0 W 8 8 W W ' ! ! ! [ [ ! ! ! ! ! [ ! [ [ ! ! ! ~ [ ] [ [ O.O.+.+.] ' { ( ( 6 6 8 6 ( ) ( ( ( ( T 8 6 ", -"Y Y 5 5 T X.] 5 U ( /.bXgX{.(.` n F n y y n n y y y r < w C F N &.&.( o.&.( ( ( &.+.) +.&.o.o.A.&.X.o.R o.+.] %.X.] X.@.%.#.$.$.X.^ X.O.X.R R R R Q Y Q / Y W Q Y Y Q R R ^ / Q E E Y Y Y E E U U E Y E U U U U U U E R ) ) R R R ) ./ ... . .) X.@.#.%.#.@.+.@.) ) .) ) . . .X.] ] ( E .@. . .@.@.#.#.#.@.h.h.h.l.k.j.J.[.J.C.$.k.A.A.@.k.l.#.j.z.J.L.l.j.j.@.X.A.5X}.) @.N.V.k.%.C.'././.*.'.LXIXIXIXIXPX{.&.%.o.{.gX{.{.}.&.@.h...@.#.j.H.H.l.[.fXfXfX{././.z.pXIXLXPXLXIXgXm ; r r r r y y y y t n &.C.N.z.z.%.o.) XbXnXJXJXJXJXJXJXmXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXSXJXFXHXsX1.n n r w r r y y y y n y t u r y y y B y y f y f f y y f y a f f f l y y y r w r r r r r r r , r r < ; ; ; ; ; ; ; > > > > > > $ $ > u t t t u a a y y y t y y n B B B B l f f l B B f n { A.DXqXgXUXqXA.+./ Q ) R R R E R R ./ R .R R R ( ( ( ( ( ) ( ( ( M _ ( ( _ _ ( T ) ( ( ) ) ) . .*._ r u r y n | +.M n n u u N W Q [ +.&.o.[ W ~ 0 ~ ! ! Q ! ~ Q ! ! ' ] Q Q ~ ~ ~ W W ~ Q ~ Q X.o.o.+.] ] Q Y 7 7 0 0 8 ' ( 9 : 3 9 0 7 7 0 7 q 9 7 7 7 9 7 7 7 7 7 7 5 7 Y Y Y Y 5 Y 5 Y W Y Y Y Y Y Y T Q T Q ] Q Q W W Q Q ] ] ] ] ' T T H N 6 8 8 8 8 9 8 6 9 9 9 9 5 6 5 9 9 9 8 6 5 8 8 8 7 8 8 8 8 8 7 8 8 T Y Y Y W T T 6 8 8 8 7 7 8 Q ] X.X.@.X.' T T T Y T 7 7 T T T 5 7 Y Y T W ] X.X.] W 8 7 R T W { ] T 6 6 8 8 T 8 W 0 0 0 0 ~ W ~ W ~ 0 ~ ' ~ ~ ~ ! ! ! [ ~ [ [ ! [ [ ! ! [ [ ! [ ! ! ! [ [ ! Q ! O.O.O.W T 8 ( W T 7 8 W T 6 T ( 6 6 6 6 T T ", -"[ ] ] T { +.X.] ) U &.{.*.) ) o.&._ n r n r y y y y t t r , i r n r N N _ ) ( &.&.&.o.] X.] ) R E U ) R X.] E X.@.$.v.%.X.) ) R R X.X.X.X.^ O./ Q Q Y R / Y R R R Y Y R R Q ^ Y Y U Y Y Y Y E E E E U U U U U U U U U R R E R ) X.) ) ) ( ) ) .) ) R ) ) @.@.%.#.@. . ...#.%.%.j.#.X.X.) U ) . .R ..#.%.h.z.h.n.V.J.J.L.J.L.L.V.%.h.%.@.C.@.#.j.j.l.x.k.j.j.@.j.j.j.@.#.h.h.@.@.C.X.@.X. ... ._ gXIXgX5X}.gXpX/.1./.*./.IXPXpX{ O.Z.k.'.#. .@.#.#.j.#.j./.gXIX[././.z.'.{.qXHXIXPX/.n r r r r r y y r r t ` o.o.#.o.#.+.o.{.sXMXmXJXAXJXJXJXJXJXJXJXJXJXJXJXJXAXJXmXJXnXAXJXnXHXHXnXbX%X<.> t y y y y y y f y y f y u t u y l y y y y y y y y y u t y y f l y f f f l f y r r r r r w r r w ; ; r , ; ; ; = ; ; > > , , < < > < w t t d y t t y y f f f l B B B f l l l l l y A | {.qX{.[.{.[./.%.X.) ) R R R R R U E R R E . .R ) ) R E E U U 6 6 U I N N N N N N ( ( ( ( ( R ) ) ) ) ) _ n r n t y n o.o.M N N N ' ! ! ] Q Q W W W Y W ~ ~ Q Q Q ! Q ! ! [ ! ! Q ! ! ! Q ~ ~ ] +.+.+.X.Q Q W 7 Y 5 9 9 8 8 7 H N r i N 0 0 0 7 0 7 7 9 q 7 7 7 7 5 q q 7 0 7 Y Y T 7 Y 7 5 Y Y 5 7 7 7 Y 7 T Q Q W W W ! ] X.Q Q Q W ] ) ] ] ( W ' ' 0 0 N 8 H N 8 ( T 8 8 T 8 8 6 9 9 6 6 6 8 8 T 8 T 8 8 7 8 8 7 Y Y T Y W Y W W 8 6 8 8 7 7 7 W Q O.X.X.X.X.Q Q ' W 7 T Y Y T Y Q [ ] ] ' W W ] ] +.#.+.] T W 8 8 ] o.+.+.' ' 8 8 8 W W W W ! ' ~ ' ~ W ! ~ [ ~ [ [ [ ! ~ ~ [ ! ~ ! ~ [ [ ! [ ! ! ! [ ! O.$.O.O.O.O.O.[ [ ! Q W W ! ! Q ~ ~ W W W W W T Y X.O.Q ", -"Q ' ) u./.#.E E ( ) ] &.E R o.) ) o.*.` n n y y r n n n N _ ) _ N n r N &.) ( +.E E / / X.X.) ) E R R R ) ] ) X.O.$.X.R / . . .@.#.@.$.O.O.^ X./ Q Q Q W Q Q / R Y Y Y Y Q Q R Y Y Y Y Y Y Y E E Y Y Y E Y U U U U E ) E R U U U _ M N _ _ ( _ ( U E R R R ) X.#.X.X.@.@.%.#.%.@.@./ / R Q ./ . .@.@. ...#.#.k.C.V.C.l.#.#.h.%.+.#.@.#.j...@.#.@.@.@.#...@.j.@.@.h.V.@.h.V.) o.o. . ...z./.}.gX8Xz.&.C.z.*.*._ _ N ` gXIX{.%.O.M.V.@.5X{.'...#... .( + ) o.[.}.A.}.HX{.[./.UXIXIX_.n r r y r t y y r y t ` &.&./.&.&.&.) c.MXbXJXJXJXJXJXJXJXKXJXJXJXJXJXJXFXnXnXSXJXJXHXnXbXsX%Xs.L B w y y f t t y y y y t u u u y f l f l B C C F n y t f f f m n n y F } B f y u y f f y t r r r r r r r r : ; ; ; , ; ; , , > > < < < r w w w t t t y y y f f B B B B l l l l l l l B ` /.qX[.qX[.o.o.#... . .) ) R R ) R E U U E ) .@.Q R R T U U U ) U + N _ 3 N + N n < < n N N N N ( ( ( ( M N n N { ' N N N ( ] o.o.] ~ ! Q Q R Y Y T T W Y Y Q Q Q W R Q Q ! Q ] ] Q ] ] [ Q ! ! X.o.Q R W T T 5 5 5 5 7 7 7 9 9 6 N i 8 0 0 7 7 7 7 5 5 7 9 q q 7 q q q q 5 7 7 7 Y Y Y Y 5 5 7 T Y Y 7 7 5 7 Y W Q Q ! O.W Q Q O.Q Q Q Q Q W W T ' ' W ' W W 0 T T T T T H N H T T H 8 6 6 8 8 8 6 T 8 8 T Y Y 7 7 Y Y Y T Y Y W T W 8 8 N 8 0 8 W T Q Q ] X.X.Q ] X.X.] T T W T W ] ] ] ] ] ] ' ] +.+.o.%.%.+.+.+.o.] T T Q ] +.+.+.] W W Q ~ ~ ! ' ~ ~ ~ [ ' [ ! ! ! [ ! ! ~ ~ ~ ! ' ~ [ [ [ [ ! [ [ [ [ [ [ ! O.! O.[ [ [ ! ! Q ! ! ~ ~ ~ ~ W W Q W W ~ W W 7 Y W Q ", -"Q T } &.*._ _ _ *.o.R ) ) ) &.) *.&.&.` n m m n M _ X.o.X.X.%.X.o.o.+.) ] @./ X.X.Q T U E E U ( ) R +.] R X.%.%.$.R R T R R ) X.o.&.) R / Q X.X.^ ^ Q Q R Q Q R Q E Y E E Y Y Y U Y Y E E E T Y E E E U E U U Y E U E E ) ) T R ) _ _ 3 3 ( _ ( ( U U U U ) U E X.R X.X.X.X.X. .R / X.R / R R X./ X.@...#.j.#.#.k.l.k.#.j.j.j.%.X.@.@.#.#.j.j.#..... ...@.#. .l.&.@.h.j.@.#.*.*.*.) o.&.A.5X/...&.&.*._ *./.&.*._ *./.{.IX{.U O.$.n.L.j.@./ .#.l.j.) _ . O ( &.o./.qX{.{.gXGXGXGXIX&.r r y r r r r y r y y n | _.{.}.}.}.{.aXnXvXJXJXJXJXJXJXJXJXJXJXJXAXJXAXJXAXmXbXnXhXoX X|.d.C w r u y y y y y y y u u t t u f f f f f y y } <.s.s.1.F F | ` 1.1.1.1.1./././.1.F r y y y y y r r r r r r r w w r , < > , , , > < < < w w w w w w t y f y f f f B l B B B l y l l l l C | &.A.A./.[.k.o.@.o.o. . .] ] .] ( R ( N N N ( _ X.X.X.] ] ) ( ( ( ( N _ _ _ _ ( N U ( n r r n n r n n r r N N N ! ! ! ! ~ ! W W W ' Q W W Q W Y Y R Y Y Y T T T W T Y Y Y T W Q Q W R ] ] Q X.+.+.X.Q T T T T Y Y 7 7 7 7 7 7 7 7 7 8 0 0 7 0 0 0 7 7 7 7 7 q q 7 7 7 7 7 7 7 7 7 7 Y Y U Y Y Y T T Y Y Y Y 7 Y Y Y W W W Q [ W Q Q Q ^ Q Q R Q T 8 T T T ' ' ' ' T Y 8 8 8 8 8 6 6 8 T T 8 8 ' T 8 8 T T Y 7 8 Y Y T W T W Y Y Y Y Y T 8 8 8 8 8 W T Y W Q Q O.Q Q X.+.X.Q ] ] ] W [ ] ] ] { o.] [ ] X.X.+.@.+.%.%.+.] ] [ ] { Q ' ] ] O.+.O.[ ! [ ~ ~ ' ~ ! ! ~ ~ ! ~ ! ' ~ ! ! ' ! ~ ~ ' ] [ [ [ [ [ 0.O.O.$.w.0.O.[ ! [ ! [ ! [ ! ~ ! W Q ! W Y ! Q W Q Q Q Q ~ W ~ ~ ", -"W ' r r N y t r ` *.o. .o.z.z._ n n r r n r y n M ` | +.X.X.+.o.o.&.A.] ] +.] E / R Y 5 E E ) ] X.X.$.] E R ) R E E Q / R T R R R X.Q X.X.R R R e.^ ^ R Q Q / X./ / Q R R R Y R Y Q R / R .R E R R R E E E E E E E U Y E R R ) N 3 ( ) ( ) R ) R E E E R R R R R R R R R R X. .X./ .R X.R ) / @.@.@.#.#.%.@.h.K.Y.V.k.%.h.h.j.$.@.@.@. .@.#.j. . ...#.j.j...C.z.&.'.j.l.*.* ).qX#.&.&._ *.&.&.*.&.&.*.&.c.*.*.&.[.}.}./.A.) v.V.H.k...) @.#.j.j.j.j.#.3 3 . ( /././.z.pXUXIXgX/.s.n y y r r n r r r r u r u n ` u.&.&.&..XmXnXmXJXJXJXLXJXLXLXLXJXKXJXJXmXbXhX%XoX1.1.} C G C r r y y t t w w , r r w % w w e y f f f f B f y K >.` <.1.1./.}.}././.{.{.{.{.}.{.{._.s.C t y y y t t t w w w w w r , , < > < > , < < < < < < < < < w w u y f l B f B B B l l y l l l B C | A.'.C.%.X.+.X.@.o.o.X.X.] ) R ) R ( ( m y t t u r M X.$.$.O.) ' ( ( U U N _ _ _ ( ( ( ( n y y y r n r r r n W W W W ~ ~ ~ ~ ~ ~ ~ ~ ^ ! ! ~ W Y ~ ~ W Y Y Y T Y Y W Y Y T W T Q Q Q R X.+.#.X.#.X.W W T R Y Y Y Y Y Y 7 q 7 7 7 7 7 7 0 0 0 7 7 0 0 7 7 0 7 7 7 q 7 7 7 7 0 7 8 Y ~ W W Y Y Y Y Y Y Y Y T ~ W Y T W W Q W W R Q Q ! Q Q Q Q R Q ] W W 0 8 8 8 T T T R T Y Y U 8 6 5 Y Y Y U 8 T T T T T T T T Y T Y Y T Y Y W W Y Y Y Y T T T W W 8 T 8 8 W ~ Q [ [ $.$.O.O.X.] ] ] ' [ [ +.] ] Q ' ] ] X.X.X.] X.+.@.+.] ] ] X.+.+.+.$.] W O.%.O.e.O.Q ~ ' Q ! [ [ [ [ Q W W ' ~ ! [ ] W ' [ ] [ [ [ O.O.^ [ O.O.w.0.$.O.[ ! [ Q ! ! ! ! ! ~ ~ ! W W Y ~ W W ~ W ~ ! Q ~ ~ ", -"n r y n r y y r t n F _ &.}./.F n y y n n n y u u r m { o.{ _ { ( &.&.3 N ( R ] Q E Y U R Y Y Y T E T U U U U Y R ) . .@.R E R R U U E ] ) .X.%.N.A.@.R R / / ^ ^ / Q R Q R R ^ / E / / .@.@.@. . .R ) X.R R Y U U E E R R E E ) R E ) ) R ) ) U E R E ) R ) R R Q .R X. .X.X.X.) X.) ) . .@.#.$.h.j.#.Z.].X,XJ.H.&.r | /.].V.j...o._ &.` n < n r B F r *.@. . .E E .) o.L.P.#.) *.#.#.j.V.j.I.2Xk.&.*._ N.{.5XgXPXIXgX&.; w r r r r r r t r r r y y y u r *.z.&.&.&.aXJXJXJXJXJXJXJXLXJXLXKXLXKXJXJXFX X&.F n < w r u u y y t t w w > w ; ; > > > w u t y y y f n f B B C C ` 2.s./././.(./.}.%X%XfXgXbXbXfX{.s.C u y y y y y t r r : r r < < , < < > > 1 > > < 1 w w r t u w u u u y f y f l B l l l B B l y B M u.A.N.X.X.+.X.+.+.+.O.X.] T 6 T T T ( n u y f f r m ' T ] +.O.' ( ( ( T N ( ( ( ] ) ( ) ._ w y y N N N N n n N ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Q Q ~ W Y W Q ~ W W T W T Y Y Y Y Y Y Y W T T T ] %.%.o.] Q T W R T Q Y Y Y Y T W Y Y 0 7 0 7 7 7 7 q 7 7 7 7 7 7 7 7 7 7 7 7 5 0 0 W 0 Y Y W ~ Y ~ Y W Y Y Y Y W Y Y Q Q Y Y T W Q R W Q W Q ] Q T R Q Q Q Q W T 8 8 0 8 Y Y T U Y E T T T T 7 T T T 7 8 T T T 8 U T T T W Y Y Y T W T W T W Y 7 Y T T T T 0 W Q W ' Q Q [ X.O.@.$.O.$.$.$.$.O.@.+.O.X.] X.] ] ] ] X.X.X.X.X.X.] X.X.X.] X.X.X.X.@.%.$.X.O.O.O.[ [ ~ ! ~ ~ ~ [ ! ~ ! ~ ~ ~ ~ ! [ [ [ [ [ ~ ' Q [ O.O.O.O.$.0.O.O.[ [ ! ! [ ~ ! ~ ' ~ Q ! Q ~ Q ~ W 7 7 W 8 8 N 0 0 H N ", -"y y y y y y y t y y r n n ` ` y y r r r y y y n n n t n n B B m m m n r r N Y T R Y E Y Y Y Y Y U U T U U E R R R / .R Q R R R R T E R E T ] %.#.k./.'.%.R R Q R Y Q R R R E Y R R / / . . .#.X. .) ) R R ) ) E E E U E R R R / R / .U E R R R R E R U ) R R ) R R R R X.X.X.X.$.X./ .X.X.@.X.@.%.#.%.v.R.0X0X].[.N.k.N.] R / X.X.X. . .#.k.h.k.N.V.C.J.l.z.z.z.C.N.n ; &.].V.L.h.j.%.N.].o.M n t t r u n _ ( _ _ M M N < n ( #.j.k.H.V.j.j.l.I.I.5X`.[.fX/._ | pXUX{.}.&.t y n r r r r r r r r r r w r y u r ` *.*.o._ _.AXJXJXJXJXJXLXLXJXLXLXJXJXLXnXaX{.F ; y f y y y y e w w w w w w , , < , w w w u u y y y f f f B B B t B 1.s.u././.&./.}.{..X.XsX_.s.s.} y t u t y y u y y y y y y w , < , , , < < < w w w w u t u t y y y y y y y l l l l B V l l l n M ` N o.$.] ] ] +.X.o.X.X.O.[ Q 8 8 T E T N y f f p n { O.O.[ ] ] { ' ( 8 N ( ( 6 N N ( ] ) ) .] _ M r 3 N 6 R Q ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ~ ~ Y Y Y Y Y Y Q R Y W W Y Y Y Y Y Y Y Y T Y Y T T ] X.] R T W R T R T Y Q Y 5 7 Y Y Y W W ~ Y 0 7 7 7 0 7 7 7 7 9 9 q q q 7 7 7 5 7 ~ ~ 0 Y Y Y Y Y Y Y Y Y W Y W T T Y T Y Y Y R R Q W Q W Q W ~ W Q Q W T W Q W W 8 8 T Y 5 8 5 7 Y T U U 5 7 Y Y T Y Y T Y T T T T T W W T Y Y Y T T T T Y Y Y Y Y T Y Y T W Y W W ~ W ] ] ] X.] X.X.Q ] ] X.O.$.%.$.O.O.X.O.X.] X.X.+.+.+.+.] X.] ) X.] X.X.] ) X.O.@.%.O.O.O.[ O.[ ! ! ~ ~ ! ~ ~ ~ [ ! Q ! [ O.O.[ O.+.] ' ] O.[ [ O.Q ] [ ! ! ! ! ! [ Q ~ ! [ ' ~ ! ! Q ! ! ~ Q W ~ ~ Y W W N n r r ", -"y y y y y y y y y y y y r r r r C ` F | M n n y y n y f t y n r u r r N N M T Q 5 Y E Y U E E E E E T E E R ) ) R R ] +.] R ) &.&.u.o.X.o.R U R ) o. .@.X.Q E R R R R E E R E R R R R R E R / .@. . ./ R R ) E E E E E E U ] Q R ) R / R U R R ) ) E E U E ) E R ) R R X.X. . .X.@.@.X.%.%.%.%.#.X.h.N.h.C.T.R. $ w w > w , ; , w w w w w w w u y y y B B f f B B B C F } | /.(./.sX_.&.} } B t > $ w u t y f f y y y y y f y y t t t t t t t 1 w w w t u t t t y f f y f f l f l B l B l n m N _ { N N ( ] X.] o.X.X.X.X.] X.] T 6 6 ( ( N y u u m { ] O.0.! [ [ [ [ ' ( ( 6 6 6 6 N 6 N ) ] ] _ ) +.O.] { ( T ~ ! ! ! ! ~ ~ W ~ ~ ! ! ~ ~ ~ ~ Y Y Y Y Y Y Y Y Y W Y Y Y Y Y Y Y Y Y Y T R Q X.X.Q T T W T T T Y Y Y 5 5 Y Y Y Y Y W ~ ~ ~ 7 0 0 7 7 7 9 5 8 0 7 0 0 7 Y Y Y Y Y 0 Y Y W Y Y W Y W Y Y Y W Y T Y Y Y Y Y Y Y Y W Q ! Q ~ Q ! Q W W W W T T W T 8 T Y Y T T Y 8 5 7 5 5 5 5 8 7 T Y 5 7 T W T T T T T T T T T T Y Y Y Y Y Y Y Y Y Y Y W W ~ W W W ~ W Q ! ] ] Q Q ' W W W W ! Q [ [ X.! [ ! Q ] ! X.O.%.%.#.$.X.X.] ] X.X.%.%.X.Q O.^ O.%.O.O.[ O.[ [ [ [ [ ! [ ! ! [ ! O.[ ] O.X.+.+.+.O.[ ! Q Q Q Q Q ! ! ! ! [ ! ' ! Q ! ! ! ! ! ! Q ! ! ! ! ! ! ! W T W W ! ' n r ", -"u u y y y y y n y y n n y y n n n M N ` *.` n n y y y f u y n N N N ' Q ] W Y E U Y E R R R Y E E E U E E E ( _ /.).A.( ( X.R ] ] o.R ) o.o.@.X./ .R E R Y R R R R R E R E E E E E E R E E E E R R X.X. . .@.@.R R E E E E E X.X.R R / R R R ] .E R R R ) R E E E R ) . .X.#.#.#.#.k.%.%.%.#.#.@.%.Z.m.T.].F.e.( N.Z.h.'.v.B.$.Z.A.v.h.h.h.N.j.k.k.N.L.A.F r u r u r n N m r /.).M r r r n n M m y t y r ` M r r r r r t r w r u w { #.h.l.H.[.z.N M *././.'./.` r r t r y r r r r r r r < i ; i : r i r i i r r r _ '.s.(.HXJXJXLXJXLXLXLXLXKXLXKXHX8X/./.G y w , ; ; , , , w w w w w > < > , w w w w w u u u u t t t f f f d t f f u y y B B F K n r w > ; , w w u t f f f f f f y f y f y y y y t t u w t t f t t t t y f f f l y l l l l l k l l m N N ) o.N _ ' ] X.) ) X.] o.X.X.X.] Q ] W T N n n f y m _ { O.] ] O.] T ' ' ] Q N ( N M N 6 6 8 ( ( ( _ +.o.X.O.O.+.^ ^ ! ~ ! ~ ~ ~ ~ Y ~ ~ ! ~ ~ ~ ~ Q Y Y Y Y Y Y Y W W Y W Y Y W Y W W W Y T Y R Q X.X.T T T R W T W Y Y Y Y Y Y Y Y Y ~ ~ Y 0 ~ 0 0 7 0 ~ W ~ W ~ 0 0 7 Y Y Y T Y Y T W Y Y W Y 7 Y Y Y Y Y Y R W T T T Y Y Y Y Y Y Q ^ ! Q Q Q Q W W W T W W 0 8 8 8 T T T T Y Y Y Y 5 5 5 5 5 5 5 7 Y 5 7 U R E T W W T T Y Y T Y Y Y Y Y E E Y Y Y T Y W W W W ~ W W W W ~ W ' ] [ W W ' [ ~ ~ ~ ~ ~ ~ ! ~ W W ~ [ O.X.$.h.v.%.$.X.] X.X.Q / X.O.O.O.O.O.O.$.X.~ ! Q ! O.! ~ [ ! ! ! ! ! ^ O.] [ X.{ ] O.[ X.[ [ ' [ O.[ [ O.! [ [ ! ! ! Q ! ! ! [ ! [ ! [ ! ~ ~ ! ~ ~ ~ W W T ~ ! W n ", -"y y y y r y y y y n n y n n y n t n t y n y y y y f y y f n T T R Q W R R Y 5 5 Y R R Y R T Y Y E E ) ) U o.&.u.u.+.8 T R ] %.X.R R R E R ] @.$.%.Q R .R R R R Q R R E E E E E E / R R / E / E E E / R X...#.#. .#. .X.R E E E R R Q ) X.] ) R R R E E ) #.X.) R R ) .X.o.X.) ) X.@.h.V.Z.%.%.N.v.Z.Z.K.m.F.m.F.e.B.v.%.A.e.Z.N.Z.Z.h.#.h.%.N.N.%.#._ M m n y y y y y u r r r r t w m &.A.u.n w r y y y u r m n n r r r r n n < w r r N _ ( o.H.L.{./.| m N | ` n u y y y n r r r r r : ; ; ; : : : : = = : : : ; w m ` &.{.JXJXJXLXPXLXLXLXPXPXLXbX{./.&.F w w w w , , , r w w w w w w , > w w w w w w w w u t t u u y y y u 1 < w u u u w w < w > w > w w w w w u t y y f f f y f f f y f f B C C C B B B B B f f t y y f f B f B B V V C k k y n M { &.u.qXpXA./.A.] A./.o.) *.{ _ o.] { ] ] _ n y f f a m { ' [ [ ' ' ( ( N ( _ _ ( _ ( _ _ _ ( ( _ _ { _ { o.&.+.O.O.X.^ ^ ~ ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Y Y Y ~ Y Y Y Y Y Y Y Y T Y Y Q Q T T W R T T R X.Q Y T T W W W Y Y Q Y Y Y Y W ~ ~ Y ~ 0 0 0 0 ~ ~ 7 7 7 7 5 7 7 q q Y Y T Y Y E Y Y 7 Y Y 7 7 7 7 7 Y Y Y Y Y T T Y R W ~ W Q Q ^ ^ O.Q Q Q ~ Q W W Y Y 8 W W T 8 7 T Y T T T R 5 9 5 5 6 5 5 5 Y T T Y U 6 5 T T T T Y Y T Y Y E Y T Y Y Y W W ~ W W W ~ ~ W W W ~ W W ~ W W ~ [ ' ~ ~ [ ! ! [ [ ~ Q ! ! ~ ! ! O.$.$.v.h.v.v.v.$.$.O.O.$.O.%.O.O.O.O.X.O.O.$.O.[ ~ ! Q ! [ [ ^ ! ] [ O.O.X.X.] O.O.! Q ! ~ ! ~ [ [ ' ' H ~ ! ! [ ! Q ! ~ [ [ O.[ O.[ ! ! ! ! ! Q W W 7 9 6 8 8 W N ", -"y u y y y y y y y n y n n y n y n n n n y n n y y y y n N 6 T Y R Q 5 R ] 7 5 E R ^ Y R Y Y T E / Q X.#.) &.o.8 ] T Y T ) &.&.R U 5 U E ) %./.&.A.u.] @.E R / R X.R R R E E E E R / R / / E E E E E R X.) o.R .......#.) E E E E T R R ) R ) Q Q ] R R R .) ) ( o...#.o.R / X.@.X.@.%.h.v.n.v.h.v.n.Z.v.v.b.Z.n.b.R.Z.@.%.v.Y.A.N.N.L.N.%.N.%.V.&.n r t y t r y y y y u y u n t t t M &.&.N u y u M &.M r N N.L.z.&.{ { _ o.u.| n y r r r < t ` { o.X.}.s.m w r r y r y y t r r r r i ; ; ; : i ; , , ; ; : ; , : * ; m | &..XFXJXJXLXJXPXPXPXPXJXFXaX/.m u e t t t w w < 1 1 w w > > > < < < w w w w w u w u y y f f f u w u t u w u w u w r w w w w w w w w w w w w u y t u y t f f f n f B | | G B B B f f t u t y f f B f B B l B l B B l m { &.'.pXHXIXHXUXqXz.&.o...&.X._ { ) ( _ ] { o.{ B y l l f a n M ( ' ' M N N N _ { { o._ _ _ _ ` { _ _ _ { o.o.{ o.` _ { +.] Q ~ ~ ~ ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ! ~ ~ Y Y Y Y ~ W Y W Y Y T T W Y Y T T T Q Q T Q X.Q W Q T R Y Y Y Y Y Y W Y 5 8 ~ ~ ~ ~ 0 0 7 7 7 7 q q 5 7 5 7 7 7 7 Y Y Y Y Y Y Y W 7 8 Y 8 Y Y Y Y Y Y Y Y Y Y Y Y Y Y W W W W Q ! Q ! [ ' ! Q Q W 0 8 7 T W W W 8 T 8 T T U T U 6 5 8 8 5 5 7 T Y T Y 5 Y W T T W Y Y T T T T T T Y Y 7 5 W W W W 0 ~ W W W W W W W ~ ~ W W ~ ~ [ [ ~ ~ ! [ ' [ [ ~ ! ! ! ! O.O.O.$.$.h.%.v.n.v.h.v.v.%.$.%.$.$.O.^ Q ! O.O.] [ [ O.[ [ [ ! [ O.] O.O.O.+.[ ] ] [ ' ~ W W ! ! ! ~ n n 0 ! ! ~ ' ! [ ! ! ! ! O.w.e.O.! ! ! ! ! ~ Q T N r r r r n r ", -"u u y u u y u y y y n n y y y n n y n y r f y y y y f m 8 T E Y E E U E Y U U T R R Y R Y E R R / T +.z. .&.).] $.O.@.] ] o.*.A././.o.U R o.&./.).N.&.A.N.%.R R R @.X.R R R E U E R / / / .E ./ R E R ) .@. .E E ) ) #. .Q T W R T E E R R / X.] Q ) .) + N + *.&.%.o.X.X.X.X.R @.X.%.h.@.$.v.h.h.v.n.v.n.b.m.U.R.T.v.O.$.v.b.B.L.K.A.%.%.o._ n u r y y y y y y y y u u r u n y y r w r y y y r F &.m u n %.V.h.n.n.Z.Z.n.V.J.%._ n r w r r w w r r o ` M m L n r r r r r y r r ; ; ; < < ; ; i r : w w , ; ; : : : r t M &.c.aXJXLXPXJXbXJXLXKXFXdXs.B y 1 w w w w w < w w < > > w > > w w w w u w w w u u y f f y u w u w w w w w w w w w w w w w w w w w w w w u u u u t t t t y y f f B L | C f f f y t t y f B B B B B l B B l l l l n M '.qXUXIXLXHXUX.X5X.X).o.) ..) ) _ ( _ ( _ { ) M d f B f f f f N M ( N N N N N _ { _ ) _ _ N ` _ ( _ _ _ +.{ +.[ +._ N M X.! ~ ~ ~ ~ ~ ! 3.! ~ ~ ~ ~ ~ ~ ~ ! ! ^ ~ Y Y ~ ! ~ Y Y Y Y Y Y T Y W T Y T T T Q R Q ] @.] W R R T Y T Y T W W W Y T ~ 7 8 0 W ~ ~ W 7 7 7 8 5 5 Y 7 0 7 Y Y T T Y T Y Y Y W Y Y Y Y Y Y T Y Y T Y R R T T Y R Y Y Y Q Q Q R Q ~ ~ ~ Q W W W 8 8 8 8 0 8 T ( T 8 8 6 Y 8 7 Y Y Y 5 5 5 7 T 7 T T T T Q T Q R T T W T Y Y T Y Y 5 7 Y 8 Y 8 W W W W ~ ~ W ~ ' ~ 0 W W W ~ [ [ ' [ ' [ [ ~ ~ ~ [ ! ! [ O.$.w.$.$.$.e.$.h.h.$.%.v.$.%.v.$.$.$.O.O.O.[ Q ! [ O.O.O.Q Q Q ~ O.O.O.O.O.] ' H N N N N N 8 ~ [ ] H N r N ! W Q ! ! ! ! ! ! ! [ [ $.e.e.^ ! ! ' H H n r r w i i r y y ", -"r r r r y u u y n n y y y n n n y y y y y y y y y y f n N N 7 T U E E E U U R Q T / Q Y E E Y R R T Q o././.[.' ] _ { +.O.&.s._._.}.u.u./.u.N.+.) o./.[.}.{.{./.&. .%. .R R R R E R .R E R ) R R E U E R R ) .R E E R @.X.T T Y T Q T T ( R ] Q X.O.] o._ + ( _ &.t.w.h.@.X.X.R X.X.@.X.X.@.$.$.O.w.%.@.$.b.b.F.m.R.~.V.X.%.N.N.B.Z.Z.U.].`.N.n r r u y y y u y r y y y y y u y n u u y y y y y y r w t t t o.Z.n.h.h.n.h.j.j.k.H.k._ M M n m r r , w y w i n F n r r r r r r r : : i ; ; ; ; ; , , , , , , ; ; ; : : : : r ` _ &.aX%X}.A.&..XPXFX.X}.| t w w w > > w w w > > > < w w w w w w w w w u w t t u y u u t t t t u r w w w w w w w w w w w w t w t w t t u u u y y y f f f f B B f y C V f f y y y l B B l l B B l l l B l l l l m Y A.gXUXgXIXPXfX.X}./.}.&.' { _ ( N N N ( { ] _ m f f B B l l y M H H ' ' _ ` M { _ _ ) ( _ N _ o._ 3 n M _ &.+.] ] [ +.` [ ! ~ ~ ~ ~ ~ ! ! ! ~ ~ ~ ~ ~ ~ ! 5.5.! ~ Y ~ ~ ^ ! ~ Y ~ Q ~ Y Y Y Y Y T T T W Q Q Q X.@.Q R R W W W ~ Y W W W W W Y ~ W 5 7 W ~ ~ ~ ~ Y 8 W W W ~ W W ~ W ~ W T Y W Y Y T T W R Y Y Y Y Y R Y Y W W Y Y T ! ! ! ! W Q W Q Q ~ ~ W W W W 8 0 W W T W W W Y T T U Y T T T T T Y 7 5 5 5 Y Y Y T T Q W R T Q R R T T W T R W T Y Y Y T Y W W ~ W W W W W W ~ ~ ! W W W W ' ~ ~ ~ ' ! ! ~ ! [ ~ ' ~ ! [ O.w.O.$.$.%.%.$.$.h.$.^ O.O.$.$.$.O.O.$.w.$.$.O.O.O.O.[ O.O.O.! O.O.O.O.~ W H n r u u r u N 0 W H n r y m 0 W ] ' [ ! ! ! ! ! 0.[ O.O.$.e.[ W H n r ; ; ; : = - * : : i ", -"i r u u u u u y n y n y y n M n n y y y y y y y y n n y y m ( 6 + T U U E R / ! R Q Q Y Q E Q Q T ] Q ) ).{._ y _ ] U %.u.{.` r i r N &./.&.}.5X{./.gXgX5XgXPXIXgX&.] X. ./ X.X.R E E R E R R R E I U U I E U U U U ) ) @.R T E T ] ) ] ] ] ] ] X.+.+.+.w.%.%.%.%.w.w.e.v.$.@.X.X./ X.@.@.X.X.@.@.@.$.$.X.e.w.m.m.b.Y.Y.Z.X.'.K.Z.V.L.A.Z.Y.N.N r r r y y y y y y y y y u u u r u u u u u y y y y y y y y n n o.V.Z.%.%.@.@.j.j.I.I.V.#.#.#.o.N r F } n y y y e n n r r r n n r r r : r < < r , ; < < , , , , ; ; ; : < ; * : , n M ` ` N _ &./..X.X/.}.(.n w w w w w > > < w 1 < < w > > w w w w w w u u t t t u u u w w u w w w w w w w w w w w u w w w w u t t t u t y f B f y f B f B B f y t t B y y f B B B B B m N m l l l l l l V B l n 8 A.fXqXUXPXHX}./.&.' { { ' ' ] ] U ( ] ] ) ' ( M n B f l B B B M ' ' [ { { [ [ O.O.+.o.{ { o.O.O.{ 3 - < < { X.! O.0.O.[ ! ~ 0 ~ 0 ~ ~ ~ ! 3.~ ~ ! ! ! ! ^ ~ ~ ~ ~ ! ^ ! ~ ! ~ ~ ~ ^ ^ ^ Y Y Y Y Y Y T R Q R X.+.@.Q W Q Q W ~ ! W Y Q W Y ~ ~ Y ~ W W Y 7 Y ~ ~ Y ~ ~ ~ ~ ~ W Y W Y Y Y Q W Y T T Y Y R Y Y Y Y Y Y R R Y R Y Y W T ! [ [ ! 7.! Q ' Q W ' 0 W W 0 W 7 7 8 W W W W T T 7 5 5 T T T T Y Y T T Y 7 E Y Y T T R R T T T T T Y T T T T T T T W T T T T Y ~ W W W W ~ ! Q ! Q ! ! W ~ [ ! [ ~ ~ ! ~ ! [ ! [ [ ~ [ [ [ O.O.w.O.$.O.! ! O.O.! ! [ O.O.O.[ O.^ ^ O.[ ! [ O.$.O.O.O.O.! O.[ ! ! T N r r r u u u u u m m r r N N ' ~ ! [ [ [ ! [ [ ' ' ' 0.0.[ { M n i ; i : * X * * * = - : = : ", -"r i : i r u u r y n y y y n m m n y y y y y n y y m ' 8 N y N N 6 8 N N R Q Q W X.{ Y R Q X.R R Q ] ) %.).| i M ) R {.).&.(.F L F m y r m M { } } ` s.s.}.pX).}.fX{.] +.X.@.#.%.R R .R E E E R R R I U U E E E U R R ) ) U ) R Q ] ' ) ] ] ] ] X.+.+.e.e.v.v.N.e.e.e.e.%.$.@.X.O.@.X.@.@.@.X.@.X.@.$.^ $.M.$.%.$.K.n.Z.h.#.C.].`.].V.L.V.V.*.i r t y y y y y y y y y y u u u n r u r u u u y y r y y y y r < N v.L.n.h.@.@.j.#.h.V.V.J.l.l.h.r t M M y t t t n u.&.r r u u u u r r r ; , w < > , , , > > > , , , , , ; ; ; : ; ; ; # : n n | /./././.}.<.< w w w w > < < < > > > > w w w w u w u u w u u u e w u e r r t u w w w w w w w w w w w w w t t t w t t t t y y f y y y t f y y t y l n y f y f l l V l l B M M n l l l l l l B B l B 6 ( '.UXPXPXIX}.&.] ' W ] ' ' o.X.X.+.+.X.] ' ' ' ' M B m n B B V M H { ' { { H H H C C C C M ( T o.+.M { { e.0.w.0.[ ~ ~ ~ 7 5 7 0 ~ ~ ~ ! 3.~ ~ ~ ! ! ~ ! ~ ! 3.5.! ~ ~ ~ ^ ~ ~ Q Q Q Q Q Y Q Q T R W T R Q ] +.+.] Q Q Q ! Q ! ! ~ W W W ~ ~ ~ Y W ~ Q 7 W ~ ~ ~ ~ Q ~ W W Y Y Y Y Y Y Y W Q R Y Y R Y Y Y Y Y Y Y R Y Y W Y Y T T W ! ! ! ~ ! ] ~ W ' ' ' ~ W 0 0 7 8 Y T W T Y 8 7 7 7 5 Y T T T T Y T T Y E Y Y Y U T T T R T Y T T Q Q T Q T T T 7 8 T 7 T 8 T W Q W W W W W Q ! Q ' ! ' ' ! ~ ~ ! ! ! ! ' [ 0 ! ! ! ! [ O.O.O.O.O.O.Q [ Q [ O.Q ~ [ O.^ ! [ ! [ ! ~ ~ ! ! ! Q Q Q [ ! ! ! ~ ' N n y r r r u u u u y u i N 0 y.m.e.[ [ O.H ' +.H m r n y M { N i X * * X * * - : = ; ; = = = : ; ", -"X X * r r u u y y r y y y r y y y y y n n n y y y y n m n y d n n n u N R Q W W Q T 5 Q X.R X.] ( U T { N t f M | s.1.C y B n m y y y y r : : = # i t w n m n M /./.&.&.+.o./.&... .E X.@.U E R R .E E U E E U U T T ] ) E Y Q ] Q R ] Q ] +.X.X.+.O.$.%.e.$.e.v.v.e.B.e.%.@.X.O.X.] @.X.O.%.$.$.X.$.X.$.$.$.%.h.v.v.n.$.%.h.V.V.N.L.T.h.@.M w r y y y y y y y y y y u u u u u u u u n u u y y u y y n y t < { N.V.P.V.h.@.h.%.h.h.#.j.#.%.%._ u y r t t u w { './.{ r y u u u y r r i w < > > , > < , , > > > , , ; ; ; ; ; ; ; ; : : i w r M ` _ m C w w w w > > > < > < < w w w w w w w w u u u w u t w w e w w w w w w w w w w w w w > w w w w w w t B f y y f f y t t t t t t y t u y u u y f V V V l l l l l B B l l l l l l l l l B l l N T /.UXPXUXqX/.T W ] ] X.' T +.+.$.+.+.o.] [ [ { { ( m C B B l l y l m n B F n m m m m B m M ) o.j.@.X.O.$.e.O.! ! ! ~ 0 0 0 7 ~ ~ W ~ ~ ! ! ! ~ ~ ~ ~ ~ ~ ! ! 5.^ Y Y ~ ^ ~ ! ! Q Q Y ~ ~ Q ~ W Q Q Q Q Q ! ] X.$.O.! O.! ! ! Q Q ! ~ ~ Q Q W ~ ~ W W ~ W ! ! ! Q ~ Q ~ ~ W W W Y Y Y Y Y Y 7 Y Y T Y Y R Y Y Y W R Y Y Y Y Q Y W W W W Q ! ~ ~ 0 ~ ~ ! 0 0 W W W W 8 W 8 8 8 7 7 5 5 Y Y 5 5 7 Y T T T T E T Y U Y E U T Y E Y E E R R Q X.] X.Q Q W W T Y W 8 T T T W W W W W W 0 W W W W W W ~ ! [ [ ~ ~ ~ H ~ ~ ! ! ~ ! ! [ O.[ O.[ X.Q Q ! [ [ ! W [ ! [ ] [ ! ! ~ ~ ! ~ 0 N 8 8 H T Y ~ Q W N u y r u u u u y u u y N H { [ ].B.M n m m r y r i * X o X X r i ; = = = # ; ; : ; ; > : : : : = - ", -"= = ; > y y y y y y r u y y u r n y y y n y n y y u y f y y n d y y t N T W T ' W 8 T ) ( R R R ( X.+.N f u y y n B u u y f d w w = * * 2 * - # - < r e f f r F /.{.{./.&.*.{.}.) E / R E ^ / R R R R #.] 7 E X.] R E R E R R Q ] ] ] Q Q O.O.[ O.e.$.%.e.e.v.e.b.B.t.e.e.X.o.] ] ] X.$.$.O.w.$.$.$.$.@.$.M.%.v.v.n.V.N.k.N.%.%.V.N.h.$.o.r n t r y y y y y y y y u u y n u n y u u u u y y u y u u r n { v.n.h.n.V.V.V.V.n.n.K.V.V.V.l.h.o.N n t u w r M C.].[.A._ r y u y y y r w i , > < , , > > > > , < < ; ; ; ; ; = = ; ; ; , ; = * = = > w ; > < > > > w < , , , , w > > w w w u t t u u u r e w i i w w i w w w w w w w w w w > w > w u y f f f f B f B y B y t u u t t y f u y u l V l l B l n f B V C B l k l l l l l l l l V B l m 7 ] UXLX8X&.U T ( H m _ ' 6 { ( _ +.+.[ ' { ] _ ` N l l l l l l l V l M ' o.o.] %.o.( _ ) X.X.X./ R ] Q ' ] W ~ W [ Q W 7 0 0 W ~ ~ ! ! ! ! ! 3.! ! ~ ~ ~ ~ ^ ! ~ ~ ~ ~ ~ ~ ! ~ ~ Q ~ Q ~ ~ Q ~ Q Q Q Q ! ! Q X.O.[ O.O.[ ~ ! [ ! ] ! ~ W W ! ! Q Q W ~ ! ! ! Q ~ ~ ~ W ~ W W W W Y Y Y Y Y Y W Y T Q Q W Y W Q Y Y Y R W W W Y Y Y Y W Y ! ! ~ 0 0 0 0 0 0 0 8 0 0 8 7 0 8 8 7 7 8 Y 7 7 Y T 7 T Q R R E E T Y E Y Y E Y Y Y E R Q Q X.X.X.X.X.Q Q Q R T Y T T 7 5 7 T W W Q W W W W W ! Q W W W W ~ W ~ ! W 0 3.[ ! ! W Q [ O.O.O.[ [ [ [ Q ! ! [ H m m u n r r m N N m m N r y r r m N W ' ' N N m m y y y u u u r e N W Q Y.3XU.{ n M H : * < : X X * = : : r y r < ; - - = : : : : * : : : : = = ", -"= = = * = : ; : : r w r u r u y y y y y y y y y y y f y y y y y y t y n N m r r N N N N N T W ( ) &.&.| C u m y u u y y f f w > > * * = , > < > > , - = * ; r y l f n s./.` ` { _ {.}.*.) R ) / Y R / / / .@.@.o.#.k.z.&.X.X.] R Q Q Q Q [ ] ] ! ! O.e.B.t.w.e.e.w.e.N.B.B.v.e.B.v.w.e.e.v.%.$.$.w.%.@.^ O.X.w.e.%.v.m.T.K.N.%.h.h.@.%.v.n.b.u.+.' r t u y y y r y y r u r u u y y u u r y y y y y y y u N &.n.n.v.h.h.j.v.V.K.K.V.Z.V.V.K.Z.%.e.&.N r N +.V.T.].].[.k._ w u u y y r r w w > > > < < > > > < < , ; ; ; ; ; ; = ; ; ; ; : : i r w w , ; > > > > < , , ; < ; ; ; ; < w w w t t t u u r w w w i i i i i ; < > < < w > > > > > w t t y f f y y y y y y B y y t a u y t w u y l l k l B C l m F F m m n l l l l l l l l k k V B V B l M ' /.).o.8 U N u y a ' ] ' { ' [ { { ] ' ' M m l l l k k l l V m ' F ` X.X.Q %.@.@.( 3 .] ) .X.X.) ( T Q T 0 W ] ' 0 0 8 7 6 8 ~ ~ ! ! ! ! ! 3.5.! 5.! ~ ^ ^ ~ ^ ^ ! ^ ^ ~ ~ Y ~ ~ ~ Q Q Q ~ Q ~ Q Q Q Q ! ] X.O.[ ! O.! ! ! ! [ ! ! ! ! ! ! ! ! ~ ! ! ~ ! ! ~ ~ ! ~ ~ W W Y W T 7 7 Y ~ ~ Q ~ Y Y Y W T Q Y Y Y Y Y Y Y Y T Q Q Q ~ ! O.! 3.~ 0 7 0 0 0 0 0 0 0 W 0 ~ ~ 8 T T T Y Y 7 7 T T R Q R T T T R T R T E Y E T T R T ] X.X.X.O.Q Q Q W T Y W T 7 Y T 7 8 W ] ] ] Q ] [ [ [ Q ! Q W ' ! ! ! [ [ [ [ ! [ ! ] [ [ O.+.O.[ [ O.! ! ! ' 0 N r r i u u r r u u i i u u y y r u r n r m y u r u r r u u r r r u N W Q Y.0Xv.' y C _ N : * * * : = ; ; r r r r r : : : : : = : = : : * = : = = ", -": : : : * * * 2 : = = ; y y y u y y y y y y y y y y y y y y f f y y y y y y y r y y y r T T ] ] { s.` i N { m y y y f u u w ; : 2 & = > > > > > $ > > > , ; = ; r t u r r M 8 N N ) _ /.}.o.E / R / / / X.E R #.+.#.N.'./.k.+.+.) R R ] Q Q [ O.[ O.0.0.B.M.y.t.e.t.e.e.e.e.e.e.$.v.v.e.M.$.e.$.$.e.%.#.$.] O.$.@.e.v.m.U.U.N.X.#.v.v.N.v.b.b.M.M.e.N u t u t t y y u u u u u u u u u u y y y y y y y y r u r M +.Z.V.v.%.h.h.H.K.L.K.K.H.V.K.n.V.Z.%.X.h.P.I.K.T.>XL.L.A.` m u r y y r w w < < < < > > < > , ; , ; ; ; ; = = = ; : ; ; i : : i = = ; ; ; , , ; , < ; < ; ; r ; , w w w t t u u u w w : , r i i w w w , < 1 < < w > > w w w w y y y f y y y y y f l B B l f u t t u u f C B l l C F F n _ o.] N m f l l l l l l l l B V V l l V l l y N 6 N N n k l l l m ' ! r.0.[ H W W W ' y l k l m l l l l V m M F C M ' ] +.X.h.&.N ) X. .@.h.%.] ( ] W W Y W 0 0 0 0 7 0 6 9 W 3.3.~ ! 3.3.3.^ ! ~ ! ! ! ~ ~ ! ~ ~ ~ ~ ~ ~ ^ Q Q Q ~ Q ~ ~ Q ~ Q ~ Q Q Q ^ ] X.! Q ! [ ! ~ ~ ! [ ! [ ! ! ! ! ! ~ Q ! ! ! ! Q ~ ~ ~ Q Q W Y W W Y ~ T T W ~ ! ~ W Y 7 Q Q W Q Y Y W Y Y W Q ! Q Q ! ! ! ! 0.[ [ W 0 ~ 0 0 ~ ! W W ! ~ 0 8 T 0 T 8 7 8 Y R T T T T E R R T R E T E E E R R Q R / X.X.X.X.Q X.O.X.Q Q X.X.Q Q Q ] Q ] ] ] Q [ O.X.] ! X.O.X.O.O.O.+.+.! O.X.[ +.[ ! [ X.+.[ [ ! [ O.O.^ ! ~ N r u y r u r r u u u r u u u u u r y y u u u y r y y r u u y y r n N 0 0 ~ Z.4XB.[ M m r * - ; ; ; : - - : = = : ; r r ; : : : : : * = * = = = * = * : ", -"* : - ; ; ; ; > ; : : r r u y r y y y y y y y f y y y y f y n y y y y d y y y n y r m M T ( ( N r r N H { | u a y y u w = 2 & - > ; , - - > > > > > > < w w < , ; > w r m T 6 N 8 r N {.}.) %.X.X. .X.@.X.Q R .o.@.N.'.'.k.+.] U R R Q Q O.! [ [ 0.0.O.O.e.e.%.%.e.e.B.v.v.N.e.v.$.M.e.%.e.%.$.%.e.%.$.%.$.] O.v.v.b.m.m.K.h.v.b.v.v.v.w.w.w.b.m.[ i r n n t t r r r r u u y y n y u u u r y y y u y r y t w N +.K.n.V.h.v.K.K.H.L.L.L.K.Z.v.B.v.n.Z.Z.H.L.Y.>X].P.K.m.Y._ i y t y y r w w < w < < < , , , ; ; ; ; ; : = ; ; ; ; ; ; : ; = = = = ; : ; ; ; ; : ; ; ; r : : r ; , w w t w w u w % w : r : ; ; , ; , < 1 w w w w > w > w w t u u y u y t t y f y f l l l f u t u y u y B l l B F M G _ *.) W N H H H C l l l l l C C B V V B V l V k l n n l l l C { F l M ! ~ ! ! ! ~ T W 8 B l m | M l l l l B M _ B l m +.$.%.#.#.%.#.%.h.%.v.Z.v.v.] ) ' T T W W W ! W 0 0 0 0 ~ ! 3.! 3.3.3.3.! ~ ~ ~ Q ! ! ^ ~ ~ ^ ~ Y ~ Y Q Y ~ Q ~ Q Q Y ~ Q Q Q W W Q Q ] ] [ ! ! ! Q Q ~ Q ! [ ! ! ! 3.! ! ! ! ! ! ! ! ! Q ! Q Q Q ~ W Y Y 7 W 7 7 Q ! ~ Q ! ~ Y Q W ~ ~ Q ~ W R R W Q ~ ! ^ ! ! ! ! ! 0.0.q.! 0 ~ 0 W ~ 8 W W W W T 0 Y T 8 T T 7 T T T T T Q Q T Y T T E R Q Q ] X.] ^ X.Q ] X.X.X.X.X.X.X.O.X.X.O.O.O.O.X.O.X.Q [ ] +.O.X.X.O.O.O.O.O.] X.[ O.O.%.%.%.+.[ [ +.+.] [ O.O.O.+.[ H N r y y r y y u u u y y y u u u u u u u y u r y u r r r r r r u N H ~ ~ W ! 0.].v.[ [ 7.' r : ; , , : : * * * : : : i r w , ; : : * * * * : * * * * * * * ", -"* * ; ; ; ; ; ; = ; ; ; , t f y y u r n y y y y y y y y y f y y f y y y f y y d y m ' ' ' N y t f m H M F y f y r ; - X * X - , > > - - - > , > > - > , , , < < w u u t w t y N | N ( 9 *.pX*./.*.) +.X.X.@.%.) R .X.X.C.'.C.N.%.] ] +.] [ R R Q O.t.O.O.0.e.w.w.e.b.B.b.B.B.N.e.e.O.w.e.w.w.%.$.$.$.%.$.v.e.%.b.B.b.b.m.b.N.N.N.v.v.e.e.w.M.w.O.M.e.{ +.e.+.{ M m i e t t t t t y y y y y y y y y n m y t t u i _ K.K.m.n.K.K.K.K.K.K.U.K.K.Z.v.v.v.n.n.H.Z.n.T.>X].>XZ.Z.N.M r y y y y u w r w < , , ; , ; : ; ; ; ; ; - : : - - - - = = : ; ; ; ; : ; ; ; ; ; ; : < : r < < w ; w e r w w w > w w < r < < > ; , < w < > w w > > > w w u t y y u t t d f f l l l l l u u u u u u u e u l l C F B F ) ..) ) T 7 W H m l l l V V C l l C l C l C C C l V k C m N o.+.m k V H ! ! ! ! ! ! O.( C l C ` m l l l C { X.+.+.M M X.$.%.@.$.@.h.Z.n.e.v.F.w.O.T ' ] W ] Q Q W Y W ~ ~ 0 0 ~ ~ ~ 5.3.3.3.5.~ ~ ~ ^ ~ ~ ! ^ ! ! ! ! ! ~ ~ Y ~ ~ ~ ~ ^ ~ Y ~ ~ ~ ^ Y ~ ^ Q ] ] [ ! ! ! 3.! ~ ~ ! ! ! ! 3.! ! ! ! ! ! ! ~ ! ! ! ! ^ ^ ! Q Q Q Y Y Y T Y ! ! ~ ! ! ! [ Q ~ ~ [ W Y ~ Q W W Y ~ ! ! ! 7.! ! [ ! ! O.0.~ ~ ~ W W W ~ 0 8 T Y 8 T T 8 7 Y T 7 Y T T T W W T T T T R X.X.X.X.X.X.X.O.+.X.X.X.X.X.X.%.%.X.X.$.$.O.X.X.X.Q Q O.O.] [ O.O.X.O.O.O.O.O.O.O.O.O.O.O.O.X.@.+.@.X.+.$.+.+.O.$.[ N r t y r y y y y y y f y y y f f y y y y u r u y u u r u u u y y n H ! Q ~ Q $.N.+.! 0.! ! N r : ; , ; : = * * * : : r r r < ; - : * * * * * * * * * * * * * ", -"* * ; ; ; ; = ; ; ; ; : - * ; ; i r y y n n f y f y f y u u u u y y y u u u y N 8 { _ N y r y a y y n y r u r * O O . * * : , > > - , < < > , - < t > > > , > < w w w u u e y n ` N N 8 + _ &.A./.&...X.R R .R E / ] R o.%.C.k.+.e.O.e.e.w.w.e.O.t.b.O.O.0.w.$.e.b.M.B.e.e.Z.N.v.y.O.O.w.v.$.$.w.b.$.O.e.B.e.%.N.B.Z.B.B.B.F.Z.v.e.w.v.v.%.$.Z.v.e.b.n.b.n.Z.m.M.e.y.M u e u w r r r r r y r y y y t m M m t r i M Z.Z.m.Z.Z.n.K.K.Z.Z.K.Z.n.Z.v.e.v.V.K.V.n.Z.XT. < < , < < > % $ > w u t t y y y y y u t f f l l l B l u e w e w w w y y f l l k l C ` _ ) X.] W W N l l V l l l l l C l l C l C l l l C l l H ] W w.+.` V l m ' ! ! ~ ! ] O.{ F l l l l l l l H %.h.$.h.N.e.@.X.X.#.h.h.n.h.%.h.v.v.$.X.] [ ] [ [ [ W 8 7 7 ~ ~ ~ Y 0 7 Y ~ ! 3.5.4.^ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Q Q ^ Y ~ Q Y ^ ~ Y Y Y Y ~ ~ ~ ~ ^ [ ] [ [ ! ! ! ! ! ! ! ! ! ! ! ! 3.! ! ! ! 3.3.! ! ^ 3.3.3.! ! ! ! ! ~ ! Q Q ~ W ! ~ ! ! ! ! ! ! ! ! T W W W W ! Y Y W ! ! [ [ ! ! W ~ ! [ ! ~ Q ! ~ ! ! ! W 7 T W T W W Y Y T Y 7 T T T T R R Q R Q ] X.X.X.+.@.X.O.$.%.@.X.Q X.^ @.h.$.$.%.$.@.X.X.Q Q ] X.@.O.O.[ X.X.X.X.X.X.X.O.X.O.! ] O.O.O.%.%.+.%.X.O.+.@.O.%.{ n r y r y y y y f y u u y y y y y y y y u u u u u r u r r u r u y m 0 ! ! Q ] Q O.O.Q Q O.! [ { m ; * * : * * * * : : : ; ; ; : * * * * * - * * - : : : - - * * ", -": * * = * # > ; ; ; ; ; : = * * : * = ; ; ; u y n f f y y y r y f a y m m m N H N N n u y u y f y y r w : O . X 2 * : * - = = - ; - - * ; ; ; - > t < > > < < w w e e e e w f B m N 6 6 + ( ) *./.&.( X.R .) E ) ) ) X.+.o.o.] y.O.e.b.b.B.F.F.F.F.0.^ [ 0.w.$.e.e.e.e.N.A.B.e.e.[ 0.[ e.M.e.M.b.e.e.e.w.e.e.e.N.v.B.B.N.M.F.B.Z.B.N.B.e.$.Z.n.Z.Z.V.v.n.Z.b.b.Z.m.v.&.m n r r r t r r t y y y y y M _ N r < n { v.m.n.V.w.M.n.n.n.n.Z.n.v.n.M.M.v.Z.Z.n.v.m.].].]. , > > > w u u y y u t t t t y y y y B B B B l u w w e e w u u t y l l l l B B F M 8 ( ] W ' M l l V V B V l C C l C C l l l C l V B k M ] ' X.{ M C C H &.w.! { M m m C C C C V l B V l ` v.%.%.h.V.K.K.N.N.v.h.h.v.@.R @.v.$.O.] X.$.O.O.[ ] ! ~ 0 0 ~ Y 0 ~ ~ Y ~ ~ ! 3.3.~ ! ! ! ~ Y ~ ~ Y Y Y Y W ! ! ~ ^ ^ ~ ~ Y Y Y ^ Y Y ~ ~ ~ ^ ^ O.O.O.O.Q ! ! ! ! ! ! 5.0.! ! ! ! ! 0.0.0.0.0.3.0.[ ~ ! ! ! ! ! ! ^ ^ Q ! ^ [ [ ~ [ O.! ! ! ! ! O.[ [ w.Q W Q w.m.! ~ 0.0.! ! ^ O.Q [ [ Q W O.O.! ~ ! ~ ~ Q W W Y T T W 7 U T T T T T Q Q ] ] R ] ] +.@.X.@.X.R R X.@.@.X.+.] X.X.$.$.@.$.@.O.O.O.X.Q Q Q Q Q X.O.X.O.X.X.X.O.X.X.$.@.$.O.$.O.O.O.$.e.%.$.O.$.%.$.+._ y a y y y t y t t y y r u t t r y r y r y r r y r u u u u r u r u r 8 W ! O.O.X.T 7 R ] Q Q 8 N M : - = : : * * * * * * : * : : * : = : : : - * = - : : - : * * : ", -": : * * * = ; ; > > > ; ; ; ; ; ; = - * : i > t y f B y y n y u f m H N N N N n u u a f y u u u w : X . . X : ; ; ; = = = - = - ; = : ; - : : ; , , - > > > < > < w w e w e e w f l B N U + + U ( #.o._ / X.) E ] ) ) ) #.o.o.+.k.N.e.Q ! O.e.B.K.y.F.t.r.O.y.y.+.w.e.v.B.Z.Z.Z.N.$.0.t.B.e.M.v.v.%.X.O.O.O.O.+.e.e.$.w.e.v.B.e.e.e.e.w.w.e.e.B.B.v.v.m.Z.B.m.M.M.m.M.v.N.N.%.&.( n n n n r r y y r y t t w r N +.b.M.h.n.Z.Z.n.n.K.K.n.V.n.n.n.n.K.U.K.Z.K.Z.Z.T.T.3X < w > > , < > w w w w w w w w u f f y y f f f y y r r w r e u w e u u y f V l l m F m n m n H [ W T W ' H l B V V C V l V C l C l C l C l V k M ' O.o.{ M | y.+.M &.+.L l f f B B B l B V V V l F %.h.v.n.v.N.n.n.V.h.V.n.V.K.%.$.$.e.+.o.+.0.+.$.O.[ ~ ~ 0 7 Y ~ ~ Y ~ Y ~ ~ ~ 3.! ~ ! ~ 5.5.5.! ! ! ! ! ~ Y W ~ ~ Y ^ ~ Y ~ ~ ~ ^ ^ ~ ~ ~ ~ ^ 5.O.w.%.0.! ! ! 3.^ 3.3.5.0.3.! ! 7.3.3.! 3.! 3.^ 7.! [ ! ! ! ! ! ! ^ Q ~ Q Q ~ W W ! ! ! ! [ ! [ O.O.t.b.b.e.^ O.O.0.M.F.D.t.0.t.w.Q W ' [ [ [ +.O.~ ~ W ~ ! ~ W W T Y Y 8 T Q W W R Q R ] X.] Q R X.X.U { &.%.+.%.%.+.%.%.%.X.R X.Q X.X.X.O.X.] Q Q T Q Q Q Q Q Q Q Q ] ] Q ] ] ] ] X.X.O.$.X.Q Q %.%.$.$.e.+.+._ m y u y y y y y y y t u u u r r y y y r r r r u r y y r r u u u r y u r H W O.w.w.Q 7 7 8 8 ~ ! N 2 o o o o r n m < - * * * * * = * * = - : : : - : : : : , , , ; : * ", -"* * * * * : , ; - > , - ; ; ; , ; ; w w , , r w u y f t t t n m m M N u t y y y y y y y u $ * X . * : ; ; ; ; , r ; ; = - * = = = = ; ; = ; , , > < > < > < w t < < t w t t w f B n N N N N ( ) o.] . .X.X.] X.) X.#.z.&.T e.N.%.) R X.$.$.e.+.w.0.! O.O.$.v.w.S.D.F.B.b.b.+.0.b.b.S.0.O.w.O.w.O.O.w.O.O.$.+.e.e.e.e.e.e.t.B.y.0.0.w.O.O.+.e.v.b.b.b.Z.B.B.m.v.e.w.N.C.V.L.Z.N.&.%.o.o._ r r y y n N M { v.w.w.n.h.n.m.E.K.M.v.v.v.n.K.v.v.Z.K.L.Y.H.N.L.K.U.Z.T.].].T.Y.M.U.F.%.&.H F F y n y n y n B y r r r < , ; ; ; = - : = : : = = = = = ; ; ; ; ; ; , ; : , : r < < r ; i , w w w t e t 1 e < < < 1 , > > , < w w w , , , > > > w u y f f f f u w w w t w u e e w w u y B V l y ` '.C.&.H y B H 0 [ ! ! ~ ~ y l B l C l V V V l C B l C l l C l l H O.{ { { ` { ` y y f B F C f f f C C C l s B H ' O.m.O.v.n.v.v.V.V.@.H.K.L.T.Z.b.b.v.$.v.e.e.[ [ [ [ ~ W ~ ~ ~ ~ ! ~ ~ ~ ~ ~ ~ ! ~ 3.3.! 3.! 3.! Q ~ Q ^ ! W 7 Y Y ~ ~ ~ ^ Y ^ ~ ~ ^ ~ ~ ~ ^ ^ 5.w.w.+.^ ! ! ! 0.3.3.3.3.! 3.! ! ! 0.7.! ! ! ! ! ! [ ! [ [ ~ ~ ! ! ! ! W W N 8 W ! Q ~ ! [ [ [ [ 0.e.t.b.F.m.m.b.! ~ ~ 5.M.r.m.b.e.T 5 6 ] [ [ ! ! 8 8 5 7 Y ~ ~ Q W 8 W T T Q Q ( T ] R ] X.] R Q #.) + o.%.#.%.%.%.X.X.o.@.X.] R Q R ) X.Q Q R R Q R Q Q W Q Q Q W W Q W ' W ! Q Q ] ] Q Q ] W T Q $.e.$.o._ m r m M n t y y u y y u f u u r r w w i r w r r r r r r u u r r u u y y r r 0 ^ ^ $.! ! ~ ! Q ~ ~ ! { r * o . O . M M n n < : * = : : * - : : : : : = : - r y n t y t ; ", -"r ; * * * = ; ; ; ; > - ; - ; ; ; i r r t r r w < < r r m m n n r y u u t u y r w : * * . . O * * - : : * * * = : < r r , : : : = = = = = = = > > > > $ $ > 1 > < t w w w w r w l n n m B B N ( %.&.X.) X.@.X.X.X.o.+.%.@.o.] +.N.A.+.X.X.%.+.+.O.O.] Q O.t.b.t.S.t.r.t.t.r.0.q.t.r.y.0.+.0.0.e.0.0.0.e.y.w.%.X.+.e.y.y.e.e.O.+.e.$.O.+.+.X.$.e.e.e.v.N.B.Z.B.e.e.w.v.B.N.V.N.C.V.h.h.v.{ t t y r m ] %.%.$.M.v.v.v.n.n.n.n.$.v.v.n.n.K.V.M.v.n.n.n.U.@.n.n.Z.v.m.].K.U.Z.U.R.[.R.[.Y.A.u.M w y y y y y y y r ; ; ; ; ; ; ; * : ; ; ; ; ; = = = ; ; ; ; ; ; ; < ; ; < ; ; , ; r r r , w w w < < < < < < t < < , > < t t w < < , < w < w w y y f y t u w u u u w w u u u u f B V V l m ` k.T.U.Z.t.H n m L m ' 3.0 ~ H N l V l C V V V V l V l V C l C l k H 0.7.H m M ` M { { C B f f B F { +.u.| F F +.e.B.v.e.v.Z.N.v.k.j.h.V.H.v.Z.n.v.n.b.b.M.v.$.O.[ [ [ W Q ] ~ ~ ~ ~ ~ ~ 3.~ ~ ! ~ ! 5.~ ! ~ ! ^ ! ! ! ~ ~ ! Y Y Q W Y Y ~ ^ ^ ^ ~ ^ ~ ~ ~ ^ ~ ~ ~ ~ 3.^ ! ! ! ! w.e.w.w.! ! ! 3.7.! ! ! [ ! ~ ! Q ! ! ' ! ! ! ~ Q W W W T 8 6 6 W W ~ W Q Q ~ ~ ] ] O.y.y.0.t.w.m.F.0.3.! ! ! $.M.$.e.e.O.T 8 Y ~ Q ' ' ' T R T W Q ! W W W 8 W W T ] Q Q Q ] X.] Q X.) + ( +. .X.%.@.+.X.X.X.] R Q Q R R Q Q Q R Q W T R Q W W Q Q Q ! Q W ' W W ( ] ] X.O.X.] Q T Q +.w.O.O.X._ { m m ` n y n n t t n f y y u u r r i i r r r r r i r u w r r u u y u u y r H ! O.w.! ! [ O.! W H N N r * . * : * . O o : m n t r = = : : ; ; ; ; ; ; ; ; ; ; : - * < y f ", -"n n : * = = ; ; ; ; - > ; > ; ; ; ; r ; t < < r r N 8 M N m r w r w ; : * 2 O . O . . * * : : # - * * * * * * * * * * ; ; = - = = : ; w ; : ; > > > , > > < < < < < w u u w e w u n N ( B f N ( ) #.X.&.o.) o.X.o.&.%.&.#.%.%.%.u.N.L.N.@.X.o.+.+.+.0.! 0.i.S.i.r.i.r.b.S.i.i.i.t.[ [ O.y.[ X.+.[ +.w.O.+.0.e.e.+.+.[ [ [ ] +.y.$.+.O.$.+.+.e.e.v.e.e.e.N.$.t.m.b.v.B.B.N.N.e.h.%.$.%.O.' u u y r r M %.$.$.$.%.$.e.h.v.m.h.h.$.^ ^ M.M.n.M.h.$.$.M.m.M.n.h.v.N.N.Z.Z.R.Z.U.Y.Y.B.N.].Y.A.{ M n y y u u y y r , : ; ; ; ; ; = : ; ; ; ; ; = : ; ; ; ; ; ; ; ; ; : < ; ; ; r r r r r , > > < t < < < 1 < < < , , , < < , < < < < , > w w u t u u w u e u u w w w y l B V V V V k B M u.Z.T.K.S.G.+.C l B n l m [ ! ! ! ~ M l C l V V C V V l V l l l m m l H 7.! 0.+.| { y.B.F.&.n C | %.e.e.%.$.$.+.+.w.O.e.X.] %.h.%.@.) #.H.K.n.H.K.K.Z.n.n.b.v.v.e.O.+.$.X.[ [ [ ~ 7 ~ ~ ~ ~ ~ 3.! ! ! ! ~ 3.5.~ 3.! ^ ! ! Q ~ ~ Y W Y ~ ^ ~ ~ Y Y ^ Y ~ ~ ~ ^ ~ ^ ~ ~ ~ ! ! ! ! ! 5.e.B.v.$.! ! ! ! ! ! Q Q Q ~ Q W ~ ~ ! ! Q Q ! Q Q Q Q W W W T 0 W W Q ~ ~ Q ~ Y ~ ! [ 0.e.t.t.y.t.Z.t.3.3.! ^ b.U.e.) v.b.%.+.Q W ] ] #.%.%.j.%.( 8 7 8 W 8 9 8 T 6 ] ] ] ] ] ] X.X.) 6 + *.) ] %.o.X.X.X.X.Q Q X.R R Q Q R R T T T W T Y W W ~ ~ ~ ~ ! [ ~ ~ W W T W Q [ ] O.+.! Q $.w.O.7.O.e.M.v.{ _ n i N +.+.{ r t y y r r r r r : i r r , w w i u w r r u r r r u y u y N ~ 0.O.^ [ ! ! H r ; 2 2 & . * ; - - : * O O @ O ; r r ; - ; ; : ; ; ; : : - * 2 * * : : - , ", -"t t ; : = ; ; ; ; ; - - , , ; r r w , r t t M ( M M 8 n = * * . O O O O O * * * = * : - * = - * - : * : : * * - * * * * = * - = = = , , , - > > > > < < < > < < > 1 < w u w u w w ( R m l n N ..#.o.A.N.o.) o.#.#.#.%.#.#.%.#.u.%./.C.A.N.+.o.+.O.Q ^ y.q.S.S.t.i.S.S.t.b.M.b.e.$.$.$.e.e.$.v.+.e.B.e.O.[ 0.e.%.) ] { + N { 0.O.O.0.w.O.e.e.e.e.e.t.w.e.w.e.v.N.N.Z.Z.B.B.e.N.e.%.%.#.+.N r r n n N %.v.v.@.X.$.$.v.M.M.%.$.$.$.h.M.w.h.h.M.v.$.h.v.m.Z.n.Z.U.Z.Y.].R.0XU.F.e.+./.[. w < 1 e < < t < < , < , , , , < > < < > < < w u u e e u w w w w w w f V V V V V l B V m ` Z.U.R.U.b.S.{ f l C C C H ! ~ 7 ! 3.{ l l l V l k C V V C H { L { 7.' ! ! ! ! $.O.y.b.w.M.F.O.R m.b.$.$.v.e.$.b.%.%.X.T T X.v.v.h.H.h.n.H.K.I.K.K.Z.n.v.h.%.v.v.v.@.e.%.] ] ' W ~ 0 0 ~ ~ ~ ~ ! ! ~ ~ ! ~ ~ ~ 5.^ ! ~ ! ~ ~ Y ~ ~ Y Y ~ Y ~ ~ Y Y Y ~ ~ ^ Y Y ~ ~ ~ ~ ^ ~ ! ~ ! ! O.e.v.w.[ ~ Q ~ ! O.[ [ W ! Q ! ! Q Q W ~ Q ~ Q W ' ' W ~ 0 0 0 W W W W Q ~ ~ Q ! Q ! ~ ] [ w.m.b.r.t.w.! ! ! 0.w.U.U.v.%.%.v.+.] T 7 ) X.#.#.j.h.%.X.W 8 7 0 W W H N T ] ] ] Q ] X.( + + 6 ) ] +.@.X.X.X.] X.X.Q Q R R R R T Y Y T T Y Y Y Y W ~ ~ ~ W W ~ ' [ Q ] ' W Q Q ~ W Q O.0.0.! 3.3.O.+.$.%.e.+.{ { %.V.v.%._ n m M M r r r r r r r r r w w w r r r r u y u y u y u u m ! ! ! ^ ! ^ [ N : X * X O O & : ; ; - * : & & O @ * r r n r , , ; * * - - : = : : ; = = ; : ", -"w t ; - - ; , ; - - ; > 1 t u y y B m M m m N 3 * o . O O O O . * * * = ; ; : - * * * * - - * * * : * : * - : : ; ; - = = = * - ; - - # # > , , < > < , < < , , < > < > < 1 w e r w < *._ y g B ` *.o.#./.A.o. .&.#.#.) o.] R U E &.A.A.N.N.%.#.%.X.X.] O.0.S.S.w.t.t.M.t.e.e.e.e.e.B.N.N.B.e.N.%.+.B.B.e.e.w.O.+.' ' T N o 3 [ y.O.w.O.w.w.w.e.M.e.t.$.e.t.w.e.N.e.N.v.M.b.v.v.v.e.%.%.O.M _ | r n r { v.h.v.O.v.K.U.v.v.m.E.h.$.w.M.h.v.n.n.Z.n.n.Z.K.U.F.U.T.R.E.R.b.m.b.m.w.Z.[.Y. > < < < < < < , < < < < < > < > > > > < > w u w u > > < > w w u B k l l l l l V B l F N.m.R.F.G.t.{ m l V L 0 [ t.q.[ [ 0.[ F F C V l k C l C ` [ [ ] ] ! ! ! [ W ] O.O.w.w.w.! w.e.e.b.w.O.%.K.Z.O.$.%.h.v.v.%.%.Z.Z.n.Z.!.T.H.V.T.T.T.T.n.b.N.v.v.n.h.e.%.[ ( ] ] W 0 0 7 ~ ~ ~ ! ~ ~ ! ~ ! ! ~ ~ 5.~ ! ~ ~ ~ ~ Y ~ Y W Y Y Y Y ~ Y ~ Y ~ Y Y ^ ~ ~ ~ Y ~ ^ ! ~ ~ ! ! O.w.e.w.O.W W 0 W ' W W ~ ! W ~ W W W W Q ! W W Q ' W 0 W ' W W ' W W W ' ] ! ! ~ ! ! ! ! Q ^ t.F.D.b.0.3.O.~ ~ B.U.v.$.O.Q W W T 8 Y ) @.@.o.@.j.l.V.%.+.] ) W T W H ' ' ] ] X.) 6 + + ( ] X.X.X.X.] ] ] R Q X.Q T R R W Q W Y Y Y Y Y Y Y Y Y ~ ~ ~ ~ ~ 0 ~ ~ ~ [ [ O.[ ] [ O.] ! 0.3.! ! 3.0.y.v.n.b.%.e.v.v.v.v.n.h.M _ +.( r u y r r r r r r r r r r r r u r u y u y y t r r H ! Q ! ~ N N r w : o O . X : : : * * - : * . . O * < < r n H H m B , ; = = = = = ; r r ", -"f r ; ; : : ; : r n N M M m m n y n n : : * o . . O O * * * * : : * : : - - - * * : * * * * - - * * : * * * : : : : < ; : : - ; ; ; > > > , , < < < , , < < < < < 1 < w w w w r w w < | | f B B m _ o.&./.&.&.) U ) ] ) Y 8 Y 8 T X.u.N.k.A.A.A.N.X.] O.7.t.e.y.w.M.B.e.e.v.v.N.N.e.N.N.e.e.%.%.%.+.$.$.$.[ e.e.] { 8 T N N _ y.0.[ e.w.0.y.+.e.e.e.e.N.M.v.v.b.v.B.B.b.b.v.e.v.v.%.%.$.y.N n u r r ( v.Z.Z.v.Z.].Y.Y.Y.T.R.U.T.R.Z.n.m.b.v.Z.U.U.F.U.U.m.m.F.m.R.T.w.b.t.M.b.S.Z.Y.K.F.Z.Y.[.| t y y y y y y f y w w ; ; ; , > > ; - - = = = * - - ; : < r < : : ; ; ; ; = - : ; : * = < , < < < < < < < < , , < < < w w > < < > > > > > , ; > > > < w w t f l B B B f B V V y u.W.W.F.F.G.p.F k l l H [ 0.t.0.3.r.q.! ! 0.[ m k V l l L ] o.O.Q ] X.] Q [ [ X.O.w.e.w.w.%.$.e.e.O.O.v.b.m.v.$.h.$.N.v.%.$.$.Z.K.N.$.j.K.V.h.j.v.K.H.V.V.v.$.#.%.h.v.$.T Q X.X.' Y 0 0 ~ ~ ~ ~ ~ ! ~ ! ~ ~ 3.3.~ ~ ~ ^ ~ ~ ~ ~ ~ Y Y 7 7 Y 7 7 7 Y Y Y ~ Y Y ~ ~ ^ ~ ~ 5.! ! ~ ! ! ! [ O.$.v.] Q ' W W W ~ [ ! ! ~ [ ] ! ! ~ ! W ~ Q T T 8 0 W Q ' 0 0 W W ' Q ~ ~ ! ! ! ! ! ! ~ ! 0.3.! 0.0.[ ! W [ O.T T 8 T W R / X.) X.@.@. .$.V.V.V.l.v.k.+.] Q W ' T R ] ] N 6 6 ( ) ] X.X.) ) ) Q X.] W Q R W T T W W ~ Q W Y Y Y Y Y Y Y Y Y Y ~ W ~ ~ W ~ ~ ~ [ O.O.O.e.t.O.! ! ! 3.7.! 0.w.e.v.e.$.$.$.$.v.n.h.h._ { X.N r r u r r r r r r r r r r r r w r t u u t t t y u N ! ! ! H ; 2 X : . O . * * & * * : : = * - * * & O @ O * : m m n y B B n y r r y t y ", -"< r m m ` M M M N n N N N N X * : . O O O O . * : - : - - : * * * * * * * - & * * * * * * * : * * * * * * 2 X 2 * * - - - : ; > > , > < , < < < < 1 < < , , , < < 1 > < < w w w r e u C y l V f | &.o.&.u././.] 6 U 6 T ) R Y 8 ( ) +.+.+.&.u.N.N.%.] ~ t.v.N.v.b.b.N.v.e.v.N.N.N.N.v.e.N.N.B.N.%.%.e.%.e.%.X.+.+.{ W ' 6 { y.0.O.e.$.O.w.e.e.e.e.e.e.e.v.b.M.e.B.Z.B.B.v.v.v.e.w.e.%.$.o.M r n n { v.Z.Y.[.3XY.Z.B.m.b.M.K.T.].T.Y.K.U.Y.m.U.[.U.F.b.b.M.w.r.M.b.w.b.b.t.t.b.F.Y.v.U.5X'.A.F n y y t t f y y f y w w , > > > > > - - - # = = - ; ; : , < , , ; ; ; ; ; ; ; , , , > > , < w t w w < < 1 < < < < < < > > < t t t t , > > , > > > > > > w t f l B l f a f l l M N.R.U.p.{ m B l k C 9.y.8.[ 5.q.q.r.5.0.0.7.` l l k l F +.O.] $.$.#.$.e.e.0.e.O.O.e.v.w.w.w.O.$.~ Q w.b.K.n.$.X.h.n.n.N.v.%.b.Z.K.Z.Z.V.H.V.V.H.K.I.H.H.I.V.$.] %.%.$.%.@.$.X.X.] ' 8 5 7 W W Q ~ ! ! ! ^ 5.~ ~ ! ! ^ ~ ~ ~ ~ 7 0 Y 7 7 7 7 7 7 7 Y Y 7 Y Y Y ^ ^ ~ ! ! ! ~ ~ W Q Q O.+.$.e.e.$.] W 8 W Q [ [ ~ ~ ~ 0 W [ ! W W W Q W 8 8 8 8 W ' ' ' ' 8 7 W Q W Q ~ W [ 0.[ 0.! O.! Q ! ~ ! O.] W ' W Q ] ] ] +.h.l.h.%.@.X.X.X.@.h.h.l.V.V.N.k.&.X.] [ W 6 U + + ( ( U T R ) ) ] ) R Q Q T R Y T T W W W W W Y ~ Y Q Q Y Y Y Y Y 7 Y Y 0 ~ ~ ~ [ O.[ [ $.e.b.v.O.0.! ! 3.3.! 0.w.$.e.e.e.+.X.] e.N.$.@.o.N _ 6 r r u r r r r r r r r r r r r r u r r u u t t y u u m ! ! ! N i = = O * X * X * : ; ; ; : * - : - * O O O O 2 < t t r r F m M n m ", -": : N N 9 + 3 o 2 O O O O O O . O O O . * : * * * * * * * * * * * * * * * 2 * * * * * : * * * * * * * * * * * = * * * * - - - # - - - < < < , , , < , < < < < < , < < < > < < w w w e w > e y f l B | { { A./.}./.o.( ( 6 T R R E ( ] ( { +.%.+.+.&.%.+.! y.B.B.Z.v.e.e.v.N.N.N.N.N.L.A.V.Z.L.K.N.N.e.%.v.N.X.] v.e.+.] W W [ { O.0.O.] O.w.e.w.e.O.O.0.0.t.t.e.e.b.B.v.v.v.%.v.v.v.w.e.e.%.+.M ( +.e.v.O.N.Y.K.V.v.v.e.w.b.Z.R. > > > > > > - - = * = - - - = - , ; ; ; = - = ; ; , ; , > > > > > > w w t t 1 < 1 < < 1 , < < > > > > t e < < < , > , > > $ # > y l l f y f f l k l { u.` m l V l l l C C m H H 0.r.i.q.~ ! 0.' m k C H ` X.X.) @.j.X.] $.$.w.e.$.e.O.$.v.v.v.M.w.w.$.w.M.m.v.%.%.v.$.%.%.%.V.v.K.T.T.m.%.h.V.n.k.V.K.n.K.V.V.@.X.$.N.v.X.+.X.] R T R R T 7 8 W Q Q W W W Q [ ^ ^ ^ ~ ~ ~ ~ Y 0 7 7 7 7 7 7 7 7 q Y q 7 7 Y ~ Y ~ ~ ~ ~ ! ~ ~ ~ ~ W ' ] X.e.e.%.e.X.X.X.] ] [ ! ~ ! ' ~ Q ~ ~ W 8 5 8 7 7 7 0 8 T W H ' ] Q ' ' T T ' Q ~ ! ! 0.O.Q O.0.! O.O.Q Q +.] %.o.%.h.h.%.@.h.V.H.H.K.V.%.#.#.$.$.h.j.j.#.) +.] O.+.%.] U ( _ N U ( ) ) ] W R Q T T Q R T T Q Y W ] ! ~ W W W ~ Q ! ! ~ Y Y Y q 7 7 Y W 7 ~ ~ [ e.$.e.F.Z.b.w.7.! ! 3.! 3.3.w.e.$.$.%.e.e.X.] %.v.X.) N n n 9 5 n u y r r r r r r r r r r r r w r w r t t t u u r r { ' N r i : X O . & * & & & * X X X * ; , ; : : : * & - : - . O O O . . O . = : m r ", -"@ O O O O . . . . . . . O O . & * - - * * * * & * & * : - * * * * * * * * * * * * * * : * * * * * * * : * * = - * * * * # ; ; - > , , < t < < < > , , , < , < < < > < < < > w e u u w u t r u t C ` _ ( o.o.A.&.)././.+.U U T ( U T T T ' +.e.o.] X.%.O.0.b.b.Z.t.v.N.e.N.N.N.N.%.N.A.k.Z.'.Z.V.N.V.Z.Z.Z.e.e.$.e.e.e.' W t.' [ 0.e.$.w.e.e.0.y.y.O.O.0.e.w.w.w.e.v.b.N.N.e.N.B.v.e.w.M.v.b.N.e.e.v.h.e.e.v.Y.Y.v.w.^ 0.e.e.Y.Y.[. > = - - # * = # > ; # - - - - - = ; ; ; - ; - - , < < < < < t < < < , , < < < , , , < > < > < > < < > > > > > > $ > , t f u u t t f l C l l l l k l l V V l L 9.y.y.y.i.7.[ ' { [ { L { y.e.e.$.O.X.#.#.#.] Q T X.#.@.%.%.O.y.e.e.v.$.^ O.O.%.Z.b.v.v.%.$.%.%.%.n.T.L.P.~.T.Y.Y.!.T.P.T.T.T.~.K.N.%.) %.v.%.] R W T 8 8 T T 8 T ' T W W T T Y W [ ! [ ! ! ~ ~ Y Y 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 Y ~ ~ ~ ~ ~ ~ ~ W Q Q ] O.] O.%.%.$.@.%.X.X.@.] 0 ~ W ' ' W W W W 8 5 W W 8 9 8 8 W W H ' ] ] ' ' W W W ' ! [ Q [ ^ Q ! [ 0.[ +.e.[ 8 ] %.j.h.h.h.v.V.h.l.l.n.n.h.%.$.%.%.j.j.h.l.) ( ' Q ] [ O.+.%.+.X.( ( ( ) ] ' T T T Y T W Q W W W ~ Q X.[ ! ! ! ! ! ! ! ^ ~ Y ~ Y Y Y ~ ~ ! ! 3.! 0.t.e.Z.R.F.b.q.5.3.! 3.! 3.! 0.$.%.%.e.e.e.v.+.) R T N r y y T ^ ' r y r y y r r r r r r w r r r w w r r u u e w N M m n r w * . @ O * & * X * ; ; : : * * * = * * ; : * * . O . . O O O O ", -". . . . . * * : * * * : * * * & * X & * * * * * * * * * * * * * * * * * * * * * * * * * * * : - - * = * - * - * # # # ; , # # ; - - , < < , < , , , , < , < > < < < < > w e w w u w u u u w n M { _ ] U T _ *././.o.+._ U T ] Y ] 8 ] ] ] +.X.] +.O.O.M.B.N.b.v.N.e.N.N.e.N.e.N.N.%.v.Z.K.K.N.Z.V.A.B.N.N.N.e.B.A.+.[ $.+.0.0.O.e.+.O.t.0.y.q.0.O.$.w.w.y.t.t.e.t.M.b.v.v.B.e.e.w.e.v.B.B.v.v.Z.Z.Y.R.[.[.].b.w.^ $.e.v.Z.U.Y.R.].R.Y.t.[ ^ 0.[ ' ' { ' ' 8.' [ w.y.y.t.y.M i r ` [.[.{ n n y y y y y f f f y u e w w w w w u w > - ; ; = - = - # # # ; ; ; > , , > > , < , , , - - > > 1 < < 1 < t t 1 < < > < < < , , < > > > < > , w < > > > $ > > > ; > > w t t f B l k V C C V V V V V L u.y.+.L C m u y m l a y { F.Z.m.v.e.w.w.] R ] .X.X.%.X.@.@.X.Q ! O.Q X.$.$.$.$.$.@.v.n.%.X.] @.n.m.K.U.n.V.V.K.T.P.T.T.U.K.Y.U.K.Z.v.%.+.#.$.R W ] ' 8 8 W 8 7 8 T T W Q W ] ] W Q Q O.[ O.^ ~ ~ Y Y 7 7 0 0 0 7 q 9 q 7 q q q 7 7 0 ~ Y Y ~ ~ ~ ~ ~ W Q ] O.O.O.X.X.#.%.X.X.@.@.@.%.' ~ W T N 8 T ' W 8 8 H 0 8 5 8 8 0 W 0 ' ' ] ) ] ] Q Q [ [ Q ] ! O.[ W Q [ W T ] ] T ] @.v.h.@.V.P.k.L.I.T.P.I.n.h.h.h.h.l.n.h.V.%.] ] Q T W ' [ X.] ] ( ( ( ) R T T 7 Y T W W ] Q W ~ ! ] o.%.! ! ~ ~ ! ! ~ ! 5.^ ! Y Y Y ~ ! 5.5.q.q.3.0.e.F.E.F.D.q.3.^ 3.3.0.3.^ 0.O.+.e.v.v.v.v.] ] T 9 i y y n ' ] [ N t y r t r r r r r r r r r r r r r w r r w m | F r ; : O O O & & X X * X * - * . * : - * * * - ; ; , ; - : * & . O . ", -"= = = = * * : : : : : : * & & * * & & * & * & * & * * * * & & * * & & & * * * * * * * * & & & & * * * * * * * * = * # * * * - # # > > - - ; ; , , , , - , < , , , , , , < < , < , w w w t w w w u u e u e f m ` _ ( _ ( N ( o.*.&.) 6 Y T U R U E Q ' ( X.Q O.Q y.e.v.Z.B.v.N.e.e.e.e.N.N.Z.Z.C.V.V.L.L.L.L.Z.N.V.Z.v.N.B.M.b.e.v.v.v.0.0.O.[ X.t.r.0.q.t.w.0.0.r.[ ( 0.w.t.t.b.b.B.M.w.w.0.w.e.v.N.h.v.K.Y.R.Y.R.Y. $ > > > > ; = - = = = ; ; - ; > - - - # > , , , , - , , > > 1 < < t r < < t > > w > w < < > < < < 1 < < , < < , , > $ > > , > > y y f B V B k V l V V C V V V C L F y C s l l C l u C | | u.m.F.Z.b.w.! [ Q ] ) ) %.%.X.) %.v.h.#.X.X.$.h.v.Z.b.m.m.v.V.Z.Z.v.%.+.h.v.m.Z.U.U.U.Z.K.K.K.K.n.v.%.%.$.@.@.@.X.] ' W 8 ~ 0 8 W 8 7 T T 6 T T W Q Q Q ] [ O.O.w.w.$.^ ^ ~ Y 0 0 7 7 7 q q q 7 q 7 q q 7 7 7 Y Y Y Y Y Q ~ ! ] +.@.X.@.#.j.%.@.#.%.@.@.%.#.#.] ( ( ) ( ) ' ' ' 8 0 8 6 8 8 0 0 H 0 0 ' ' { X.X.o.o.o.X.X.] ] ! [ [ Q ] O.+.] X.N.V.V.I.K.I.I.I.H.h.P.1X~.1X1XT.I.H.V.n.I.!.T.K.N.%.] ] Q ] ] ] ] ] ' ( T T T Y 7 T Y Y T ~ W Q W W ~ W W T o.R 8 W W ~ ~ ~ ! 5.5.3.Y Y Y ~ 3.3.3.0.q.5.0.b.F.U.U.D.M.3.! ! 0.! ^ 3.O.O.w.e.e.v.0.T 8 8 T T N y y r N 5 [ ( r y y y r r r r r r r r r r r r r w ; r n m m r r o . @ @ . . . . . & . . * ; : X & & & & & * * * * * * * * * : : - - : : ", -"* = * * * * * X * & & X & * * * * * & & & & & & & * & * * & * * * - * * * * * * * * * * - * & * * * * * * * = * * - - * - # - - - - - ; ; - < - , < , , < , , , > < < > < < , < w w w w w u u w e r r u w n F &.o.T N N N { ' T T 9 6 E ) 6 7 T W T T T Q [ +.y.b.e.v.C.N.v.%.B.B.A.N.N.N.B.Z.A.N.N.L.].Z.V.C.v.b.N.%.N.e.e.N.A.b.0.0.O.' [ t.t.t.y.t.r.y.0.t.0.' 0.[ 0.0.b.N.b.t.t.r.r.w.w.b.B.b.B.Y.F.Y.R.R.#X[.F.m.e.^ w.e.w.w.e.F.Y.R.Y.B.O.' N i m m m m y m H y.9.L u u u y l i ` [.0X0XeX[.&.N.).} f y f y f f y e u w w w w > > w w < > ; ; ; ; ; ; ; ; - - > - - - > - , , , , , > < < < < < 1 < t w t w w w w w w > w w > > > > t w , > , > > > > > > , > > f l l l B l V V V V V V V V V l l l V k l l { { | { t.b.t.b.M.v.v.F.m.w.0.O.) X.$.h.@.%.n.n.h.@.X.X.$.v.V.Z.Z.N.Z.L.K.Z.Z.Z.v.v.B.Z.K.U.b.$.v.K.U.U.L.U.b.+.X.X.X.X.X.X.Q ] W 0 8 9 7 Y W 7 8 8 T T T T Q Q Q Q [ O.$.$.$.^ ^ ^ Q ~ ~ 7 7 9 q 9 9 5 5 7 7 0 7 q q Y Y 7 Y Y Q Q Q ^ 5.X.X.X.X.%.h.h.j.j.h.j.j.j.$.j.$.X.) ) ] ] ] ] { ' 8 0 8 8 0 ' ' W ' ' ' W ~ { { ] o.+.o.+.] ' W T 8 W ! Q ! [ O.%.L.T.P.T.I.I.!. ; - > - - > , - - - , - - , < , < < , < , > < w w w w t t w t t < w e w w w > w w > > w > > > $ > > > > > > > > > $ w y u e u l l V V V V V l V k l Z m M F m V [ t.t.t.t.b.t.O.O.B.F.T.R.r.0.e.%.@.%.@.#.h.X.%.h.h.@.%.$.! $.v.Z.Z.V.n.Z.K.Z.Z.m.Z.Z.[.].^.R.Z.h.h.v.K.K.Y.Z.X.X.Q T Q X.] W W 8 0 8 8 0 8 W 8 8 7 6 T T ] Q Q O.O.^ O.O.O.e.+.] +.W Q T 5 9 7 8 6 5 8 5 7 Q ) 6 5 6 T ) R T U T R ] ) ] R ] ^ @.k.j.j.l.l.l.l.j.h.j.j.j.@.) ( ) ) ] ) ' ' 0 W ' ' ' ( W W ' ' ' ' ] ' ' ] o.o.] ] ] ] +.o.( ] [ ! ~ ! [ $.V.V.H.I.P.I.!.~.1XQ.J.Q.6X6XeXwX~.1X!.!.K.n.h.V.v.O.$.%.%.+.] W T 8 T 8 T W T 6 6 7 8 W ~ W ~ ~ ~ [ ! O.[ O.[ ] O.) ] @.T Q [ 0.w.^ ! ^ ! 5.5.q.3.q.r.r.r.5.5.q.q.w.b.t.7.3.0.0.r.O.e.F.b.m.b.! W 7 7 ( Q X.M e u M X.( r u y u r r r r r r r r w , , ; = - : ; r n n < * O @ @ . X . . . . . . . . . . . . . . 3 : : ; * X * * * : & * * & & & & & & * ", -" & & . & & & & & o & o * & & & & & & X & & & & & & & * * * * * * : * * & * & * * * * * * 2 * & * * * & & & * * * # - - - - = - ; ; ; = - ; - , , , , < < , < , , - > - , , , < < t t w w u u w u u e e e e r e l C N 8 N N ' T N o.U +.@.Y T Q T W W W Q ~ [ [ 0.$.N.B.N.C.V.e.e.N.N.N.N.N.A.N.N.%.N.N.N.V.Z.A.K.L.].K.N.N.B.e.N.e.0.[ [ w.t.t.q.y.e.0.y.q.q.' N 3 n 3 _ +.t.t.q.0.0.3.0.0.0.0.t.t.S.b.G.R.G.D.b.e.w.w.w.w.r.m.b.$.w.e.Y.u.H 8.w.t.q.0.0.0.7.M f l f f y f y f l F A.0XqX - > - - > - - - - , , , < - , - > < , , < < , w < w w w u t w w w w w > > w > $ > > w > $ > > > w > < > > > > > > > w u w w > w y l l V l l C V C } u.v.v.u.e.b.t.t.w.t.t.G.b.w.t.F.Y.b.t.e.e.W X.%.Q ] X.%.$.X.X.#.N.n.v.e.$.v.v.w.e.v.K.Z.m.K.Z.Z.Y.T.~.~.^.R.Y.V.%.v.K.Z.O.[ ~ 0 0 W 0 7 7 7 8 7 0 7 0 7 W T T T T W Q ] ] O.O.^ 0.O.w.%.] X.O.Q Q W 7 9 8 T Y U ) R ] +.X.) R R 6 6 E R ) R X.#.@.) ) X.@.j.j.l.x.I.Q.>XI.l.n.l.#.@.#. .R ) ..o.] .' ' ' ] W 0 W ' ' ' ' ] ] ' ] ' ' X.X.] o.X.@.k.@.o.k.X.R v.O.$.O.e.v.v.K.P.T.P.!.>XH.P.6XwXeXeXeXwXwXwX!.K.h.h.%.@.O.+.$.%.h.+.T T ( ( 8 T 6 6 9 7 6 7 7 Y Q Q X.] X.X.O.] X.O.%.$.$.%.+.Q W ! w.O.~ ! ! ^ 3.~ ~ ! ! 0.q.q.q.0.q.0.q.r.r.0.r.F.F.U.E.U.F.F.F.t.~ T 8 Q [ W H n e y n ' m f y r y r r r w w ; : : : * * * : : : n r , t * . @ O * . . . . . . . . . . . . . . . . ; & . . X * * * * & & & ", -"& * 3 . & & & & & & & & & o & & & X & & o & & & & * * & & & & * * * * * * * & - 2 = 2 * * * * * * * * * : # * - - - - - - ; > , , ; ; ; ; , , , , , , , , , , , - - , , < , , < , < w u t w w u e e w e u u u a l H 6 _ 9 ( T 8 U T A.C.N.%.+.O.Q 8 W T X.O.! ! e.N.N.Z.B.N.N.v.N.N.N.N.#.%.k.k.N.v.k.e.u.Y.Y.Y.Y.K.K.Z.e.e.e.N.N.v.y.0.t.b.t.t.t.0.[ ' { H N M N n B 3 _ ] [ 0.! 0.0.^ 0.q.0.0.r.i.r.S.G.W.S.b.w.0.y.$.$.w.b.b.5.O.[ W [ t.5.! 3.0.[ ' { H n B C B B m C B f f u.0X[.#X0X#X[.[.0XrX[.u.&.C u f f l f f l l l l y y f l f f f < > > > - , , , , , , , , , , < - , > < < < w w w w < w u u w w u t t w w w w > > > > $ > $ > $ $ $ $ $ > > > > > > > $ > > > > > ; = ; w f l k V V l C | +.y.e.e.b.S.b.e.w.B.t.[ 0.M.w.t.0.0.B.b.Q h.O.O.%.+.+.w.y.Q W O.O.[ O.O.+.O.O.w.w.n.m.b.v.B.Z.Y.T.XeXwXwXeXeX0X~.T.n.n.H.h.%.$.$.%.%.j.h.%.R 6 6 6 6 6 9 5 8 6 6 7 Y T ) X. . .) E ) ) X.%.%.o.R Q W ! 0.0.W Q ^ ! 5.! ! ] ! ! ^ 0.0.q.r.q.q.w.t.m.U.U.U.U.U.U.R.U.F.t.! W 8 7 7 0 N r w e u m +.r u y r r r = = * * * * * * : : ; : ; r n * , * O O . : - & X X & & * & * . . & . . . . . - ; & . . * * * X & & * & & ", -"* * & & & & & & 3 & & & & & o & o & & & & & & & & & & & & * * * & & * & * * * & * : - - = = = * * * * * * * * * * * # * - - - , - - - - - - > , - - , , , , , , , , , , , , , , , , < w r w w w t u u e w e w e e e y l m 8 7 6 T ' T T X.N.V.P.L.N.n.W 0 W T ] $.] O.O.N.e.e.Q %.%.%.N.h.h.%.N.V.N.k.v.N.v.N.B.Z.B.F.F.F.Z.Z.B.b.N.B.t.e.y.7.[ t.w.b.r.[ H n < < F M N N G B B : M q.0.O.0.^ 0.3.0.r.r.S.r.D.G.D.D.B.w.w.$.$.M.m.5.^ w.O.[ [ 0.0.0.0.0.[ 3.q.q.{ n B B B f F F n n y F F m M | ` ` /./.u.u.5X[.m u l y y l y f f f f y f f f f l f w > , , , , , , , < , , , , , , , , < > w < w w w > w w w w t w u t w t e w w w w w w > > > w > > > w > > > $ > > > w > $ $ > $ $ ; w r , ; ; w y y V k l l V V | E.Z.b.e.e.b.e.Q 0.t.q.w.w.t.b.b.e.v.O.+.[ O.[ ~ ! Q ~ ^ ^ Q ~ W T O.v.e.v.N.V.N.n.n.K.K.Z.T.R.~.XQ.Q.Q.I.l.j.j.j.j.#.#.X.) ) ] ( { ] ) ] o.) o.#.] ( ( .X.o.%.j.#.#.%.$.+.+.%.#.#.$.%.H.H.V.V.>X1XT.n.K.>X1XQ.>XQ.Q.1XwXwXwXwXeXwX0X1XI.I.!.I.v.%.$.O.$.h.k.k.k.] 6 6 6 6 8 R ] X.X. .) ( ) ) R ) ) E o. .#.j.@.] T W ~ ! w.~ ~ ! ! ! ! ^ O.X.[ ! 0.0.0.t.0.5.q.r.m.m.K.K.K.K.U.U.F.S.0.3.! W 8 W T N r r w e e n e.{ y r : : : : : : : : ; : ; ; , ; r n B : : & O O - - : * * : * * * * * X & & & . & & & . . . . * & . . . & & . . . & & ", -" & & & & & 3 & & & & & 3 & & & & & & & & * & & & & & * & * * * * * * 2 * * * - - - 2 - = = = * * & * * * * 2 & * * 2 - - - - - - - - - - - , - - , , < , , , , , , , , , < , , , , < < r t w w t t u w w u e w u u u f l N ~ W ' 0 9 ) N.%.e.Z.J.J.Z.O.W W W Y O.Q $.$.O.e.e.R e.e.O.e.%.N.N.N.B.N.v.v.N.N.Z.L.Y.F.Z.Y.Y.F.Z.N.e.b.N.b.0.0.7.{ y.w.0.7.H ' ' M ' [ 0.{ _ n M M N M [ q.0.0.[ 3.0.0.t.w.r.r.S.D.G.G.D.S.b.Z.b.D.M.M.r.q.t.0.0.3.0.0.t.r.! 0.0.0.{ H C F B C y y { m u a a a u e y C ` } # | [.9.u u y y l f l l f y f y f B B y r r < > , , , , , , , , , - , , , , , , < > w 1 w w w w w w w w t t u u w w t w w w w w > $ > w > w w w w w w > w w $ > > w w > > > > > 1 < > > ; ; # ; u V V C V k L A.F.B.F.m.b.r.r.r.q.r.t.r.F.b.0.e.e.O.e.+.w.X.] #.X.! O.Q Q Q O.^ +.v.v.Z.v.k.v.v.Z.Z.n.e.Z.U.~.~.X1X1X>XQ.Q.Q.Q.I.l.l.l.j.l.j.#.#...o.) .) ) . .) _ o.) ( ) ) X.) #.h.h.h.@.%.h.v.Z.h.$.%.V.H.H.H.P.1X6X1X!.K.!.1X3X>X!.!.1X1X6XwX~.6XeXeXeX6X6X6X!.H.%.@.] [ O.$.%.h.H.@.) . .#.V.H.H.I.H.J.k.#.j.j.#.@.j.#.#.h.j.#.X.T 8 W 0.0.^ 0.O.! O.$.+. .X.h.w.^ 0.w.t.q.0.r.b.Z.m.b.m.n.m.m.b.D.0.3.3.~ 7 8 W N u i r u u e { e.{ M r ; : : ; ; ; , , , , > - r n n n - ; * O O 2 : = - * * 2 * & * * * * X 2 & & & & & & . . . * ; . . * & & * o o . & & & ", -" & & & & & & & & & & . & & X & & & & o o & * * & - * : - = - - - = - - - - - - - = * * * * * * * * * * 2 = - - - $ , , , , , - , - - - , , , , , , < < , < , , , < < , < w < w w u u y t w u e e u u u t f l m 0 W W 5 6 U $.N.%.v.A.] ] @.$.W W Q O.T $.e.$.A.L.N.o.+.%.%.+.o.%.h.%.%.e.$.e.B.B.V.N.F.L.Y.].Y.Y.Z.e.b.B.B.e.0.7.[ y.S.w.~ ' q.0.0.0.q.q.0.+.O.[ +.0.O.y.y.[ [ [ 0.r.S.b.0.t.S.i.G.D.D.D.R.U.R.t.b.D.S.D.i.S.t.5.! ! 3.r.r.0.5.0.0.i.q.| { { | u M 8.| B l l f y l f y y e l y B l a a y f a a a a f f u f f t , - * * - > > , , ; - - , > , > , , , , < > < > w < w w w u u w e t y y u e u e d t t u w w $ % w > w w w w w w w w w r w $ > > w > > < , > > 1 > > > w > > # < B V V Z C ` +.Z.Z.m.B.t.0.q.r.q.r.w.Z.M.w.O.O.%.e.%.Q Q ) X.^ Y W ! w.Q X.Q O.w.e.v.v.n.V.v.n.h.h.n.U.~.XQ.>X:XQ.Q.>XH.H.H.H.H.V.l.j.#.j.X.) ) o.&.{ &.V.#.h.h.#.o.#.#.N.h.v.+.( #.v.V.n.%. .l.I.>X1X1X1XwX1X!.T.P.>X!.1X!.!.Q.Q.1X6X1X!.wX6X6XeXeX6X>XT.h.$.O.] X.X.h.H.P.I.x.I.I.I.>X>XQ.P.P.P.:X].K.n.%.h.P.V.V.h.%.%.] W W ! 0.M.w.O.O.$.%.%.@.X.V.V.n.O.w.b.b.r.r.b.F.Z.D.S.D.F.F.D.F.F.r.0.7.~ W W W u i i i u u m | H r M m # ; ; ; , , , ; > > r F F < < : * & O O & - - & * & & * & * & & 2 * 2 2 * * o . & ; r X . . & & o & & & & * ", -"& & & & & & & & . & & & & * * & & & o & & * - - - : - * & * - - = - - * * * - 2 = * & * * * * * * * 2 = = - - - # - - , - , - , , > - , , , , > > - < , , < , , , < < < w w w w u u u u w w e w u u t t f l N 8 Q ' 7 R %.k.C.C.C.%.Y ] X.] U T T Q X.Q u.N.Z.b.Z.t.%.%.%.%.%.X.] ] %.e.+.%.%.%.h.B.Z.Z.L.Y.Y.Y.Z.r.b.v.B.b.w.y.0.r.F.G.t.t.q.q.q.0.0.0.0.0.[ ' _ M { [ N M M { +.M ( t.b.i.r.q.S.G.G.G.G.R.D.b.G.R.D.S.r.r.q.^ ! ! 5.5.3.5.0.q.p.y.8.p.e.&.| ' [ { { B a f B l f f f f f y f y f l l a l l f l l f u w w ; = - - = ; , > > > > , ; > > > , , > , , , < < < w w w w w w w u u u t u t u e w u t d t u u u t u w > 1 w > w w w u w $ $ w % > > > 1 1 e t w w w < < > w w w w > , f C A V V { Z.Z.v.M.b.t.b.B.0.w.v.n.m.0.+.N.%.O.W Q X.O.[ O.w.B.B.u.] T ~ 0.w.e.t.b.Z.V.h.h.$.%.n.U.T.].R.X:XQ.:XQ.!.3XQ.#..._ _ _ '.:XK.>X3X3XQ.Q.>X3X>XQ.Q.I.I.I.I.H.l.l.j.#.j.@.&.| o.K.Q.H.l.K.V.V.n.v.n.Z.b.O.W ) $.$.%.j.@.k.P.1X6X1X6XwX1X!.!.Q.!.!.1X!.>X1XQ.1XQ.1X6X!.Q.P.>X>X3XXQ.I.P.Q.!.Q.I.H.@.O.e.e.O.O.X.X.] ] W [ v.v.%.$.$.V.V.V.h.%.C.Z.e.w.w.M.S.b.r.t.S.S.S.S.F.F.U.R.F.D.r.0.! ~ ~ W N w r r r u m y y y n l y r r ; ; ; ; w r n B F F n < < & O O * - 2 * * * * * * * * * 2 = * 2 * & * . & & * * X . X & & & & & & & & ", -". . . & . . . . & & & & & & & * & * * 2 * * * * - & - 2 * & = - * * * : - 2 = * * * * * * * * * * = = - - ; # - , - - , - , , > > , , < , < < < , - , , , , < w w w w w w w w w u w u u w u w u u t f l m W 0.~ 5 ) %.j.%.X.) R ] ] ) T T R R ] $.N.Y.Y.e.w.e.e.A.Z.A.@.O.+.] X.e.v.A.N.%.%.N.Z.L.L.L.Y.Y.Y.Z.e.w.M.B.B.B.v.Z.F.S.S.D.D.S.i.q.0.q.q.y.{ M n B N y.y.y.{ 3 3 N M n _ t.t.0.q.i.D.D.G.G.W.R.F.R.R.S.i.i.5.^ 3.0.5.0.^ 0.0.[ ' H M ' o.B.b.e.y.H y a a u f f B f B f B B y f l f l f f B n f n y w > ; ; , < > , , , > $ w > > 1 w t t > > , < , < < < w w w w w w w e w u t u u y u w w t t t t u t u w w w w w w w 1 > > w > w t u w $ w t f t w < t w w w 1 1 w w w w w e , , B C A V *.h.h.%.+.+.e.S.G.w.0.0.t.e.$.v.N.0.e.m.Z.K.Z.U.K.U.u.F G &.o.[ 0.t.t.w.M.m.b.n.h.#.%.v.m.Z.T.R.R.X1X1X1X>X3X:X_ /.3 & - &.2X>X:XQ.>XI.n.V.Q.3XQ.:XP.I.P.I.I.I.V.j.j.j.j.%.&.%.X.n.I.%.#.h.V.V.O.O.$.0.0.$.$.#.X.@.j.P.I.!.!.1XwXwXwX1XI.!.1X1X1X>X1X6X6X!.1X>X!.1X!.Q.I.I.J.x.l.H.I.>X>XP.>XP.Q.Q.I.P.P.:X>X1X:XQ.>X2XwX6X!.Q.P.I.V.v.X.Q O.O.Q %.h.O.] %.v.v.v.%.h.H.I.P.P.K.h.v.e.e.w.t.t.b.i.r.S.D.D.F.F.B.e.R.R.S.r.q.3.! ' r > w r u y a F } &.M t y y t r , , i r m F n n y 1 = . @ @ O & - # * & - * & * - : = * * = & 2 * 2 2 * & & & & & . < - . . & & & & & . . & & ", -" 2 & . X & & & & * * - * 2 2 2 2 * * 2 - * * & 2 2 * 2 = * 2 - 2 - - - * * * * * * * * = * * - - - # # - - , , > > , > < > < > > 1 < 1 < < < , < 1 < w w < < w w w w w w t u u u u w w t e e l k N Q e.7 5 X.#. .) X.U 5 +.%.X.X.T ] X.%.h.N.L.Z.e.O.O.y.N.Y.5X5XX.] +.N.$.e.+.e.N.v.N.V.Z.C.L.U.Y.F.Z.t.0.t.F.Z.F.Z.U.F.R.F.D.D.D.S.D.t.r.r.t.{ M n +.y.y.0.r.+.t n 3 { { M y.t.t.r.D.S.D.D.G.D.S.S.S.S.S.q.r.3.0.q.q.r.0.0.8.m n m { q.y.o.{ { M y y u a f f f l B f f u < , 1 t u y f B B B n f f t , , , , < < < > > > > > < > , t u > < < < > < < > w w t y w w w w e w t t a y t y t w u d u t f t e t t w w w w 1 1 < > , 1 t e - - , < > w e e e w > > w t w < < w 1 1 w u t w t t B C { #.v.v.$.+.B.F.b.e.O.O.O.T %.%.O.Z.m.V.n.$.e.Z.I.T.| V C F F { [ 7.0.e.M.Z.b.b.N.h.h.v.B.b.b.Z.U.~.X>X3X>X3X2X7X'.3 *.3 # F /.>X:X3X2X6X3X>XQ.H.H.l.H.I.H.I.I.I.I.I.J.V.V.h.@.#.V.h.@.@.X.X.@.@.T T W W Q T .V.N.l.H.J.I.P.I.P.1XwXwXwX2Xx.x.Q.x.x.x.J.J.>X1X3X>X3X1X>X>XQ.J.`.I.J.H.J.H.H.x.I.>X3X6X1X3X6X6X6X6X6X6X6X2XrXwX6X1XQ.Q.`.2X].>X!.v.%.V.V.V.N.v.v.Z.V.v.K.!.T.!.XI.P.n.%.v.b.r.b.S.i.S.D.D.S.G.e.e.R.D.S.q.0.0.[ r i i r r t y a y y { N.m t y u r r y B L ` n t w * . @ @ . . = - - * * * - - * * 2 2 & & & 2 2 2 * & 2 & & & & & & . - d r . . & & * & & ", -" & & & X 2 2 2 & & * 2 2 2 & * * * 2 * - 2 & 2 * - 2 * * - = = * & & & 2 2 2 2 * & & & * 2 * - * # - * - - ; , - , - , > > , < < > < < > < > , , , , < < w < 1 t w < < t w w w w w u w w u u w e w f V N W w.9 6 ) o.) .) ( ) #.V.Z.%.Y ] Q %.A.V.Z.B.e.e.O.O.B.L.].qX'.] e.A.h.%.%.W ] K.K.L.L.L.L.K.Y.U.F.b.b.F.m.F.Y.Y.[.R.R.W.D.D.D.i.t.b.S.S.G.{ : *.y.t.0.0.t.' F F N p.D.G.S.G.S.r.B.D.p.t.G.S.r.5.r.t.r.i.q.q.r.r.q.8.H M m f C y.q.0.H f y u s l y y l f f y u t w > > > , > ; > t y f y B f B f y < , , , , , , , > , , > > > > - > < w w < 1 < w w w w , > w > w w u t u t t u y t u y f t e t e e e t t d e w e 1 , < 1 t t e , > > w < > - - , > > 1 w f V V l B g f f f f f u f V V C _ X.O.n.V.v.b.F.e.$.X.%.X.Q X.@.$.w.y.M M H [ O.e.K.u.G k V Z C { e.w.v.v.N.b.e.b.t.Z.Z.F.b.m.Z.K.T.Y.Z.%.X.$.O.X.o.H k V V V f a a u u m r < t u u t w r H [ q.q.0.w.b.n.n.V.K.K.I.K.H.I.K.| f f f f k ` x.:X,X2X>X:X>X3X3X3X:X,X2X7X,X&.` 3 ` /.7X>X>X6X6X6X:Xx.x.x.j.V.l.j.l.H.H.J.H.H.I.H.X. .o.) ) ) ( ..@.X.@.) T R ] %.v.Q R E X.Q R @.#.k.n.I.!.!.I.T.2X6X3X:X`.H.I.H.x.J.:XQ.>X3X1X1X1XJ.x.J.x.I.I.I.I.`.l.j.:X3X1X>XQ.>X6X>X>XQ.1X>X>XwXrXwX1XQ.1X7XtXtXrX2X>XX 2 O O O 2 - , = - - - * * * & & 2 * = * * - - * * - - * * 2 & & . & & & & * * & * : . * * & & & & & & & & ", -" 2 & & * & 2 & * * * 2 & * 2 * 2 * * * * * 2 & & & - * - 2 - & - 2 - 2 = 2 - & - - * 2 * * * * - * * = 2 = 2 - * - - > - - , , , < < < > > > < < > < 1 < < < < 1 < w w < w w w w w w w w w w w w w w u w u f C ' 8 8 5 U E @.k.#.o.@.%.k.V.B.B.X.X.$.%.k.C.L.Y.G.B.e.e.Y.C.L.[.].N.C.L.V.C.L.%.] A.Y.L.Y.T.Y.Y.U.R.F.F.F.F.U.R.T.R.[.[.#X0XW.G.i.D.S.b.S.b.S.M < &.t.r.S.t.e.u.A.M _ G.W.D.D.u.{ _ N N N u.R.r.w.r.r.D.r.i.4.0.r.y.{ m y f B B m [ 8.M u f y a l B B l l y y , = = , > > > , = = ; w y y y B f f f w w < , > , , , , > , > > > > , > > > > , 1 w w w w u w w u w w w e u y d a y y y t u f f y t e t f f t w e d e e t < w f t e d > > w 1 < t < 1 w t w t l Z A C M L K K } K G D F C V k C X.h.n.Z.b.m.m.w.O.@.+.z.+.X.R ] N m y d f g M [ Q O.v.&.| D C V C &.B.Z.b.B.B.B.e.$.e.v.Z.m.Z.V.Z.N.X.] ] ] ] ] R N C k l l f f y y d t w u f f d f f f f w r H y.r.r.t.r.v.Z.T.K.K.H.I.K.Y.A.F f B n B p &.,X:X>X,X3X3X3X>X3X3X>X>X6X7X4Xz.z.`.7X2X7X6X6X2X:XQ.I.x.l.l.V.H.V.#.j.n.n.l.l.V.V.@.R .@. .U U .#.) T T ) @.j.j.k.$.! Q T T W T Y R X.@.%.n.n.%.h.H.Q.,X:XP.H.P.`.J.x.J.J.3X2X2X2XJ...#.z.J.x.l.J.J.x.z...j.x.I.Q.>X6X>X1X2XrXrXwX6XrXrX6X6X6XrXrXrXrXrXwX~.T.T. r B d L e.] 6 8 6 6 +.C B y f r - O O 2 , , - - = - & - * - * - - - : - * = * - & * - * - = * * & * * & * * * & * * * & & * * * * & & X & * & & ", -" * & & * * & * 2 = : - * * * * * - & - - * 2 2 - * 2 & 2 * * - & & = * = - - * * & - - - = : - = = - = = = = * # - - - - - , > , > , > > < < > < > > < < 1 < < 1 < w w r w w w w w w w e u w w u w u t t w f M 0 W T 9 T ) o.h.k.N.%.#.z.l.%.L.C.N.h.V.V.k.Z.Z.B.0.w.b.B.Z.].[.T.Y.C.V.L.].].'.L.L.C.Y.Y.R.[.G.G.R.G.U.F.Y.R. < > ; = ; > w ; w y y B f u w w < < < = = , > > > > > > , > > , , > > t w w > > w w w w w w w w t u t f f f f f t t w t d d t t e f f t t t < 1 w w t w w % > w , , , > , d V l f f f C m N 7 W +.y.e.+.u.u.u.u.&.` +.Z.C.V.Z.v.$.$.X.*.} G L F M N n y e u f l C F { X.O.$.e.N.| V A Z V L | +.e.N.e.Q W O.%.v.v.v.v.$.X.Q ] Q Q Q ] ( m B y u u u d t t y y y f y f f y f y f f y r H 8.t.t.q.M.b.b.m.K.Z.K.K.K.L.} V y f B h t &.,X2X2X3X3X2X6X3X3X3X2X2X6X>XR @.@.H.2X7X7X6X6X6X:XQ.x.x.x.H.I.n.V.l.l.$.@.%.h.X.X.X.X.] Q U 6 Y X.X.] Q Q ] Q T Q Q 7 Q O.%.O.[ [ W Q X. .#.@.k.V.j.H.:Xx.J.x.'.`.`.J.L.z.x.`.2X:XJ.z.*.&.j.....#.....#.#.....j.l.x.Q.6XuXwXrX6X1X6X6XrXrXrX6XwXrXrXrX7X7X , > > < < < > > < > > < > > < < < w t < w w w t w w w u w w w w t t t f w y M 7 7 T 8 U ) R X.j.k.%.o.k.V.@.k.H.L.F.U.Y.Z.Z.B.N.t.O.].[.Z.Z.].].L.L.v.%.K.L.Y.].Y.K.].T.R.R.D.D.W.G.F.U.R.R.R.#X , > - > , , , > > , ; ; > % > w w > w w $ # > > > > > > > > > > > > > > > , > > , < < w w w > > > > > > w w w d t t y f f f y t t t t t t t t t w t w t t < r w t 1 % $ % 1 w 1 1 , 1 , > t l k C f f l N 7 8 W 0.t.w.v.K.K.T.Y.e.@.h.N.N.A.'.'.N.+.Q { l f f d t t t u f y m H M A C { e.%.! O.e.G k D D V g V { o.O.W W v.v.%.v.v.%.O.[ O.Q Q ] Q T ' k l y y y t t t t t t f f f y y f f f y f a l p n F y.t.t.t.b.b.b.b.B.U.U.!.A.` f f f y f e ` '.:X:X>X:X3X2X3X7X3X>X>XH.8 ] H.T.2X7X2X2X3X3X3X:X:XQ.x.H.J.V.H.n.l.h.Q R ] T Y Y 7 Y W W W W T U 8 Q Q Q 7 Q [ O.v.V.I.P.h.W ] N.N.C.'.J.C.J.x.x.x.c.x.x./.C.'.`.,X`.J.x.J.:XP.J.x.&.#.#.*.#.......l.l.l.x.x.'.`.:X6X3X!.!.Q.Q.1X1XwX6XwXwXwXwXrXrXwXrXrX > - - - # - : - - - - - - * - - * * 2 & = 2 * 2 - - - - - = = = & * * * * * & : : & * * * & * & & 2 2 & & ", -"2 2 * 2 & 2 2 * - & - & 2 = & - - & - 2 2 - & 2 2 - - - * * - & 2 * & = = = - - = - * - = = 2 - = = = - - - - - - - - - = - = - - - - - - - , , , > > > > < > < > < < > w 1 w w w < w w > w w w e t w w w w u w w e t f m 6 5 Y U ] +.) o.X.j.k.#.k.k.C.n.h.N.V.n.B.C.L.Y.v.B.B.2XrX,X5XqX0X'.].L.+.C.[.].Y.Y.U.R.R.].R.R.W.W.W.G.R.R.F.U.R.W.0X0X0X^.0XW.W.i.i.S.S.S.b.3 < | t.b.S.D.U.F.u.&._ N m ` { 7.q.q.q.t.r.r.i.S.5.r.D.S.S.S.D.S.H l V B B B l l l l u w r w w w ; = ; , > , > > > > > % > > > > % > w u w < > ; - > > > > w > > w > , < > > < > > > > > > > $ > > w > w w > w w w w t t y f f f f f y d f u a a u d e d d d t w w w t d 1 > > 1 w > > > > > > > > , 1 u a y a k N 7 8 8 [ w.V.T.I.K.n.+.L.P.V.h.N.n.#.N.[ Q Q { V f f y f f f f f V M W L V l V M %.$.O.%.&.F C V V C l l C M T ' V.v.n.v.O.[ T X.%.O.] X.X.Q &.F l f f d t y d t B C C C C A l V l f f f f a f f p { b.t.r.B.S.t.t.F.T.T.T.P.&.y y y d B B n C.P.L.V.x.3X6X3X:X:Xj.x.P.X.R j.!.3X6X6X6X6X2X3X7X6X3X3XP.H.V.h.l.h.X.W W T Y 7 7 Y W 7 W T ] ( ( ] V.L.%.N.I.I.I.P.1X2X>X3XT.P.2X3X>XJ.>X,X:X,X'.z.c.c.x.z.x.'.,X,X'.,X3X:X:X`.`.J.x.l.z.x.J.x.x.z.l.x.l.j.x.:X>XrXrX6XwX6X1X>X6X2X1X1X1X6XwX6XwX6XwXwXX > > , < < > w { y.H m y r N N u e i * O . : - > - - - - - = = = * - * - # - - * & 2 2 - 2 = * - = 2 - - - - # = - * & * & & * & : < * & * * * * & & & 2 2 2 2 2 * * ", -"2 2 2 * 2 & - - - - * * - & - - * * 2 - & & * - * - & - = * * * = & * = = = = = = * - ; = = - = - - = = - = ; , - - - - - = = = - - - - , - , , > < > < > < < > < < 1 w w w > w > w w w w w w w w u u w w w t u w e u a y N 9 U ] R R X.o.&.#.k.A.V.N.l.h.%.k.V.k.C.'.A.).t.Z.3XrXrX > > > > > > > > > > > > > > $ $ > w > > > , > > , t w w w > w w > > , < > > < > > > > > > > w > > > > > w w w w w w t y f B y B B f B f f a f t u t t t t w w w f f f w > % 1 > % > 1 1 1 > > 1 > 1 w t u u u a m 7 W ] $.%.I.T.K.L.m.O.Y.XK.K.T.P.K.] ] ' m k l f f f f f l f l m 8 C l V l l F &.h.e.v.B.e.| M C k k l V M ] $.$.n.N.O.] W 7 5 Q ] $.n.v.%.| C V B V l B M ' ' W +.{ [ { L B A y l f f l l a s { S.b.b.F.F.Z.F.Y.Y.Y.T.T.T.o.y y n f y n /.fXHX5Xx.:X:XQ.x.x.j.l.1X1XH.R U @.>X6X6X2X2X6X6X2X6X3XI.H.v.h.H.h.T 7 Y 7 7 5 5 Y U 5 7 Y Q Q V.P.>X,XP.>X2X2XwX2X2X1X1XrX7X2X2X3X>X'.x.x.J.,X,X:X`.'.:X:X:X`.,X,X,X3X,XQ.:XI.:X:XP.:X`.x.x.:X:Xx.x.x.x.z.j.I.>XtX6X6X2XI.I.Q.>X>X!.!.>X3X>X!.!.P.H.I.P.Y.K.Z.Z.K. > > , , , < , < < , t B m H F y e w t t > ; X . . & - - - - # * - - = - - * 2 2 2 - & - - & 2 2 2 * & * & - - - - - - - - = 2 * 2 * * & * * * - < * 2 = * * * 2 2 2 * * * * 2 2 * ", -"- = = = - - - 2 2 - : - : : : - * - - 2 & * * 2 * 2 - - - - - & - - 2 = = : : - = = 2 = = = = - > ; = = = = ; - > > > - - - - > > - > - , - , > > > > > > > > > > 1 < % > > w > > w > w w > w w w u u t w t w u t w w u m 8 5 7 U 5 T X.o.o.%.A.'.C.V.k.N.N.V.C.V.{.{.*.%.b.B.B.A.[.).0XqX].B.G.Z.N.N.L.Y.T.Y.].T.U.U.R.W.W.W.W.R.R.F.R.F.W.D.D.G.R.W.W.W.0XW.4.q.q.q.w.v.M.b.U.U.T.].R.T.Y.Y.Y.F.D.S.6.q.q.q.q.q.i.i.i.r.S.S.G.y.{ { m y F m l l V V V l f w > $ > w w > , > > > > > > > > > w w > > > $ > > w w > > > < < < w u w u w w w > , > < > > > > $ w w > > > > > w > w w w w w t t f y f f f l f f f f f f a a a e e w t w w t f u w 1 > > > > w w d t w > % % > 1 w w w u u l m 8 W O.%.h.K.U.V.V.v.v.Z.v.V.K.L.h.#.*.` F f a f l l l f l f f l D D M D V l l f s k F &.A.Z.U.P./.| G Z k V { X.O.v.n.X.%.e.$.O.( [ ] O.N.$.X.N.&.{ { ` H H W W Q T Q Q O.%.e.{ H F L F { L C L | t.b.Z.K.U.Y.L.T.!.>XT.>XX1X6X>XV.n.P.6X6X3X2X2X6X7X:Xx.V.H.h.#.$.! T 7 Y W Q Y Y Y Y 5 T Y O.N.L.K.h.P.>X2XwX2X2XrX4XP.I.:X2X3X>X:X:X,X:X`.,X4X,X,X,X,X5X4X3X:X,X4X,X,X`.:XP.`.:X:X:X:X`.x.l.`.`.x.:X,X`.`.J.,X3Xx.j.j.H.l.j.n.I.H.H.n.j.H.H.V.V.H.l.k.h.h.v.n.%.v.K.L.T.T.].T.H.I.V.@.%.w.Z.[.D.S.0.O.O.t.u.y $ w > < < < , , < < < < < < , , , r y m M M y t w > - . 2 , , - = - : - - = = = - 2 * - - - - 2 # - 2 * * 2 * - 2 * 2 2 - - - # - - = * 2 * * 2 * 2 2 ; < t - & = # - - = * = * 2 * * 2 : * : ", -"- - - - - - - * * - : * - * - - - - * * * : - * 2 = : - - * * * * = = - : : - - - = = = - * - # = ; - , - ; ; $ > > , ; - - - - ; ; , > , > < > > > < > < > > > > 1 > > w w > > w w w w % < < < > w w w w < w w w u y f m W 5 5 ) R 7 T #.o./.C.V.z.k.V.A.V.N.'.'.gX5XA.A.Z.[ u.v.e.].0X3XY.S.Y.F.e.Z.].T.Y.].[.[.R.R.R.R.W.^.^.W.W.D.W.D.W.W.G.G.D.D.W.W.0X#Xq.q.7.3.3.r.F.R.G.R.].R.].#XW.G.W.G.G.i.r.q.q.q.i.i.t.S.G.D.D.y.| L F l l k k V V l V l l u i $ $ > 1 w t e w % > > % > > $ > w w w w > % > % > < 1 w w w w > > w w w u u w w 1 1 1 > w > > > > 1 w % % 1 w > > > > w w w r t t f l f f f l f f f f B B f y f t w % w t e w 1 1 > w > 1 1 > 1 w w % w e w 1 > > $ , > y B V M 5 7 Q v.h.b.Z.Z.v.v.m.w.^ Z.v.R T ' F l g g g k V g g f l l l V G o.) M z f f f f e a B } &.V.>X,X/.u.| G B &.X.X.h.B.$.Z.V.%.F C C m { o._ o N n M ] W W T R Q h.V.n.h.n.K.n.w.O.0.B.B.B.b.B.b.m.Z.T.U.P.!.T.T.K.T.wX~.~.6X6X1X>X` y n t n z.'.,X8XDX>XJ.l.l.l.l.P.Q.!.!.~.6XwXwX1X1X6X2X>X>X1XP.H.V.V.$.! Q ! R ) ] W Y W W W Y Y Q Q $.%.X.E X.H.3X>XI.J.P.:X3X2X2X6X2X2X2X2X2X2X2X4X7X,X,X.XdXbXtX,X,X:X:X'.:X:X].,X`.:X:X:XJ.l.x.x.x.:XP.x.I.3X>XJ.I.>X`.j.v.I.P.V.j.#.@.X.@.@./ @.j.l.j.j.n.n.X.@.h.$.$.h.h.N.L.&.` | N.K.m.v.M.e.F. > , > - - - - - - - : * : : : : ; : ; = ; , > > ; > , , , - - > > $ , < , < < < > > > > , > > > > , , < < > w u a n N R U o.@.5 6 o.%.k.L.C.A.A.k.k.%.A.L.Z.{.5XL.A.B.0.Z.,XtX,XY.Y.M.S.b.e.B.b.Y.R.Y. $ $ > > w w w % > > % w > > 1 , > - ; ; > $ > 1 e t w w w w w > > , 1 > w w > w e w 1 w 1 w w u t u f f l l B B B B V B B B B f f u t d t t w e w e w w w 1 w t t w 1 > w > w w > w w w w 1 w l Z M 5 7 O.%.X.w.e.v.n.T.U.Z.Q Q Q Y ( D z V Z D K J K V g g f f B l l &.X.M k B f f l l y f s k ` k.].| y 1.| k ` o.] %.V.%.] ` F k V F A M T ( _ ) T Q Q @.X.%.V.K.K.H.!.K.H.K.H.n.n.n.K.K.n.K.~.!.~.!.!.!.!.1X~.!.K.!.wX1X~.1X1X1XL.` t y t n ` z.x.l.k.J.I.P.H.H.:X1X6X6X6X~.6XwXwX1X6X2XI.h.L.1XT.Z.v.j.h.$.$.O.R X.R ] ] O.Q Y Q Y Y U R R X.@.C.P.3X2X7X>X>X3X3X3X2X2X3X2X2X2X2X2X2X2X7X7XtXbX7XtX4X,X,X,X,X,X:X4X4X4XP.J.:X3X`.J.I.:XQ.Q.:XQ.Q.:X>X:X`.P.>X>XT.2X2XI.I.L.H.I.I.n.j.l.j.l.l.l.j.@./ $.h.X.h.H.Z.o.| n C | N.Y.F.Z.Z.e.w.M.e.+.$.u.9.n # 1 u w w u w u f B f f B y t t t t y l m 8 Y H m y y e - 2 - - - # - - - - * # = ; ; # = - - # - # * - * 2 = 2 - 2 - - - 2 - - - - - - - * - - - * 2 2 = & : , & 2 & * * - ; > , - = = - - - - - - ", -": - - - - ; ; # - # # # # # = # = # ; # = ; ; : - # - = ; = - ; - - - - # ; ; ; ; ; ; ; = - ; - = ; > ; - $ # > - > - - - - - - ; , , > ; ; # - - - - - - - # - ; ; = - - = ; : - - - ; , > > , , < > w > w < > > w > < w n T 8 X.e.T 5 T o.z.L.'.N.N.k.z.N.V.k.C.[.].[.K.N.e.Y.L.C.[.Y.t.0.e.e.t.e.e.Y.].2X > % 1 % w w w w w % % > $ # ; $ , > < e t w w w w > > , > 1 1 w w w w w w w w w w t d y f V B l G F l B B B V V V B f u t t t t d e w w w > 1 w w w w w > 1 > % % w t t e f e 1 t l g F T Y Q @.@.@.@.X.%.Z.].0XU.$.^ E ( B z l V S K u.K V V g l g g l z A &.#.m k f f f f f l a l s f } `.&.F A L V l M X.R X.Z.n.` V Z Z D D ` ( W X.X.Y Q %.h.L.!.1X1X!.I.!.!.X1XwXeXb.$.$.O.X.X.X.%.X.e.%.N.N.O./ 5 5 X.X.E j.V.l.J.:X7X2X2X3X2X2X3X:X3X3X6X2X6X6X6X7X7X7X7XtX4X4X2X:X:X,X7X4X4X4XtXrX`.j.j.l.l.H.`.`.3X3X>X>X:X>X>X:X:XQ.:X2X3XH.J.H.I.Q.I.I.3X!.H.H.H.l.n.n.^ / j.H.H.V.n.K.!.&.B t B { ].F.&.{ ` ` ' w.%.T R +.m w w t f y w w w w y l u y l f t t u u f l l m T T 8 M y t w - & = - - - - ; # # # ; # # # # # # # # $ # # = * = = = = - = - - - - - - - - - : : - - - - - - = = & & 2 2 * & 2 * - - > ; - # ; # ; # ; ", -"= - - ; : * - # # # # # # # ; ; - - # - - - ; - : - - - ; = # ; - , - ; # # # # # $ # * - - - - # ; - - # - - - > # - > ; > > > , > > # - > - - - > > > > # $ > $ $ > > > > > - , < < > > , > < w < , > > > w w w w w w w r T ( ] e.e.E 8 U A.].'.N.#.z.h.N.N.N.L.,X[.[.Z.B.Y.qXqX[.[.G.B.y.y.0.b.F.e.v.U.].[.0X2X0X0X0X0X0X0X#X#X^.W.S.i.S.W.G.G.W.D.R.W.G.i.S.i.i.S.S.D.R.i.W.W.R.G.R.G.S.i.q.6.4.q.q.7.q.q.i.S.y.u.R.9.L l V V u e u t t t t t t u 1 e p e p e a f e e e p a f t w w e % w w w w > > w 1 w e e w w w w e % % > > % % > w > % > 1 1 1 1 w w w w w w w e 1 1 w w w t a f f B l l D C k V B f C B C C f f f a a t t e e w 1 w e w w > % % 1 1 1 1 t 1 e f f u e f f C C { O.$.$.h.%.h.v.X.Q v.T.T.Y.T.Z.X.) G V A J A V F B f f g l g g a k z ` L B f f V V l l l B f V l C '.'.} a e f V f F _ 9 +.e.{ C C A V C C M X.+.X.$.#.h.V.K.1XwX1X1X0XX>XJ.j.C.V.H.>X!.!.P.1XH.j.n.n.^ / $.j.h.Q.>X!.l.o.` ` m B V B ` &.| n h f y m &.v.X.] %.M y y f f w t y w u t y f y u w u e t y B V s M [ ' T m f t t - 2 * - - - - # # ; # # # # # # # # # # # # - - - = * - - - = - = = - - , , - - - - - - # - = = = * & & 2 , - & * - * - - > , > - - # # ; = ", -"# $ # # # - - - > > > > , # > - , > - , < = # - - - - - # # > > < > - $ # - - - - # - : - ; - > # # - - - - - # > - - - , , > - - ; , - > - , - - - > > ; > > - > # - > - $ # > > > > > > > - > > > > > $ $ > w w w w w w $ N ] +.%.B.X.5 T o.k.V.C.N.%.z.C.C.V.k.C.L.A.N.B.qXiXiXtX[.G.e.0.y.y.b.Z.F.Y. % e % % % % > % 1 > % w w w w w w t t t w w w t t t f f f f l V f V f l B L | } L F V f f u t t w w w w w w w w w w e w 1 1 > > < 1 w e w 1 > w , ; t F { @.v.v.h.n.H.k.X.X.v.%.O.h.K.V.#.L A A D V s p f f l f g l f l f f f u l V D A A A Z Z k k Z V 1.[.} k l f e t d f F M m F *.{ M V V C F ` $.O.$.n.Z.h.K.L.I.0X6XeXuXXQ.1X1X2X>XH.H.l.j.>X1XwXwXZ.M.m.U.G.D.S.r.b.Y.5X[.@.E R X.V.l.R #.N.n.P.3X7X7X7X6X2X3X3X6X2X2X2X2X3X:X>X,X:X,X2X7X,X7X7X7X7X7XuXtX7X7X4X4X2XrX2X3XJ.l.j.#...j.I.3X1X6X6X6X6X6X2XQ.@.h.V.l.P.>X6X1X6X!.l.$.h.j.R $.!.~.~.!.6X1XL.*.e f l B l B C B a f V B f F N.V.v.e.e.' M f l l f f l y y t f y w w u u f l f B B C { [ ] H l l y w * = ; ; - = # $ > ; # # $ $ # ; # $ # $ $ # - - = - - - = = - - - * - , , , - - - - - - - - - - - * ; - ; r - & - - - - > > w w > > ; $ # > ", -"$ % $ > % > > > > > > - # - - - - - < - - # - # * # - - $ > > - # - $ # # - - - ; - > ; - - - - - - > - > $ > > - - > # # > - # - , - > - # - > > # # > > > > - > > > # > > > > > > > > > - > > > > > > > > > > w > > w w w u F &.Z.e.%.] ) %.%.z.J.'.`.C.C.C.L.%.k.[.N.N.e.[.qX0X[.[.[.t.y.e.$.[.F.B.[.[.[.[.[.].[. > w w w w w w e w w e w e d f t t f a y d t y f f B B B f f f l V C C B l f f D F l a d w w e e e w w w e w w 1 > w e w w t t d e w w > 1 e f g M h.I.h.X.@.O.Q R Q %.O.^ j.Q.P.*.k l a f f l k l l l l l l f l l f l Z C Z A A A D s./.s.&./././.| f l f l f t a A G { _ _ ` o.{ F C C C C { O.O.$.Z.K.H.n.V.K.~.eXiXrX!.>XK.K.K.!.6X1X1XX1XwXeXwX0XXQ.1X6XI.K.P.J.>XQ.h.T.uXX3X7X7X7X6X6X2X3X6X6X6X2X2X:X>X>X3X>X:X2X6X7XtX7X7X7XrXuXuXuX7XtX7X2XwXwX>XP.'.V.j.@.@...@.l.x.1XwXwXwXwXrX3XV.K.H.I.Q.P.Q.>X6X!.^ j.H.v.h.$.!.wX~.6XwXwXwX`.A.1.G l l C B d l B B B n ` e.v.Z.V.$.T N C f y f l l f y l l l u u u C V l y C B H 0.O.' y l l y > 2 # # - ; ; $ $ > > $ $ # # # # # # # # # # # # # # ; # # - - - ; , , , > w , - ; = - - , - ; $ - - ; t B : - - * = # # > > w w w > > > $ $ ", -"> > > $ $ $ - # $ > , - - - > > > , = - = # # - # $ $ > $ , - - - # > # > - # # - - - - - - # # # $ > > # $ $ > > # # - # # # ; > - - > - > > > > $ > $ $ $ $ $ $ # $ # $ $ $ $ - > > - - > > > > > , , > > > > $ w w w w w e e | %.+.e.h.#.X.%.N.N.'.`.'.C.C.V.$.v.N.0.Y.[.5XqX0X[.qXG.0.y.0.0.].[.b.[.].U.].R.0X0X0X0XW.W.W.0X0X^.W.D.D.D.G.D.i.i.i.i.i.i.i.i.6.i.S.S.G.G.i.G.D.i.i.6.3.7.7.8.8.4.q.8.q.i.i.i.i.[ L L C V f t t u u a e a s f p w w e e t a a a u a d e t e e w t f e e w w e w % % % w w e e w w e e 1 w w w w w 1 1 w w 1 1 w w w w w w e e t e y a a f t t t f f f l V V f f B V B B f f f f u f g D F V l f u w e t f t e 1 w e w t t f e e f B B e w w 1 1 e f f V M $.h.@.X.@.$.h.V.K.P.H.H.l.&.&.G a f l l g f g f g f f g V f f B l Z A G D V V A K &.N.`.:X'.` d f f f f f f f a u l M ( ( M C F V D J C D { X.] X.$.v.N.] X.v.I.Xh.$.%.v.I.~.wXwX1X!.~.wXwXeXeXwXwX0XwXeXA.&.uXeXuXuXK.] { M n y t n f n ` '.rX].V.#.%.#.X.X./ @.x.H.n.L.n.^ I.I.Q.P.I.>X>X>XT.T.eXX:X3X2X3X>X,X6X7X7XtX7X7X7X3XuXDXrX7XtXDX7X2X3X>XP.1XP.V.V.].J.@.j.I.6XwXwXuXeXuX6X2XrX3XQ.>XQ.!.1X1XQ.l.>XH.^ ^ $.!.~.1XwXwX6X1X3X1X].G l &.].u.| | C B C C C M F &.L.X.@.X.` B l l n u f V V l u u f y k F C l C { t.[ O.{ l l f < 2 # $ $ # - , , , > % > > > # # # # # # # # # # # - - - > > > > , > > , , < < ; ; ; # - < , - > > > ; - * 2 - * - - = - - - , w d t w > 1 > $ ", -"$ $ $ $ $ $ > > > , , , > # - $ # - - - - - > $ > ; ; - # - # # $ # $ - - # # # - - - - - - # > > # # ; $ $ $ - # > > > - > > > - > - , > - > > $ $ $ $ # # $ $ > $ $ $ $ $ > > > > > > > > > > - > , , , > > $ $ w w w w w < w r _ o.v.N.N.X.o.N.C.L.L.J.[.L.J.].L.[.].].qX0X5XyXiXyX0X[.e.0.[ F.F.w.v.V.Z.K.R.#X[.#XW.W.W.W.0XeX0XW.D.i.D.S.i.p.i.i.i.i.i.q.q.i.S.S.i.D.G.S.i.S.i.q.q.3.7.7.8.7.4.7.q.i.i.i.i.r.8.H D Z C f u a d d a s s f g a a e e e a u a f a a a a a a a d t w d d w e e e e e w % w w w e % % 1 w w w w w 1 e 1 w w w w w w w e e t t t d t t u t f t y a f f l B f f B V f t u t f y f f f y a f C B u t t d t t w t t t w % % % > 1 e f l V f d t e t f l f t B m M M M ` N.n.l.V.V.j. .o.&.C w t f f a y f V C F F L F C F | | } K F *.'.s.` G V V k z } /.'.| d f f a a a f g f l u n H _ M z z A D J C V F ` ( 8 Q V.Z.] ' @.h.K.wXX3X,X,X:X:X`.,X,X:X:X:X7X,X7X7X2XrXtX7X7X7X7X7X,XI.3XrXrXeX1XwXrX7X>Xl.H.H.1X6XwXwXwXwX6XuX>XH.I.I.Q.1X6Xj.I.n.^ n.h.h.~.~.wXwX1X1XXL.&.N.0X1XT.Y./.G l V k V V k ` Z.].V.n.+.F f y y f l l k l l k k k l | | H u.e.! [ 0.{ C f w = 2 ; < > $ $ > , , > % > , , $ $ $ > > $ # # $ $ # $ # > t y w , > > $ , , , > ; , ; ; - - - , > - > > , ; ; , > # # - - - > w u t t w w w w $ ", -"> > > w w > > < w < > > # - - # # - > # - # - - - # # - ; - ; $ $ > # # # $ $ - - > # # # # - $ # # # $ $ $ $ $ $ > $ > $ > $ ; > - > # > $ # > $ > > $ > $ > $ $ > $ $ > $ > $ > > > > > - - $ > > > > > > > > > > w w w u w , , m o.k.e.b.v.] &.C.C.L.].'.C.].[.N.'.L.@.qXiX0X[.qX[.uXrX[.w.0.O.N.w.b.v.Z.K.Y.[.R.0X[.W.W.#X0XeX0XW.i.i.i.i.6.q.7.q.i.i.i.i.S.i.S.G.7.S.i.S.i.i.q.7.7.7.7.7.3.7.4.4.q.r.i.i.p.i.i.8.G A B y y f f g h g h h h a a a p a u a a a a a a a a a a e e e e e t e e e w e w e w w w b e e w > w e e e w e e 1 1 e w w w w e t d e e e d u a f f f f f f f B B l B f f y f f u t t f t w t t t w w e t e w w 1 % % $ > > % w w w t a f l f w w f f g V t w w t t f B V l | h.o._ M m F F G f B f f C } | { { y.e.b.b.A.A.%.N.L.z.#.%.x.C.z.&.D Z C V V k C | D f f f f a a f f g f y w d m F C C V V C A C l C C r ( %.o.n n N o.N.K.e.F F F { B.!.wXuXuXwX6XwXwXwXrXuXuXeXeX1XP.K.!.1XeXwXeXuXT.E 6 7 W ' N H T T ] N.k.H.k.k. .%.h.h.$.%.j.I.P.H.h.V.h. . .n.K.T.1XeXeXrXeX0X0XT.U.X2XrXrXuXyX2X>X1XrXrX3X`.2XwX3X2XuX6XwX2X4X2XV.l.j.n.1X6XrXrXeXwXrXI.H.j.@.H.I.>XH.XZ.F B B f l f l V C C l l C C +.y.O.$.$.y.%.e.H l f , 2 ; > > - ; # , > > 1 1 > , , , % > , , $ # # $ $ $ $ % w w t t w > > # # - > - - - - - # # # $ # # $ $ > > $ # w > $ $ > % $ u w % w e e e w > ", -"w w w e e u d f d t w > > ; - , > ; > # # # ; # # ; > > $ > > # - # # - $ # # - $ # - - - # - - > $ $ $ # $ $ # > $ $ $ $ $ $ > > > $ $ $ $ $ $ $ $ $ $ > > > > > $ > $ $ $ $ $ - > > - > > > - > - > > > > > > w w w w w w w u r n ( %.N.N.B.+.( '.J.C.'.L.'.J.J.C.#.N.N.L.yXrX 1 w w t a u f f < < > > > > # > w w w u f l l k F { M f g g g f f f V F | N.Z.b.b.Z.Y.T.].>XX`.,X`.4X].,XrXuX7XrXrXrXqXqX2X>X>X3X2X3X6X6X2X6X6X1X2XwX!.H.H.I.I.3XwXuXuXrX6XT.P.n./ !.K.I.eXuXK.h.H.h.U.~.wXeXuXwX~.!.!.!. > > 1 % $ $ > , , > 1 1 % $ $ % > % % $ $ $ > $ > > > > w w t t w > > < < > > > > # - # # # # # $ $ # $ $ ; ; t f t w $ > > > $ > > > t e e w w ", -"w w t e t y f t f t > ; > # - - - # # # - > $ $ $ > ; ; - > > > > > > $ $ # $ # $ # - - > - # - # $ $ $ $ $ $ ; - # # # # $ $ $ $ $ # $ $ $ > $ $ $ $ $ $ $ $ $ > $ > > $ > > $ > > > > > > - > > > > > w > > > w w w w w w w w > t y _ z.L.Y.%.#.[.].'.].[.J.J.`.C.A.k.%. .'.rX0X[.C.'.L.Y.[.[.L.N.F.N.Z.Y.B.F.F.[.R.Y.W.0XeX#X#XW.S.i.i.i.6.i.y.y.i.i.G.G.G.B.p.i.q.8.i.p.i.i.q.q.[ 7.7.7.8.3.7.4.q.i.q.q.i.i.i.7.' L A z z z g h h g g g a p p t e a a a a f a u p a a e p e e e e e e e a e b w w w % w w w % t y t 1 w w e a l a w e d e w e t d t w d d t t t y y f f l f f l l l l f f f f f a f f f y f f y t t t w e % w w w w w > 1 w w e e e d a l k V y t w f f d t f d u a a f f l k k F 8 N C F C F F C F | B.Z.U.b.m.X3XqXqXqXrX2X`.>X>X>X3X4X2X3X:X3X3X2X3X3XT.P.>X>X!.>X1X1X6X1X0X!.wXuXuX1XH.n.H.!.6XwX6X , , 1 > 1 $ , % $ $ $ $ $ $ > > % 1 > > 1 1 > > > > w w w > > # - - # # # # # $ # $ $ $ $ > > l l w > w > w > > > 1 w t t t w w ", -"f f f f y f f f t - - - # $ # # > $ - > > - > > % $ $ $ , , , , , , # ; $ $ > $ # > > # $ # # # $ $ $ # $ # # > > > $ ; $ $ $ $ $ $ $ $ # $ $ > $ $ $ > $ $ # > $ $ > > > > > $ ; ; ; > > > > > > > , > > > > > w w $ > > w w > > w s n +.#.N.%.'.2X2X`.].'.'.].`.C.%.h.%.X.h.,X 1 t d t e e e t e e d t u a f t f f f f V V V l f f a f y f f f f a a t y l V f t e e e e w w w w w 1 1 w e e e t e u f l s t t B f t y f B t w t e w t t f l k { Y 5 H { N.'.u.&.&.e.m.b.b.Y.~.wXuX4X0XrX7XyXyX3X'.].5X`.].`.:X,X/.F V D A A A V C A A V k l f f f f f f V f f f f y f M ` M C f f y f B B f f f l l L &.A.| k k l | K.wXuXuXuXuXrX6X1X2X7XrXrX6X6X6X6X1X1X~.1XwXuXwXuXuX>X'.'.wX4X>X>X1X>X>XI.>XrX>Xh.V.P.I.H.h.$.K.H.$.v.n.Z.K.Z.U.Y.T.1XeX0XY.%.V.].K.M.^ w.w.! B.yXgX'.z.J.z.&.`.5X'.z.x.`.:X4X:X`.`.`.,X2XrXtX,X].,XtXqX2X2X>X>XL.l.`.H.J.I.K.P.P.P.P.!.T.I.K.V.!.1X~.Y.K. 1 > > > % % 1 1 $ , > $ % $ 1 $ % % > , > > 1 w > w w 1 w w w $ > # # # # # # $ # $ # # # # $ $ ; ; ; l f $ w t t f d e w d f t d e a ", -"y t w t f t t f > > > $ > > $ , > , , , $ > , > 1 w w > , , , , , 1 , ; - > > > > # # > > - # $ # # $ $ # $ $ # > - # ; $ # $ $ , > $ > $ > > $ $ $ $ > $ $ $ > $ $ $ > > > > > > > > $ > > > > - - > < > > $ > w w w > w > $ > > < > t M N _ %.h.N.C.C.[.[.4X`.J.L.C.@.%.h.] X.h.N.V.A.N.C. w w 1 1 < w w p e e e w w t t d t t a a f f f f f l g f f f f u f f f f f f V V f f f f e w w e e e e w % e % % 1 w w w e e e e t t e e e e e t w w w < w w w w t d f V Z G ] 8 7 W X.L.2XL.J.L.].].,X2XwXwX2X2X3XrXtXuXDXGXtX,XtX7XgX7X,X,X'.} C D V V V V V V A Z k V l g f f f f l l f V V f f f h f e u f f f B f f f f l f g B n m l j l C z.>XrXuXuXuXwXwX2X3X2X7X7X2X2X2X2X2X1X1X1X6XwXwX1Xn.1X2X`.`.qXtX3X3XQ.>X:X:X:Xl.1XP.P.L.I.!.!.H.n.I.n.$.%.%.$.$.v.Z.v.Z.Z.v.Z.v.V.T.T.X1X3X2XQ.`.H.C.J.H.J.I.H.V.H.n.Z.Z.V.Z.Z.V.I.~.!.Xs.F V A C A C D C D C G ` [.[./.| m } } B V M { y.O.&.e.o.{ 9.F.m.&.L H F G | l s > 2 2 > > 1 t w % > % , 1 % w w % % > > % % , $ > % > > < > % > w t t f f t t w > > # # # # > > # $ # # # $ $ $ $ # > > < , > 1 t f t w w w t f f f f f ", -", > 1 , e > 1 f t , 1 $ > > < 1 , - , , $ $ % % > w t 1 , , 1 1 > < , $ # $ - $ > - # # > # $ # # $ # $ $ $ $ > > > $ > > $ > , > > $ $ > $ $ > > > > $ $ $ > > > > > $ > $ $ $ 1 > > $ $ > > > > > > < > > > > w > w > w > > > w w < w y B n m *.&.N.#.C.'.[.'.[.[.,X`.C.N.X.] ] X.X.%.A.K.K.X>X2X3XX`.].`.z.z.H.>XI.:XP.j.V.H.K.j.j.l.H.P.Q.H.j.j.$.X.Q $.Z.Z.$.X.) N.X>X3X,X2X2X3X>X>X>X>X>Xl.C.l.H.V.H.I.n.h.h.v.V.n.n.Z.T.L.I. > > > > e > > > w % % > > > > % > $ > > 1 , , , % 1 w w t a y u w % # # # # # # # # # # $ # # $ $ # $ $ $ w t > e w > d f f f f f t f f B V ", -"e 1 w > - < > e f t 1 > , > % > > > 1 1 1 > > % > # # > > w w w 1 % 1 > , $ $ $ $ $ , , - $ > # ; $ $ $ > > 1 % > $ $ % , > - , > % $ , , > > $ > $ > > > > $ > > $ $ > > > > > > > w > w > > > > > < > 1 > % > w w > > w $ w w > w w w f l B f C M o.X.N.C.`.'.J.`.].,X].].V.N.V.u.V.N.%.Z.[.].Y.e.Y.Z.Y.b.Z.R.W.U.D.D.0X#XW.F.D.W.W.G.D.p.p.p.t.7.7.q.t.N.Y.y.! 7.t.! ! 7.q.i.i.q.q.3.3.7.~ 7.q.7.! q.[ C D D J P v z k g a p d t d t t d d a e a p e t d a a a p a d e d a u e e e e b e e b e w w w w w w w > > w > < 1 e w w e w e e e e a u a t a y t f f f V l l l f a f f f f f f f a a f f f a l l f a a a b p e p p w w e e e e e w e a a g l a a l f a a w e t d f y f d t t Z D F { ' W T T Q %.k.,X4XrXrXrXyXtXtX2X3X3X3XyXuXDXiXDXDXGXGXDXDXGXDXDXtX4X'.5Xs.F A Z k V D Z z Z k l l l k l V Z f f l a l V V l l l l k l f f f f f l l l k k Z z k k V C { h.0X1XuXrX6X2X1X2X2X2X2X4XrX,X,XK.T.4X4X1X1X1X1X1X1X0X!.>X7X`.C.L.z.z.l.H.P.I.H.j.!.K.H.H.n.h.H.>XI.l.j.%.%.n.L.U.e.%.%.Z.T.U.0X1XK.v.%.%.e.$.$.O.T Y N.'.'.5X'.#.J.P.'.x.#.z.P.:XP.'.:X2X2X2X6XrXuXwXwX1X2X3X>XI.l.C.>XC.j.h.n.h.$.%.V.Z.n.$.Z.Y.T.L.T.Z.Z.U.Y.Z.V.K.K.h.E X.@.H.n.Z.].L.N.L.P.H.H.1X1XwXeXeXeXuXeXeXwXwX6X6X6X6X1X1X1X1X` Z V V V C C V V A C F F V V V V } | *.( ` Z { y.L H V C ` y a w > t y l V A V f > # > w % > > > , > % > % % % % % % % $ 1 % , , $ 1 > 1 1 1 w f f f u > > > , - # # # # # ; # # # # - # > $ $ > > w f w % 1 w 1 d d f f f t d f u w ", -"1 % % w 1 , > # , e 1 1 > > 1 > 1 % % % > % > 1 $ > 1 w t 1 > 1 w e 1 > % > > % , , , , , , > , , , > > > > % w > > > 1 > > , $ % > > < , > > > > $ > < w > > > > $ $ > w w w w w w w w w w w w r < > > > w w > $ > > w w w w w w w w w r n l f C f } #.C.[.C.'.L.,X,X].,X].`.L.L.L.L.L.N.L. w % > w w 1 w w w t e e e t t t e e u f f f f f a f f f l f f f f a a a a a a a f f f a f f f f e e e e e e w w e e e e e t y a a f s l L L f a e d t t t f f f t u B D | O.^ ! 0.O.Q X.`.].>X>X2X2X7X2X3X3XrXtXuXyXyXuXDXDXDXGXIXIXGXDXDXDXDXtXtX,X>X5X/.| } | ` C l Z V k l l l k V V Z D F F | | D k l V B l l f l f f f f l l V k k k z Z z V F ] T &.@.K.7X1X1X1X2X6X2X2X2XrX,X'.K.I.1X2X6X2X2X2XX>XP.J.H.J.H.J.l.h.v.h.v.v.n.m.Z.Y.T.Y.Y.K.U.m.B.Z.K.L.I.I.V.R R C.3X>X].K.V.L.>X!.P.P.Q.wXuXeXwXwXiXeXwX6X6X6X6X6X6X6X6X6X2X/.f z V A A A D V A V F V D A V L | /.*.W [ V ` L l k k i $ w > w d t l D J V f f > > % w > > 1 > % % % % w t w w e 1 w w % e w 1 1 e t e e w t f f f e w 1 , , > # > > ; $ > $ $ $ $ > > > % > > w > 1 f d w w w 1 > < 1 , $ $ > % , ", -"e e e e w 1 % % $ $ , t 1 > % > 1 % % % % % % % % $ % % w $ $ w w t e e w < 1 w 1 > 1 > > 1 > , > 1 1 1 w w w > w w w w % > > % > % , , , $ % 1 w % > > > > > 1 > > 1 w 1 w > w t t w % $ > > w > > < w w w w w > > w w w w w w w w u < < t f f y f m o.#.C.L.[.5X5X5X,X].'.,XJ.C.A.C.`.`.'.Y.Y.X2X>X`.4XtXuXuXuXyXDXiXuXDXGXGXGXGXGXGXGXDXtXyX7X,X4X7X7X,X`.P.'.c.1.G Z A V k k V V Z G A.'.[.qXrX}.} D Z Z B f f l f f l k V A A A Z Z Z Z Z V { $.N.h.@.#.3X1X1X3X2X2X2X6X4X7X4X:XP.H.I.P.>X2X3X2X2X1X>X1X2X2XwXyXgX'.l.:X:Xl.V.V.>XI.j.h.j.@.%.v.l.V.N.>X3XP.h.v.rXX3X,X:XP.3X2X1X1X1X1X6X3X>X>X1X!.!.>XP.V.h.N.n.h.v.V.V.v.v.n.Z.Z.K.Z.N.Z.Z.b.Z.h.N.k.@. .E V.tX2X1X2XrXT.R 5 $.H.h.V.3XuXeX1X>XrXuXeXeX6X6X6X6X1X1X2X1X2X,X&.k V V A D C C A C C A A C D D C s.&.] H C l z Z a 1 % e u t a t f k k k l a d , - $ % > > > % 1 1 1 1 w d w e w > % 1 % e w w w t t e e a f f f f t w > % , > $ > > $ # # # > ; > > > > , > 1 > $ > f V k e e w % % e e e w % e e ", -"p p e w w w w e w w 1 e w > 1 % % % % 1 % % % % e w w % $ w w % , 1 e 1 w > > w 1 > > % > > 1 % % 1 > 1 > % w w w 1 > 1 > % > 1 > > > , < > > % , > 1 1 1 w e w w e w w e w 1 1 w w > > w w w w w w w w w w > < > > > w w > w w w w w w w > u u y f y ` X.C.5XqXqX[.`.].].'.C.#.C.].V.L.L.C.L.'.[.[.#X].XrXyXuXuXuXyXuXiXDXuXiXGXGXGXGXDXDXGXDXtXDX7X4X2X,X,X3X,X:X3X2X2X| g Z Z A Z V Z V s.rXyXDXtXtX7X5X'.'.| V G l s g V k z A D S S J D J V Z F +.k.P.`.J.I.I.>X3X1X2X2X2X7X4X4X7XtX>Xx.x.x.H.`.z.z.P.2X3X>X3X2XrXrXyXDX'.l.J.I.I.H.V.P.H.j.) .j.j.j.V.T.>X2XuX2XrXiX0XXY.!.Y.w.0.0.0.! ! W W O.o.qX4Xz.C.,X:X:XI.I.>X>X2XX2XqX2XL.h.h.^ @.j.K.eX1XX>X!.>X1X4Xu.C D V C D V V A C C C D C C J | A.X.m l s s w 1 d f s a a a a f f l V k f t > # $ e e % > 1 1 % % 1 > % f e % w t w % % $ % % > e t e p e t t e u > > > > > % $ $ $ $ $ > > > > < > $ , > 1 % 1 1 $ e a e e e e e e w e d d e e ", -"f a e e e e e e e e 1 w 1 % % % % e % % % w w w w e w w % e w > , > < w 1 % e % , 1 > > $ > % > % > 1 1 % > % % w 1 1 w w > w w 1 1 < , , % w w w w w w w 1 w e w w e w w e w e e w w > w > 1 w > > > w w w w w % > > w w > w w w w w w w w > w f f a C *.#.[.s.} | A.[.Z.V.%.X.C.P.%.C.,XL.'.].'.].L.L.[.[.[.Y.Z.F.D.D.R.D.D.G.W.W.#XD.i.q.q.8.7.7.y.y.' 9 0 ! 3.0 ~ 0 7.3.q.i.D.G.S.t.r.q.0.5.{ J :.D J :.:.:.S z z g z z h h d d d d d d d d t a f d d d a a d a f d d d e e e e e e w b w e % w w e e w w w e w e w e e 1 e e w e d e a d e f f f f f l f f f g f f f f f a a a a a a p a p p a e a d t k l e w e e % e e w w w b e e e e e e p e e e a e t d u t f V f f f V V A ` b.Y.e.O.X.%.A.V.N.P.,X2X7X,X`.qXDXuXyXiXyXDXGXGXGXuXDXGXGXGXGXDXDXDXDXtXtXtX7X7X6X7X7X7X2X3X,X2X,X1.} G V Z Z V V s.DXtXtXtX4X3X4X7X7X,X{.[.'./.} C V k F ` ` ' H } C L | u.V.l.>XJ.J.2XQ.Q.>X>X2X2X4X6X4X7X7X7X7X3X:Xx.H.&._ &.L.`.`.P.!.1XwXrXrXyXyX[.J.3X:XK.n.l.H.K.#. .C.V.h.l.J.2XwXwXeXuXuXeXrXuXI.V.I.I.H.#.) T.Z.2XT.O.w.0.0.! W ~ ~ 5 q X.qX[.'.{.`.>X`.J.P.2XrXX>X1X3X>XX3X3X>XK.C.K.m.O.O./ T Q Q X.@.+.#.L.K.v.V.b.v.B.L.].h.%.@.z.`.'.P.:X`.,X,X3X6X1XT.Z.Z.I.T.wXwX1XuXwX1XV.$.v.T.1X>XQ.Q.!.I.L.I.2X/.l D V V C D A V C A A V V A D K s.{ V k a w e t f a a e a a a f l V Z l f f e # $ % % % % 1 1 1 % 1 $ $ % % 1 > w 1 w % % % % % e w w e e % w w w > > 1 > % % > > > % > % > 1 > e 1 1 1 > 1 > > 1 % $ % w e e e e e w e e e e 1 ", -"% e p e e e e e e e e e e f f % % 1 e w e % % % % % % e % % e w > > % % e e e % % 1 % % % > > % % > 1 1 > > % % w 1 1 w w > < 1 1 $ 1 w e e t e w t w e w w w e e t e e e w e w w w w 1 1 1 w w > w w > w w > w > w > w > > w w $ w w w w w w u t a y u M o.C.1.v S | ].L.C.k.o.#.N.#.A.'.P.C.[.,X[.C.V.v.A.Y.Y.T.F.D.D.S.S.S.S.G.W.W.G.i.q.7.7.7.q.y.y.' H ~ [ ~ 0 3.! y.0.q.S.D.G.S.r.q.0.q.0.L :.:.:.:.D D D A z g g g Z k h p t a a a t t t d a d f f f f a f h a f e p d e e e e e e e e e % b w e w e e e e e w e e % w e p d a a a u s f a a f f f l f g f f f f f e d a a a p p t e e t t e a e e d f e e p e w e w w b b w % w e e p p e p e e e b a u a f f f f B B V f f l { $.X.+.+.#.e.@.k.C.J.`.2XtX4XtXDXGXGXDXGXGXDXGXGXGXiXGXGXGXGXGXGXDXDXDXyXtXyXtX7X7X7X7X7X2X7X4X2X7X4X5X5X[.s.L V V | tXtXtX7X4X,X,X4X4X4X7XrXrXtX4X5X}./.[.N.O.W T A.5X5X5X2X,XJ.`.P.J.:X:XJ.J.`.2X2X2X7X2X2X2X7X4X7X2X,X'.*._ x.J.l.`.:XQ.>X1X2XtXtXyX4X'.I.V.L.K.v.@.H.I.j.#.N.h.L.>XwX1XQ.!.1XuXuXeXwXT.K.j.J.P.j.@.K.Z.!.b.0.O.O.0.^ ~ ~ Q Q 7 q ] {.GX5X'.3X3XP.>X3XwX>XP.>X>X2XtX0X3XP.P.P.P.L.#.k.K.V.k.$.h.h.h.%.R X.h.+.N.n.V.V.Z.N.v.Z.K.N.#.k.'.'.P.:X`.:X>X>X2X].n.n.v.%.P.uXuXuXuXuXrX1XT.$.^ I.>XI.K.K.Z.Z.C.P.[.&.V D D C A C D C C A C V J V V L K D V l a e a a e e d e t t f l Z z f V l f w $ % e 1 % 1 1 % w 1 1 % % $ $ % % % w t w e e 1 % e e e w e w e % 1 1 w e w > $ % > $ > % % > % % % % 1 % % % % % e w e e p e e e e e a s e e p e ", -"d t a t e e w e e e e % d w p p p p e e p p e e e e e e e e e e e % e e e % % % % % % % % % 1 % w w w w w % w w w % % > > 1 e e t d e w w % w e w w e w w w w e w 1 t e w w w w w e w 1 w 1 w w w w w > > w > w w w w > > > > w w > w w w y w w u t t t y *.L.A.L A K /.[.L.V.%.X.%.] T N.`.L.C.L.].'.V.C.N.Z.Y.X6X6XtXuXtXqX[.H.z.h.Z.j.j.I.K. .#.C.>X>X3X3XQ.Q.1XwXwXeX1XwXH.V.>X>XV.j.I.v.b.w.w.w.$.$.^ ! [ Q e.O.W q T +.qXUX[.5X,XrX3XwX,XL.>X`.`.].P.H.V.I.K.>XP.V.%.%.H.].V.h.j.k.v.%.#.k.N.V.L.L.v.Z.m.B.Z.].[.@.T.x.L.P.P.:X:X>X>XP.$.^ e.W ] T.eXuXeXuXrX2X>X>XZ.K.!.v.Q O.! ! b.T.L.&.} 1.G Z V V D D V C C A A Z A A D K D V f a f t e e p t a f d d f l k B V l f f < $ % % % % 1 p e e e w e e % w e e t e e w 1 1 % w e % 1 w > 1 % % % 1 % % % > 1 % % > % % 1 % w e % % % % e e d f t e d f d e w e e b a d f d d ", -"a a a t d p e w e e w p g d e p p p p e p p d t p e p e % e e % e e % % e w e 1 % % e w w w 1 w w % % e w % % $ e e w w w t e w e e e w w w w w e 1 w w w e w 1 e w 1 w e w e t e t e w e w w w w 1 1 w w w w > w w > w > w w > > w w w w w u t w w t f e ` C.z.| D D 1.{.A.V.k.X.%.) 8 ] N.C.V.L.'.C.C.N.L.L.L.[.0XR.D.t.t.S.F.D.D.D.i.q.7.H { M L { 8.H H { M F :.>.:.:.:.:.J | 8.| L +.0.0.O.{ J :.J :.:.D :.J S z h g g h g g h a h h f d d d d t f f d d f a p h f d d d d e e e e e e p % % % e e e e e % % e p e e e p e d d a a a a f g g l l g f a f f f a a e a f f a a a e e e e e e e e e e d a l k b e e e e w e e e e e e e t p e e e a a a a f l y y f t f V V l V k l ` %.v.v.V.J.L.P.`.2XtXtXtX4X].5XDXDXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXDXDXuXyXtX7X7X2X3X:X:X:X3X2X7X7X7X7X4XrXtXyXDXDXDXDXtXDXDXtX4X2X7XtXrX7X4X7X4X`.`.4X,X4X4X,X'.L.3X`.,X4X,X,X`.J.P.`.`.:X,X,X7X2X3X7XrX2X2X7X7X4X4X2X2X2X4X4X4X,X/.<.;.>.s.>X3X1XwXrXrXtXDXDXtXH.@.$.@. .#.#.@.#.h.J.>X>X1X>XH.H.!.wXwX1X1XP.].P.X3X>XJ.J.I.#.#.J.j.j.L.L.+.] X. .R U U U R ^ k.J.z.J.C.e.+.Z.T.].L.[.X>Xv.V.V.Z.v.Z.1XuXiXyXyX1XK.K.L.P.K.b.! ! y.O.! e.Z.Z.Y.'.&.D A V D V A C V D V A Z A J J Z B a e a f f a e e p e t d t f l f l g a a a % # % % % % 1 1 e e w w e e e t d t t e e e e e e e 1 % % % % % % % > > % % 1 1 % 1 1 1 % 1 > % % e e % w % % % % $ 1 e f e w f w e e p a d t f f ", -"s l l s g e e e e e e p d t a a a f f t e p d a p e e e e e e 1 % e e e w e w w w e 1 % % % % % $ % % $ % % w e e e w % % > % e e e e e e e t e t e w w w w w e e w e e e e d t w w w e e t w w w w e w w > w > w w w w w w > w w w w > w > > u y u w w B f B _ z.&.D K [.5X].N.X.) R T ) %.A.#.'.`.C.'.k.C.C.N.e.B.F.S.S.i.D.W.G.W.W.W.q.H J :.,.:.P J J L L C A J :.:.J J :.:.J :.:.:.L y.y.O.{ K :.:.J S S :.S g p p g g h g g g a h p a a a a d f d f f d a f h p p d p d e p e e p e e e e e e e e e b e e e e e p t e e d p a d a f g f f h g f l f f g f f a p e d a u w e e e e e e e e u a e d p t w $ w e e e e e e e e e u t e e e p p p f f f a a t f f t V A l V D A V G &.l.V.J.P.`.`.4X7XtXtX4XqXDX,X4X4XDXGXGXGXGXGXDXtXtXDXGXiXGXGXDXyXyXDXDXDX7X4X2X2X3X:X:X,X,X3X2X2X4X,X4X7XrXrXDXDXDXDXgX7XtXyXtXtXtX7X7X7X4XtX,X,X4X2X2X,X,X,Xk.L.>X'.'.,X:X`.z.`.,X2X,XJ.>X3X3X2X7XrXrXrX6X2X2X2X2X4X4X4X7X7X4X,X<.-.:.:.K '.2X2X1X2XrXuXyXqXDX>Xn.v.R R U #.C.k.h.j.j.H.I.I.@./ I.wX!.XV.b.T.rXwX~.6X1X!.K.v.e.$.O.e.v.O.Y 0 7 Y [ Q Y.[.4X`.'.`.I.l.H.J.z.o.l.l.o.#.o.) R R ] E E U E R Q k.l.l.z.%.#.k.L.qXqX0XqXY.N.] L.P.C.K.P.P.3XP.Z.K.n.V.I.Z. w p d d e t d d d e e ", -"e a f D k g f g e a p e d t t a a f a f a a a a a e e e d d e e e e e e e e 1 w e w 1 e w > > > % e e e w w e e e e 1 w w % w e w e % w e d e t t 1 e w e e w w w w w w w w t w t e e e t t e w w w e e w w w > > w w w w w w w w w w w w w w w r t t t w f Z C *.z.} >.} [.].N.X.T R T T N.L.+.Y.].Y.L.V.C.].h.Q ^ F.B.B.i.D.R.W.D.D.G.9.P :.:.:.:.,.:.,.:.:.,.:.:.:.c c :.:.:.,.:.:.:.:.L 0.0.0.` K :.:.:.J J J A h h h g k g h h h h h p a a a d d d d d p p h h p p a d d % e e e e w b e e p e e e e b e p e % e p f d d a p a a f f f f p g g f f a a t a t a f d w e w w e e e e e e e e e e e e p t w w e e e e e e e e e e e e e e a e t t a A V f V k a u V K V C A l G &.k.V.H.C.`.,XqX4X4XtXtXyXDXyXDX7XDXDXDXDXDXDXDXDXrX7X7XrXuXuXuXDXyXyXDXDXDXDX7X,X:X:X,X3X3X,X,X>X:X,Xx.z.4X2XtXrXyXDXtXDXtX7X4XtXDXtXtXtXtXtX4X7X4X4XtX4X4X4X,X2XL.`.2X,X/.].P.z.&.`.,X,X:XI.:X,X7X7XrXrXrXrX7X7X6X7X2X7X7X7X7X4X4X7X/.>.:.:.:.<.>X7X2X2XrXuXDXtX5X].P.h.#.H.#.@.j.j.V.#...j.h.h.#.j.n.I.K.0XwXrXGXrXwXrX>XZ.0XiXuXuXuXuXiXuXwXT.Z.n.w.%.V.b.w.X.Q Q W O.O.B.0X5X5XqX].J.].L.l.&.z.j...#.@.#.%.h.h.R @.R Q $.X.$.A.[.5X[.A.[.qXDXDXyXyXXK.H.V.P.T.I.K.K.Z.n.T.2XrXwXZ.0.O.b. w w w w w w w w w > w w w w w w e w w w t > t V f | z.z.<.x <.&.'.N.R T T T o.N.V.C.`.L.V.L.'./.N.T w.B.F.F.R.R.R.R.B.9.:.:.:.:.:.:.,.:.:.,.:.:.,.:.-.-.c c c -.:.:.:.:.>.:.| t.w.r.[ J :.:.:.J S S S g g g g s g h a h h p p p d a d d f f f p h p p p p p p p e p % % % e e t e w w e p e e e e e d d d d d f d e f f f g f f g g g f a a a a f d e t e e d e e e t e e w w e e e w e e e e e t e e w w e e e e e t t e e e a a a p e a Z K } V D Z J C C G ` &./.J.l.L.x.`.4XtXDXDXtXDXDXDXDXDXtXDX7XDXuXtXtXtX,X4X4X2X4X7X7X7XtXtXDXDX7XDX7X7X7X,X:X,X4X7X3X,X>X`.`.4X,X>XqX4X:X,X7XDXDXtXtX7X4X4XDX7X7XtXtXtXtX7XtX7X4X4X5X4X3X`.J.4X3X`.J.'.`.&./.'.'.P.'.J.`.:X3XtXyXuXuXuX7X7X2X2X2X2X7X7X7X7X2X4X5X<.:.:.>.D }.tX7X2X2XuXiXyX7X4X'.k.z.'.`.z. . .#.k...j.P.>X>X>X3X3XP.>XH.>XqXK.K.K.I.0XuXuXiXuXiXiXuXeXwX~.!.K.n.n.K.K.K.v.v.n.$.O.! [ w.U.Y.[.[.].yX4X'.`.#.x.P.P.`.L.J.H.P.L.C.@.O.v.%.v.V.qXGXqX[.].qXGXGXDXqX].].T.#.#.].].P.T.T.>X0X!.K.I.T.U.n.K.X,X:X7X4XGXGXyXtXGXDXDXtX7X7X7X7XDXyXyXtX7X,X2X,X`.,X,X4X4XtXDXtX7XDXDXDXDX7X7X7X7XrXtXrX2X,X7X].,X4XyX2XC.....J.tXDXDXDX7X4X4X7XDX7X4X7X7XtXDX7X7X7X4X4X4X2X3XC.4X2X,XJ.z.1.} } z.H.l.z.x.P.,XrXGXyXrXrX,X3X2X7X2X2X7X7X7X7X7X4X4X4X/.K :.:.:.<.s.[.rXrXuXiXiXuXtX5X'.z.'.rXtX4X].#.@.@.@.H.3XQ.3X].K.I.I.l.P.T.h.H.>XeXiXiXiXGXGXGXiXuXeXwX~.I.!.P.K.K.!.T.T.Y.!.T.Y.Y.T.m.h.^ O.e.F.F.Y.[.tX{.C.qXyX>XN.'.J.].5XN.X.%.Q Q ^ Z.[.A.A.[.Z.Y.UXyXqX0XR.R.T.V.T R j.v.K. w e t t < n u.'.J.A.&.D x L u.C.+.U 8 W Q h.N.k.L.V.A.[.'.u.A.).B.F.R.R.R.R.F.a.:.:.-.:.:.-.-.:.-.-.=.-.-.-.=.-.=.-.=.;.=.x c :.:.>.,.>.y.r.y.0.| :.:.:.:.J S Z g g g j g s h h h h h b b h f a h p h a p p p p p p p p p p p p p p e e e w b e e e e e e e t d d d p a p f a a f f f f f g f f f f f f a f d p d e t e t p e e e e % 1 > e e w e e e e t e p e e e e e e e e e e e e e t a a a a a d e p t e d f f 1.4X7X7XC.o.C.`.:X2X2XDXDXDXtXyXDXDXtX4X7XyXDXDXDXDXtX7X3X,X'.:X4X,X,XDXDXtX7XtXDXDXDXDX7X7XtXtX2X2XrXuX4X4X4X4X4XtX2Xz.) _ ..,XyXDXDXtX4X7XtXyXtX7X2X7XtXtXDX7X7X7X7X4X7XrX].P.3X,XJ./.| A l } C.x.z.#.5XtXyXtXrX7X:XJ.:X:X3X2X7XrX7X7X7X7XrXrX7X4X}.<.:.>.:.:.<.}.pXtXiXiXDXgX%X5X'.&./.`.`.:Xx. .....@.k.n.h.V.H.@.L.J.`.>XV.2XuXuXuXiXGXiXGXiXuXwXeXeX!.I.!. e p k h p g s p e f d e p e w f a e 1 1 1 e e d 4 p p p p e w e e e e e d t w t e w e e e e p e e p e e e e p 4 4 % 4 p p p p d p p p p t e ", -"e p p e d e e t p a a l l f a a f a d f f a f f a f f f e e a d d e t a d f f t e a a a p e e e e e e e % e w w e e e e e e w e e e e e e e e u e t e e e e t e e e e w e e e e e e w w w e w e 1 w e w w w w w w w w w w w w w t w w w u w 1 w t u t t e t t < r G &.L.z.<.J c J &.X.7 6 T T ] @.A.N.].qX'.%.&.z.N.).p.G.Y.Y.G.G.9.:.:.:.:.-.-.-.-.-.-.-.-.=.=.c c -.-.-.;.=.=.x =.:.:.:.,.} 0.0.[ 8.K :.>.K K >.S j g s g s s g h h h p p p p p p p p h h h h p h h p p p p d p p p p p p 1 d e e e p e p e e e d t e a h a d f f f f f g V k l f f f f f f a p e e e e e e e w e e e e % 1 > % % e e e e e e e e e e e e e e e e e t e e e a a f f f f f f f f V D L '.4X7X,Xl.V.#.J.I.`.4X5X4X4X5X4X5X`.,X5X2X7XDXDXDXDX7X6X4X4X,XtXDXtX7X7XtX4X4XDXgX7XDX7X7X7X4X7X2X3XrXtXrXyXqX4XtXtXyX4X'.) x.7XtXtXDXtX7XtXyXDXDX7X7X7XDXtXtX7X4X7X7X4X4XrX4X].J.:X`.J.&.D A D &.x.x.#.l.:X7XrX,XI.I.x.I.:X3X>X7X7X7X7X7X7XtXtXtX7XtX}.,.:.:.,.:.:.a._.gXpX(.d.>.d.5X*.o.o...) ) ( ( ) ) %.>XH.N.#.o.#.C.>X].P.rXuXuXiXiXGXGXiXuXwXwXwX~.wX1X!.!.T.I.!.1X!.!. w w e t t e w e w w e w e t t t d f e a k F z.&.K J c >.).N.T Y T 7 R B.A.J..:.-.x x x c P P c c c c c -.=.=.=.=.c P =.:.:.:.,.,.J | O.0.+.J :.:.D D C g k g s s s a h g h a h p p b h p p p f h h p p p p p p p d p p d p p p 4 d 4 4 % p p p p a e e d t d a p f a a f g f f l l V l g g f f l f d e e e a a t w % w % w > 1 1 1 % % w 1 w w w % w % e e e e e e e e e e t t p a f f f f f f f f V D A 1.{.4X7X4X5X2X4X5X,X4X4X7XDXDXqX4X5X,X'.'.5X4X7XDXGXDXGXDXtXtXrXDXDX7X5X4X4X`.`.'.[.5X`.7X5X4X4X4X4X7XtX,Xx.`.4X4X4X4XqXDX4X:X'.4XDXtXyXDXDXDXyXtXyX7X,X3X7XyXtXtX7X7X,X7X7X4X7X7XtX`.J.].J.z.} D Z G /.J.j.j.l.j.x.k.l.:X:X>X`.,X3X7X2X2XrXrXrXrXtXtXtXtX4Xs.<.<.,.:.,.:.:.,.,.:.,.,.d.gX}./.c.&.&.&.#.) _ *. ...#.*.#.o.k.#.3X1XT.Q.6XuXuXiXGXiXiXeXwX~.!.!.~.!.I.n.H.I.T.!.!.!.~.1X6X0XwXwXwX^.~.1XwXeXuXeX>X!.P.P.P.!.P.T.!.!.~.E.O.O.^ r.w.^ ^ 5.w.[.Z.qXqXY.T.T.R.].].e.! X.%.V.N.V.T.!.~. w w 1 e 1 1 w e e t f t t t w e w e w w w < l a &.J.| J c K u.L.B.Q 6 5 ' %.k.&.%.[.[.}.A.N.N.+.t.F.U.R.qXs.>.:.-.=.x c x v v x c c S S c c =.=.=.c c c c c :.,.:.:.:.K ` O.| J ,.,.,.S V J z g g s s s h h h h h p h h p p p p f d p p p p h a p p p p p p h p 4 p % p d p p p e e a a d f f f a p f f a f f f g V l l f g l f f f f a p e d a d e % % w e $ % 1 w e e w % % > w w e e e e e p e e e e e t e e e e f s f l l f f g l D A G }.tXtXrX4X5X5X4X4X4X4X4X7XDXDXtX4X4X,X,X:X,X7XtXDXGXGXGXGXyXtXtXtX4X,X,X`.'.J.5X,X`.'.'.J.'.'.`.4XtXtX4Xx.`.uXDXuXrXrX4X,X].`.4X7XtXtXDXGXGXDXtXtXtX,X:X:X7XtXyX7X7X7X,X4X7X4X4X7X7X4X].`.'.l.&.G D B 1.,Xx.j.z.l... .l.x.:X`.`.3X2X3X3X2X2X6XrXrXuXuXtXyX4Xs._.{.<.,.,.,.,.,.:.<._.a.<._._.(.(.}././.5X'./.'.z.&.&./.s.z.}.L.Q.uX1XH.!.wXuXuXiXiXuXwX~.Q.!.!.Q.E.h.n.n.I.U.!.!.Q.~.6XwXwXwXwXwXwX~.~.~.0XwX1X!.~.wXwX0X6X!.K.E.m.U.b.O.! 5.5.M.b.5.^ F.Z.N.[.T.].0X.:.:.P x c c x c c x c c S J x c =.=.c x x P c c -.:.:.>.:.,.K { L :.:.:.D D :.,.S g g g g s s h h h g h h h p h h f h d p p p p p p p b b p p p p p d p p p p d p p d f p p f d d d h h h g a a g l g g f f f f f a s a a f a a a t e e e e % % e % % 1 % w 1 1 w % % % % e w % e % w e e e e e t t e p t e f f f f l k A D k <.tXqX7X7X5X,X5X4X7X7X7X7XgXDXDXtX7X5X5X5X4X5X4X7XDXGXGXGXGXDX7X7X5X4X4X,X'.'.'.4X,X,X4X,X'.'.,X,X5X,X8X4X,XuXiXiXGXGXtX:X`.,XtX5X7XyXuXGXGXGXDXtXtX4X,X4X7X,X7XuXyX7X7X4X4X4X,X4X4X7X7X2X:X'.z./.} D D s }.'...z.z.j.#.l.J.J.`.,X2X3X2X2X2X2X6X7XrXuXrXuXtXtX[.{.qXa.,.,.,.,.,.<.{.DXa.:.=.-.,.<.a.<.d.(.(.d.1.1.<.a.s.<.<.<.}.2XuX1XK.Q.wXuXuXiXuXwX~.I.!.T.U.H.n.n.v.E.I.Q.!.Q.H.Q.~.~.^.6X^.!.!.!.~.6X1X~.1X1X1XeXeXeXwXT.Z.U.U.E.w.^ 5.w.r.M.w.5.^ Y.A.K.n.Y..J S c K A.O.7 9 ( %.N.V.V.C.[.N.A.'.A.' t.y.B.u.:.:.P x c P c c c c c x x c x c v :.:.:.:.c c c c v S :.:.>.,.>.J :.:.:.:.<.K :.:.:.:.k g l s h h s h g h h h p p p p p p h p p p p d d p p p p p d p p p p p 4 p d p d d p p p p a g h h p a g k g k g Z V f f a f f f f d a e a a f e e e % % % % % 1 % % > % w % > 1 e e e e e e % e e p e e d t d p a a a f f g l l V A A B /.DXqX7X4X4X4X4X4XtXDXtXtX7XtXtXtX4X:X,X,X,X,X4XtXGXGXGXGXDXyXtX7X,X,X,X4X,X'.4X7X5X5X7X7X'.`.5X,X5X,X7X7XDXDXGXGXGXuX3X>X4XqXtX4X7XuXGXGXDXyXtXDXDX7X4X4X7X,X7XuXyXyX7X4X4X7X7X7X4X7X7X4X`.x.l.J.z.K S A 1.,Xl.#.z.l.l.`.,XP.`.:X,X2X4X7X2X4X7X7XwXrXuXyXDXtXqXtX}.,.:.:.:.-.s.qXyX5Xd.:.,.-.=.=.=.=.v v x =.=.c =.x v v =.=.<.'.6XwX2X6X6XeXuXuXeX!.n.l.I.H.n.h.v.$.e.h.m.K.n.E.E.I.Q.~.!.!.!.!.~.1X6X!..>.J Z v s % e s j z g h J J Z h g s z S g p g g g g g g g g z Z S A z k 1 1 h h g g p p p p p d h g p p p a h h s g h p p p p p p p 4 p d d h p h p p p p d p p p p p d p p p p p p p p p p p p p p p p p a d d d d t ", -"d p p e e p t d d p e d e a g f f a h h f a f w w f D K D k Z l f f a a a a a a f a d t d a f f f f f f d e e e % e % p e w e w e e w e w e e e e e e % % % e e e e e e e e % e % w w w e % w e w w w w e e w t e w e e e w w e e e t d t t t t t e t e e e t t e e t t B F &./.1.K =.S :.K 9.] 9 7 +.A.V.].L.L.'.A.L.[.] Q t.B.9.J :.c c c c c c c c c c P P v v J ,.,.,.:.:.P P P c A :.J :.:.:.:.:.:.:.:.<.<.:.:.:.J S J l g g h a h s h h p h a p h d d p p p p p d d p d d p d d p p p p d d d p p p p p p p a h h a d p h f f f g g g g f f f f f f a a t a a e e e e 1 % e e e w 1 > % % e w e e 1 e e % e e % e e % e e 4 p p e e d f f f f f l V A A C 1.gXtX7X4X4X4X4X4X4X7XDXtX8X4XDX7X,X`.,X5X7XDXtXtXyXDXGXGXGXDXyXDX5X`.`.'.,X5X4X5X4X5X4X4X4X4X7XyXtX5X,X4X4XGXGXGXGXDX4X3X3XrXGXDXtXyXrX'.qXrXrXyXDXtX4XrXrX2X`.4XuXrXtXtXtX7X7X7X7X7XrXtX4X'.J.x.c.x.1.Z Z G 2.,X,Xz.z.z.x.`.`.:X,X`.,X,X:X3X4X7X7X7XrXuXtXtXtXtXtX5Xd.d./.d.}.qXDXtX4X{.a.,.,.-.-.=.-.c c x x c x z v c :.:.:.:.1.[.5X'.].DXGXiXwX1X!.n.n.K.N.+.X.X.X.O.+.e.%.v.v.Z.I.K.K.T.T.I.!.!.T.~.0XeXuX6X~.1X~.T.~..>.A z g h s s a s h h h h h h p p p f d f d a p b b d y t d p p p p p p d p d d d p p p p h p a g k k g p g g g g g g f f d a f f a a a a a e w e % e w % d e e e % w e e e % w % e % e p 4 p 1 e e e p p p b e p f d a f g f f V D V | tXtXqX4X4XtXgXtXDX7XDXDXDX7X7X4X:X:X5XtXDXDXDXDXGXDXGXDXGXDXDXyXDX7X4X4X,X,X4X4X,X4X,X4X5X,X4X7XtXGXtX7X,XrXtXGXIXGXyX2X2XtXDXGXDXtXrX`.N.%.`.tXDXqXtXtXtXtX4XJ.,XyXrXrXtXtXtXtX7X7XtX7XtX4Xx.`.:X:X'.1.G ;.Z ;.<.5X`.j.j.j.x.:X,X,X:X:X>X`.3X2X6X7X7XrXuXyXtXtXtXtXtXtXtXtXtXtXyXtXtXtX4X5X_.(.s.:.-.S c c =.=.c :.:.:.c -.:.:.:.:.<.1.z.,XrXDXwX1X!.!.U.I.Z.X.+.+.X.X.+.+.X.+.v.$.$.n.Z.$.%.v.K.K.K.T.>X1X1X~.1XwX~.!.!.T.R.T.U.E.m.5.O.! 5.$.Q ! ~ w.U.S.b.v.n.K.U.X4X,X`.,X`.,X7X6XrXtXrXuXDXtXtXrXtXrXtXtXtXtXtXtXtXtXDXDXtX4X4XpXd.-.S =.c =.=.=.c -.:.:.:.c :.:.:.:.,.u.P.`.L.H.!.I.I.K.K.N.X.e.+.%.+.X.] ] ] O.] ' ] n.K.K..:.J Z k s s h s h h h p a h p a d d h h p a s b p d p p p p p p p p p d h p p d h h a a h h g g a h p g g g k Z Z k h a a f a a a a e e a p p e e d f d e d f f d d p t d d p e % 4 p p e e e p p p p p e d f a a f f f f V k | qX7X4X4X4X5X,XtXyX7XtXgX7XDX7X7XtXDX7X7X7X7X7XDXDXDXuXuXGXGXDXGXGXGXDXDX4X4XDXtXtX,X,X,X,X5X7X4X4XtXDXDXDXDXDXDXyXyXuXqXtX2XtXGXDXDXtX2XC.%.3XyXqXrXtXyXyXtXrXtXyX4X>XrXrXtXyXtXtX7X2X7X4X'.z.`.'.x.:X'.x./.<.;.;.Z >.`.x.#.J.'.`.,X,X7X,X,X`.3X2X7XrXuXrXyXGXyXtXtXtXtXDXyXyXtXtXtXtXyXDXUXDXqX4X4XqXs.:.=.c c c c c :.:.-.c c -.-.:.,.:.>.| | o.h.n.h.N.e.b.v.X.] +.O.' ' [ ] ] ] ' ] [ v.T.T.K.~.1X~.!.P.~.~.wX0X!.Z.K.H.H.].'.u.$.w.D.w.^ e..>.8.! W Q N.k.N.3X5X'.+.N.' 0.t.| :.:.P c c c c P P :.,.,.,.,.,.:.-.P P :.:.,.P :.>.a./.9.K :.K L | y.t.t.u.| >.;.S :.:.J S A S D D J D j g h g h h s h h p h s h p p a h a a a a p p h p h p p p h h a h p p p h h h p a p h k h g g V V Z h g g f f f f a d t a a d e d d e e e e e e a e p a a a a a d p p 4 p 1 p p e e e e p p e e t a a a a f g V k K {.tX5X7X4X4X4XyXtXGXGXGXGXGXGXuXiXyX7XtXtX7X7XtX7X4X7XrXyXGXGXGXGXiXDXGXDX7XDXDX7XtX,X,X4X4X4X7XDXDXDXDXDXDXDXDXyX7XrXtXrXyXqXqXqXtXqXL.C.k.h.tXqX5X2XyXyXrXtXtXtX4X4XtXuXtXtXtXyXtX4X7XtX].`.`.,X,X'.`.'.c.x.'.<.;.S >.[.I.#.J.7X4X4X,X4X4X:X`.7X2XrXtXtXuXuXDXtXtXtXtXtXtXyXtXtXtXtXyXtXDXDXDXDXDXGXGXpXD ;.A S :.c :.c v P c c =.-.=.:.:.,.| #.X.X.@.$.$.O.$.O.( ( ] R ( ( [ X.O.$.v.n.m.!.wX0X6X1X!.1XP.P.~.T.0XT.K.>X].l.N./.a.K +.S.D.r.W H.wX1Xv.t.R.R.D.R.G.%.K.Z.K.].U.Z.R.R.0XT.T.R.F.~.^.0X0XeXiXiXiXGXiXiXiXqX{.a.| c J :.J J :.J J k k A a.J S z x z z s s g g g g s z z v s s j j j j j j j j s s s j z z z k z g g k g z S z g S A z v k p p h a h h h h p p p p a d % p a p p p h g h p f g V h p d h g h g g h h h h p b p h p p p p a a d a p h g s z S S Z g g Z Z Z z g ", -"z z g g h p p p p p d f p h h a p p a h g g f f f d a a f f f a a a f f a f V B t a D } J A s a e e e e a a e p p e p a d e % e % % p e e 4 p 4 p % e p e e e e w e w w % w e e w e e w w w w e e e e e 1 w e w w w w w w e e e t a d t t a a u a t t t a a a f a f f f g l f f f l z S -.-.-.:.:.| 8.] ) +.%.K.].A.[.%.] ' 7.q.8.K :.:.:.c c c -.-.-.,.:.:.:.:.K ,.a.f.9.a.P -.:.c J z v K J c v s l L 9.y.S.p.| G l k c c c A A J >.>.:.s g h s s h h h h h h h a a a p h h p h p p p p d h h h p p h a h g g a a a h g h h p g g h h g g g V h g f f a a a a a d e e e p e e e e d p e e p a f g f a d p p % p % p p e e p e p p p p a d a a f f f V l ).DXqX4XgXDXDXtXiXyX{.5XgXGXGXiXGXGXiXDXGXtX7X7X7X7X2X7XyXDXDXuXDXDXDXyXyXyXtX7XDXDX7XgXDXDXtX7XDXDXtXDXDXDXyXDXDXDX7XtXyXiXGX4XqXA.A.C.@.#.#.N.2XiXqXrXrXtXtXrXyX2X3XtXtXuXuXtXuXuXtXrXtX,X`.tX7X2X:Xx.x.x.x.x.x.z.;.Z G }.:Xk.:XqXC.I.,X,X,X4X>X4X7XtXtXuXrX7X7XtXtXtXtXtXtXyXtXuXtXtXyXyXDXDXDXDXDXDXDXs.k A S :.S x v c c c c =.:.=.-.-.,.,.K +.^ R X.+.| X.] ( ( ' ( ] ' T X.$.w.M.m.n.I.!.1X1XwX0XT.!.K.!.!.I.'.u.| s.s.<.>.:.:.>.| b.D.w.Q I.0XwXn.O.w.w.b.E.Z.v.V.Z.b.F.R.R.0XR.U.[.wX0X^.^.R.A.s./.}.yXiXqX_.f.9.a.K P J J J J S J D v z k v v S :.:.z z s s s j s s s s z v z v s s v v j v v v j b j s j v z z z z z g g g g k j k k z A S S z g a b g h h h h p p h a s p z g a v z h h s g k Z g f z v g d g g z z g h h h h v h p a d p p f a d d p p p k S Z z Z S S D S Z z z ", -"g Z g g h a h g h h p a p p d h V Z g k g h f a e a f f a a f a a f f a f f e e a h d C A <.1.K l a e a t e a a p p e e e p e p p % e e p p p % e % e e e % p e w e e e w e e e e e e e e e w e t t w w e e w e e e e w w t u w t a d t e d a f a a d d a a a a f g g g l g f g k Z Z S c S c =.:.K { ] X.X.v.A.A.N.Y.Z.%.W 0 7.q.9.:.:.:.-.=.-.:.:.-.:.,.:.J 9.G.R.W.G.G.f.:.P v s j v z s j s s j v j c J p.G.R.).u.a.:.P S <.<.j l :.:.:.J v s a a a h a h h h g h a d p d h h p p h h h h a p a a p p p d p p h g g h g h f h g g g g V Z g g g f a d e a f a p d e e e d a a p e e t p a a a a f f e p p p p p 4 e e e d e p p p p d f a a f f f V B }.GXtXDXDXDXDXqX4X].P.rXGXGXGXGXiXGXGXDXDXDXtXtXDXyXyXiXGXDXiXDXDXDXDXDXyXtXtX7X7XDXtXDXDXDXtXtXDXDXDXuXDXGXDXDXDXDXDXqXyXGXDX4XtX'...#.#.X.%.%.rXuX4XtXrXtXyXyXtX:X4XrXrXuXtXuXtXtXtXtX4X`.:X4X4X4X:X'.'.z.'.'.x.c.>.;.x s.tXx.l.,Xx.j.'.,X`.4XrX2X4XuXtXtX7X7XtXtXtXtXtXtXtXyXtXyXtXtXDXuXuXyXDXtXtXyXd.S z Z S S z x c v v S S ;.-.=.=.-.c -.:.K ` O.{ } K { ] ] X.) ] ] ] ] ] X.$.v.v.K.Q.~.~.~.~.wX1X!.T.!.!.1X&.:.:.P :.:.:.,.:.:.K B.S.t.h.1XeXwXR.w.O.0.v.v.v.V.v.e.U.U.Y.R..A P P P :.:.J J :.J K J ;.S A A z A S c :.:.j g s j s s s z s j z z j j j v j j j s j j s j j j v v v z z z g g g g g g A z k z A S S c v a a z g h h j h p p b h s a h z j a k z S j z g p h h h d p h g k k s h h s h h h h a a p d d f p p g Z Z z z g k z z Z g z A z ", -"a p h h h a a h h h h h p g Z Z g g V g g h f a d a e a d t d a h p h a h h h h h h h e p C F K Z d e p p p a t t d p p e e p e p p % e % p p e e p p e e e e e e e w e e e w e e e e e e e e e p t w e e e e e t e p e t t t t t t a u f a a a a a a f a a a f f g g g g Z g g Z Z z z c c S c J L W Q v.A.N.A.Z.B.v.B.L.A.%.[ 7.8.K :.P -.-.-.-.-.-.:.,.:.9.W.W.G.D.S.p.9.,.P v v c z z v v J S J :.J v x K | u.0X0XA.| <.:.D S z a s s v J :.v j s s s s h p h s h s s a a p p h a h h g g h p a h h p p a a h h a p g h g V g g g g g V g g g f f f f a d e e p e d t d f e t e e d d d t d a w d f e p p p 4 p p e t p e e e e a a a f f f f f l V V } {.DXGXGXGXDX].`.gXGXIXGXGXGXGXGXGXGXGXGXGXGXGXGXGXDXGXDXGXGXGXDXyXtXrX7XtX7X7XDX7XDXDXDXDXtXtXtXtXDXDXGXGXGXDXDXyXDXyXDXDXDXrXtX,X#.@.X.@.#.'.uXyXtXrXtXtXyXyXtX7XuXrXrXuXtXyXDXyXrXrX`.5X4X4X7X,X:X5X:XJ.,X'.x.x.>.D ;.>.{.].#.j.x.l.`.2X,X4XrX2X7XtXtX7XtXtXyXDXyXyXyXyXDXyXtXDXtXtXtXtXtXuXtXtX5X/.K v A S z v A x c c S S c c =.=.c c x c :.:.>.>.K :.:.{ $.O.O.X.X.] ) ( ( X.@.h.v.n.Q.!.P.~.wX~.U.K.m.P.!.~.9.:.,.:.:.:.,.:.,.,.,.9.b.M.v.rXwXwXT.F.M.w.e.h.h.e.w.w.B.U.U.Y.]..J J {.).A :.:.:.J >.J :.J :.J K K A Z S A A A v c <.>.v j v j s j s j v j j s v j s j j j j j s j s j j v v z z z z z g z z z z z S S z g g A A c J v z D Z v S S z g s b a p a h p p k S z p 4 p p p p k S j g g S z g s h s h p h h h h h h p p p h g p h z k g k k k k f p d g g ", -"Z V h h g g p p h h h a a V Z z k Z Z d p h a g a f d e d a p p p p p p h h h h g g g g g 4 p } 9.K a u p a e p p e e p p e e p p p e e e % p p p e p e e p e e e e w e w e e e e e e e e e e e p e w w e w e w e p u t e p p p t t d t t a a a f a a a f f f f g V V g g V V V k z z Z S c S c c | [ [ +.] ] e.e.v.e.A.L.L.[.B.7.y.9.J -.-.-.:.:.:.,.,.,.:.9.G.G.D.i.p.9.J D v x z z x S S S S S S J :.:.D c K 9.+.y.u.u.| K S <.} >.K A l l s J k e e 1 1 $ $ % % % e p a a a h g s s g h h p a p a h s g g h h f p a h h g g V g g g k Z k g g g f f a a a f a e e e w e e e t p e d t d e a e e e e a a a d p p d a d a a a a a a f s l f l l g g l V k | GXDXGXqXqX[.3XyXGXGXIXGXGXGXGXGXGXGXGXDXGXIXGXGXDXGXGXGXGXDXrXtXyX7X4X4X4X4XtXtXDXDXDXyXuXtX7XDX7XtXGXGXGXGXGXGXDXDXGXDXtXtXDXgX#.o.#.#.#.>XyXDXuXtXrXyXuXtXyXyXuXrXrXtXuXyXtXuX7XrX,X4X7X4X4X4X5X:X:X,X,X'.z.x.G J D ;.K 1.[.l.#.x.,X2X7X4XwX2XrXuXtXtXtXuXyXyXtXyXyXyXyXDXtXyXyXuXtXuXuXtXuX7X1.;.S Z A S v v S x v c S S S c c =.=.c =.=.:.:.:.:.:.,.>.+.e.X.] ] X.X.) T ] X.O.h.v.w.v.K.K.!.!.K.n.Z.K.I.T.A.<.-.-.:.-.-.=.:.:.:.-.>.| t.b..:.J a.).{.<.:.>.:.:.:.:.J S S S A z c A v S v z S P K :.c v v s s j j j v v j v j j j j j b j b j v j j j v v z x v z z z z v z v z z J A k k Z D v z g p p z :.z Z Z h z k a h g h g f p h g h g a p s v z s s z g g g h g h s s g g h h g h h s s a k l g A z g k g Z Z z g h g g g ", -"g g g g g p h g g g h g Z S k g Z Z Z h h Z Z h p e d p d p p p p a p p p p h h h g h g k g h | /.} e a e e a d p t e e d e e e e e e p p % e e e e e e e p b e w e e e e e e e e e e e e w w e e t e e e e d t p e a a p e e a a a a a a a f f a a a f a f f f g g g g k g Z Z k k z z S S c c v Z 9.y.O.y.] O.] O.] +.G.N.].'.[.B.7.| ,.:.:.:.,.:.,.,.,.,.p.D.G.S.i.p.<.c k k z z z A S S c z S S S A k h s d p h a a l z :.,.<./.u./.A.u.a.J l i e b p p p s s a a p 4 % p h h g h h a p p p p p h a p a a p d p g g g h h h h Z z z Z Z k g g g f f f a p d d p d d d e e p d t a p a e t d d p p a a d p p e a p e a a u a a a f l l f f g l g f f f g a.GXGX2X>XyXqX[.qXqXGXIXGXGXGXGXGXDXGXGXDXGXGXIXIXGXGXDXGXGXDXtXtXyXtX4XtX4X4XtXtXyXuXyXyXyXtX7X7X7XqXGXIXIXGXGXDXyXGXDXDXtX7XDXGXGXA.z.%.#.,XyXDXiXDXGXyXyXuXuXtXtXuXtXtXtXtXuXrX7XrX`.,XrX7XtX5X5X,X:X:X`.`.x.z.>.:.J D ;.S 1.5Xj.j.J.`.:X2XtXtXyXuXuXyXuXyXtXyXyXtXyXtXtXtXyXyXuXuXtXuXtXtXyX7X<.z Z c S S c v S c v c S c c P c c c c c =.-.,.,.:.:.:.,.{ O.$.X.Q ] ] ( ( ' X.X.$.v.X.X.Z.XN.m.b.w.%.N.%.@.N.b.M.T.T.~.~.!.T.T.T.0Xs.J J :.>.J f.eXeX0Xa.S J :.D :.D S Z z v z k z A z z v S S >.<.:.x v z j j v z v j j v j j j j j j b j j j j j j j x x z z s z z s v v v z z z v z Z S z S S z z z g h z g d z z g g g g h h h h h p p h Z k h h g g p a z Z s h h z Z h k z A A s h h h h s k v k g g Z g h g g g g g g a a g ", -"g Z k g g g g g h s z z D Z g f V k z Z D h p d a a p p p p p p p p h p h h h p f g g g h g g F n % e s a a p e d e e d p e e e e p e e p e e e e e e e e e e % % e e w e e w w p e e p e e e e w e e e e a d d e p a a a a a a a f a f a a f f f f f f f f g l g g g Z z k D V g k z Z v c :.=.:.v Z K u.+.+.e.e.$.N.e.O.e.B.Z.0XB.~ p.,.K :.:.,.:.:.-.,.9.i.D.D.S.i.p.<.J z z v z J :.:.z z A Z f p p g g a v x =.:.:.:.:.P -.J u.R.U.Y.G.G.f.s.,.:.J J v v c :.:.S k s h a e p p p p h p p h p h a h h f a h g h h h h g g g h g z z g k g k g g f f f h h h f f d t e e e e d a a a e d e d p p e a a p p p e a a a a a a f a a f g g V l V l f f f f l } UXGXiXuXiXGXGXGXyXDXDXGXGXGXGXGXGXIXGXGXGXGXIXHXHXGXGXGXGXDXyXDXGXtXtX4XtXDXDXDXDXDXyXyXDXDXyX2X2X>XqXGXGXGXGXDXDXDXDXDXDXGXGXGXGXDX5X].J.2XtXDXuXuXqXqXuXuXuXDXuXtXtXuXuXuXtXrXrX7X:X,X7XtX,X,X,X4X,X:X'.x.x.x.2.:.:.>.D ;.D {.:Xk.l.`.J.,XuXyXiXyXuXuXyXyXyXyXuXtXyXuXuXuXtXyXtXuXtXuXtXtX5X{.<.z c c S c z A v v v S c c v c c c c =.c c c -.:.,.:.:.,._ [ O.X.X.] ( ( 6 8 $.e.v.Z.$.O.n.T.T.L.I.K.K.a.:.c c =.:.-.:.-.-.:.:.:.:.:.-.:.L t.Z.L.$.e.G.Z.+.N.M.$.N.!.K.b.K.T.T.T.U.U.U.].| :.:.:.>.K #X0XeX/.J :.:.J J D S Z Z z z Z Z z z Z z c -.J a.<.>.c z j j j z v z z v z v j j j j b j v b j j j j v x j z z v z z z z z v v z A S S z z z Z z Z z s p h a h g p h s h g f h h h h h g h h p g h h p p k z h a h g g k z s p g h s g g h h k z S S z z Z h h g g g h g g g g h f ", -"g Z S Z z g g Z z S S J z g k h p h h g p f g p a h h p p p p p p p p p p h p p p f g g g a a % e a a e a e p t d e p e e e e p e p u e e p b e p e e e e b e e e e b e e e e w e e % % e e e w e e e t a e d e e a a a a e p a a f f l g f f l f f f f g f g V V g k k k j D Z z z z Z A v c =.:.:.c j D { ' Q %.e.L.Z.N.A.Z.K.[.u.! p.i.y.L J K | 8.8.y.i.i.S.S.S.p.9.<.J z v S S S S S A z g k z Z c c S K } L J J :.:.:.| <.<.a.).Y.B.A.A.u.).s.J ,.a.a.a.,.<.<.S J >.k k k p b p p p p p h a a h s h g h a a h h f h g g k g g z Z Z V g h g f f a a a f f h d d d e e e e e t a a e e d a p p e e d p p p e e d a f f f a a a f l V l l g f f f l f f V {.GXGXGXGXGXGXyXrXuXyXGXGXGXGXGXIXGXIXGXFXIXIXIXGXGXGXGXGXGXDXyXyXtX4X4XtXiXyXDXDXDXDXyXyXtXtX2X4X4X`.5XGXDXDXGXDXDXDXDXGXGXGXGXGXGXtX4X2XrXtXuXuXtX2XrXqXrXGXGXDXuXtXrXrXtXrXrXtXrX3X4X7X2X`.,X,X5X,X:X:X'.'.x./.&.>.:.J ;.:.1.'.j.l.`.H.`.uXuXyXiXiXuXyXuXuXuXtXuXtXtX7XuXuXyXuXtXrXuXyX5X>.=.=.A v c x z x c S v A v c S S c A c x c c c =.c -.,.:.:.,.F Q ] ] ) ( ( T N 6 w.Z.Z.Z.v.e.v.Z.m.K.>X].u.J c S -.:.-.-.=.:.:.=.-.:.-.-.-.-.:.9.t.].Z.$.U.D.X.O.e.v.h.K.K.K.Y.I.T.Y.U.Y.U.Y.u.K :.K >.K u.[.).a.:.-.S A z Z z s g z z g k z z z z c J a.| K >.v z z v j j j v j z j v v v j j j j j j j j s j x x v z z z z z z v z v z z z S S v A A J J z S z p g g h j z Z Z z g g h h h g g h h h h h h h g g k g h h g g g h h z k g k v s g h h g A S S A g g Z Z Z V g g g g z k g g ", -"p p p h z z k z A A z k s h g a h d p d p g g p p h p h h p p p p p p d p p p p p d d d f d a a u f f a a e e d p e t d p p p p p d t d a a a e p e e b e e e b b e a e e e t e e e e e e e e e e e e e e e e d a a a a a a a a f f f f g V g g g g f g g g g V V z k z z z z z Z z z z Z v c c c ;.:.;.v l C L { ] u.%.e.A.V.Y.'.N.[ 8.i.i.p.y.i.p.i.D.G.i.q.i.i.S.p.9.S v c c x j h p p s z v Z z Z D :.:.} | 9.L K :.:.S K } K K ` u.| m D Z J D v >.s.u.<.J } K J >.} >.J v s h p p h h h h h h h p h h h g h h a h h g g g k g g h g g g f g g f a a a a a p e e e e e a a a p e e e e d d p e e e d e e e a a a d u a g l f f f f g l V f f f f f l l z _.GXGXGXGXGXGXrX.S -.J c S S S A Z z z z k z Z z z z S S >.).N.u.K v c x x x x c v j v v s v v v v j b v j v j j x c x j z z v v v z z z z z z z c S z A A D K c z g p h h g z J D k j z z h h h h h g h h a h h g g h h h g g h g g h h h s s s z g h h h h z k k z Z z k z g g g g g h z A z g ", -"h p p p d z Z g g h p h a p d d p p p p a p g g h p p h h p h p p p d p p d p p p d d e t f d a a a a a a p a a d e d t p p p e t d d d d b e e e p e e e e p e b e e p e p d d e p d e e e e e p p p e p t p t t p e t t e f a f f f f g h h g g l V l g g k k g z g z k z Z z z z z k z c c c c =.;.:.:.x j j =.K | +.{ O.+.N.N.B.+.H 8.7.y.7.8.q.q.q.i.y.7.i.i.i.p.a.K c c v s z S >.J S J :.:.:.J :.J ,.J J J C A :.D c g a a s a C z b p a a s d e w % w p u k J J } >.K J j g h h g g p h h h s a h g k h h h g a g g g h g k s g z k V g p a a a f a a a a a b a p e p a e p a p p d e e e e p e t p p e a a e p f C l a f f f l V f f g l f f l l V A }.GXiXiXiXqXwX2X2XuXyXuXGXGXGXGXDXDXDXGXGXGXGXGXDXGXGXiXGXGXGXDXqXtXuXGXyXyXDXDXDXDXDXtX7X4X,X,X4X,XtXDXGXIXGXHXIXIXGXGXGXDXDXDXyXyXyXDXyXuXGXGXyXqXqXqXqXtXGXGXGXDXuXtX7XuXrXrXtXrX7X2X2X,X,X2X,X,X:X,X,X,X'.x.'.x.'.1.:.:.:.:.:./.J.#.l.J.tXuXuXiXyXuXuXtX2X2XuXuXtXtXuXuXuXuXyXiXiX<.K V j z S S S S A z Z Z x S S c S v x v c S S S c c c c x -.-.:.,.K +.T ] $.] ( ) 6 U ] Z.T.I.n.v.n.v.Z.A.<.=.x c ;.-.;.-.-.-.-.;.-.=.=.=.:.-.:.=.=.-.u.0XR.b.R.G.D.b.O.$.H.K.e.v.L.I.~.T.T.T.D.F.F.A.<.:.J J :.:.:.S J :.:.J J z v c J Z z z z z z S S S <.[.L.N.a.c x c -.-.:.c x v j v j j j v j j j j j j v v x x v v z z v v z v v z z z z Z S S z v c v J v z k p h g g v S z z k S S g S z h g g h h h g h g h h h h h g z z g g g h g h a h h h h h p p p p d h p f g g k k V g g h h h p ", -"h h h f d p a d p p h p p p p p d h h p Z D d Z h p p p p p p p p d h d p p p p p p p d d a d d d d d t p e t p d t d d d p d d d d d d e p e a e e e p e p d e e a p p d t p t d d a t d e e e p p p e t t a d a a a t t t d a f f f f g g g g g g k g g g g k k z z z z z z z k Z z Z S z c c c c =.=.-.=.c x v j Z L | y.O.[ [ +.A.A.7.t.{ H y.t.y.8.8.i.i.i.i.i.p.u.>.c k v S :.:.,.:.:.,.:.:.>.:.J J J :.J S S z A D Z Z Z Z k S z v Z k l k l g g g g g g h g A J K >.<.D g g z g h s h h h p s b p h h h g g g h g g g g k g g Z k g g g g f a f a d a e e e a a s a a e a a a a e d p d a d p p e p e e e e p t f } } C f Z A a f f f f l f f f l V L qXiXiXuXrX2X2XwX2XrX6X6XrXuXuXuX7X7XGXGXGXDXDXuXyXGXiXyXyXuXuXDXqXtXtXiXuX7XDXiXiXuXuXtXtX7X,X4X4X7XDXDXDXIXIXIXIXIXGXDXDXiXDXDXDXyXtXDXiXGXGXGXDX2X3X4X4XqXGXGXGXDXyXtX7XtXrX7XrX7X3X:X2X2X4X2X,X'.`.`.,X:X`.`.J.'.J./.;.,.-.-.:.<.].l.V.C.`.rXuXiXuXuXuX2X3XrXrXuXrXtXuXuXuXqX)./.(.D D Z h g x Z c S S Z Z Z x Z c c c c S S c c v S v x x c c -.c -.:.:.{ W T @.%.X.( N X.n.I.~.K.n.v.m.b.t.K =.=.=.=.=.;.-.;.;.-.;.;.=.:.=.:.-.=.:.;.-.:.p.R.D.0X[.u.F.B.0.%.I.V.O.%.n.L.!.T.T..>.D S v J S k z z z z A A S :.K ].L.L.u.v =.=.:.:.c v v j j v v j j j j b j j j j v z v x v v z z z z z z z z z z Z z S S z A c S J S z h a g j z S v s z S g s z S Z h h h h h h h h h h h f g h z z g h h g k s h s s h s g g h p p p p p d p p d f h g g g g g h p ", -"f h p h h p p h h g h p p p p p a h h p f f p a g h a p p h p d d d d h p p p p p p p p p p a f a t d d d d e p d p d f d f d d d e t p e t p p a a e e t e a a e p e e e a s f a a f t d t p p e p e e a a a f f f a a d d f f f f f h g g g k g g g g z g s g g g z k Z Z z z z Z S A c x S S c c =.=.=.=.=.;.S S v s a V } y.y.+.G.B.e.).).A.p.G.G.p.7.p.S.i.i.i.9.,.J J :.,.,.:.:.J ,.,.:.:.:.:.:.J J J v z Z S D S z z g j z Z A z z z k z z z z k k Z z z z Z S S S J | <.S z g g h h g z g h h h a s h h a h h g g g Z g Z Z Z Z Z g g g h h f h a a a a a a e e e e e p a e e e e a p p e e e e e e e e p e e d u t m F l C G s a f h f f f f l l k ` ,X2XwX1XwXrXwX2X,X2X2X2X2X6XrX7X7X2XtXuXyXiXyXtXtX5XrXyXtXrXrXrX5X4X4X3X2X7XtXuXuXuXuXtXyXDX7X7XDXDXGXGXGXGXHXIXGXIXGXDXDXDXDXDXDXDXDXDXGXGXGXDXiXDXuXuXyXDXGXGXGXDXyXtXuXuXrXtXrX7X7X,X,X4X4X,X,X,XJ.`.`.`.,X,X`.J.J./.>.:.,.:.:.:./.L.k.J.I.>XrX7XuXtX7X3X2X7XrXuXtXuX7X{.| G Z Z Z c x c Z z z S v S z A A Z Z Z Z z c x A x A S c S c c c c c -.-.-.:.:.H T 6 8 R X.) X.K.!.1XT.n.v.e.%.| | c =.=.=.=.;.;.=.;.;.-.-.;.=.=.:.=.=.:.=.;.-.>.e.Z.U.3Xa.} Y.F.e.Z.I.K.n.$.$.>X0X0X.a.].Z.'.| j c c =.-.v c v v j s s j x j j j j j s s j v c z z z z z z S z v z z z z z A c A z v A J :.Z z z s v v h h a b a s a h s p p g h a h h h h h h g h g h h p z g s h g g h g v a h h h p p h h h h h h h p g g g g g g g h p p ", -"a p h h a a g g p p p h p p p p h h h k h z g p h a p p p h d d e p p p p p p p p 4 p p p p p d d d t e e p e p p d p d f d d d d t d t e e e t d e t d d t p d a f f f s f a a a f f t d a a e e d d u f d a a a f f f d d a a a f f g g g g g z g g g g g g g z z z z z z Z z z Z k k z z z c S S -.c c =.c ;.;.;.;.:.c x s l L | | { | >.,.>.9.p.t.[.t.y.p.i.S.p.9.,.a.9.,.9.>.a.,.,.,.:.,.:.:.J :.>.D K D v z z z k v k g k S A k k k z k z z z k k g g g g g Z S S S S 1.| J z z k g h h h g g g h h h h p h d f g h h g g g g k Z Z V g g g g h a d a d t e e a a d d d a f f t p e p p e e e e w % e e e p e e p p p b w e V K l f d d a a f f f l l &.].>X2X6X2X2X2X2X3X2X3X,X3X2X2X2X7X3X2X7XtXtXtX4X4XrXrXrXuXtXtXtX4X4X,XtX2X4X4X4XrX7XrXrXuXyXDXDXGXGXGXGXGXGXDXGXIXGXFXDXDXGXIXIXGXGXGXGXGXGXDXyXtXDXtXuXGXGXGXGXyXuXiXuXuXuXuXtXtX4XrX2X3X7X2X,X2X:X`.J.`.:X,X,X,X`.x.z.<.:.,.,.:.:.d.`.z.:X3X2XrXtXtXrX2X2X2X2X2X7XrXrXrX<.x c =.c c x P c c A z z z S z Z Z Z Z A Z x c c x x x x A x x c c c c =.-.c :.:.L 7 T R R R %.K.T.!.K.@.n.t.| L J =.=.=.=.=.=.-.=.-.=.=.-.-.-.;.;.:.=.-.:.:.-.:.,.| { | >.:.:.u.S.m.T.I.K.V.$.Z.1X1X0X0X~.~.0X0XW.^.0XR.,.:.:.,.,.:.K >.S S S ,.,.S z z z Z Z Z S v <./.[.R.u.v v c -.;.c x z j v v v v s s v j j v v j s v v c z v v z z z v z z v v z z z z S c z z z S S z s z z S A z g s j v z j s h s g D z p p h h h g g z z h h g h A g s j h a s a p h h h h p h p h h s s g h s h s Z Z g g h h h p ", -"a h p p s s h p p p p p p h p a g g g p p g g h a h g p p p d d d d p 4 4 p p p p p p p p p p d e d p p t t d d p p p p p d d p p p p d p p d d d d a d a f f f f a f f a f d f a a a d d a a a d a d f f f f a f f f f f a g h h f f g g g k g k g g g g z z z g z k z z z A Z z z z z A v c c S S c P c P c c ;.=.=.=.-.:.:.=.v s l g j x :.:.,.a.y.y.p.y.p.i.i.i.p.p.S.p.p.i.q.p.9.9.>.:.:.:.:.:.S z z Z A A z k z k s j k z z z Z z k k z v k g j g h g j z z Z D J S z K K z z z z Z k g g f g h f h h h h h d h Z k Z z z g k h h g h g h g h h h f g a a f a a a e t e 1 1 w e % p e w % % % % e e % w w e e t p e e g V K D % e a t t t t t f B V G [.2XX>X>X3X2X3X3X>X:X,X>X2X3X,X2X4X2X4X7X2X,X4X2XrXuXyXyXtXtXtXtXtXDXyXtXrXrXrX3X>XrXtXyXyXiXiXGXGXGXGXGXtXGXGXGXGXGXDXGXIXGXGXGXGXGXGXGXiXuXtXyXuXuXDXiXiXuXuXrX7XtXrXtXtX7X7X7XrXrX4X4X,X,X,X`.'.J.J.`.:X:X:X`.P.C.z.>.,.:.,.:.1.L.k.H.l.`.rXrXtXrXwX2X7XrX6X6X2X,X}.>.A ;.S S P J c c c c z A S c z Z Z A Z Z Z Z A Z Z Z x Z z z A z v c =.=.-.P P :.:.H T Q ] O.K.V.H.H.X.n.T.u.:.c c c =.=.-.=.=.=.=.=.=.=.=.=.-.=.;.=.:.=.-.-.-.:.:.:.:.:.:.:.:.| S.G.W.T.I.h.$.Y.1X1X0X0X~.^..J :.:.J J S S c S S z z z A v z Z S v v K ].2XY.K :.-.:.-.j j j z j s s s s v v j s z j s z z x c v z z z z z z z z z z z z z z z S S A z c K D z s p g z a g g j s j z j z s s z s p p h h h g g p a v z h g s k g g h h g g h s h h h h h a h h h p h p h h h d h g g g g p p p ", -"h p p p p p p f d p p h h h h h h h h p a p p a d p h z h h p p p d p p d p p p p d p p d p d p p p p p d d d f p p p p p p d p p p p p p p p p f h a h h a a f a a f h f d h f a a a a u a a f f f f f f f f a f h h h f h g g g g g g g g g z k z k g j z z k z z k z z z k z k k z z S A v c c c c c c c c =.=.c =.c =.=.c ;.-.:.:.:.c v j x :.:.a.t.y.t.B.B.i.q.i.i.i.i.i.S.i.i.i.y.9.:.,.:.:.S D S S S S S g k g g k k z v Z z z z z g g g g s g h g g g g z z A J J A z } } S z Z Z z g h g g g f h h h s h h h p a g k k g k z z g Z Z Z k g f h a p p d e a a p e a a t p e e e e e e e e e % % % e e e t e d e t d F ` &.} L B w t t t t f f l C /.2X2X2X>XL.C.C.J.3X2X:XP.J.P.>X>X,X:X,X4X,X2X2X'.'.4X2X2X4XrXrXrXtXtXyXyXyXyXuXuXrXrXyX3X4XrX7XtXuXDXuXyXiXGXGXGXGXGXGXGXDXGXGXGXGXGXGXGXiXyXrXuXuXtXrXuXuXyXyXDXyXuX7XJ.2X7XrXrXrX7XrX7X4X7X4X:XI.`.J.`.`.J.'.:XP.J.J.J.J.H.c.1.<.:.,.<.C.j.j.J.J.,X4XrX7X2X7X6X2X[./.<.<.Z Z ;.;.S J P :.J J S x Z A z z z z Z x z z z A Z z x Z z Z Z Z Z Z v c =.=.:.P :.:.:.F 8 Q $.O.V.H.K.I.n.V.T.| =.c c =.c -.-.-.-.=.=.=.=.=.c =.:.:.=.;.;.:.=.-.-.,.,.:.,.>.:.:.:.K G.G.R.T.K.%.$.T.T.1X1X0X0X0XU.U.0X^.^.0X^.u.P :.:.P :.:.x S z h k z A z v z D A z S S /.).).s.,.,.,.,.;.s s s s v j j j s v s j s j s v v v x z z z z z z j s z z z v z v z c S v A S D >.Z z a p z s j s s s s s p s p h s s p g g g p p p h h h z Z g s k s h V g h g k g g p p Z A a a h p h h h h h h g h g g h h h p p h ", -"p p p f d d p p d p p p p a p a a p a g k g p g g h a g g h p p p d d d d d d p d p p p p p p h p p p p d d d f d d p p p p p p p p h p p a h h f h h a h h h f h h g h d f g g f a a a a a d f f d d f d f a f f h g g h g g g g j s s s j k z z z z k g z k z z k k z z z A A Z z z z v z A S c c c c P c c =.=.=.=.:.;.;.c ;.c c c c =.=.x s p x :.9.8.8.q.i.t.S.G.p.i.i.i.G.i.i.i.p.9.K ,.:.:.:.:.D A A S A z g g z k k z k z k z z z k g g g g s g g g g k z z A S S A z } } S D Z z z g j z v s g h g g s g h h h p p p f d g z z g g Z Z Z g g k k h p a a a p e a a a a e e d e p e e e e 1 % e % p p e e p e e t d t t # t | C t t e p t f f l Z A.3X3XT.L.H.V.V.C.J.L.J.C.C.I.I.J.J.`.:X:X,X7X,XJ.>X3X3X2X4X7XrXrXrXrXrXrXyXtXtXtXtXuXuX7X3XrXuXyXuXuXyXuXuXuXyXyXiXDXDXGXyXDXiXyXiXyXiXeX2XrXrXuXuX2X2X7XrXrXuXtXrXrX6XrXtX7X7X7XrX7XrX7X7X4X4XI.x.x.J.J.I.J.x.J.J.V.K.K.I.I.x.'.c.<.:.,./.l.l.H.'.l.J.>X>X7X3X'.1.>.Z z x Z ;.;.;.S c c x c c A A z z z k k z z z Z Z Z x A Z Z Z Z A A Z Z Z v c c =.:.:.J :.:.>.' Q %.v.K.!.!.U.V.n.K.&.-.x c c =.=.v =.=.=.=.x =.c =.=.=.=.;.=.=.=.=.-.,.:.-.:.:.:.:.:.,.:.G.G.t.R.K.v.O.Z.Z.T.U.Z.U.U.Z.R.^.^.^.0X^.).,.:.J P P S S S z z A z z z z z v z S S -.} /.].f.a.a.,.,.,.c b b j v v k j j s j j j s v s s v v z z z z v z j z z j z z z z z S S z z z :.D k j 4 g z s g s s s s h s s h h h h h g g g g g h h g g h g z k g f z k g h k k h g S g V F a h h s p p h h h g g z z g g h h h a p ", -"a h h p p f p h a p p p p h p p h h a h a p d p h h h a g h p p p p p a a a f a d d p d p p p p a p p p p d p p d d p h p h a h h a p p p p g h h h f h a h h h h g g h f g f d f d f p a f f f f d f f d h h f f h g g g g g g g k j z z z k z z z z z z z z Z z z z z z z z z z S S z v v z c c c c c -.=.c =.-.=.c P =.;.;.;.=.c ;.c c =.=.c k p b c K K 9.y.p.G.b.S.i.0.S.S.q.i.q.i.9.:.,.:.:.:.:.D z z z s j z k j k k k s s s h s s s s s h h s g g g k z z Z S J S Z z L K ;.:.:.S S z z z v z s g g h h g g h h h g h g h h h g k k Z V g g g h h h a h f p p f d e e e e e e e e e e e e e % % p e e e e e e e e e e p d p % e p t e d d e f f l F A.].K.V.H.h.V.L.h.j.h.h.V.V.l.l.x.P.>X>X,X2X>X`.2X2X2X2XrXrXrX7XrXrXtXuXuXrXrXrXrXuXrX3XrXuXuXiXuXuXuXrXrXrXwXrXtXtX:X:XuXtXrXrXrXtXuXwX4X2X2XrXrX7X2X7X7XrXrX4XrX4XrXrXrX7X6X7X7X7XtXrX7X7X,Xx.H.H.H.H.J.H.H.H.V.N.Z.Z.P.P.C.z.z.&.,.:.s.l.#.l.C.J.J.J.'.s.<.>.x x :.:.=.J :.S Z S S c c v z z z k k g j k z z z z Z z Z Z A A Z Z x Z Z Z z v c c -.-.:.:.:.:.:.L Q O.b.Z.>X>X!.I.v.V.u.:.c c c c =.v =.=.=.=.=.=.c =.=.P c c ;.;.S ;.:.,.:.J -.-.:.:.:.:.:.).W.S.R.b.e.e.Z.b.m.m.e.Z.Z.F.~.~.W.~.0X0X#X>.P v S S S S S v z z A v z x x x c =.x A K s.Y.9.u.p.a.} a.J v j v v j j j j j j s j j j j j j j v z v j z j z z s z z z v z c S z z c S >.S v % t s s z s h s s s s g h h h p p h p p p f g h g h h h p s g h g Z J S g h p h Z S z h p j s h h h s p p p p h g z h h p p h d t ", -"a a h f f h h h h a h a s s p p p d p p p p p p a a a g g g a h p h h p p a p a d p p p p p h p h h a p h a a a p p p a p h a a p p p h h a f h g g h a h h h h h h h g h h h p d f f a a g h h h f f d a h g h h g g g g g g g g g k z z g g z Z z z z z z z z z z z Z Z z c v c v v v S z z c c c =.=.:.:.-.:.:.c c c c =.;.;.c =.c c x c c =.;.;.x s v v -.>.| u.p.A.u.R.S.D.i.p.i.i.K :.:.J J S S Z z z z k z k k k j j k z Z S J S S S S S A Z Z k l l s k z Z S J A z v } K v K D S S z k k z z z j s g s g g g h a a h h h h g g g k g g h h g g g f a f d f d t e e a e e e e e p e e e e e d p p e p p p e e e e p e t p t e e e p e t e p a g V L &.N.h.v.V.h.N.h.h.%.j.#.j.j.l.k.l.P.`.>X,X3X>X>X3X>X`.2X2X2X7X7XrX7X2X7X7X7XrX7XrX2XrX2XrXwXrXuXuXuXuXrXrXrXrXuX7XuX`.#.].,XrX7XrXrXwX2X2XrXrX7XrX7X6X7XrXrX2X,XrX2XtXrX7X7X6X2X7X7XrXrX2X2X,XJ.J.l.H.H.H.I.J.l.V.V.w.V.`.P.C.#.z.j.&.,.<.z.j.j.z.&.&.1.} z =.-.:.:.:.-.-.:.S S A x c c v k g z z z j j g k Z z z z z z Z Z x Z z Z Z z Z Z Z z z c =.:.:.:.:.:.:.:.' W e.K.T.!..P v v v s v j j j j j v j j j b j j v S z z s j z z z k z z v z z c J z S c >.K x < , h z z g s s s h s s g g h h h h h h h h p h h h h h g g k g k Z h h z s g g g h d g g Z z h h h h h h p p p 4 p a h p p p p p a ", -"g h h p p h g g h h p a a p h p p h a p p p p h h h f p p p a p h h p p h p a h h h p h p h p f h h g a h s s a a p p h p h h h p p p p p p a h g d h h a h h h h h h g h h f h f f f h h h g h h f f f f h h g h g g g g g g j g g g g z g z Z z z z A Z z v v v z z A Z z c c c c c x x c c c S S =.=.=.:.:.=.=.c c P =.=.=.S ;.x x x x x x c =.=.;.c v s s v -.,.>.J | G.i.G.D.i.p.i.,.:.:.:.J S A z A A Z z z z z k z k k A S c J :.:.,.:.J S S z z k l a l g z S S z z S K D S K D ;.;.S z v z v z z g s s g g g h h f a h h h h f h g g g k g k g h f h h f p d d e t t d p p e e e w e e e e t e e t t d e p p p e e e e p e e e t p d t a a f l A L +.O.X.O.$.$.+.X.@.@.#.#.#.h.N.j.l.J.J.P.>X>XP.P.L.J.`.>X>X>X3X6X2X>X3X3X3X3X2X2XwX2X2X2X3X1XwXrXuXuXrXrX7XrXrXrX7X6X7XC.#.J.3X,X3X3X3X4X2X4XrX7X7X7X2X7X6X2X,XI.3XrXrX7XrX7X6X2X2X2X7X7X2X3X,XP.l.V.l.l.H.I.H.l.H.Z.V.J.I.V.l.#.&.j.k.&.<.s.C.'.1.:.-.c ;.:.-.:.:.:.=.:.:.:.S S K a.>.A v k g g z g g s g k Z g g z z z z Z z Z Z z Z Z z z z z v c =.:.:.:.:.S :.J ' W %.I.K.T.!.v.n.T.u.:.x P c P =.=.v =.=.=.=.=.c =.c c c -.c =.P :.>.L ;.:.:.:.=.=.:.:.,.J p.W.[.K a.[.F.e.w.v.e.v.U.R.T.wX0X0X0X0X#XK :.S S S c z v A A z v v x c c S -.:.:.,.,.u.[.9.:.,.| s.K P P j j j j j j j v j j j j j j j s z A z v v z z z z v z c z z :.:.x c S c z p 2 = j z v v s s s s s s s g g g h h s h h g k z g g g h h h h h h z g h h g k k z z g g g z V g k g h p p h h p s a a h p h h h p s s ", -"e d a p g z z h h p h g h h s h h h h h p a h p p h a h h h h h h p a h a p p p f Z h p p a p h h h h s h h g a s h p h h p h p h h p h h p h h d f a p h a a a h f f g f h h g h h h g g g g h h h h h h h g g h s j g s g g g g s g g g z z z z z z z z Z z z z z v z c S c v c c c c c c c =.;.=.=.=.=.:.=.=.=.c J c c =.=.;.c x c x c c ;.S c c c ;.=.=.c j j v x -.J | 0.q.i.q.q.y.K :.:.K :.x c S A z z z k k Z Z z z z A J :.9./.K >.| >.} K K A J z z v z Z J v c D K K S S ;.S D :.S v z v z z z z k g g g g g h h h s s h g a a g g z z z g g g h d f a h g a p a d p b p p p b e e e w e e e e e t e e e e e p p p e e e e e a a a a a a f f Z D { X.O.^ O.X.X.@.@.@.$.@.@.j.%.#.k.H.I.`.:X>XJ.C.V.V.I.`.>X>X>X3X3XQ.P.P.P.L.>X>XX3X1X3X6X7XrXuXuX3X3X7X2X3X3X7X`.J.3X2X,X`.J.`.>X,X4X,X2X2X2X1X2X,X,X3X>X3XtX7X2X6X2X3X2X2X:X2X,X:X:XJ.J.H.H.l.l.l.l.V.V.Z.C.V.V.V.V.l.#.j.k.j.j.&.<.>.:.-.:.:.:.:.:.:.-.:.-.:.:.,.>.>.K s.}.<.A z k k g j h s s g k Z Z Z Z z z z z Z Z Z z z x A z z z v x c :.:.:.-.c :.:.L Y $.Z.h.$.V.v.Z.P.| P P c c c v =.=.v =.=.=.=.=.x =.c =.c c c P :.K } :.:.:.=.=.:.:.:.:.,.y.G.G.} >.K K p.b.b.Y.Z.Z.T..).,.a.,.a.} a.).a.v b j j j j b j b j j j b j j z z z x z v v v j z v z x v c c c J c c k ; , 1 z z z z z s s v s g h s s s s s h g g h Z s h h g g k g h h z g h f g z z z j A c j g h z Z f D l s s s s h h h s h h h h h h b b b ", -"p p p h h h b h p p p h p h p s h h h p a f a h h h g h h g h h g g h f a p h s p d p h p p h g g h h h s h g h h h h h h p a a p p h h h a h p h a a g a g h h f h f f f g h h h g h g g h h h g h s h h s g g g s g z s g g g g g g z k z k z z z z z z z Z z z z c S S S c v S c c c c c c =.=.=.;.=.=.=.=.=.=.c c P c =.=.c c c c x c x c x x x c c c S =.=.c s e a v >.u.{ | i.q.9.K :.P v z S S S S z z z v v v A v c J v A 9.#XA.k C ).K J >.J J <.K J P J <.:.,.,.>.K J J J J :.;.S A z v v k z k g g s g g g g g g g k s g g g k s k z S Z Z k g Z g g h p f a p p a p p p p p p p p d p p a e e t t e e e e p p e e e e p d p p a a a f f f f Z D K ` { ] ^ X.X.O.@.X.X.X.O.@.X.%.V.H.J.`.`.J.J.l.H.C.V.L.P.P.`.>X`.P.L.I.K.C.J.].T.].T.].].>X>X3X2XwX1X3X3X3X>X:X,X>X>X:XJ.I.>X`.P.P.`.:X>X`.l.H.J.P.>X2X,XL.>X2X2X7X2X1X3X>X>X>X>XP.I.J.J.J.H.J.H.H.H.l.l.k.l.H.&.#.V.V.V.V.l.j.k.k.l.#.| >.:.:.:.:.:.:.-.-.:.:.:.,.a.(.<.D :.>.D d a z g g g g k g g k k g Z g Z z z z z z z z z Z z z z z v z A x =.:.:.J :.S S :.J H Y +.X.X.h.%.K.N.J =.c c c c -.-.-.-.x -.v =.x P =.=.x P -.x =.:.K K :.:.-.=.=.:.:.:.:.K p.G.G.>.>.:.:.,.9.G.r.F..J k g g V f g g s s s h h h h h h h h h p h p p ", -"p p p p b p p h s h s s h h h h h h g z k g h h a p p h z s g g g g h p h p a g f a p p p h a h h h g h g g h h h h h a h h h h h h a h h h p p a h h h a h g s h h g h h h g g h h h g g h g h h g s s s h s g g s s s g g g j g j z z z z z k k z z z z Z z A v A z c v v c c S c c =.;.c c ;.=.;.=.;.-.=.=.=.=.=.c S =.c =.c c c c c x x c c c c S S c =.c c c :.-.g a P ,.9.M 8.q.8.:.P P c x c c z A c c c S S S :.,.<.a.s.9.u.u.} | 9.G.9.9.K P l l P :.,.J >.>.>.,.,.,.:.>.J J :.S S A z z z z z z k z g g g h s s s s h h h a h a h a a h h g k g k z g h p h h g g h g g h p p h h h p p h a p p e e p p e e e e e e b e d d d d a p d f f f g V J J K L ] ] ] ] X.O.Q O.] ^ O.%.h.k.V.H.J.'.x.J.l.V.V.V.C.K.V.K.P.`.L.J.K.I.I.C.H.L.P.P.P.P.`.].>X>XP.I.P.`.:X`.I.`.J.J.`.J.C.P.P.J.H.H.I.H.H.I.H.J.H.H.I.`.>X2X3X2X2X2X2X>X>X>XP.J.H.J.J.H.H.J.H.l.V.H.V.l.l.j.n.L.L.Z.Z.Z.Z.h.j.z.J.z.z.z.<.:.:.:.-.-.:.,.a.1.<././.[.7X<.v l g a d f k k g g Z g z z z k g g g g g z z z z z z v z Z z Z z Z z Z c c P J >.:.:.J S :.G T Y %.V.v.$.n.u.K -.c c c x x x x x v P =.=.x x =.x x x -.x P :.>.:.-.P v c =.-.:.:.:.<.p.W.a.:.>.:.:.-.K R.D.Y.0X0X0X0X.:.-.P c S z c v >.a.,.:.:.:.:.:.:.:.,.,.,.<.,.,.).[.<.,.1.G.u.:.s j v j j j b j j v j j j j j j x v v v z z z S z h s c z # & 2 * - k :.:.x v z v z s j s j g g s g j j j s s g g g j A g g h g z s v A k } } a g z a F K l | | K k g V K V g k g g g g g g g h g g g g h h h h ", -"p p p p p p p p p a s p h h h p g h g v v z s h k z h g k z s k s h g h h h h a Z g a a h h h h h g g h g g h s s s s h h h h h h h h f f h h a a h h h h g s s s s h h h h g h g h h s h h h h h h g g g g g g g s g g g k g z k z z v v z z z z Z Z Z z z S S Z v S c c c c S S ;.;.c c c c c ;.;.c c =.c =.c c =.S c =.c =.=.c c c x c c =.x S c c S S =.c =.c c -.:.P j -.K y.y.t.8.:.-.J P S c x x A S z c S S S >.a.9.A.).S.p.p.G.R.R.m.t.p.9.K a.a.,.J :.:.| s.a.,.,.J s.<.:.J J S A v v v z z z z z z k g g s h h s h g h g h h g h h h d a f f g Z V g z g h h h h h h h g h h p a p p p p e e e p t t e e e e e e e b e t d d d d h f h h g g S J J K K ` ] Q Q ] ! Q ] ] X.] %.l.k.l.C.J.J.I.P.V.N.k.V.V.V.C.J.P.>XP.I.K.H.L.H.V.H.L.L.L.H.Z.L.P.L.h.j.H.J.V.J.H.l.l.l.I.`.J.C.H.l.l.l.l.l.H.H.P.J.V.H.J.>X:X3X3X2X3X3X3X].:XP.H.H.H.H.H.V.H.J.l.l.h.k.V.l.V.n.V.I.L.K.Z.Z.Z.h.#.z.x.l.z.`.{.<.=.<.d.s.s.}.4X4X,XrX2X6XtX<.Z f u f g a h g f k z g Z z g g g k k k z Z z z z Z Z Z z A z z z v z z z c P J K :.c c c J J ' W h.V.V.I.I.A.>.:.J c c c v v v P v P v v =.x x =.=.-.-.x c :.>.:.P P =.c =.:.:.:.:.>.).#XK :.,.:.,.,.,.,.u.U.0X0X3X.} >.J >.:.:.:.:.,.a.s.,.<.<.<.[.'./.s.| ).<.,.j b j j j v v v j j =.j v j j j x x j j v v z z a d s x f u v :.:.=.x v c c z z z z z j j j j g h s s j j j s j j j g g s h g s s z v S z s k Z k j z s p V G f d g l s C V V Z g g g g g g g g g s j g h s p p ", -"h h p h h p p p p b b h p p h s h z k h k g a f h h g z z A k h z g z g s h h h h g h h h h s h g g g g g g s s s s s h h s s h h h h f h a a h a h a a g g h s s g h s g h h h s s h h s g g g g g g g g g g g k g g g g k g z z v z z z z z z A v z c c x z z A v c c c S S c S ;.:.;.=.=.;.c c c =.;.=.x c =.c c c ;.c =.c =.x c =.=.c =.c c v c c c x c c x x c c P -.P x K p.p.i.7.9.:.:.-.c S S S S :.:.S A S :.| w.w.u.t.B.0XR.{ t.D.Z.G.8.8.{ A.u.8.u.a.L ).gXqXG.f.>.f.<.:.J S S A A v S A Z A v z z k g g s s s s s g h h h h g g h g g g k g g g g g g g g g g k z h h h g h h p a a a p a p b p t d t t d d p a p e t f f g a p f g g g g Z J J S J J D } ] Q W ] ] ] ] X.] %.h.j.V.H.C.J.C.J.l.h.h.k.k.h.j.l.V.J.H.H.Z.V.V.V.V.H.L.L.K.C.V.C.V.h.h.%.k.V.V.J.L.h.V.J.J.P.P.H.l.H.k.h.h.h.V.H.V.l.l.H.J.I.I.I.`.>XI.P.I.H.I.H.V.l.l.V.l.l.H.I.l.k.k.j.k.n.h.n.V.H.I.P.Z.C.Z.L.l.x.`.:X`.'.I./././.'.].2X2XtXrXrX4XrXrX{.K A f f h h h f Z V l k Z Z z k z j k z z z z z z z z z z z z z z z z A v v x c =.:.:.:.:.c c :.L T R %.v.T.L.&.,.,.J S c S P x x x x P =.P x =.=.x P x -.x P :.>.:.x x =.-.=.:.,.,.,.>.[.).>.,.:.:.:.:.:.-.>.9.+.L.T.Z.u.a.J -.,.:.-.P P -.c :.:.:.<.a.x :.>.;.:.:.,.,.a.<.:.:.-.:.} f.).u.<.s.| ,.c s j j j j j v =.j j j s j v v x x j v v v x S g J <.:.J :.-.x z z z c S c z j z z j z j j j s s g s s j s j s j j g s s z s k z z v z k A :.S z z z k D D g j z g z J D V g Z g g g g g g h g g g h d h h s b ", -"p h p s p h p h h p p p p p h h h k g h s g h h f p h g j Z z z g g g z g s h s z k h h h h h h h h s s g g g s s g g g h h h s s h a h h a h a h a h a h g g s s s g s s j g g g g s g h g g g g g g z j k g g k j k k k k g g z z v z k k z A z c x x c z x x S c v S c S S S x x c c c c c ;.;.c =.=.=.c =.c c c c c c c c c x c c =.=.c ;.;.=.=.c c c c c ;.=.x c =.;.:.c k } | 8.q.p.9.:.c P :.:.,.,.>.:.:.S :.J 9.y.e.y.F.b.G.9.m y.G.G.y.p.p.S.D.t.i.S.i.8.).qXG.G.u.f.f.K :.>.J J P S S S A x z z k k z g g g s s g s s g g g h h h g h h h h g g g g k Z z Z Z k z g g h h g h h g h g h h g h a a a d d t t d d d t p f f d h g g g g g k z Z S J J J J D J L ] H ( W Q ] Q X.$.$.h.H.H.V.V.N.v.v.N.v.h.k.%.%.h.N.l.l.V.V.k.N.V.V.V.L.K.H.J.J.l.k.h.N.h.V.k.l.J.J.V.V.k.H.I.J.k.k.l.j.j.h.h.h.h.j.V.V.H.H.H.H.H.H.H.l.n.l.V.l.l.h.l.l.l.h.k.H.H.C.l.j.j.h.V.V.h.N.V.J.P.F.Z.Z.H.`.`.`.`.J.I.J.,X,X,X,X3X2XrXrXrX7X7X4XuX/.l s a f d h h h g g k Z Z Z z Z z z k z v z v z v v k v z z z Z Z Z z z A c v c P :.:.:.c J S :.J ] R X.V.I.&.:.<.>.-.c S c =.v P =.x =.=.=.P =.P v x x c x =.:.:.:.-.c -.:.P :.:.:.:.:.).f.:.,.:.:.:.,.,.,.,.:.| A.T.A.K -.,.,.:.-.-.-.-.-.:.:.:.c <.9.c :.P -.-.:.,.} J :.:.:.:.v <.).A.a.u.K | a.;.s j j =.b b =.j =.b =.j j v z S c c c v x P K v J L J :.:.;.x v z z z v c S z z z :.:.j g s s k s z j j s s s s j s s s g j z j s k K Z z z z k k g z v z v k z v Z G } K k g j g g g g g g h h g g g h h s a ", -"h p a p h p p h h h h a p h a h h h a h s s g g g g k k p h z g z z g h s k k z g g z g s h h h h s s h g g g g g g g g g h h g h s h h h h a a h a a h a g g h s s g s g g k g g g g g g g g g g g g g g z z k z z z k z z z k z k v k k v z z z z S S x A A x z z c c c z c c x S c c x x c c c =.c =.=.c c c =.c x c c S c c =.c c =.c ;.;.c c =.c S c c =.=.c =.=.=.c v c v P P J 9.t.y.9.>.:.:.9.u.y.9.a.>.J :.<.8.[ [ { 8.[ q.7.{ [.#Xp.p.W.D.t.B..J v S c S S S S :.:.v k k g g s s k j s g g g g g h h g g g g h g Z z z k g g g g g k g g g g g h h g h h h f g h h h g d f f d a a f a h g g g k z z k h h h g g z c S S :.:.J { W ' W Q O.O.O.X.$.N.K.H.C.Z.K.N.N.N.h.%.k.h.h.k.h.h.N.N.k.v.N.N.V.V.K.K.J.I.J.V.l.k.N.V.V.l.k.V.l.V.h.h.H.V.l.l.l.k.j.h.j.l.h.j.j.l.l.n.H.H.l.l.H.V.h.h.V.n.l.j.l.V.C.H.h.l.H.H.z.j.j.j.h.h.V.V.V.L.K.L.K.Z.K.L.L.V.V.l.V.x.I.:X4X7X2X2XrXrXrXrXrX7X4XtX1.a p t f f a f h g g g z z z Z z z Z z z z z z v v z z v z v S z x c z z z z c c c -.=.P c S P :.:.{ ^ v.h.&.>.:.+.| >.c S c v P =.v =.=.v v v -.v =.c -.-.c c P >.,.P c :.J J :.:.:.:.K #X).s.J :.,.,.,.:.,.,.,.9.T./.} :.,.:.,.,.-.-.-.:.:.:.J :.>.J :.:.:.:.-.:.<.<.>.-.:.:.:.x =.A s.f.K J >.9.B.>.s j j b b =.b j b b b v x v v ;.c c c x c J A x S x x S S S :.S x z v v S ;.:.v z :.A v S J c k v c v v v v v j j v z z k g k z k g V z z z g z z v j K J D a.s.v z z K } V Z z j j g h g h g g h h k g h h h ", -"h h h h h h h h h h h h h a h h h h h h s s k h g h h h g h h Z g g z k z z k z g g g g k h g s s g s s g g g g g g g g g s h s h s s h s h a h h a h a a h g g s s g g g g g g k g g k g g g g g g k z z v z z z z z z z z v v z z z z z z z A A x S z A x A S S c v z c v v c x c c c x c P c c c =.c =.c =.=.c c c c c =.=.c c =.=.c =.;.c c c c S S S =.=.;.=.-.=.-.:.S P c J P P J | q.7.8.9.y.p.u.L 8.t.| <.9.#XY.H t.8.y.u.i.G.#Xu.Y.G.t.G.G.q.t.R.W.W.G.0XiXGXGXUXIXGX).<.K P J K J J J S S S S :.:.:.c k g g k s s j s g g g g g g g g h h h f h g g z z z z k z z s g g h h g g g g g g g a h h h f h h h d f d d h h f p h h g s g z g g g g p a a p p z J J J H ' W Q ] O.Q Q @.N.L.Z.L.K.C.V.k.N.h.k.h.h.h.h.%.N.v.h.h.%.N.N.V.V.V.J.P.I.J.l.l.h.h.V.V.j.j.%.v.h.h.h.j.j.j.j.V.l.j.h.k.j.j.j.h.h.n.V.H.n.n.l.H.H.h.l.n.H.H.H.H.n.h.k.h.h.h.V.h.j.j.j.h.h.V.V.V.I.L.P.L.K.L.H.Z.H.l.l.j.l.I.3X7X1X3X>X4XrXrXtXyX4X7X'.B > e p d p p a h g z z k z z Z z z v z z v z z z z A z v z v v v z z v v c c v c c =.-.-.S c c :.:.K ( $.u.D P K +.$.| :.S c =.=.=.=.v =.v =.v -.=.=.c c c c x =.:.:.:.:.-.c P :.:.:.:.9.W.0X#XK :.:.:.:.,.:.,.:.9.s.,.K ,.,.,.:.,.-.:.,.:.-.,.>.:.<.>.:.:.:.P :.<.a.>.-.:.-.=.c c x x S } ,.,.9.G.[.<.=.b b b =.=.b =.b =.=.x x x c J x c ;.-.>.K v :.c v v z v :.:.:.:.c c ;.S c c :.S c :.J } a.J A K <.D v s z k z z z v k z j s j j z z z z v z z j k s C D k B 9.D z z A z L a.z v j g g g g g g g h s h h h h ", -"h a h h h z z z z h f a h h h h g s h g h h g g g h g g g h k z k z k g g k z z z z k g k k g g g g g g h g h g g g g g g s g s g h g g h g s g s s h h h h g g s s g g j g j z g g g g g g g k g z z z z z z z z z z z z z z z z z z z Z z z z z c z x x z S A S x z c v c S Z z Z z z v v v c c c c x c c c P c c S S c c c c c x x x c c ;.c c c c c c ;.S =.c c c c c -.=.-.:.:.:.P J L L [ p.S.| J ,.>.).#X[.).F.U.+.G.u.p.#X0X[.B.t.S.G.G.R.S.r.t.^ w.W.0X0X0XiX$XG.$X$X#X[.9.9.,.J :.:.:.:.S S ;.:.:.:.,.J z k g k g g k g g g g g g g g h h h h g p h p g g g z k z g k z z k z z g g g h h h g h g g g g g g h f f f h h g g g Z z z s g g g g s s s s s h Z K J H ' ] ] Q O.Q ] X.%.L.P.H.C.Z.V.N.v.k.h.v.h.h.k.#.%.h.h.h.N.N.N.V.V.H.J.J.J.H.V.l.h.l.k.j.#.h.X.X.#.#.h.%.j.j.j.j.@.j.#.j.j.j.j.l.h.h.h.j.l.H.l.l.H.l.h.j.k.l.x.H.V.j.h.v.h.l.k.h.j.j.h.j.h.l.C.L.L.K.P.P.L.U.m.V.H.H.l.l.J.`.>X3X>X>XT.`.,X4XrX4X4X5X| e t e e d a p h h g z z z z k Z A S A S z z z z z z v z v v v v x v z v z z c x x c :.:.:.=.;.=.c =.:.M { } S v } +.$.+.K c v x v v v v P P P x x v v x c c c x P c ,.<.J c c -.:.:.,.:.a.).#X#Xf.:.,.:.,.,.:.,.,.,.:.,.,.,.,.:.:.:.,.,.,.-.:.:.:.>.>.:.:.:.J c ,.>.:.,.,.-.=.=.c x :.,.s.A.u./.N.Y.0X<.=.b =.=.b b =.b j =.=.v z v v S c ;.x -.<.F P :.:.:.:.S z z =.:.:.;.c :.:.:.v :.>.:.,.:.D B Z z D s k v z A z x v z z v v k z v z z S z z z z z z z z z z z v l } Z v z v V K k k z j j j j j j g k k s g s h ", -"h h h h g A S A z g s s b s s s s s s s s g s s g s v j z z z h v z z z v z z k k z k k v k j g s s h g g g g g g g g k g j g j g g g k g g g g s s s s s h g j g g g g j g z z z z z z z z z z z z z Z z v z z v z z z A z z z S Z S z A Z v A z c c z z S c z x x x A x x x A S z S z S v z x c c v c c -.c c P c c S c J c J c c S c v S c c c c c c c =.S ;.=.=.c P c =.:.:.-.:.:.:.;.c S J 9.p.a.:.:.j _.GX[.Y.B.G.y.y.+.t.0X[.t.).R.q.R.G.G.S.q.i.i.F.[.#X0X#X0X#X$X#X#XqX#X#X$X$Xa.J ,.,.,.:.:.,.,.:.:.:.:.A z z z k g k s g g g g g g s s h h h h g h g s s s g g j k z z z Z z z g g g h h h h h g g g z k g g h h s g g g g z z z z z z k g g g g g g j k k D :.K { +.$.+.$.%.+.O.e.A.K.K.L.V.V.Z.N.k.h.v.v.v.N.h.X.%.N.h.N.N.N.V.Z.V.L.J.J.J.l.k.h.h.j.j.%.X.X.X.X.$.@.@.@.#.@.#.j.@.#.j.#.#.#.j.j.%.j.j.h.j.h.l.l.k.h.h.j.h.l.l.l.l.k.v.h.k.j.j.h.l.k.h.h.N.H.].P.K.P.P.Z.b.B.V.V.k.J.`.J.P.:XP.`.P.L.P.P.`.:X:X3X/.e g a a a a p a p h g z k z A A z S z x x S A S z z A z v v v v v z v z v v x c c x c :.:.=.-.=.=.:.:.=.:.:.S S c } +.w.$.L -.c c c v v c x c c v c c v c P =.c c v c J K :.J J :.:.-.:.:.,.K f.#Xu.-.,.,.-.,.,.,.,.,.,.-.,.,.,.,.-.-.,.,.-.-.,.:.:.,.:.,.:.x =.:.,.,.:.,.,.P c c c =.,.s.f.A.s.L.A.].0X).S j x v j x j b =.=.j j j =.S | s v c v v x P c =.c :.:.J c v c :.:.:.S c >.>.:.J J :.J J v v S K D z x v z Z <.J v v v z j v z z x z z j z z z z z j z z v z k L } J z v A k c S Z v v s j j s g g v s j j s ", -"j g h g z v v v z j s j v j s b s s s a h s s j z z z z z z x z z z z S :.S A v v v v z j j k k k k g g g g g h g g g k k j g k g h h g g g g k g g g g g g g g g j k k j z k z v v v z v v v z z z z z z z z z z z v v z z z z z z z Z z A v v v v c z z S x S Z Z Z S A z A z x A Z z Z z Z A Z S v c c c c S S v v v v v v v c c A z A v v c c v c P c c c c c c c c c ;.=.;.=.:.:.:.:.S v J c F L v k v J %XqXqX[.).p.' H B.#XY.G.y.p.R.#XD.D.D.G.S.i.t.G.#XG.W.0X#XyXiXiXqX#XiXiXiX_.P :.:.:.:.,.,.:.:.,.:.:.A z z k z z z z j g k v s j j s h k j g g g s k j g k g g j k g g k z z z z z v k g g g g g g g g h g k g l k k z g z A k g z z k g g g g g g g z s s k V K &.N.v.v.$.%.h.V.C.P.].L.V.V.H.H.V.V.N.v.n.v.N.o.#.V.v.n.v.n.n.v.N.P.J.J.H.l.h.h.k.h.#.@.X.X.Q X.X.@.%.@.@.#.j.%.j.#.#.#.@.#.j.%.#.h.h.j.j.h.j.l.V.l.j.k.j.h.h.l.h.h.h.l.l.k.j.j.l.j.j.j.V.V.K.Z.K.P.L.Y.Z.N.n.N.H.`.P.`.x.H.H.J.P.P.>X>X3X,X2X5XK z h a h h h h h a g g k v z z c x x S S S x x c S c S v v c v v v v v v x x c S x c c :.:.:.;.;.;.:.:.S ;.S A Z A K +.$.$.| J A S S c c c c S v A c S c c P =.c x x x c ,.>.S :.:.-.:.:.:.:.-.>.p.p.a.,.:.,.,.,.,.,.-.-.,.,.,.-.,.,.,.,.-.-.,.-.-.:.:.:.=.x -.,.,.,.>.:.,.>.J :.c c :.a.a.S D C u.A.A.Y.).D b j j v v v =.b =.=.=.=.=.K } c =.c k z =.x x c c x x :.:.=.x z ;.:.J x D :.;.c x v K A z z Z } K :.S v z z D A z z z >.>.z x z z z z z z j z z z v v z z z v v L D v v v } | J z z v z j j s s j s s s j j ", -"z j s s z z z s s j s s j j s j j s j s s k j s z z z z z z z z v v J J S :.S z S z A S v z z z z z z g g g h g g g j k z z z j g g g g g h g g g g g g g g g g j j z g z z z z z z v v z v z z z z v A z v z z k z z v v z z z z v v A z A A x S c v c c z v S Z z z z Z z z z z z z z z Z Z Z Z v v c c c S S S z v c c z v c v z z v v v v P c P P v c c v c c c c c c S S ;.;.;.;.S S S v S S j s v c v b } $XqXqXy.p.H [ [.p.[ B.7.G.].b.F.R.Y.R.F.q.y.).q.3.i.#Xp.p.).yXS.p.#X0XGX0X9.K -.:.:.:.:.:.:.:.:.>.S S Z z z z z z z k g k k k s g g s g s s k g g g s g g g k k z z z z z A A z z z z z k g k g g g g g z k k k g k z k k k z z z z g g g g g g g g g h t f a z | &.k.h.h.V.H.L.].X`.J.J.P.P.>X3X4X2X7X7Xs.s Z g a h h h s a g g h g z z z z z z S A S S z c c z v v v c v v v v x x c x c c c c c ;.J J ;.S ;.S c S c z S S v K ' O.e.| S c c v c S v c v c c c c c c P -.=.c v v P >.:.S :.:.:.:.-.,.:.:.,.K G.#Xp.a.-.,.,.,.,.,.,.,.,.,.,.,.,.,.-.,.,.-.-.:.:.:.-.-.-.:.,.:.).).} ,.,.:.P P ,.,.a.>.v s K B.K.&.9.| s s v j =.v v b =.j j x =.x g h x =.x c c x x c c x x x c =.:.:.:.c x c x z v v v z x J J c z v s g c c v v v s z c x c K } z A S z z z Z z z z z z z z A x v x v s v v v v J L k v j v j z g s s s j s v j s ", -"s j g z z z z s h j j j j j j j s s s s s j s j v s z z v v v v x v V J S S S c z z z z z z z z z z z g g g g v j j g j z z g z z z j z v g s g g g g z g g z g g g z z z z z z z Z Z A v Z A v z c S z v z A v z z z z z z z z z Z z z z z Z c v z c S c v v z Z Z z Z z z k j z z z A A Z A A A v S c c S v S z c v c A A c c S z z c c S v c v c c c c c v v v c c J S S S :.:.S S S v z S J S A S S c c c l gXqXqX' H H B.u.p.N.Y.[.F.U.t.G.b.O.b.F.y.u.8.y.q.i.W.G.#XR.[.t.p.i.p.$XqXR.[.a.J K <.} J :.:.:.,.,.:.S S v v z Z z z z z v z z z k g s s s g g g k g g g j Z k z g z k z z z z z s s k g g g g g j g z k g z g s z z k g z z Z Z z g g g g g g g g g g k k k s Z K &.V.C.V.N.L.`.L.T.L.].Y.V.N.B.N.N.n.v.v.N.N.u.| L K L G K &.'.J.H.H.V.l.V.h.%.#.#.X./ X./ X.X.X.@.$.@.@.@.@.@.@.@.@.@.@.@.#.@.$.%.j.#.j.j.h.h.#.h.j.j.j.k.h.h.l.l.V.V.l.l.k.j.j.V.V.V.V.V.C.V.U.b.%.j.C.J.J.`.,X:X3X:X`.>X>X3X3X2X7X7X5XK z d a g g h a a l g h h z z k z z Z z x A z S S x v v S v v c v v v c c c x x x c c S =.;.J D S S ;.S ;.S S S S S x z F ] ` D z v c S v v S c S c v S v v x c :.=.c c c J -.c :.:.-.:.:.:.,.,.,.,.,.a.W.#X#Xa.,.,.-.,.,.,.,.,.-.,.,.,.,.,.,.,.,.-.:.,.:.-.:.:.,.:.f.0X0Xu.>.,.,.,.<.a.<.,.Z v x v 9./.&.K P S j j =.j j j =.j j j ;.c x z =.j j z v x x v x x x x x c c :.:.=.=.c :.:.x z z c z c z =.c v v v v z :.c v c c Z x S J c c c Z x z S z Z z x v z v z z v v v z v x J >.A v v >.>.z S z s z j v v s s j v b j ", -"s s s s s s s s z v j v v v v v v s s j j j j j j s s v v v v v x x z A S S S z v z z z z A z z z z z g g g g z j j j g k j z z z z j j v z z z g j g g g z k z k z z v z k z z z z z v v v z S v z A z z v A v v v Z z z z z z z v z z z z S c v c v v c c v Z Z A A x z z z k z z z z z Z Z A Z S x c c c A A S v A A c v A A v z A v S c x v v c c c v c c z S S J S J J D S S z z z Z Z A S Z z Z Z Z v v K gXgXIX$XG.i.#XD.#X[.W.[.R.F.t.b.0.O.F.p.8.p.G.G.q.8.y.G.#XF.].G.p.G.q.p.#XG.[.eX#X{.).#X$X).a.K :.:.,.:.P c c S A z z z z z k Z Z z g g g g g g g k B V g Z g g k z z z k z z z z z g g k g k g g g s s g h s s g g k k z A A S Z g g g g g g g g g g k j s k l g k G &.N.l.l.C.J.L.K.K.L.Z.N.A.Z.v.N.N.V.N.9.} D s s s s j x D s.J.V.C.x.l.k.h.j.#.@.@.@.$.O.@.@.@.X.@.@.@.@.@.@.X.@.X.X.@.#.#.#.h.h.h.h.v.h.h.j.@.%.j.k.j.k.l.k.V.V.H.J.l.l.l.j.j.V.V.V.V.V.V.Z.Z.n.l.l.H.`.J.J.:X:X`.,X>X:X`.,X3X,X4XtX(.g g h h g g a s s s h h g j g z z z z S S z c v S S c c c c x x x c x x =.c c =.c c c S c ;.J J ;.S S ;.S S S S v z z g f f k j z v z c c c c x S x A S S A S c c x c c v c :.:.:.>.a.,.,.,.:.,.,.,.,.a.#XG.W.#Xa.,.,.,.,.,.,.,.,.,.,.,.-.,.,.,.,.,.,.,.:.-.:.,.:.a.#X0X0X#XG.a.,.,.>.:.S v v v v j b V K S =.=.v b j j j j j =.=.=.;.x x x z x z x v x x x x x x =.x v c =.=.=.=.v x x x x x S x x :.v x x v x v v J ,.J c c c c ;.>.c c c x x x z v v x S c v v z v v x v x -.v x V v v z Z J c z v z v v v v j s j s j j ", -"z v j j s s v z z z v v v s v v v v z v j j j j v v v v v v v v v c z z v S J ;.c v A z v z z z z z z k z z s j v z z j j z j j j z z z j j z z g z k z z z z z z z z z z v v z z A v v v z z z v A z z A A z v z z z z z k z z z z z z z z v v v c v v v v A Z A Z z Z z z Z Z Z z k z z z z z z v c v c z c A z v Z Z c v A z z z Z z z S v c c z c v v v z z z Z z A S S S S z A Z Z Z k Z g k A A Z A k k J $XGXGXGX[.S.R.y.0XeXW.Y.Y.R.Z.F.D..| #X0XW.W.0XR.G.a.<.<.v v x c x v x v j c :.x :.=.s j =.j =.=.=.=.=.c =.=.x x x x =.x x v x x c x x x c -.:.=.=.=.c c x x x x x ;.c z z j z v x v v z Z v c =.=.=.=.c :.=.c S c c c c x x J x v v v v v v v v j v v v v v v v v c v v v v v v s b j j s j j ", -"j j j j v v z z x z z z v v v v j v v v v v j j v s v j v v v j z z z x x v J :.:.z Z z z v z k z z z z z k z v z z z j z z z j j j z j j z v z z v z z z z z z z z z z z k v z z v z z A z v z z z z v z v v z z z z z k g z z k z Z z z z z z z z A A Z z z Z Z z z z Z k Z Z Z z z k k k z z z z z Z z Z Z v A v z Z z Z Z Z Z Z Z Z Z Z v v c S S v A Z Z A A v S A S S D S A A z A Z A z Z S J J v v k k J $XqX#X[.G.t.Y.p.R.0X.J s a k g k z g z z S S D &.'.x.C.z.&.&.%.@.$.O.O.$.$.$.$.$.@.@.@.X.@.@.@.@.@.@.X.@.@.@.#.%.w.$.w.j.h.M.h.j.h.h.h.h.h.l.l.V.H.H.J.C.C.J.V.C.V.J.J.'.P.H.K.L.H.l.l.C.C.:X3X:X,X`.x.P.,X`.:X3X,X,X| z Z z z g g h s g g h h g g z z j z z z z z x v v c c =.-.c =.c c c x c c x =.c x c c =.x c S J D J J S S S c c c P v z z z z z z A v Z c v v c S S x z x z z z x c c c c x x -.:.:.;.9.G.#XW.).,.,.,.,.>.u.^.#XG.).|.-.,.,.,.,.:.,.,.,.,.,.,.,.,.,.,.,.,.,.,.a.A.[.#XW.W.R.0XG.>.:.:.x x x x x v v v x x :.:.:.,.,.-.b j j =.=.=.=.=.=.c ;.x z z z c x x x x x x x x =.:.-.-.=.=.=.c c x x x x x S =.j z j x x x v c c v c c =.c =.=.-.c c ;.;.c c ;.;.=.=.v v v x x v x x v v x P P x v x x v c J v v z v v x x j j j j j j ", -"j j j s s v v v x z z v z v v v v v v v v j v v v v v j s v z j g z A z v v v v J J z A z Z v z z z z z z z j z z z z z j j z j j z z z z z z z v v v v z z z Z z z z v v z z z z z z z z z z z z z z z z z z v z z v z z k g g k k z z z z z z Z Z z z z z z Z k z z z k Z k k Z V g k g Z k z z z z Z V Z Z Z A Z V z z V V z Z Z k z Z Z Z A v S S A S A Z A A S S S S S S z z k z z z z z D J J v v z z v K #X#X$XG.3.G.e.qX0XeXuXiXeX#XR.G.G.i.G.i.8.8.p.p.y.8.p.t.q.7.p.#XwX0XG.p.G.R.t.t.q.i.i.G.G.W.iXqX$X[.).<.:.,.,.:.:.;.D Z Z z z z k k Z z Z Z Z Z z z k k z Z Z g k z Z z z z z Z A Z z Z Z z z Z z z z z k g s s s g k z z k z g g h g g g g g g g g g s s g s s g j k j s j g K D a j v z k k z Z Z j s s p g g Z g k z z z Z S D K <.} L D J J ` +.$.O.O.$.@.$.$.^ ^ O.X.@.$.@.@.@.@.@.X.@.@.@.$.$.%.$.5.M.M.M.h.h.h.h.h.v.h.V.l.l.l.H.C.J.H.H.C.V.I.J.&.z.J.L.L.K.J.l.j.l.:X3X4X:X`.P.H.H.`.I.P.>X,Xs.G z Z z k g g g j g h h g g z j j z z z z z z v z c c c c c c =.c c x c c c c x c c =.=.c c c S K J S S S c c c x c c c z Z Z z z z z A v z c c c z A v S x S c c :.:.c v v c x =.:.:.:.J 9.G.[.#Xu.K ,.,.,.9.W.G.p.#X|.,.,.,.,.,.,.,.:.,.,.-.,.,.,.,.,.,.,.,.a.Y.E.U.T.#XR.U.G.a.>.x x x x x x x x v v x x :.-.,.<.:.:.=.=.=.j b =.=.=.x x =.x x x j j v v x x x x x x =.-.-.=.=.x x x x x x x x x c c x v z x x x v v c =.S :.;.;.=.;.-.=.=.;.;.;.;.;.:.;.=.x c c x x x x x x v c v v x v x x v j v c v v v v z v v j z j j j ", -"j j v j v v v v j v v v v v v v v v v v v v v v z j v v v j j j j z z v v v x c J :.S z Z z v z j z g z z z z z j j j j j z v s k z z z z k z z k z v z z z z z z z z z z z z z z z z z z z z z v z v v A z z z k z v z k k k z g g j g z z z z z z z z z z z k z k z z z z z z k g g Z V g k k z k z z k z Z Z Z Z z k k k z z z z z z A A A S A S S S c S S A A S S S A A z k z Z Z z z z Z S z z Z Z k v :.c ).qXA.y.7.#X0XeXuXeXiX[.p.G.S.t.S.y.t.b.t.p.G.u.p.8.q.i.7.i.G.#X0X2X0XG.G.#X#Xt.q.q.p.R.W.W.0XqXqXG.B.a.:.:.:.,.>.:.;.A V z z z k k k k z z z k z z z g z k g g z k z z Z z Z Z z A S S Z Z z z Z z g g g g g g s k g z k s g g g g k g g g g g h s s g s g s g s s s h h g h p a z z g k v z k g g p p h g g k k g Z Z k z k z z S S S J S J | J | %.%.$.$.O.O.O.^ O.$.$.^ $.$.O.O.@.@.@.@.%.$.^ ^ ^ ^ 5.5.M.M.v.v.h.v.v.v.n.n.V.V.V.H.J.V.H.H.H.l.'.`.&.z.`.P.L.K.J.J.l.l.:X:X,X,X:XJ.j.k.J.'.J.`./.k a g k s s g g g g g k g g k z k z z z z z z z x c v c c x x =.c c c c :.=.=.c c =.c x =.c x c =.J K S c S S c c v c c c v Z Z z z Z Z v v S z c v z z z x z x c =.=.:.=.c c x v v -.:.:.-.:.} u.Y.T.A.9.:.,.K ).R.R.W.).:.,.,.:.:.,.,.:.d.,.,.,.,.,.,.,.,.,.,.).b.0.Z.T.R.U.b.| :.J c c c c x v v x x x c x >.,.:.:.-.:.:.x =.x x c c =.c c x x x x x x v x v =.v x x v =.=.:.=.=.c x x =.v v v x x x v x v v x x x x x x x =.-.:.;.;.=.=.=.=.=.=.=.=.-.=.=.c c c c =.c c x x x =.v v =.v x v v v x S S x j v v v c v z v s j j ", -"j j j v v v v v v j j v x j v v v v v v v s s j j j j v z A j s z j j z v v v v v c :.c Z z v v v z z z g s v g j v z z v v v v z z g z k z z z z z v z g z z z z z k z z z z v z z v z z v z v v z v v z z z v v v z k z g z g g g g k g g Z Z z z z Z z k z z z g g Z g Z z Z z g g Z g g Z z z z k Z Z z z Z Z z z z z Z Z z z Z z z v v A A A S S A A Z A S S S S S z k Z Z z z k Z z z S Z k Z z k z J J L $XqXA.+.y.G.G.0X0X0X#XG.G.B.G.b.G.G.y.t.i.i.p.H ).p.8.8.G.i.D.eX0X.K S S S S v v v v S c v Z Z z v Z z c c c z z c v A z z A x x =.=.:.=.S A x c v x -.,.,.,.:.K u.Y.R.].).:.:.f.^.R.R.).P ,.:.,.9.a.:.,.,.,.a.,.,.,.,.,.<.| /.Z.Z.e.b.R.T.~.F.| -.c c c x x v v x x v =.c :.>.>.:.:.=.v -.=.c -.c =.-.-.c x c =.c x c c x x v x =.=.x =.=.=.-.:.=.x x x v v =.=.x x x x c x j v j x v x =.=.=.=.-.-.:.=.=.:.=.=.;.;.=.=.=.c c =.x x x c x =.=.x =.x x x x x v v v v K D v v v v v z z z s v j j ", -"j j j j v j j j v v v S c x v z z v v v v v v s v z z v j j z z v j v j z z z v c v A J z v z z z z k z z j z z z z z z z z z z z z z z z z z z k z z z z k g j z z z z z z z z v z z v z v v v z z z v z v v v v v z z g g z g g s g g z g g g z z z z z Z z z k g Z g g Z V V g j k k g g k k k Z z z z z z z k k z A Z z Z Z z A A A A A A A A A S c S Z A A S A Z Z z Z z z z z Z z z z z z z z z z S <.u.$XyXG.t.e.F.t.3.q.S.W.S.G.B.B.Y.R.F.F.G.G.p.7.8.8.p.#XG.y.p.4.D.0XB.G.0XG.p.B.0.7.i.G.7.p.q.[ t.#XGXF.S.).:.:.:.:.:.:.:.D V z v k z k k Z Z g z j g z z z z z Z z z k z g k Z z z z Z z S A Z Z z z z k z z z k g g g g s s s k s g g g g g g g h h s s s s s h g s g g g g g g z j v z j z j z g g g g g g g g g g j k k z Z Z z z z Z z k z S v v L +.O.] Q O.O.$.O.] $.$.$.$.^ O.^ O.5.5.$.$.^ $.5.5.5.5.M.5.M.M.r.5.w.M.M.b.b.m.m.Y.H.H.P.L.P.P.C.H.:X,X&.z.,XJ.V.L.>X:XP.I.J.I.`.J.J.J.J.I.`.s.C s z g g g s g g g g j g g g j j j v j z z z z v v z x x x z c c c c c -.c =.-.=.=.c x c x x c c c S J J c :.S S v A v z z A Z z z z Z Z v v z x z z c A c c c c c =.=.=.=.;.c x x c x v j x J s.a.,.9.B.B.Y.[.u.:.K A.0X0XG.<.,.,.:.,.,.,.,.,.,.,.,.,.,.,.d.N.v.v.v.v.Z.U.Y.R..-.x x v x v x x v x x P :.>.:.:.:.S ,.| ,.=.=.c x x x c c x =.x x =.c =.x x x v v x =.;.:.:.:.=.x v x =.v v v x v x v =.x j x x x x x =.=.=.-.:.-.:.=.=.:.:.=.;.:.:.=.c c c c c =.=.=.=.x x =.=.x x x x x x x z v v v x z v v z v v v z z z j ", -"j j j j v j v j v v v v j v z z z s j s s j j j j s s j j v z z j j z v z z j v j v v S <.J z v z z z z k z z Z Z z z z k k z z Z z g z z j k k k k z z k g g z g k k z z z z z z k z z v z z z z z z z z k v z z z z z g s g s s g s k g s g g k z z z z k k z g g g V g g V Z g g j k k Z Z k z z Z z Z z Z Z z Z z k Z g z z z Z v z z z z Z z z A S S Z S S Z z Z z z Z Z z Z z z z z z k z z z k J D ).yXGXu.y.y.t.U.b.R.w.t.t.i.S.t.F.G.p.[.F.W.G.8.y.8.q.p.p.G.G.8.G.0X#Xp.p.0X8.7.0.S.t.q.R.Y.3.t.y.0.G.A.B.D.[.(.>.,.:.,.,.,.:.J v z v z z Z Z Z g g z k z z k k g g z z k k z z z z Z Z Z Z Z Z z z Z Z Z z z z z Z Z Z z z s s s h s h g g g g g h h s a a h h s s g g g s g g h h j z z z j j j s s j g g g g g g g g g g V k k g z z z z Z Z A A A J } O.Q Q W O.O.^ O.! O.^ ^ $.$.^ ^ $.$.^ O.X.O.$.^ M.M.M.M.w.M.M.w.w.M.6.5.M.M.M.M.B.%.Y.L.].].].L.H.J.'.'.'.>XK.L.T.>X>X`.J.`.`.`.I.J.x.x./.| f f k g s s g g g s j g j j g j j z j z z z z z z z z x x x x c A x c S c c =.=.=.=.x c =.c x c c c c c v J :.:.S c c A A z v z z z z Z Z Z Z v Z z c c z v z z v c c ;.=.=.=.x x x x x x x x v v J ,.,.:.9.Y.Z.Y.Y.A.s.a.a.#X0X).,.,.,.,.,.,.,.,.,.,.,.,.,.a.[.K.M.! v.$.v.b.Z.T.T.].Y.>.,.J P -.-.-.-.=.=.x x =.,.>.-.:.-.K u.a.J v x c x x x =.=.x x x x x c =.x x x =.x x =.=.=.=.=.=.x x v =.v v =.v =.x v ;.=.x j j v =.x =.=.-.-.-.-.:.-.-.=.=.:.=.-.=.=.=.c c =.x x x x x =.x x x x P v v x x x x v K ,.c x v v v v c v v z z v ", -"j j j v v j v j v v j j j j v z z j j j j g s j g j j j s z s s s z v z z z z v z S v v D S x v k z z z z z z z z z z z z g k z z z z z k z k g g z k k k g g s g g g z z z z z z z v v v z k k z z z v v k k z j k z k g s g g g g g g g g g k g z k z k g g k g g V g g g V g g k z k g Z k k k g k k z z z z z Z Z g g k z g z k g z z z z z z Z Z D D A Z A A z z Z z Z z z z z Z g k z z z z z A c <.gXGXqX8.B.G.q.G.F.#XF.p.H p.t.t.G.G.t.R.#XG.i.G.0X#XW.G.t.i.#XG.#X0XD.G.B.G.[ [ 0.S.S.7.! #Xq.i.t.t.S.t.[.b.G.G.f.,.:.:.,.,.,.:.P k k z k Z Z Z g Z Z z z z z Z z z z z z z z z z Z Z S Z Z Z Z z k k z z z z Z A A z z s h s s s s s g g g g g g h h h s g g g h g g h s h h h g g j j j j j j j v v z g g g g g g s g s j g k z k z k z z Z G D z S J | O.W ] Q [ ] O.O.^ Q Q $.^ $.$.$.$.O.$.%.$.$.$.^ M.M.w.5.M.M.w.M.M.5.r.M.M.b.b.b.{ N.T.H.%.L.P.P.L.H.J.'.I.L.].].>XX,X`.J.`.`.P.H.C.| V s j g g g g s g g g g z g j g g j v z z z z z z z z z v v v x x c c x x x c c c c -.=.=.c c c =.c c c c =.S S S c S S z v v z z z k z Z z Z A x z A z z z z z v c z c z c ;.;.;.x x c x x c x =.=.P b v ,.a.,.a.Z.N.Z.K.Z.u.<.<.).{.a.,.,.,.,.,.,.,.,.a.A.s.9./.F.b.B.h.O.Z.K.v.U.T.T.R.R.u.,.,.:.:.,.,.,.-.:.-.,.,.s.L -.:.:.s.A.1.>.c S x P =.c c =.c x c c =.=.c c x x =.=.=.=.;.:.:.:.-.=.=.x v v =.=.x =.=.x x x z x x x =.=.=.=.;.:.:.:.:.:.:.:.=.=.-.-.;.=.;.;.c =.c x =.x x x =.x x =.=.v v x x x x j <.K x x v v v z c v v j j j ", -"j z v z v j v v v z v s j j s v z k s k g g s h s g g z g h z z g s z z z v v g k k z z s c z z k g k z z z Z z z k z z z z z k g z g g g j g g g s s g s g s g k g g g g g k z k k k k k k k g s g k k l k k k g z j k g g g g g g g g g g g g g g g g s g g s g h g V g g g g k g Z V g Z k g g g Z Z Z Z Z V V Z Z k z z z z k k Z g g k g k Z Z z V V Z D Z Z Z Z Z Z Z Z Z Z V g z z k z z k k J a.).gXGXA.u.B.y.q.R.F.G.#Xt.y.p.t.t.G.D.S.[.R.p.G.W.qXqX0XG.p.R.#XD.G.G.S.D.S.W.y.[ 7.[ t.F.r.y.7.q.t.S.t.S.F.R.b.q.u.,.P :.:.,.:.,.:.A v z z z z Z g g g g k Z g g g g k z z z z z Z Z Z Z A Z z Z Z z z Z Z Z z k k z g k z z k z z j s s s h g h s k g j z z z g h g l k k g g g g g g g s j j v v j v z k g g g h s h s g g j g g k z k z z z z Z A S >.{ X.Q W Q Q Q O.$.^ ! O.w.^ $.$.$.O.^ ^ $.$.$.^ ^ 5.5.w.w.5.M.M.v.b.M.M.M.M.b.M.b.$.m.K.Y.Y.Y.Z.I.L.L.C.'.].K.P.T.~.X,X:X:XJ.`./.| V g k g g s s s g g g g s v z j j z z z z z c S v z z z z z x v z x x c x x x c c c c P c =.c c c x c c S c c K J :.c x c v z v z z z z v z Z A Z Z Z Z z z z v v v z z v z c ;.;.x x x x x x x x x -.-.P x K u.,.,.G.w.O.$.Z.Y.B.9.K } ,.,.,.,.,.,.,.,.,.s.U.G.).U.V.Z.@.N.Z.Z.Z.Z.T.].R.R.R.G.s.-.>.a.p.).).s.s.a.a.f.u.A :.:.P s.A./.>.,.:.:.:.:.c =.c x :.=.x x c =.=.=.c =.=.=.=.=.=.=.-.-.-.=.=.=.=.v v =.x x x z x x =.x j j =.c =.:.>.:.:.:.-.:.-.-.:.:.=.:.:.=.=.c c x c =.x =.x =.x v x v v v =.=.x x j K J v x v S z z j j z j v v ", -"z j s v z z v v z z z j z j z k s s z s g g g s h h g j s g z k k k h g g g v k z z j z Z k Z z z g g g g k k Z z k g Z z z g g g s g h g g s s s g g s s g g g g g g g g g s k v z k g g g g s g g g k s j k k g g g g g g g g g g g h g g g g g g g g g s l g g h g g g g g g g g g V Z V V g g V g V Z k Z g Z k k Z z z Z z z z g Z g V g V l V k k V A K D A A Z Z Z z z Z V g k z z z Z Z A k >.gXGXqX[.t.R.t.3.t.R.q.i.R.[.R.p.S.i.S.i.y.G.G.R.G.G.[.G.G.G.t.b.F.G.S.G.W.t.7.7.[ 7.8.~ r.R.Y.0.0.0.q.t.F.q.t.G.G.u.>.P P c -.:.,.:.,.,.J S Z z z z k Z z z k g k z z g g g g g g s g h s s s h s g l g z k z z z z z A v z z z z g h h h s s k z Z Z Z S z g h g g k h h h h g g g h g g g h g g g s g g g g g g g g s h s g g g g g g g g z Z L D z Z S >.| O.~ 0 W ' W Q ^ ^ ! O.O.O.$.$.O.^ ^ $.$.$.h.^ w.5.^ M.M.M.M.v.v.v.w.r.M.M.M.M.w.S.E.E.U.Y.Z.b.K.Y.Y.L.`.L.K.K.L.T.R.].,X,X5X,XJ.'.} j z g g g g g g g s g g g j j g j j j j z z z S j v z z z x z z z v x x c x x ;.c c x c S c c c c c c c c S c x K L :.c v z Z z z z v v v v v v v v z v z v z z v v v v z v v c x v v x x x v x x v x x P c v v } >.,.).R.v.b.m.L.K.Z.u.,.,.,.,.,.:.,.:.,.,.s.].R..c v v z z z z j j z z ", -"z z j v j s s z x z z z j j g s s s s g j j g j z z z k g s h p h g g g g g j S k k j g g k k z g g g g g g g k g V Z g z g g g g s g g g g g g g g g g g g g g g g g g g g g g k l s s s g g g g g k s g g l l g g h h g h h g g g g g g g g h h g g g g l g g g h g g g g g g g g g g g g g g g g g g g g V g B g g V g k k k g k g g g g g g g g f l | | L D S A Z k k k l g g z k k z A S D J P s.UXGX#XX.+.8.i.3.r.q.q.i.F.0Xt.r.i.i.4.r.S.S.W.D.G.D.i.i.i.t.r.0.S.G.r.q.G.t.3.7.y.t.7.0.U.eX[.7.y.q.q.q.0.8.3.q.p.9.p.a.K J -.-.:.:.J :.,.>.Z Z Z z z z z z z k s s g j g g g g z k z g k s s s s g k k g g g z Z Z A v z z g s g g g k k g h g z Z Z g g k k g k g h h h h h h g h h h h h s s h g g g g g s g g h a h g h g g g g g g g g k V F A z Z ;.J &.O.W W 0 ' ] O.O.^ ! ! Q ! $.%.X.O.O.^ $.$.^ ^ ^ ^ h.M.M.M.v.n.n.n.w.0.w.w.w.e.t.M.D.K.+.` ` { e.F.Z.U.K.Z.w.M.m.T.T.T.>X].,X].'.` j g g z j g g s s g g g g g g g g j z z z z v S z z z z z x z z v z z x x x x c c c c c c :.=.:.=.=.c =.c c c c c A J S c x S c x x v v k z k k v z z v z v v z z v c x x v v x c x =.=.x x x x x c =.c x P c c v -.<.<.a.).[.v.M.K.T.K.Y.a.,.a.,.,.,.,.,.,.,.<.[.T.3XK.K.T.Z.%.%.B.Z.n.T.Y.T.#XK -.P J a.J c -.:.-.v b P a x :.:.P >./.u.>.J :.,.a.a.J -.:.:.-.:.:.,.=.x x x x =.=.=.-.-.-.-.-.=.=.=.=.=.=.=.v =.x x =.=.j =.=.x x j x x c =.;.:.-.-.:.:.:.:.:.-.:.:.;.=.=.c c c c x c c x =.=.x =.v x =.=.x x x Z Z j Z K v v v v z z z z z z z ", -"v j z j j s s v x v v k k g v s k s s s g g j j s v g g g a h g g g g j g j g z j k s g g z s z Z Z g g g g g g g g k g j g g g g s g g g g g g g g g g g g g g g g g g g g g g h s k g g g g g g g g s g g g g g g g g j g g h g g g g g g g g g g g h g h g h g g h g g g g g g g f l f f g f g g g g g B V l V f V g V g f V l g g g k l V f g l f a | Y.u.} K J Z Z A V k k k A Z k A S D D k J $XiXyXY.Y.).8.q.7.q.4.S.i.G.[.r.q.r.r.i.r.r.G.S.D.t.t.G.i.S.G.G.F.R.F.R.G.t.G.y.q.G.t.w.b.Y.B.b.t.7.G.G.r.r.t.q.p.u.8.p.G.p.9.K ,.:.P :.:.:.:.:.z v J z l k z z Z k g s g s g g s g k z g s g g s s k k k k z k z z z z z A Z k g g g h g h h f h g s g k Z Z g g g g h g g g g g f g g h g h s s s h h g g g g h h h f f g g g h g g g g g g z Z h l Z S >.u.%.[ 0 W W W ' ! ^ O.O.Q ~ ! O.%.%.#.%.O.O.$.O.O.^ 5.M.M.M.M.v.n.V.e.[ 0.0.0.e.e.M.D.E.%.M 3 B n &.F.m.m.b.r.M.M.b.U.~.~.>X`.P.'.| j k k k j g s g s j l g g g g g g g g z z z z k g z z v k z z z z z z x z v v v z c x c ;.=.=.;.;.;.S ;.;.c x c c =.:.:.:.c x x x x x x z z v z z z k z z z z z z v v x x v z v x c -.=.=.x v v v =.c x x =.x x c v v ,.} =.>.[.R.! e.R.R.[.} a.a.,.,.,.,.,.,.,.,.).T.].U.Z.U.b.N.N.K.Z.Z.Y.K.R.Y.<.-.:.:.9.J :.:.>.>.a.a.-.:.:.:.:.c <.0X[.<.:.:.,.u.9.<.<.9.| <.>.,.,.>.J -.=.=.=.=.=.=.;.:.=.=.=.=.=.=.x ;.:.,.:.:.:.-.:.=.v x v x v x x =.=.=.-.-.:.:.:.:.-.-.-.,.-.-.-.-.=.=.=.=.=.=.=.c x =.:.x c c c c x x x x z Z j s <.S v z v z v z v v v ", -"z v j j s j j j v j v j z v v k s k z s j j p p h s s s s j k g g g g g g g j h g j k g k g z z z g V g g g g g g g k k g g j s s g g g g g g g g g g g g g g g g h g g h g g g k l g k g g g g g g g h s g g g g g g g g g g g g g g g g g g h g g h g h h h g g f f f g g g g g f f f g l l f g g g g f g f V g l g l l f f l g g B g g l l B f l l f m | } K } K A D A V Z k k z z Z Z Z Z V l (.DXGX$Xt.A.G.q.7.7.q.r.i.4.t.S.4.r.q.i.q.r.m.].D.G.W.S.G.G.i.t.G.G.#XY.G.G.S.S.7.7.7.b.0X[.t.! ! q.G.G.D.t.p.t.p.i.p.8.7.S.S.[.G.p.p.s.a.,.P K >.>.J v v c v z k z z z g g g g z k g g g s g z z z z k j k v j j k k k s h h g g g f f a d h h g k k k g V g g g f g Z V V k k g h g g g g g g f f f h g g g g d f h g g h g g h g g g g g g k V k z z Z S } /.] ] ] Q Q W W ! O.! ~ Q ~ O.^ %.h.%.$.O.O.$.^ ^ ^ w.m.m.n.v.V.N.N.O.! 3.0.t.S.M.E.D.E.o.N N n ` B.m.U.M.M.m.U.m.F.K.1X>X!.`.P.| j z Z z j g g g g g s s g h g g k g g g j z z z v k z v v v z z z z z z z z z z z z z A c c c ;.;.;.S ;.;.S S x x c c P S ;.c x x x x x v z z z z v z v z z z z v v v v v v v v v v :.=.=.x x v =.v v x x x x v x x v j :.a.<.=.a.0Xw.! b.Z.[.f.a.,.,.,.,.,.,.,.,.,.a.A.K.H.N.Z.v.%.K.V.Z.Y.T..-.-.,.A.).>.s./.9.u.a.,.:.c -.:.-.v | <.>.,.,.>.a.u.u.e.w.u.t.9.,.:.L 1.,.,.,.:.:.;.;.=.:.-.:.=.c :.:.<.,.,.,.,.:.:.,.,.,.,.:.=.s j j x =.=.=.-.-.:.:.:.:.-.:.:.-.-.-.-.=.=.=.=.=.=.=.=.=.c c S c c c =.S x x x x z z z v G K v c :.v v v v v v ", -"j v j s j j j j v v v S z z s s s j s z j s j z j j z j s j k s g g g g j g z g s g g g k s z j z g k g g g z k k g k g g g g g g g g g g g g g g f g g g s k g g g g g g g g g g s s s s g g f g g g g g g g g g g g g g k g g g g g g g g g h g g g h g g h h h g h h g g g g g g g g l f g f B g k B g g V g l V V g l g f g f B V g g B g g g l l g l f t B B f f l f l l l V l l k k k k k J _.iXGX[.B.Y.8.t.r.q.q.r.i.4.4.4.i.i.i.6.r.i.S.F.t.q.[.F.D.D.i.B.G.R.D.r.t.B.G.t.0.t.0.i.G.G.O.7.y.t.q.t.i.p.q.t.p.q.q.q.3.t.G.).W.W.W.G.G.p.f.K :.:.:.J A A A V k z S J S z k z z z k g s v g g h h g h h a h a s h h s s s s h h h s g j g h g h h g g h p f h g V z Z z z z k g l h g g g a h h h h d h h h g d h h g h h g h g g h h h g g g Z l g l V k D &.+.] [ ] [ ] ! $.O.Q Q W ^ O.O.e.%.@.O.^ O.$.$.$.$.v.K.Z.Z.V.V.n.B.0.O.0.0.t.S.r.S.M.b.o.3 n F A.v.M.n.v.h.M.K.T.U.T.XX&.V k z z z z g g g g g h s s f g g g h g g g z k k z z z z z z z z v z v v v v z z z z x c c c c x =.;.;.;.x S ;.=.=.c c ;.:.c x v j v v v v v v v k v v v z z z v v v x x v v v v v x c =.v v v =.v =.v v x x x x =.c x x v a.).:.J ).0XG.m.b.F..>.J :.| 9.K :.,.K <.9.9.p.G.).v.9.>.:.<.| >.<.a.>.,.-.-.-.S -.:.:.,.:.,.,.,.,.:.:.,.:.,.:.:.a.,.,.,.=.x v ;.>.-.-.:.:.:.:.:.:.:.:.,.-.:.-.-.-.=.=.=.=.=.=.c c c c =.c c c x x =.S =.x =.z v v K K c J S z z v v v ", -"z j z j j j j j j j k s j v s k z j j z z j z j z j j s s v z g z j v s g j s s g j s z s k g z z z j j s s g k k g g V V g g g g g g g g g g g g g g g g s g g g g g g g g s s j j s g g g g g g g g h h g s g g g g g g j s g g g g g g g g g g g g g g g g g g g g g g g g g g g h g f g l B V k g g B g V g g l V f f g f g f g g l g g g g g f f g l l f f l g f f f g B V l l g l l f f a c u.iXqX0X0XG.[ D.r.4.q.q.7.4.4.4.4.r.i.4.6.4.S.R.G.S.G.[.S.p.p.[.eXR.S.S.G.#XW.#XF.R.t.7.~ ~ ! S.Y.Y.G.B.y.S.t.r.r.r.r.i.p.G.i.i.S.W.W.0X#XW.^.a.:.>.:.J J K J :.:.D A A A A A z z z z z z z g g g g g h h h s g h p h p p s s h h h h p h g g p f p p f k k g g g g g g g z z k k g g g g g h g g h h g g g h g d h g h g h f g g g g h f h g h g f l f l l z J { 0 0 W Q ] ! [ ] [ ] W Q O.$.v.h.h.h.O.h.$.O.h.n.n.V.K.b.w.v.M.F.M.0.0.7.O.e.S.M.M.v.{ 3 F | G.M.v.h.h.v.w.Z.U.M.T.>X~.].u.Z j z k k g j g g g g g s s s g g g g g g h s g g z k z g k z z k z z z z v v z z z z x S v z c x ;.;.;.x ;.;.;.c =.x x x ;.;.;.x x x v v v v z v k v z Z Z z v z x x z x x v v z c x x c =.x x v v v v v v v x x x v v v x v z ,.<.P a.0X].M.0.b.Y.].s.9.p.,.,.,.,.,.,.,.a.L.N.N.%.K.v.N.V.K.Y.Z.G.<.:.:.:.:.u.Z.Y.G.G.} P :.:.:.K L K | J -.P l v :.:.m J :.,.a./.).u.| ,.,.:.} | /..>.,.:.S Z z z z z z z z z z z g Z g g g g g g g h h h h p s p p p h p p h h h p p h h a h g h g g g g z z z k k k g g s g l g g h g g h h g g h h h g g g g h h g g g h a h h g f f a g f l z D K W W ~ W ] ~ Q [ O.O.[ [ ] [ $.v.v.%.%.n.%.w.N.n.b.Z.b.w.w.w.r.w.y.r.O.0.y.r.S.M.m.Z.u.u.N.k.L.M.v.V.h.v.M.n.n.m.Z.T.Y.| D v k z z z z g g g g g h h s g g g h g g g h s k z k z Z z z k z z z Z z z z z k z z z z z x c S c ;.=.x =.c c c c c x x x c S S z z z z z v z j k j z z z z k z S c x x x x v v v x x x c ;.;.=.x =.=.v v v v v v v =.x v x x j j K a.K /..<.K J K J -.:.>.| s.u.9.,.,.,.s.[.wX.:.-.-.:.:.:.:.-.:.,.>.>.=.:.-.:.a.s.>.>.>.<.;.x ;.=.=.:.:.-.:.:.-.-.,.-.-.:.-.;.=.=.=.j =.=.c c =.=.=.=.c =.;.x x ;.S =.x j v z v j k J S v v v v j ", -"v s j j j v j j j s v z z j j j V K z j z s j z s j j z z z z z j j j k k j z k z v j v z z z v z j z j z j g z z s k s g s g V V g g g s g k s s s s l s k g j g g g s g s j k l k g j j j g g g g g V g g k g s s g g g s s g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g g Z g j k Z Z V g g V g g g g g g g g g f f f l f f f f l V l l g g l l l l l f f f f f l f u z k | [.t.t.[.S.t.R.q.q.q.r.4.q.S.4.r.r.i.4.4.r.i.S.G.i.q.D.G.S.S.W.G.b.W.r.7.G.R.R.r.S.G.R.F.S.b.7.7.8.q.q.i.i.i.i.i.4.6.i.i.i.q.i.p.i.i.D.W.#XU.F.0X0X0X#X).).[.f.} :.:.J S S v z A z k z z k z z g g g g g g g g h p s h h s s h s s g g s g g g g g g g h g g g z z g k g k z Z g g s k g g g g g g g h h h g g f g g g g g h g s s h g h f f f a f h f h g Z D ` ] Y W W W W Q ] X.] ] W [ O.n.h.h.n.N.v.n.V.n.v.w.m.M.w.w.w.0.! 7.[ 7.0.r.M.M.n.m.K.U.U.K.b.h.l.h.%.n.w.[ $.e.Z.T.u.J S Z z z z g g g s h g s h s s g g g h h h f g g z A z z z k v z z k k z Z z Z z k k z z z Z A z z S Z A c S v c c c x c c x c c x z v v z j j j v g z v z v z z z c S v v x x v v v z x x ;.=.c x x =.v v v x v x v v x v x x =.x s c a.,.<.[.0XY.b.U..,.,.:.a.B.Z.u.L G.U.s.:.c v v k v J | a.,.a.9.9.| | | :.:.>.s.Y.y.y.y.>.a.[.].Y.v.B.e.Y.K.Z.p.u.| K ,.,.:.:.:.:.-.:.:.,.,.:.:.-.c <.a.s.| <.>.:.;.:.:.:.:.:.:.:.,.-.-.-.-.-.-.:.=.=.=.j =.=.=.c =.=.c c =.=.;.x x x S x =.x x z z x s s z v z v j v ", -"v j j j j j j j j j v z x z j j v f D g j j z j j s s j z S x z z j z z z k j v j z j j j j j j z v z j z k s s s g z g k s g g k g g s k g s j k s s j j j j s s g g s g g g k k V g g g k k g g g V g g g g s j g g s g s g j g g g g g g g g g g g g g g g g g g g g g g g s g g g g V g V g g g g Z k k Z g g g V g g V g g g g g V g f l V g f f f g f f g f g l f f f f g s f f f f a u a v } {.#X^ G.[.S.G.W.t.t.q.r.6.S.S.4.i.i.i.6.q.4.q.i.i.i.i.S.4.r.i.r.i.i.G.S.t.G.G.G.D.W.W.G.b.r.t.q.7.8.q.q.i.q.4.4.q.6.4.i.i.4.q.6.i.i.i.S.S.D.i.D.G.G.W.eX^.^.eXeX#Xa.:.:.J S :.:.D A D S S A Z z z g g g g g g g h h p h h p p b p s s s g g g h s g s k k k z g k z z z Z Z z g g g s l g g g g g g g g g h g h h h h h h f h p a p a a p p h a h h h g h f l k J { W W W W W W ~ O.! Q W ! [ v.n.v.v.e.h.n.h.N.v.v.m.m.w.w.v.O.3.! [ [ [ $.M.M.Z.n.m.U.m.v.V.V.V.v.v.k.h.N.v.%.Z.Z.| v S A Z k k g g g g h g g h h s s g h h f h g g z z Z J J J J A z z k k z z Z Z Z z z z z Z Z z z Z A A z A z z c v S c v x c c c v j j z z v j s v v z v z j z z v v z v v v v v v v x x c ;.;.=.c c =.v v v x v v v v x v v v x x x j v ,.:.<.).U.0.b.T.Y.T.).:.:.,.,.,.,.,.,.:.,.-.<.} J <.| u.K.N.u.>.:.:.c >.| t.).L u.W.u.>.:.k v v v C { &.J K F C B m | <.,.x K t.' 8.w.u.).B.A.K.B.).).[.Z.v.N.u.A.B.y.N.s.<.J J -.:.:.:.,.:.:.:.-.=.c K 1.&.>.:.;.>.:.:.-.:.:.:.:.-.-.-.-.-.:.-.=.;.=.=.=.=.=.c =.=.=.=.c x ;.;.x ;.=.Z =.=.c x z z v v j j v j j v ", -"v j s j j s j j j j v j s v v J V D C j j j s j j j z z z S S v v z j z z z s k k k j j z j j s k Z s j j z s j j g g g g k g g s z k g g g g s k s s j g g k s g s g g j j k k g k g k B g g V g g g g g V k g s j z s g k s g g g g g g g g g g g g g g g g g g g g g g g g k k k g k g z Z V Z g g g g g g g g g g g g g g g g g g g g g g f f g l l l f f f f f f l g g l f a f f a a a u a L $XqXF.G.[.t.G.#XG.t.S.t.7.r.S.i.q.q.q.6.6.q.q.q.r.S.S.r.i.4.r.i.4.S.t.t.G.G.S.D.i.r.S.i.G.D.r.i.S.i.r.q.i.4.4.q.q.q.4.4.i.S.i.4.6.i.q.i.i.G.p.i.i.G.W.W.^.0XW.eX0XeXeXf.J :.D D Z z z k z Z k k g j g g j g g g h h h h p p p h h h a h g g g g s s g s s k j g g g k k z Z z z g g k g s g g g g g g k g g g g g h a h h a a f h h f h h h z h h h g g g g g g f l A L W W W W W ! ! W Q ~ ! Q ! O.! O.$.N.v.v.h.N.v.$.e.v.w.w.e.y.w.w.w.+.] e.b.b.M.w.M.m.E.C.V.N.N.h.h.l.V.v.v.n.u.J S A A z g g g g g g g s g h h g s h f h h h h h g Z S :.:.K ,.J Z z z z z z z Z z z k k z z z z z Z v v c z Z S A c v v c v :.:.S x z j z j j j v j j s v z j v z z c x v v z z v z z v v x =.c x x x v =.v v x v v v v x v x x x x =.v s c ,.=.K u.b.b.U.0XT.f.,.,.,.,.,.,.,.,.,.-.,.:.:.,.:.:.<.a.K >.:.:.-.-.-.c /.u.v L G.R.u.G j z z v v l C z z S S c c k S >.:.:.L J l | u.G.G.B.A./.Y.[.L.A.Y.K.B.T.Y.Z.Z.].).s.,.:.-.:.:.:.:.:.:.:.:.:.a././.} >.>.=.=.:.:.:.-.:.:.,.,.,.-.,.:.:.=.=.=.=.=.=.=.c c c =.c =.c ;.x ;.x x ;.Z x x z z z v v v v j j j j ", -"v j j j j v v v j j v v v v j l l g s v z j j z s j z z v S S v v S z k z j j g k j v z j j j g s s v v v j z g g j g z z g g s g g j g z k k s g j g j g k z g z g s k s k k g g g g g g V g g g V g g g g k s s j j s s g s k g g g h g g g g g g g h g g g h g g g g g g g g z z z k z z z Z Z k k j B j g g V g g g g g g g g g g g g g g g f f f f f f f f g l f g f f g f f a d a f f t e | 2XR.F.N.0.r.R.R.i.S.G.r.3.i.i.q.q.q.7.q.7.4.4.4.4.4.i.i.4.4.4.q.4.i.q.q.q.q.t.r.r.4.4.q.r.i.5.6.i.6.i.i.q.6.4.6.6.4.4.4.6.i.q.q.i.i.6.i.6.p.#XG.W.G.D.#XW.R.W.eX^.0XeXeX).>.:.J :.:.v k h l s g g g j j g h g g h g h g d h p h p h h g g k g g g s s g z k j k z z k k z z V Z g Z z g g g g g g g g g h h h f a h h g g g g h g h p s k h p h g h h g h g g k k g k V ' W W ~ ~ ~ ! ~ ~ ! ~ ! O.O.O.$.w.v.v.h.h.h.h.O.O.N.e.w.%.$.e.e.w.e._ y.m.M.e.5.M.5.m.v.N.V.v.V.l.h.h.v.$.e.} J S v A Z k g g g g g g h h g g h s g g h f d d a s k S :.:.} :.:.J A k k z z k z z Z z k z z z z z z v z z z S A v c A z v :.:.:.S j z j j v j j z z j z j j z j s z z z z v z z z z z v v z =.x j v x v j j =.j j j v v v v x x x x v v j j -.:.J >.u.R.R.R..:.:.:.:.:.,.).).:.K A.u.Y.} k j z c :.:.S z S z s A S s e Z :.:.z z v J K | 9.f.).Y.F.[.Y.Y.].].T.T.T.K.K.T.^.~.).a.,.:.:.,.:.,.,.:.:.>.A..J a.,.:.,.,.:.:.:.>.:.:.-.:.:.-.;.:.-.-.=.c =.=.c c =.=.c ;.=.=.S c c x x x z z x v c x j s v v s ", -"j j v s v v j s v j j j v j j b j s z x z v j j s z v v v z Z z z z z z j j z z z g v j j j z z z s v z z z z j g j s s h g g z z k j g s k j k g g g g z z z g z z g s s s g s V g V g g g g k g g g g g k g s s j j s g s g s g g g g g g g g g g g j B g g h g g g g g g g Z Z z k k z z k V k g g B g g k g g V g g g g g g g g g g g g g g h g g g g g g g f f l f g f f l f f a f f u e t L Y.T.F.^ [ R.F.S.q.i.D.q.4.i.r.5.4.4.6.4.3.3.q.4.3.r.r.4.r.S.i.q.4.i.i.t.G.S.r.r.i.r.r.4.r.4.4.6.6.6.6.6.4.4.7.8.8.8.6.6.6.6.4.i.6.i.q.6.6.6.i.i.i.i.D.0X0XR.R.^.eXeXeXeXeX0X{.).s.>.A k z z k g g g g g g g h h h h h d h h g h h h g g g g g g g s g g z k k z z z k k k z Z A Z k z z g j k g k g h h h a a p a h h g g k g h h p g d d f d s h h g g j g k k Z Z Z A F ' ' ~ ~ ' ! ~ ! ~ ~ ^ W Q O.%.v.h.h.h.h.h.%.! $.v.%.v.h.%.v.O.$.e.( { w.M.$.M.M.5.M.e.v.V.k.V.V.k.V.v.O.{ K K Z v Z Z g g g g g g h h h h g h h h h f h h f a k D g a g J J :.>.D Z k z z z k z z z k z g g k k z z z z A z z A x z z S >.:.J c z z v v s j z j v j v s j j j v j z z j s j v z v z z z z c =.x v z j =.=.=.j =.j v z v v x x v j v v v j x :.,.J v 9.F.m.T.s.:.:.:.:.,.:.,.-.,.,.,.:.:.,.:.:.J ,.>.:.,.:.,.,.,.>.F.A.J J K 9.B.<.:.J v S c S S S S A g g S z p a J :.>.D :.>.:.:.J K } ).Y.].m.K.[.Y.R.U.Z.b.v.Y.[.0X.>.>.,.a.K f..:.-.-.:.=.=.=.=.:.:.:.;.=.=.=.c c =.=.=.c ;.x x z x x z z z x x j j j v v v ", -"s j v v s s s j j j b j j j b j s v v S z v s s z z z z z A z s g s Z Z z z z s j j j j j j j z g z v j s z z z z j g g g g g z j g g g g g s s j g g j z z z z z k z k g s j g g g g g g g g s g g g g g g g k k s s g l l j s g g g g g g g g B j g g h j g B g g g g g g g Z V k k z z k k Z j B V g g B g g g g g g g g g g g g g g g g g g g g g g g g g g g f g f f f f f f a a a e a e e B B.U.t.D.qXyX[.Y.0.7.i.q.q.q.4.4.4.4.4.3.3.3.3.4.4.S.t.r.5.S.i.4.i.S.q.t.S.i.i.i.i.i.6.4.5.4.q.3.4.4.4.6.6.4.4.q.7.q.4.q.6.i.4.6.6.6.6.4.6.6.6.6.4.i.S.W.~.W.0XeX^.eXeXeXeXeXwXeXeX<.k z k k g g g g g h h h h h g g h h g g g h h h g g g j g g g k s s z s s g g k z z Z z z z v z z z z z k j h h h h h h g h g g g g k g h h p p p f f p p a g h g g g g g k Z z Z P J { Q ~ H [ 7.[ 8.[ ! [ O.h.V.V.h.h.%.h.v.h.v.$.e.v.h.h.N.h.v.v.%.$.o.{ w.w.w.r.M.M.w.M.j.l.n.v.l.V.V.e.0.| J J c c z Z k g g g g g g h g f g g d g g h f f h a A J z g z l s S S :.:.A z z z z z z z z z z z z k z z z Z k Z Z z z S S :.>.>.S z z s s z v j j j j j v j v j v z j s j v v s j j j j v j z =.:.;.c z j j v j v v v v z v v v j j j j z x v j v >.:.;.S 9.).A.9.>.,.:.-.:.-.,.,.,.-.,.,.,.,.,.:.,.,.:.,.:.:.,.:.:.>.9.a.J P J K } J >.:.J z z z A v v s z z c z b g K a.| z K 9.:.:.:.K :.K A.K.K.I.T..s.| c c :.=.=.:.:.<.<.:.:.-.-.=.=.=.x =.=.S ;.c S c S ;.=.c x x x x x j v z z z j S :.x z v j v v ", -"z v v s j j s j j j v j j v j v v j z s s v j j v j k v z A S z z z z z k j z g g g s s g g h h g g j j s g z j g g g g g g g g g g h g g g z j k z g g k z k z k z z k g j z g g V g g g g j g g V g g g g s k k j j l g s s j j s k k g g g g g g g j B h g g g g g g j Z Z g Z k k z k k k Z Z Z g g g k g g g g g g g g g g V g g g g g g g s g g g g g g g g g g g g B f f f d a d a d e 1 C ).T.B.F.0X0X[.0Xe.7.q.q.4.3.3.4.4.q.q.7.8.3.3.4.4.4.i.4.4.r.4.6.i.r.r.q.i.i.4.q.i.6.4.4.6.4.q.8.4.6.6.6.i.6.q.6.4.4.3.4.i.q.4.i.q.q.i.i.i.D.i.6.4.S.D.G.~.R.^.0XeXeXeXeX0XeXeXeXiXs.A Z z z g g g j g h g g g g h g h h h h h h h h g g g g g s h s s s s s k j z z z Z z z A z z z z k g h s h s k z g h h g k g g g g h g Z g h p h h h a a a f g g g g g g k k k Z J P | ~ 3.0 0 7.[ H { H ! v.N.h.h.h.h.h.v.h.$.h.v.v.n.V.Z.N.k.%.v.h.h.o.] w.M.w.w.M.M.w.M.v.k.V.H.V.n.$.5.0.| K A J A z k g g g h g g g g g g g g g g g h h a a g S s g z z k Z z z D D S Z z z g k k g g g k g k z k z z Z A Z g z Z z S :.>.:.S z z z v j j j j v j z s j j j j j j z z s j v v v j v j j z =.=.c c v v v v v v v j j v v v x j v v j v v v j s v -.:.:.>.>.K /.A.s.s.<.<.,.:.-.,.:.-.-.:.:.:.:.:.,.J :.:.:.:.:.:.:.P :.J -.P J :.v z S v c z v j s g j v S S h s A J K A -.| 9.>.:.:.:.:.:.| Z.I.~.!. e x v e b } ).a.J P c =.c S } :.=.:.-.=.=.=.x x x x z v c S c c c S c x x v z j x v z z z z j z c ;.v j j j ", -"z z z j v s v v v j v s j j j j z j z z v v z v j z v z S A Z z z z z z v z s g g s g g g g g g g g j g s s z g s j g g g g g g g g g g g g k k k z k z z k z z z z k g z j g k g g V Z g g g j g V g g s k k g j j s g s s j s s j s k g g h g g g g g g g g g g V h g g g Z Z Z k z z z k Z Z Z V g g k k g g g h g g g g g g g g g g g k g g g g g g g g g g g g g g g f f f a p a a a a t 1 e J u.e.D.m.$.t.G.y.[ q.q.4.4.4.4.3.4.4.7.7.7.7.q.4.4.6.6.6.r.q.6.4.r.r.i.i.i.i.i.6.6.q.r.i.4.4.4.6.6.6.6.6.4.4.8.4.4.6.6.i.6.q.q.r.r.r.i.D.U.b.b.D.F.Y.R.E.E.0X~.wXeXeXeXwXwXwXeXeX/.J z z k g g g g h g g B h h g g h h h h h h h h h g k g g g s h s g k z z z z z z k k z z z k g k k g z k j z g s k s h h g g g g g Z Z h p p p p p p h h h f h h g g g g g g l Z A J J { ~ ! ! ' [ H ! ' ' $.V.k.h.j.h.%.h.h.h.v.h.n.N.N.V.v.%.%.v.%.%.+.M { N.v.w.5.w.M.w.M.h.l.V.v.$.$.w.w.u.} J S A Z Z g g g g g g g g g h h h Z Z g h h h g g z a g g g g z A A z S S S z k k k z k k g g j z z g g k z z z Z z z z D :.S S z z s z j z j v j g g g j j k j j z j j z z z j j z j v j j v =.c v v v v v v v v v v v z v v z v v v j v v v z s s c =.:.=.J 1.A.b.Z.Z.B.A.u.<.,.<.u.9.,.,.,.a.,.:.>.,.,.:.:.:.:.:.:.P J >.:.c J P c v s k v v c z j k D J J k z c ,.,.-.>.,.K K >.>.:.:.:.:.>.u.Z.K.T.K.T..j z z g g g g h h g h h h h h h d d h h h h s h s g g g g s k k z z z z k j s z z z k k k z z z z z s k g s s s s s g g g g g g g p d p h p p p p a p h h h f g g g g g g g g z z A J L ~ ' ' 0 [ [ ! [ ' %.l.l.V.j.j.j.k.h.k.h.v.v.h.j.%.%.k.h.%.%.v.v.o.( v.e.e.w.w.w.M.l.V.V.k.#.$.$.$.$.t.| J J v z Z k j g g g g g g g g g g g g k k f f f a l g g g z z k A S k Z S S A v z z z z z k g g g g z k z z z A z k z Z :.J A D z z z j g g g g j g g g g k g j g g g g j g z v z v j s j s j c x j j z v v v v v j j j j v v z j z z z j s j v z b s j x c v >.J 9.B.B.t.M.v.N.u.A..} >.:.>.:.:.J v v k <.>.,.:.S v v c c c v k A J P K A s v :.<.9.>.:.:.:.>.:.>.>.:.:.>.:.J T X.n.K.K.n.K.R.T.U.0X.A k z g g g f h h B g h h h g h h h h d h s p s g s h k g k z z z k k k k v K J Z A Z Z Z z z z k z z g g h h g g h h g g g g g a d p p Z a p p p p h d d h f h g g g g g g g z z A J L { 7.' ! [ +.e.e.w.v.N.h.k.k.h.k.h.h.h.v.h.e.h.h.%.%.%.k.%.%.h.v.v._ ] B.o.] r.5.w.h.n.v.h.X.$.$.$.$.$.| J A v z k k k g g g g g g g g g g d h g k l f a f a g h g z z Z l k z z S J J S z z z z z g g g g k g v z k z z g z z Z S S D A z g j g g g g g g g g g g g h g g g g g g g s k z v z v z z v S x j j j v v s s j v j j j j j z j z z j s j j v j v s a p s v v c z G L 9.u.| &.e.F.B.R.R.G.9.| | ,.-.P =.J J J v v v j s a j J :.v v c Z v v } 9.J J J Z s <.<.J <.| J :.:.:.:.:.:.:.:.:.:.<.+.R ] +.$.Z.L.m.Z.R.T.'.u.u.Y.[.T.L.u.>.;.S :.:.P v v v v x x x :.J s J s.9.} <./.s.>.:.S =.:.:.S x x z c c c x A c v z v z z v v z v v v v v v v v v v v c J z z ", -"j v z j j v j v v j v z v v S c z z z j z z z z c v v Z A S x z S S S A v A v v s z v v s g g s g j g g g g s s s k v g g v v g g g g g g g g g g z g g Z Z V C k k z z z z g g g V g k k V g g k g k k g g k k j s k g k g j k k k z j g j g g g g g g g g g g g j k k k j j k Z z z z g j k Z k Z k k g g h g g g g g h h g g g g k k l s g g g g g g g g g g g g g g g f f f a a a e a e t t e u A v { [.U.$.e.G.Y.! 7.4.4.4.4.4.4.3.4.4.3.3.7.8.q.4.4.4.q.r.4.4.4.6.4.r.S.r.4.4.4.4.4.4.6.i.8.8.6.7.6.8.6.8.7.q.7.q.q.r.q.r.r.b.r.r.w.0.0.e.Z.!.!.!.T.!.1X~.R.~.!.~.~.1X0XwX0XeX[.>.S k g g g V g g g g h h h g h h h h h p h h h h h g g h s s h s k z z z k z V Z z z z z z k z z g g g h g g g h h h g g g g g h a h p h d g h h p h p f d f a h h g g g g g k z v A v c { 3.~ ~ ! e.l.N.v.h.N.k.h.l.h.j.j.h.h.h.h.h.v.N.k.%.e.%.%.e.h.%.v.+.M e.B.o.w.w.M.n.h.O.w.w.w.$.e.w.$.` c v z z z z k k g g g g z A Z h h g f d h f a f f f Z h g g k z g g k z z S S :.J Z z z z g g g g s k g k z A z z k Z S D S Z k z g g j g g g g g g g g g h g g g g g g g g g g g g s g z z x S z j s z j j v j j j j v j v j j z v v s v z v s s v v v s s b j c c x j k l P S K | | +.u.u.u.u.B.| 9.<.<.>.K | | a.,.,.a.<.>.J >.a.a.a.u.a.J } | <.K } <.<.>.,.,.>.J :.:.:.:.:.:.:.>.:.:.:.} { | K L { $.v.T.K.Z.L.| :.J K 9.B.Y.Y.s.,.,.,.:.>.>.J c v x c -.J c c A | A./.K K u.a.:.<.v =.J J S S :.J v s g Z v S z z z z v v v v z z v v v v v z v x z l k A ", -"z z z z z j k v z j z z c z z k Z A S z z z z z x Z A A c S z z z S S z z z z z k s A J z h g g g h g g g j s z z z z z z z v j k s g g g g g g g Z z g z :.J K G Z l k Z g s h k V V g g k V g V k k g k k k k k j k k z k z z k z z k g g g g g g g g g g g g g g g g z z z Z Z z z k k z Z g k k k B g g g g g g g g h g h g g g V Z g g g g g g g h g h h h g h h a h f f f a a t t d t d p e $ l A l ).!.Z.Q F.F.y.b.7.3.4.4.4.4.4.3.8.8.q.3.7.4.4.4.4.r.q.4.6.4.4.4.r.r.4.4.4.4.4.4.q.7.q.8.8.i.i.q.8.8.8.7.i.y.3.q.q.r.r.r.w.r.t.0.! 3.w.v.U.Y.T.!.T.T.U.R.1XwX0X1XwXeXeXeXeXp.A k g g h g Z g g h h h h h h h g d h h p h h h p h g s s l k g g g z z z z k Z z Z Z z z z z k z k g g k g h g h g g g g h h f h f p a d e % p p p p a a d a a a a h h h g g g z z Z S D { $.O.O.~ $.N.%.$.%.N.V.l.l.j.j.k.k.h.h.h.v.v.h.h.$.%.h.h.v.o.o.X.%.o.+.b.w.w.$.h.V.v.$.w.w.M.M.M.w.w.| v v z z z z k g g g g g h z D g h h f p h A A Z g a h k k g Z Z z z z z Z z S :.S Z S Z z k g g g z z z z z g z z k Z S S z z Z k g g g g g g g g g g g h g g g g g g g g g g g g h g j z k z S z g j z j z j j j z g s z z z j j z j j z z z j j j v j z v s p p k S :.c z g s h z Z A A C A G | L } K s.9.u.y.| 8.L K 9.A.).s.a.} L C C | ).#X).9.J S D S S ;.:.:.,.:.:.:.:.:.:.:.:.>.:.:.:.J K :.:.L ( Q Z.T.K.&.K :.J J v | Y.U.L.} >.>.:.,.<.,.,.<.J J :.c v c c v L /.<.:.} <.} s.K x v A S z z s z S z z z z j z Z z c v z z j j j v v v v v z s v s C J ", -"S z z z z j v k z z z x A v x A J J A z z g z S c z v A S S z z A S S S z z z z s j g B k z g g v h h g j z z z s g z z z v z z z z g g k g g g g g g z k k Z V K Z V k k g j j g g g k g k k k g g k k j z z z k z k z z z z z z k z k g z k j g g g g g g g g g z z g z z z z Z z z k k k z Z Z k Z g g f g g g g h g g h h g g g h h g k k g g g g h h g g g f f f h a f f a a a a d d t t d p % w Z k | ].K.^ e.p.] b.0.[ r.q.4.4.4.4.3.3.8.7.q.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.r.4.4.4.i.7.8.8.8.i.q.8.8.8.q.q.[ 7.8.q.r.t.r.w.r.M.O.7.7.w.B.w.m.>X6XP.I.1X1X2XwX~.0XeXeXeXeX^.K s h g g g g g z Z g h h h h h h h h p p s h h p h h h h h f p h h h k s s g k k Z z Z z k g k k g k g g g g g g g j h g g g h d p p p p p p p e e p p d d d f a a a a h g g g g z A S S L u.v.v.%.N.%.%.%.h.h.k.k.v.N.k.k.k.h.h.h.h.h.%.^ e.%.h.h.N.o.{ v.N.V.n.V.v.w.w.$.$.%.w.v.^ O.e.M.M.M.n.&.J z z A Z z z z z k g g D V p f g a h g V L D g g g h g g g g g z g z g z Z S D D S A Z Z z z z s g k z z k Z k k z A z Z z z z k g g g g g g g g g g g g g g g h g g h g k g h g g j j z z z S z j j z z j s j j s s z z j z j s j j s s s j j s j s z s j z z p # e g S :.:.;.S S j j s z v v s s p a n m M y l L K K J l l l k k v } p.#X[.9.L k z S :.:.:.,.:.:.:.:.:.:.:.:.:.>.:.:.>.:.:.:.:.K :.J L M | &./.| K >.J c S Z 9.[.T.L.[.<.,.1.K :.:.s.<.,.A v P c P v v s l K <.u.A.s.s.S z j j z S S :.S S J S S S k z c v v z z z v z v v z v v z v z v v v ", -"v x A x v z z v x A A Z v A S S A z z z z z z z z S v v S z z z c S S S A A z k k s s s j z g g k g g g g z S k j z D A z z v z z v g g g g g k g z g z z g g A J K | z Z Z g j k k k g g g k k k g z k k Z z k z k z z z k z z z k z g k g k g g Z g g g g g Z z g z Z z z z k z k z k k k k g g g g g h g f h h g h h h h h g g g g g g g g g g g g g g g g g f f f f f f a a a d d a d p e p p e % a Z C '.R.n.v.F.0.q.r.! 7.q.4.5.6.4.3.7.[ 8.q.6.4.q.3.q.4.4.3.4.i.6.4.4.4.4.4.6.4.4.4.q.8.8.q.8.q.q.H 8.8.4.q.8.7.7.r.r.i.r.q.w.m.v.O.b.K.K.v.T.>X1X3X>X!.!.!.~.~.^.^.eXeX0X9.k k s h g g g s h p h a h s s p p p h s b p p p h p p p d p f f h g g g g g g g z z Z Z z Z Z z z k V Z g g g g g Z g h g g h p d p h h d d d e e t p p p e t d p p a a f g g h g z v A v D &.V.h.N.N.h.$.$.$.v.N.N.v.k.l.k.N.h.k.h.h.h.$.O.%.h.h.h.v.%.e.b.v.Z.V.m.n.h.M.v.] { $.M.w.M.M.w.M.v.v.u.K S Z S A z z k z z k g C C V D g h g k Z K C f h h f g g k g g z s g g k k S D D :.:.S S z g s g z g z k z z z k z k g z A z k k g h h g g g s g h g h h g h h h g h h s h g k h g g j g k g z z j j v j j z z s j z z z j j z j s j j j v z j j j j j j z z v x k p , e p h g A z S S S S :.S v Z g f f s f s z K | u.G.<.J c v z K #X#X9.V z c :.,.,.,.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.>.>.:.:.:.:.:.:.} | | u.<.K K J v D u.[.T.Z.).| s.} S c v k v c c P v v c v x v j g | &.<.<.>.v c c S S J :.,.:.:.S c z z z z c c v z z j j s j v v v z z v z v s ", -"S S S S S S v v c S A z z z z z z z s s j z Z v z z v z z j z c z S c c S J z k s k z k j s z g s s z g k k Z g z g V z z k k k k k g g g j z j j z k z g z z g s z G A j Z Z Z z g z z Z Z k Z z k z z z k z z Z k Z z z z k k Z z z g k g g g g g g g Z Z g g z Z Z Z z z k z z z k k k k k g g g g g f f f g g h g h g g g h g g g g g g g g g g g g g g g f g f f f a f f d d d e e e p e p t d e % l k &.L.R.O.b.0.0.S.r.8.8.7.5.4.7.7.7.7.8.q.4.4.7.7.4.4.4.4.4.4.i.q.4.4.q.4.6.6.4.4.i.q.q.8.i.i.q.8.8.8.q.4.q.7.q.i.r.t.t.r.M.K.K.w.w.K.P.K.P.I.>XP.T.!.~.0X0XR.^.^.^.0Xs.l k k g g g g h h h h h h g h h h h a a a p s h p p p p a a h h h g g g g s g g g k k z z z z k V g g g g g g g g j h g d p p p p d f p p e t e e d e e b e e e e t e d t a h h g g g z A A A <.N.$.h.v.%.@.h.h.h.h.h.v.h.N.k.%.h.h.h.h.h.$.$.%.h.h.h.v.e.M.v.m.N.b.n.b.M.M.v.&.( %.$.w.M.M.$.w.v.n.Z.u.>.S x v A Z z z k z k g l g V g g g V k C C g a h f h h g g g A k g g Z Z z D >.:.:.>.S z g k z g k z v v k k g z g g z Z z z h h g h g g h g h a h h a a h h h h h h h s g s g g g g g h v v z g s z s j j z s s z z z s j j j z s z z z z j s z v v j z z A z s j s p 1 < = - < d e f g z J S :.S Z A Z k v s l l A a.9.:.K J J } u.| v S :.,.>.>.>.:.:.:.:.,.:.:.:.:.:.>.:.>.:.J :.:.>.>.:.>.:.>.:.:.:.:.&.} K 9.K D >.J :.v V L | u././.9.<.,.J J A c -.c v c A c :.:.:.:.S g s v <.a.>.c c S A Z D <.:.v v A z Z z z z z S c z z z v v v v z z z v v v K ", -"S J J S z A J D v x z z k z z g s z z z j z z s g j s k V v v A S S S S c z v z z v j g s g z g h g j g k g j z j g g z k z z g g k g j j z j z z j g z k z z z k s V Z k k j k j g Z j g g Z Z z z z z k z z k g z v k z z z v z z z g g g g g h g g g g Z Z Z k Z V Z k z z z z Z k k k V g l g g g h f f f g g g h g g f f g g g g g g g g g g g g B g h g g f f d t d t d d t d t e d e d d d e t % w l C C.0XT.v.! 8.Y.U.3.' 7.8.q.3.7.8.8.8.4.4.4.4.q.4.6.q.7.q.4.6.i.q.4.4.3.7.4.4.7.q.q.4.4.8.8.8.8.H 8.q.q.r.w.w.q.4.t.w.w.b.!.T.w.0.w.m.!.P.I.>X1X!.1X.<.K k P >.>.:.>.:.:.:.:.:.>.:.-.c :.K J :.:.J J :.:.>.>.K :.:.:.>.:.:.:.:.K u.L :.K J S D S D S Z z z z k | s.<.s.1./.<.A S :.>.>.J :.:.:.c c P :.P s V | } l d y a a D } D S A A v A Z S S z j S S S x z c S z z z z z z z K ", -"K J J D D A Z Z z z z z v v z z z z z s z g s k s g j g D A c z v S c S c S z z s v v j g g j g g g g g g g Z V j z k g g g s g g z g g g g z g g k k k g g k z k k V k k Z k Z Z Z g j Z Z Z g k k k g z z z z z z v k k k z z z z g g g k k g j j Z g g g g g k Z g Z z k k z k k k Z g g g f g g g g f f f f f g f g f f f g g g g g g g l g g g g g B f g f f a f f d f a t a b p p p e t d p p p e w f k | L. w t d f k v z z z J J :.>.>.:.:.J :.:.:.:.>.:.<.u.).| a.u.} J :.:.:.J >.G ;.:.:.:.:.K :.>.:.K Y.&.J K J Z S S S Z A S D S v j s V L L | a.a.} >.J D S :.S x c z v K :.J j , n f V B g a e A >.K A S S Z S :.S ;.z z A S :.S :.,.,.;.v S :.,.:.S ", -"K K c J K D z S J A z v z z z v z z z k s j j s s s g g h z z z z c S S c S z s k s g s g g g g g g g g g g g f j g g k g g g g s g s g k g g g g g g g g z z z z z k k Z k k Z g Z g Z Z Z g g z z z k z z z k k g k k k k g g z z k z g g j z Z j j Z Z Z Z g k Z Z Z z Z z z z Z g Z V g g f h B g f g f f f f f f B f g f f B f g l g f f f f f f h g g f f a a a a u a a a a e e p t t e e e e p e 1 w g C &.1X~.U.Z.O.O.! [ y.b.r.q.8.8.i.r.q.4.4.r.3.0.r.8.8.5.5.4.i.r.6.4.4.4.4.4.3.q.3.6.4.4.8.8.7.7.7.7.8.7.t.w.5.r.M.r.5.w.M.U.n.w.v.I.!.I.I.K.U.M.R..>.>.J :.:.:.:.:.:.:.:.:.<.u.u.K <.A.A.| } J K | | } ;.:.:.:.K D >.K :.| R.B.G K A z z z k g z z g k k k g h h h p F } D B g x S S c S v z v J >.J S c v v z z z z p p D D Z S Z Z Z S z A S J Z A :.J v v S :.;.S c J :.:.", -"Z c c S J :.S c A v z S S v z z z z z z k z k j s z s s s g j k A c S S S z j j z z z v j g g k g g k g g g g g V g k g g g g g g s k k g h g h h g g g z z z g k z z Z k Z k k g Z Z g Z Z j g k k g z k k z z k k j k k k k k k k z g g z g z Z g g g Z Z Z h g Z V Z z k z z k g g V Z g g f f f f f f f f g f f f f l f f f f f f f f f f f f f a p d d d d a f f a f a a a e a e e w w e e e w w e w > t l F `.!.K.m.t.^ O.O.O.t.w.3.q.7.q.4.q.5.5.b.r.t.b.r.7.q.r.4.4.4.4.q.4.q.i.4.4.8.3.6.q.i.H H 7.7.7.7.8.8.w.4.5.5.r.q.w.w.w.m.n.w.0.^ H.Q.I.P.E.b.~.~.U.R.0X5X| j z g g g g g g g g k h h h p p p h p a d d d d d d d d d p p p p p f h h g z z g g g Z g V Z g g g g g g g a h f f f f g g f f f d e e e p e t e e e e e e b e e b p 4 e e t t e e d a h g l k Z Z G +.h.v.v.v.v.v.v.M.$.$.%.$.O.#.#.%.$.O.Q Q ^ O.$.$.O.O.%.O.%.v.e.N.v.M.v.n.b.n.%.N o.w.w.w.w.v.M.w.v.M.b.| S z z k k K D S D Z J S l :.:.} u.K z g g g g h h h h h g g h g g h g g g g Z S g p g g k k g z z Z Z z z g k z z z z g g g h f h h h h h h h a p h g h h h f h g h g h h h h g g g g g v A g h s h s a h h g g k z A s Z C g g g g h d g g z g g h d f g g s s k g g k k g g z Z z g Z Z p s g j g g g h h h h g z D S Z S D :.J :.:.:.K J K :.>.J J :.:.J K | | { %.M.n.v.%.+.k.h.| :.:.;.;.:.:.>.:.J A.R.E.` D z z k k z z z k k k g k k j j j h a a s z S :.D S D A A J J A } z z S x z j g z v g p A S D Z Z Z z z Z Z Z :.S S z v S c z Z J :.x z A S ", -"k z J S z j k Z S z v S z v S A z z z z v v v g g s s s g g g s z S A S A v j g z j z z z k j g g j k g g g g k k z k g g k Z z z z k g g g g z z z g k k z k k z z z k z g g k g Z Z k Z Z g z k k z k z k z k j k s g g z g z z g g k Z g Z Z g Z Z Z Z g Z Z k Z z k k Z Z g V g V g g g g B f f f f g f f f f f f f f f f f f f a a f f f f a a f a a f a a a a f f a p a a e e w w w w e e e u w w t 1 > t g | .:.>.:.:.L o.v.n.v.w.b.m.b.M.w.w.+.| :.:.J :.J :.:.:.K C.U.R.u.Z A A Z A Z z j g g V g g g k g g z k z A S S S D D S A Z Z A Z <.D z k z z z z S S A h J J v A Z Z z z z Z Z k z Z S S c c S v S :.S x S S ", -"J :.:.S S S z K D g z h k A K >.J z g z j j k g g z s g g g g s k D g z z k g g g j j j s k z j g g g g g g g g g k z z v g h k g g s g g z z z z k z z k k z z k j k k z k z z g g g g g g g j z k z j s z z k k k k k k g g k z k z z g g Z g Z g g g Z Z Z g z k k z Z Z Z g g g g g g g g f V g f f f f f a f f f a a f f f f f f a a f f f f a f f f a f f a a t a d a e e e u e w w w 1 w w w w w e e 1 > u J C.!.T.T.E.T.~.U.K.K.Y.y.H 8.y.{ 8.8.e.e.b.0.n.U.Z.b.q.r.M.q.4.4.5.S.b.m.t.3.7.S.q.q.q.7.8.8.r.M.w.0.r.b.M.t.4.5.5.w.m.h.^ M.M.K.I.K.K.K.m.I.T.E.Z.} u l k g g g g g g g h h h a h p h g h h s a d d f d e p p p p p a a a h h g g g g h h g V l V V l V g f f f f f V l f f g f a a e p e e e e % e e % b % % w w w % % % w % w w e e b e e t t a a f s Z &.V.h.v.$.h.h.%.v.v.$.v.h.%.h.$.O.$.h.j.h.O.O.! @.%.@.X.$.$.$.$.v.v.n.v.b.v.e.n.h.h.*.] w.w.M.5.M.M.e.v.$.v.} S S z Z z z z k e v z Z z D | u.m.u.A Z g h g g g h h g g g g g g g h g g Z J A A z g g g g g z g g g k k g g g g g j g h g h h h h h h a h h a f f f g a h g h a s g k h h a h h z z z A z h h s s h h g h h h p h g Z z s s h h h h h h g g g s g p h h g g h g f Z S g h h h a h h g k s g h g h h h f f g h g S S S S ;.>.:.:.>.K :.>.J :.J J :.:.>.:.| $.v.n.m.m.b.b.M.v.v.+.` J J J :.J :.J :.J } K.U.R.B.A J v z z S S c k g g g g z z k g g g g z Z z Z S S Z g j z Z A k v z S S z S D :.:.:.g K K K J z z Z z z Z Z z z S S A v S c S v v S S z S ", -"S S S D >.:.:.S z g a h h h g m F J J D D A g z g j s g g g g g h p z z h g j g s z z j j k g g g g k g g g g g g z S :.S k z z z k Z Z A A z k k g k A D z z v s k z z k z k z Z j j g j k g j j z k s z k z k z z z z z z k z j k g z Z Z g Z g Z Z g Z g Z g Z g k Z V g g g g g g g g g g f f f f f f f f f f a f a f a a f f a f f f f f a f f f f a f a a a a u a e t w t w e w w w w w w w w w e e w w , i C {.>Xn.P.1X6X!.~.I.T.T.K.O.{ H 8.8.t.b.r.b.t.t.S.t.r.i.5.5.4.5.4.b.U.U.U.K.b.r.y.w.w.5.b.b.M.b.M.0.5.q.r.r.r.M.M.M.w.n.M.^ M.v.H.I.I.K.I.K.I.b.D.B.K k k l g g g g g g g g h h f g a h h h h p a d d d f a a p p p p f f f p f f f a g g g g l l l f l f f f l g l l g f a a f d f f p p p e e % e e e b e e e w % w % w w b w w e e w e e e w t a f f f F l.v.e.$.v.h.%.%.$.$.$.%.$.h.v.$.$.O.@.h.h.h.$.O.%.%.%.%.$.%.%.n.N.e.v.n.v.v.v.v.v.h.&._ %.5.M.M.M.M.h.n.n.n.&.J S v Z z z k k k z z Z J <.u.v.F.u.D Z g g g f h g g h g g g g g g g g g Z :.S k k z k Z Z g z z z Z g Z Z g g h g s h h h h p h d a a a h h a f h h a a f f h g g h h h h g g Z S A z A z h g s h h h h h h h h h h p d k k s p h h a p s g g g h d p p p h a e d a g z s a h h h g k z z s g h h h h g h h h z z Z S D :.:.:.:.:.:.:.:.J } a.<.J :.:.L +.v.v.V.K.m.M.M.n.h.M.+.K K J J :.:.:.:.:.:.| U.U.R.B.D K J A Z J K S S v g h g g g g g g j k g g z S Z Z z g A Z Z Z k Z S Z S z A Z z S J Z h K f.A z z z Z Z z z Z Z z Z Z Z z A S S A S D J D ", -"S A A D K D D S S A S A z h e u y f J S V V s j g g s g g h g g h g z g g g g z s g s z g s z g g k j j g j j k z g k z z J J S S D J K K D z l z A k D J v Z z S z k z k z z z Z Z j g k k k j k k z z k z k z z z z z k z z z z Z V g Z g g Z Z g Z g B Z Z Z k Z Z k V l B g g B g g l f f V l f f f f f f f f d f f f f f f f f f f f a a f f a a f a a a p e p e e e w e e e w w w w w w w w 1 w w w w e t w , | ,XT.L.V.V.P.1X1X.1.u.L.0X.:.} L.U.U.K.&.u.} K A D K S :.J S z z g s g g g g g g s z Z g s j A S Z Z Z z S z g g g g g a g v A :.D K V z A Z z Z Z Z Z z Z Z Z z Z Z z Z S A A S Z ", -"z Z A J D J S S D :.:.J J D a h z s a s p h g g g h g h g h g g g g h h g g g j g j j g z z g g k k g z k g g j g g h g g D | a.K K D A A V z k z z Z P z A A z Z z z g z z z z z z z z k k k j k v k z z k k z k z z z z k z z V V k V k k g Z Z g Z Z g Z Z Z k k k V V B f V f f f g f B g f f f f f u a d f f y a f f f f f f f f a f f a a a a a d a p p e t e t w e e w w w w w w w w w w w 1 w w w w w e u , $ &.yXiX2XL.V.n.!. w e e t d f f C &.V.%.%.h.$.$.$.%.h.h.h.v.v.N.v.$.%.N.V.l.V.n.v.%.$.%.h.@.%.v.N.V.h.M.b.N.N.N.n.v.w.w.M.h.%.%.M.$.w.M.M.M.M.m.L.L v V z k Z A z z S J J a.L.m.b.b.B.| z g g g g f g h g g g h g f g g g g A J S Z g h g g g k z z z z z z g z k g g g g g f h h g h h f a h h f h f h h f d d d d d p p h h h g z A Z z Z g h h g a h h g h h h h p h d a p d p h h h p p p h p h p p p h p a p h h p p a a h a h h z k g g z h h h h h h h g g z S J :.>.:.:.:.,.:.J } Z.~.0XeXeX>XA./.z.v.v.v.m.m.n.n.V.n.h.h.| J J J :.:.:.J :.J :.} I.I.U.U.I.T.Z.s.D S S ;.S :.:.:.:.S z k s s s g g h g z z z z S Z Z Z Z S j h g g z z z z k a b a.| V K z Z Z Z Z z Z z z Z Z Z z Z z z Z A A Z A Z ", -"S A v S A c S S J J A S :.:.J p a g g s g g h h h h g g g h h g g h h g j g g g g g g j g j Z S g Z Z z z z z z j z z z k f F D L ` } <.K D k k z v J c J J S z g k z g z z g z k z k z j j k k g v j s s g k z k k k z v z z k g Z k Z k k Z g g Z g Z Z Z g Z Z g k Z B g f g V f f g g l l f f f f f f a a f f f f f a f f f a f f f a a a a a u t t t d t e u w e w w w e e e e e w e w w w w w w w 1 e w w f y - ; } qXGXiXrXP.Q.1XU.~.I.I.b.0 7.8.H 8.q.r.r.r.q.5.5.q.5.r.b.M.4.r.S.r.3.r.r.w.r.b.r.w.w.5.5.r.r.r.r.r.r.M.5.M.M.M.M.^ $.M.M.n.P.H.n.M.M.E.].m.N.K v z z g g j g g g g g g g h h h h a p p p h h p p d a d d d f d f f d a f g l l f B l f g l k V l f l g a a a a p t d e s f t f d p p p e e e e b w w b w b b w w w w w e 1 1 1 w % w w w w t d f G C.l.h.%.$.$.$.%.%.h.N.N.N.V.V.N.v.n.k.V.H.N.v.N.N.%.%.#.%.h.h.v.e.w.v.V.V.V.%.%.j.e.w.5.v.#.@.w.w.w.6.r.b.m.B.u.S A v Z Z z J :.J :.>.u.Z.Z.b.b.w.B.9.V g g g g h h g h a h h h h g h g Z S J S Z Z z g g z z k k k k Z g k Z g g g g h h a h f f h f h h h h h h g h f h h g f d p f a p p p h h g z Z Z s p g h p p h h p s p h h p p h h a p h p a p p p p p p p p p p p p p p h h a p s h s h h k k p p p p h h h h s h p z S S D :.:.:.:.>.:.:.| Z.R.~.0XeXwXrXwX!.H.H.V.n.n.h.v.V.v.v.v.v.%.` J :.:.J J :.:.J :.| P.K.K.T.U.U.0X&.V v S D D D S J J J :.J S z g g g g z z Z Z S Z Z Z Z z g g g g g g z z A A D z s.).} 9.Z z z Z Z Z Z z Z Z z z Z z A Z Z S A A v z ", -"} } J A A A S S D A D S D S Z a p g g g g g h g g h p h g h g g g g g k k g g g g g g g k k g s j Z Z V z z Z D z v z z k k l s Z L | 9.s.L D :.J <.F A J J A A z z k g g s s g g z z g g z j k g g z g g s z z k k k k z k k z k Z V g g Z Z Z Z g Z g g g Z Z Z g Z Z g B g f f g l f f f f f f f f f f a a a f f f a a a f f a f f a a a a a e e e t e w e e w t t w e e w e w e w e w w e e e 1 1 > w e t f f f f - 2 n s.qXuXuX].T.T.T.1XH.Z.A.H 8.8.{ { q.4.r.5.q.5.5.w.M.M.r.r.S.r.r.r.r.M.r.w.t.r.w.r.w.w.r.M.M.r.r.5.5.M.M.h.h.$.$.w.h.M.H.n.M.U.n.^ m.].K.e.K :.Z g g g j k g g g g g g g f h h f h p p p p p d d d a a a d d f a f f f f f f f f f f f f f f g f a d a a h f a a a d a d d D d e e e e e e e e w w e % b % % w w e w e % w w w e w w w w w t u s.'.J.%.$.$.%.%.%.h.V.V.V.V.V.V.V.V.V.V.h.V.H.h.N.N.h.k.N.h.N.V.v.v.Z.Z.Z.V.V.k.%.h.v.h.w.h.$.M.5.6.M.w.M.b.m.u.J v A A A A :.,.>.| 9.u.n.b.n.b.t.r.9.} g g g g h g h g g h g g h g g Z J >.:.J S g z g g g k g z z g k k Z Z Z g g g h g h g g h f h g g f h f h h h h f d h d d p e d d d a a e w e f Z Z s a a p a a h h h p p h h h p a p p p a p p p p p p p p p p d t p p p h h h h h h a h h h j v v v s p p p a s a p s S S J :.>.:.:.:.:.J L +.T.~.!.XI.K.]. > w w 1 w w w 1 t t t f s.'.z.@.#.h.n.h.k.N.k.V.V.V.V.V.V.C.V.V.k.j.l.N.N.V.h.h.N.V.N.N.&.+.C.V.V.V.V.N.h.h.n.h.w.M.b.5.5.r.M.r.6.b.N.| z v A S S J ,.K /.v.v.n.Z.Z.n.m.M.B.| Z B g g h h f h p f g h f h h g V A K J z h g z z g g g k g k Z k k g z g g g h g h f g h f f h a h f h g g l h f h d d d e e d e t d e p a f f g Z Z g p h p a a h h h p s s s p p p p p p p p d p p p p p p p p d d p p h p h s h p h h a f g s v S S S S z s s j s g S S J :.:.:.>.:.K } L Z.Y.~.XP.L.L.1X!.H.h.M.%.).B.{ 7.q.t.e.M.5.M.M.r.r.b.v.w.b.r.5.w.r.b.b.M.w.r.M.5.M.M.M.w.5.M.M.M.M.^ ^ M.$.M.M.h.$.$.H.$.$.M.M.M.| S Z k A A k g g g g g g g g h h a h a h a p h h d d d p d d d d t a d a u a a f B g f f f f g V l f f f f f f g a a a a u a a p e e e e w e e e e e b w w w b w w e % % % % 1 1 1 w w w w w w t f a s.`.k.k.j.k.H.H.l.k.N.v.n.N.V.V.H.H.V.N.H.C.h.v.k.k.h.h.k.V.%.o.o.&.C.V.v.H.Z.V.V.N.k.h.v.e.r.5.5.M.M.t.y.9.D v A v v S S :.:.| e.v.v.n.Z.V.v.v.M.B.| z f g h g h h a f g h f h g g g Z D K Z g g Z Z k k g g Z g g g k g Z Z V g h g h a h h a a f f a a f h g a g h f f d d d d d d d d e e a a a f l V V a d d p p d p p p p h h a p p p e p p e p d d p p p d d p p d p p p p h p p h p p p p h h g g S S Z S S S S S S S J :.:.>.:.:.:.:.| B.+.T.1X1X1X1X6XwX6X6X6X!.Q.H.n.P.I.V.Z.n.M.h.h.v.n.H.K.n.n.h.&.} A v | P.1X!.!.!.T.~.T.F.&.J D A S S J D J :.J :.J J S S Z z S S A z Z z z Z g g g g h g g g k g g g l j s e t | 9.v z z z z Z z z z Z z S S z v K a.K s.).u.", -"v C L J v Z A A z A S S S S g p a g h g g s s p s p h s s s s s k z s s h g g g g g k g s g g k k k z g g s g g l Z D | } z z z k k s G C f g a C K A S V l g g Z D Z Z z z g k k g g g g g g g g g g g g g s l g g l j s g k z g g Z g g B g g Z Z Z Z Z k k V g g V l l V V g f g g f f f f f f a p p d d a a a a a e e a e e u e e e t e e e t t e w e w e w e e e e 1 t t 4 < 1 w w e w t t e e w e f f t e e w w w w w < 2 = t r s.4X:XH.H.P.3XwXT.h.n.V.A.Y.B.q.F.j.M.M.M.5.M.5.5.M.e.e.r.w.b.b.M.S.5.w.r.M.M.M.n.h.h.M.M.M.M.$.M.$.M.^ ^ $.M.M.m.$.$.E.j.E.E.&.:.:.D z z z g g g g g g g g f h f h h h h h p h p d 4 p p p p p d t a a a a f f f l g g l f h g g l l g f f f f f a t a a e p p p e e b e e w e e e e w w w w w e e % % w w e w e w w w e e w w t t (.`.l.j.#.N.L.P.J.V.N.N.V.V.V.V.V.Z.C.V.V.V.N.N.N.h.%.h.N.V.+.%.C.K.K.V.V.V.V.Z.Z.N.v.v.M.v.M.r.r.M.+.| D l v A A A S S D J K 9.b.b.m.Z.n.n.v.v.M.e.L p d h h f a h a g h h h g h g h g D Z g a l g h V g g g Z V Z g g Z V k Z g g g f h g f a h h d a a f h g h h f h f a d u a a a e t p a a a f f g V l d e d e a e e e p h f p p d p d p e e e p e w p d e d p p p p p a d p p p p h a p p h d f a h z A Z z g Z S S A S J J :.J J :.:.K u.E.>XX>X!.T.T.T.U.E.G.D J A S J S D D J J S S S A Z Z z z J S A z z z z g g z z z g j k z Z g g g s s a w | 9.v A Z Z Z z Z z k z Z Z z Z k | ).A.G.u.K ", -"A A K } V v Z V k Z A D V l p p a s s g s k k h p h h a s s h s k Z s s h g g h g g g j g g s g s s s k s k Z l j k l C K z z z g h g d s z g f C C C l | K g z g g g D >.A Z z k k g g g g g g g g g g g g g g g k k j g s j k Z g g g Z g Z Z Z g Z g k Z Z g V k V l l V V g l g g l f f a h h h a p d f a a a e e a e a a u t u t t e p t t t t t w w e w e 1 e 1 1 t t < < e < e w e e e e w e e d a u t e w w e w w w t y # # u u | qX2XH.V.k.L.qXH.H.h.W X.N.O.v.h.h.M.M.M.5.5.5.5.5.+.w.r.M.M.5.r.4.r.w.5.M.M.M.n.j.M.w.M.^ ^ $.M.^ ^ $.$.$.M.M.M.n.l.l.E.h.` D :.:.S k Z z g g g g g g g s h g g s h f h h p d p 4 4 p p d f d d a a a s a f f f l f f g h h f g f f f f f d a a a a a a e e e w e e e e e b e w w e e % % % % % % % e e e e w 1 1 1 w w 1 w t p 1.'.'.l.l.l.J.`.:XP.C.V.V.V.V.V.V.V.V.V.Z.V.V.N.N.V.h.h.h.h.h.V.C.L.H.V.V.H.L.V.V.n.M.M.5.M.w.r.v.| D v k v A A A A S S A D :.&.b.M.M.Z.Z.v.v.b.M.y.C f g h h h h a h h a h g g h g k g g B f f f f g g V g g g Z g Z V V g f g g g g g g g h h h d a a f h a h h a p h h a d d a t e e d a e a a a f g V V f a a a d e e e a h d p p d p p p e e e e e e p p w p p 1 d d a a d h h p p p p p h g h h h z Z Z S S S S S S S J J :.:.J J :.:.J u.T.1X0XwXuXeXuXwXwXuX6X6X1X!.H.V.K.P.I.!.!.I.Q.Q.P.P.I.n.n.n.I.I.!.>X].1XI.K.Q.!.!.T.U.E.D.p.V J D A A S S S S A z z Z z Z Z A A Z z z k k z z g g z z Z Z D 9.L z k g g g s g f L } k S Z z z z z z z Z Z z Z Z z C s.Y.B.| L ", -"D D K | A A Z Z z Z D J K f p g h a h s k k g h s s s s a s s h h a h h g g g Z Z s s g s s k s s k s s g l z k v j j s h l s g g g g g p h g g f B D A C V g g A z k Z V C Z v A Z z g g g g g g g g g g g g s g k k j g g Z k B Z Z Z g Z Z g g Z Z g g k V Z g l l l g g l l f g f g l f a h p h h h f f f d t p a e a p a e a e e e e t e d e e e t e e e w 1 1 t 1 < 1 4 t e e < t e < 1 e w e w t f w e w e w 1 w 1 < 1 e d ; * t e s.yXJ.K.>X>XL.V.n.h.^ R O.! w.@.$.M.w.5.M.r.M.r.0.[ t.r.w.w.w.r.r.r.b.M.M.5.M.M.h.h.M.w.^ $.M.$.^ @.M.M.M.$.^ M.n.$.M.M.X.D K D g g g h g g g g g g g g g g g h a h a p p d p p d p p d d t d d t d d u p a f f f f f f f f f f f f l f f f a a a a p a e w w e e w e e e w w e e w e w % % % > % % e e 1 1 w w w w > w e w a g C /.x.J.z.V.J.J.`.[.`.V.N.V.V.V.V.C.C.V.v.e.V.H.V.V.V.N.h.k.k.C.L.I.L.C.V.L.J.C.K.v.h.v.r.5.w.b.&.J S A A A z Z z A S S S D D | b.b.v.m.M.w.v.m.M.| k f g h f h f h h h f f f f l k Z V l f k f f l f f g g k V V V V g g l g f f g g h g g f f a f f f f p h p p p h f f f d a d d e p p d d a f f f l k f d a t d e e b a a p d p e e e p p e e e e w e e e e e e e e p p d p p d d p d p h h g g g k A D S S A Z D D J :.:.:.:.J :.>.:.D &.Y..A z Z z z k z z z z k z Z Z V F | L k A ", -"D A V K A A Z Z Z Z D D D h 1 p h p h l D g h h g h h g s a s h h h g h h g h f V A g h g s g g g g g g B g d z v k g g z z k g g g h h g g h g l d y V A l g Z D l g f a s k k z z Z V g g g g g g g g h g g g s s g g z g g V g Z Z g Z Z g g Z Z B g g g V g V k l l g g f f f g f l g f f p p h p f f f d a e e a e e e a e e a t e t e t e e e e e t t t t 1 < 1 1 t < 1 t < t t < < e 1 e e w t t t w e w w w e w , 1 1 < w f - - f F qXK.n.{.yX2X>XV.H.v.@.$.^ h.j.@.h.O.^ M.M.6.6.M.{ O.r.M.b.M.b.4.r.b.M.M.r.6.h.h.^ M.M.^ ^ M.M.^ $.$.M.^ M.M.w.I.n.h.v.| J :.:.g k Z Z g g g g g k g g g g h h a a a p a p p p p p p e e e e t d f d t a a a a f f a d a f f l f l f f f f f a d a e e e e u e w w w b e e e e e e e e w w % 1 % > w t 1 w w w w w w > u l V g l G '.x.x.x.J.J.'.'.V.h.k.l.V.P.`.V.V.V.N.X.@.V.C.H.C.V.l.V.k.N.V.H.L.H.V.H.L.J.H.h.v.h.w.M.t.| J :.c A S v Z z z A z z A S S } b.b.v.b.w.M.v.v.e.F s f h h h f f f h f f f f l k J A f g l f g l l f l f l V l V V V V g V V g l g g g h f f a a a f f a a h a a a f f d a d d d e e p p p p a a a f V k g f a t e e e e a a e e b a e p e e p e e e t e e e e e e e e e e a p p p p p p a a g g z Z S S S S S S S J :.:.:.:.J :.:.:.J J } t e = , C ,XJ.@.N.N.[.L.I.J.H.h.O.~ R %./ / / M.M.M.r.6.b.X.0.r.5.M.M.b.t.w.r.M.M.M.M.M.w.5.^ $.M.$.^ ^ ^ M.^ ^ ^ M.^ ^ n.n.h.%.| S S S S z k g g h g g g g g g g g h f d p a p h p p p p 4 p e d d e e d a y a f f f f f f f f f a f g f g f f f f f f a a p e e e e w e b e w e w e e e e % w 1 % w e % % w e w w w w w w u B C V V B l l 1.'.x.x.x.l.C.l.j.%.j.h.V.P.>XJ.H.K.V.@.] %.Z.V.V.V.l.V.l.k.h.k.C.H.`.P.`.`.H.w.w.h.M.b.| S J A A S v A z z A A z A A A ;.K u.M.M.Z.M.e.v.w.u.A f h f g f f h h g g f f f l l l D f d f f f f V D A K K V V V V V g V f g V l l B g g f f f f a a a f a p a h p d d f f d f t e e p p p d a t f l V Z k f f a d d p e p p a a e e e p e e e e t t t t e e t e e e e e e a p p p p p a a g z k A A S S D D S D J J J :.:.:.J J :.:.K | L.1XeXiXiXuXuXuXwXwXwXwXwXwX1X6X1X1XwX6X6XwX!.K.K.H.I.P.I.P.Q.>XQ.I.I.H.I.Q.Q.Q.Q.I.I.E.m.m.K.E.K.U.L.| J >.K J J :.:.:.D D S Z z z z z Z Z k K K } D A A A z l s G ).s.k Z K S h g f p p <.} A A k k z z Z k z z z z z z V C C k V ", -"k k A J A z z z Z z | } g % 1 p p p p p p p p d f d h h h s s h h g a f g h h g g h g V D g s s h g g g g g g g g h g h g h h g l g g g V g g V g g g g g h k Z V B k s g g g g g g g h g g g g g g g g g g g g g g z k g V z g Z Z Z g Z g g g Z g g B g V l l l V g l l f f g f f f f a f f a a f f d f f f f a a a e p a u t e t t t e t t a t e t t w w e e < t d e 4 < 1 < < t < < < < 1 e t f t t e w w 1 1 1 1 1 , , > < 1 w f < ; f [.>XK.Y.qXPX[.H.@.l.H.X.W U / @. . .M.M.M.r.D.e.R w.4.r.r.b.w.w.M.w.r.w.M.w.w.$.$.$.@.M.M.^ ^ ^ M.^ R R $.M.^ ^ n.n.{ D z Z A c Z A Z Z k k g g g g g g g g h g g a p p d p p p p p d d e a a a a a f f a f f f f f a a a f a f f l l l g f f a u e e e e e b e w e w w w w w e w w 1 % 1 1 1 % > w w e f 1 e e f V V f l B l k k G c.z.l.l.l.l.l.k.k.j.C.P.`.`.`.C.C.H.H.h.h.V.V.H.V.l.h.l.H.l.V.l.l.`.P.`.`.V.w.%.l.e.| D J S v v A Z z Z Z Z A z Z v A S K u.b.U.e.$.M.w.w.| k f f h h f a h h h f f f l a B ` C p f f f l f f d f C B g g l l g V V V V V l l g l f f f f a a f f f f f a f f a d d d d d a a p p d p t a d a f k k g t t d p p p e p e e e e e e e e % % 1 e e e p t d d e p t e p e a e p e e a a a p a g A D A D D S S J :.J J :.:.:.>.} 9.u.)..K S Z J :.S g g g | ).| Z D K L z j a e l K D k z z z k k z z k z z z z V f g k g ", -"k V L J Z k Z Z S J <.K h % p p p p p h p p p b d a a h h a s s g h h s g g g g g h a a t f h s h B g g g g g g h g g g h g g h h g g s f g f A V g g g g g h V A V k Z l s f g g g g g g h g g g g f g g g g g g g s k g g V g h g B g g g g B g g g g l g B l l g l g f g l l f f f f a f a f a f f f d d f f a a a e a a t u p t e e e p e w t e e e e t w w t e < < t < t t t t < t t w e t f f w 1 w w 1 w 1 , 1 , , < 1 1 1 w t < ; B }.6X3X].[.UXGX>XR @.V.R Q R E .. .R ^ ^ M.5.S.~ Y w.M.b.F.m.M.r.w.5.5.r.w.w.0.0.^ $.$.^ $.$.^ ^ ^ ^ ^ Q Q h.n.$.$.+.G Z z k z S S Z S S S A z z g g Z g f C l A z h h h p p d p p p d t d p a a a a a a f f a f f f a t f f f f f f f f f a f p t t a e e e e w w w % w w e % w e 1 1 1 1 1 > 1 1 e w t 1 d f l f f f f f f f l l V | z.J.'.J.l.k.l.l.J.`.>X`.>X`.J.J.J.V.N.H.C.J.`.`.C.#.N.H.V.C.J.l.V.C.C.J.V.%.h.l.h.| D A A A z z z z z z Z z z z A S A 9.w.m.F.t.w.e.w.e.L s s f g g h h f h g g A J Z l C ` B h f f f s f g f f f k k g g g V g V V l V g g l f f f f f a a f f a f a f f f a d f p e t a p d d p a e a a f a g g f e e d d d a e e e e e e w e e e % 1 % 1 % e % % 1 e e % e p p a p e e a a a d d a e w a A D Z S S D :.:.J K } } &.'..K J J K :.S D S k k Z Z Z D S J J S Z z J >.J Z k g &.).<.j K 9.<.D j d h J D z Z z k z Z z z z k k z k g f g k Z ", -"V Z J D l Z Z V Z K G h < w p p p p p p b a p p p p p p h h h g h h h s g h g V V g h a f h s s g g h g g g g g h g h g g g h g g g g s h f g d f g g h g l h f t V l Z J D S Z g g g g g g g g f f g B g g g g g g g k V g g g B g g g B g B j g g g g V l g B V g l g g f l g f f a f f a a f d f f d f d f a a a a t a a u f u t t t e d d t t t e e t t w e 1 1 < d n < e e w w e w w e t l B t 1 w w 1 w > > > w > > > < > > w w > ; B C.3XI.l.V.A.3X2X@. .h.R W 5 R @.E ./ M.M.5.r.0.Q b.b.m.F.Z.v.0.4.w.r.w.t.y.O.e.O.^ ^ ^ ^ 5.^ ^ M.^ ^ Q Y $.^ M.v.` A A Z z g g p d p a h g z z h h g g a a p e % p d d d p p p a p e p d p p p f a e a f a a f f f d a d a a a f g l a s f s u a e e w e w w e e % 1 w w e 1 % 1 1 > 1 1 1 1 e e t d t t d f f u w > w e t f f l l K &.x.,X`.x.z.N.J.J.P.P.:X,X:XJ.J.H.V.H.L.`.`.`.J.l.k.k.C.H.J.J.l.l.j.j.k.k.k.k.l.V.u.J J D Z k z z z z Z z z z z S J } B.M.M.M.M.m.b.M.b.C s f h h h f f f h h g D u.K g f w a f f f f l f f f f f l l f l g g l g g g l f f l f f a a a e a f f f f a a f a a f d e d a a p a p p e d p e a f g g f d e d p e e e e p e e e e e e w w % % > > 1 % % % % w e e p a g a e e a a a u a t a u w p g z Z S :.J S } &.L.P.T.XQ.H.H.Q.:XQ.Q.>X6X6XQ.K.E.U.K.K.m.K.U.u.F J K J J K K J J A Z k A A A Z A J :.J S Z Z D J J Z g y } s.<.D s <.| >.k a k A A z z z z k k k k k Z k l f f f g g ", -"k z A A V Z Z Z D D A e % d d p p p p p p p p p a p p p p p p p h a h f g h h f f g g V g h f h h g g h h g g g f g g g g f g g h g g g g g g g g h h h l V f g D l s a V K D V V l f g g g g g f f f g B f f g f g g g g g g g B g g g h g g B V f f g g V V g l V V l g f g g h f f a a f f f f d f f f f d a a a a a t t t u f t t e e t e t e e t e e e t e e d 1 < 1 e d 1 w w w e t d B f t > < 1 1 1 w w $ > > > > w w % w w w # # n /.uX].l.>Xj.].I. ...l.@.T R Q @.U E / 5.M.5.r.r.O.t.w.F.U.Z.b.w.t.r.w.b.S.e.y.t.e.e.^ ^ ^ ^ ^ ^ ^ ^ @.8 T W Q h.h.D D S z z g h k z h h h p p p f f h h h a a f f d a d e t e t e e e e w e e t t d a d a a a a f f f f a g f f f f f s l a u e e e e w e w e w w w w w w w 1 1 1 1 1 1 % % e e e w e t f f f u w w w u t t y f B l l } }.5X`.x.C.l.H.l.x.J.P.,X:X`.J.H.K.K.J.'.l.C.V.l.k.h.V.V.l.k.k.j.k.k.l.h.h.l.k.V.L.} A D z z k z Z A z z k z z A >.u.b.b.m.b.r.b.S.M.y.l g h f h h f a f f h g f F B f f f f f f l f f f a f f f f g f g l h h h h g g f f f a a t e p a f f f f f f f a a a a e e d p e t f e e e d d e a a f f f a p d e e e e t e e w e e e e w % % % % > 1 1 e e % w b a l k k f e e p a t s a e e a d % e f Z D J } s.N.v.n.V.n.Z.!.!.!.!.H.P.wX0X1X>X~.wXwXwXwXuXuXeX2XeXwX6X6XwXwX6X6X1XI.m.m.I.n.m.U.K.P.!.1X1XQ.Q.I.I.I.I.Q.Q.Q.>XQ.K.K.E.E.m.n.m.m.F.| J K J J K } J J S k g V A A D A k z J D Z Z Z k A D Z g a L u.s.K g G <.J k e s k k k z k z V Z Z Z Z f s f f f h g ", -"k z D Z Z V k Z D A p > 1 p p p p 4 p p p p p p d d d d d f d e t f h h f a f h a h f l f a a h f h h f g g h V Z h h g h f h f f s h f a h h g a h h h g f g f G f f g d f a a l V l l g g g g g f V f B B g B B l l g h g g g g g g g g g g g f g f g l l l V g l f f g l g g g f f a f f f f f d d f f d a a a a a d p t t e a a d e t t t p d e t t w e e w e e 1 t t e 1 1 w w w t t f f w % < 1 1 1 w w w w > > w w w > w e e w $ # B `.7X>Xj.J.I.I.@.l.Q.I.R 5 E . .+ U ^ ^ ^ M.6.r.! 0.! O.U.R.F.Z.S.r.r.Z.0.O.e.0.O.^ 5.Y ^ ^ ! ^ ^ Q 8 9 8 6 Q ] ` D ;.A Z z z Z k g g g g g h h h h h h a p a a d d e d a e e e d e e e w e d a d d a e d f f f B f g g a f f g f f f f e e u e e e e e e w w w w % w > 1 w 1 1 > > 1 w w > 1 w w w y f f f f f t w w e t t t f f V B Z /.4X,Xx.x.l.l.x.l.x.I.:X,X:XJ.J.C.J.H.`.I.J.H.H.k.j.k.l.l.z.l.l.k.j.h.k.V.V.V.H.Y.s.A S k k z k k g V Z k z k k <.Z.w.B.m.w.b.b.r.S.F s g f h a s a a f g g g h e p f a a a f f f f a f a a d a a d a f f h g h g g f f f a a d d a a a a f a a a f f a a e e e e e a a a a e d d p t e a s f g f e e e e a e e t e e e e e e e % w % % % % % e % e e e e w f V V f e e f l l a p e a p a h a s Z K 9.)..S V J J d w f D D Z Z Z k l V g d f f f l f k z ", -"k z A Z z z l V S f < $ f e p d p e t e e e d d d d d p d d d d a a s a f f f g g a d p a f f f f f f a y V h g C f f h h h f f a a a a d e d f f f f a f h f f f y f g f f f f f f C D l l g l V V g g g f f B f f f g g g g g g B B g g g g g l g V V g V V g V g g B g f g h h g f a a f f f f f f d f f t d a a a u a u a a u e e t e d t e e t t t t t e w < t e e e e e 1 t 1 1 1 t t w < w w w < < > > > w > > > w > w w t f w - > ` `.7X3XP.J.3XP.j.I.2X#.5 Y R R X.+ U ^ h.n.M.0.w.w.b.e.Q F.F.Z.M.w.w.w.e.$.^ 0.! ^ ! 5.^ ^ ^ Q ^ Q 8 9 5 T 8 ' M D D z k V k k s g g h g g h f a a f f f f d d a d t p e e e p t u t e e t d a f t d d f a a f f f f f f a f f f f a u f a a e e e p e e e e w w % % w 1 1 > % > > 1 1 1 w w 1 1 w t f f f B f 1 e w w e w t t u y l V d } {.,X`.z.z.l.H.J.J.J.I.,X:X`.H.V.l.J.:X:XI.I.J.j.h.h.h.l.x.l.l.k.j.j.v.V.Z.v.v.T./.D A Z k z z k g V g g V k s L e.v.v.v.r.U.R.t.B.F s g h f f f a a f f f f f f s a a f a f a f f f f s s a p t d d a a f a f f f f g f f f a t f a e d a a d a a a a a e e d p a a p e e e e a u e p e a f g a e e e e e e e e e w e e e e e e e w % $ > 1 w e a e % e $ # w f t e e e a a p a a f a a a l D S } ].X1X0X0XT.P.P.!.1XwXwX,X[.1X1X1X1X1X!.!.I.m.M.n.m.m.m.E.I.!.!.6X1X1X1XQ.Q.Q.Q.Q.Q.Q.I.K.K.m.b.v.M.n.b.Z.F.m.e.G J J K J D D Z V A z z k k l V k k Z A A Z z k Z V k g g a K >.J A Z A A t u t t t f w t w e t f f f f f g l l ", -"k k A A z z k A Z t = e d e p p e e e t t e e e t p e p t d a p a e a a f d f a a d a a a a f f a f f f f f f f t a h Z V f f f a t a f f a a a a f f f f f f f f f f k V g l V } V f f g l g l V l g f f g f g l f g g g g l g f f f g B g g V g V V l k l V V f f l f V V g h h f f a a f a f f f f a f a t a f f a a a a u a a u a d t t t t d e t e e w e w e e e t e e t t t w w w t f t e > w w w w w w w w w w w w w e u e w w # , 1.I.3Xl.J.].3XP.x.H.H.) 5 Q E R @.R E ^ ^ ^ M.m.E.w.O.O.O.v.K.v.b.b.B.B.w.0.q.r.3.O.^ / ^ M.Q 5 T W 6 m M F F m J D k l z g V g g g g g g g h g f a t a d d d d a a a e e e e u e e e e e e a a a a d p p p a d a f f f f f f f f f f a a d e a e e e e e w e e 1 % w > % > > > > > w > 1 1 w w e e f f f f f w w f t w e e t d f f f V f | 5X5X'.z.x.l.l.P.P.J.`.J.J.x.x.V.N.H.:XP.J.J.H.l.k.k.j.k.l.j.j.k.k.j.v.v.N.n.Z.].).A Z k z z z z V V l V k V l k { t.w.M.D.R.0XZ.u.V g g g a f a a e a a a f f f f f a e p f f e a a a a p a a f f a p p a a a f f f l f f a f f a p t a d t a a t a a e a a p a a e e p e p p e e e d t f l f a u e e e e b e e e e w e e w % w e % > > % > 1 e e e e w e y < $ % e e e e u g V f e a u f D J S L T.1X1XK.V.V.n.$.O.W W %.Y.n.P.XXQ.I.n.$.^ $.m.E.E.K.I.Q.Q.Q.6X!.Q.!.Q.Q.H.H.I.K.E.E.b.b.b.M.b.m.K.E.U.B.F J J D D S S V V D z z z k k g k Z k z Z Z z k l k Z g g Z z A A J A A A k f w < w > f f f a a f f f a f f l k ", -"k k A A Z Z A A l $ > t e d e e e e t e e t t e e t e e e t a e e p e p d f f a a f f f f f a a u a a f a a f f a a f t u f l A f f f a a f f f a a a h h f f f f f f f f f f f y l f h g f g l V g g l l l l l g g g g g g l g f f V g g B V l l l g l V l l l l V g g V f g g h f a a f a f f f a a a a f a a f a d a a u a u u d u t d d a f t t e e t t d u t t t t e t y d B B f t w w t > w w w w w w w w > w w w w w w w w w w ; - /.>XQ.H.>XP.3X`.k.5Xk.U R X.) I .^ R ^ ^ ^ n.b.v.K.M.M.Q O.Z.M.Z.w.Z.S.r.0.0.0.O.w.0.^ ^ Q U ( N N B A D A A z A k k z k V g g g g g g h g h f f f a d d t d d a d t p e b b a e a b e e e e e a f d p p e e a f s f f f f f f l f f f a d a p e w w t e e 1 , 1 1 > % 1 1 w 1 % 1 1 1 w > > w w u d f l B f t w % > w w e t t y f f V a | 5X,X:Xx.J.J.J.`.,X:X:X`.P.x.C.H.J.`.`.J.J.V.l.h.j.h.%.k.J.j.#.k.z.h.V.v.v.n.K.T.u.k Z Z k Z z k g f l g g z z s | b.m.R.].R. > > > % e e e e e $ $ < e e w e e a l V f f d d f V A A D | XXK.V.k.!.wXwX1X1X2XwX1X1X1X1X!.Q.K.n.M.$.^ m.U.U.K.I.Q.1XQ.Q.Q.Q.!.Q.I.H.Q.I.Z.E.m.v.m.m.n.K.K.m.b.U.U.+.L K J D Z Z l f l z z z k l l l k k Z Z A A V l k k g h g l Z A Z Z Z Z k l l g g g f f f d d f f f a f f f l ", -"V V V Z V V A D l % % e p p e e t t t t t e e t t e e e p d t t d d e d t d a a d a a f f f d a a f a a a a d d d a f a a f l f f f V g f f f f f f f f f f f f f f f f f f f g f f f f f g f l C h g l A A f f f f f V V l l k l g g l l V g V V f f f f f f f g V f f V l g h h f f a f f f a a f f f f f a y u f u a a u u t t t u t t e d t d t t e w t e t t t w t t e t 1 > e t u t w > > w w w w w w > w w w w > w w t w > > w # , /.3X>X>X3XI.P.P.l.L. .Y Q Y R @.@./ ^ Q R h.h.^ v.K.T.U.W 7 W v.F.e.B.S.t.t.[ ~ O.O.] / Y q 9 F F C D D Z k k l g g Z Z V g g f g g g f f g h a a a a t e p a a a e e e p a p a a e e e e p e e a a a p p a f f f g h a a g l l g a a a a a t e a a a e w w w w e e e w 1 1 w > w w w w > w % 1 w > t f B V B y e > w e e e e t t t f B f } ,X,X:Xz.x.x.'.P.:X,X,X`.J.J.H.J.P.`.:XJ.V.V.l.h.#.#.#.#.j.%.@.j.k.k.V.v.V.m.m.Z.u.V V Z V V g V g f g g g l l u | Z.]. 1 > 1 > > % > 1 d a e e e w > > e w e w p s g f f a d f Z A D A K [.X!.P.V.V.H.I. w w w w u t t w w w w $ , z.P.3XI.j.J.:XP.l. ...Q E Q Q R R / ^ ^ Q / ^ v.m.Z. w w 1 1 e w w 1 > > 1 > % % > 1 1 w e y f V B f u > w w e w w w e e d f l B /.,X'.z.x.z.z.`.:X,X,X`.:X`.J.`.:X,X`.J.l.h.j.#.@.@.#.#.j.l.#.X.k.h.v.v.n.B.u.| J k V Z g g g g g f g g g f l a F [.0X 1 1 % $ % 1 1 1 u w e e w % > 1 1 w a a w e a f l f a s k Z S J D A.T.T.1X6X1XK.h.h.$.h.h.v.m.T.T.I.T.T.T.I.K.V.H.P.H.I.>X!.!.>XT.>X!.>X>XP.K.K.I.I.T.!.!.U.!.!.Q.!.6X6X!.!.Q.Q.Q.I.I.x.n.%.M.m.m.$.w.Z.m.m.E.E.E.E.m.m.e.G L V u f f t a f l l l f l Z V k z z V Z V V V l f l l V D Z z Z z Z f t a a a f a a a a f f a a f f f g ", -"f f V k l V A D f t e d e p e p % e e e e e e e e e e e % % p % e e e p b p p e e a p e e e e b e e b a a a d d d e e e a s a f f a e f f f a a t e d a f d e d a a a d d d t d a a f a a a a a a f f a a f f f a a a t d f f f f f f l l l l l f g f l l g f f f f f f f f l g f f f f g f f f f a f f f f f y u f f f f f V f f f f f t a y t t f l V f f f f f t t t t t t t f u u t w u f u w w w w e w w w w w w e u w > > w w w $ w &.J.>XP.j.l.`.3Xo.#.E I ) .E Y Q v.@.@.X./ ^ m.E.h.m.E.h.$.h.m.E.w.^ ~ W ^ Q O.$.Q W T M C C A A A A Z Z Z k k z V l l g f f f f f f a a a a a b e p e e a t e e b e e p e e p p a a e a a a a a s a p p a a a a f a f f f f f f f f f a a d e e e w w w w 1 e e w 1 w w w w e w w 1 % 1 w w 1 > > w t f V f d t 1 w e w w w w w w w B B 4 c.,X'.C.J.l.J.`.:X,X,X,X,X:X:X'.:X,X'.x.l.j.@.@.#.@.#.j.#.%.#.Q #.j.k.v.+.K D V z k V k l g g g f a f f f g f f a | Y. 1 1 > > w f g e e e w w w e t e w e 1 $ > t f a f f l Z A D C L K.U.!.>X!.I.K.V.K.v.n.K.K.Z.n.M.n.K.P.K.V.V.K.K.n.K.!.P.P.P.I.T.K.K.K.V.K.I.T.T.!.!.Q.I.~.wX~.6X6X6X6XQ.Q.Q.Q.H.K.I.h.^ ^ M.b.b.w.b.m.m.E.M.m.U.K.m.m.+.` J k f a f a e f l l f Z A k V z z z z k V V l f l l V Z l k Z k f f a a a a f f f a a d t d e p a f f ", -"f V Z l g V k g t w f e t e e % % % e e e e e w e 4 % b p % p p % e % % % e e b e e e e e e e e e e e u t a d p p e e p e a a a k A V a d a a d d d t a a f a a b e t d d t d d d t d f a a u a a t t a a f f f f f f f f a f f f f g f s s f f f g f f l f g f f f l f l f g f f f f f f g f f f f f a f y y f f f l l f a t t t t t f a d t a f t e t u > w w w e > < t t t d f t f u t t > > w w w w e e w w w w e e w $ $ w w w w # r '.l.l.l.l.j.H.3X..k.E . ./ / / O.Q E @.v./ M.U.E.m.M.m.^ ^ h.v.[ $.n.^ X.$.$./ X.%.E ) C A A A A k k l z Z z k V l k f f f a f a a a p e t d a e e a d t p a p p e e e e e e e e e e e e e e e e e e e a a s f a a f a f f l g f f y y t t t a t e t t e e % w e e e e 1 w e w 1 w 1 > 1 w w w w t f f l l t 1 w w w w w w > w > w u d B h c.,X'.z.z.z.x.,X,X,X,X4X4X,X:X:X'.`.'.J.l.l.@.#...#.@.#.#.@.#.X.@.k.h.&.k z A A Z z z z l l f f f a a f f f f a f a F | } k f g h f h a p e e e e e % e e e p e e e e e e e e e e % e e e d e t e e t t t t a f f f a f f y f f f a t y f t t u t t e w e t t t e e e e t e w w 1 < 1 t f f B f w w e w w e e e e e e w w 1 w % > > 1 1 e V V f e w w w w w w w w 1 > e w , - $ u a a g V D C L | +.n.T.!.!.I.P.!.I.h.n.n.K.K.n.n.m.K.U.U.K.M.Z.n.n.m.K.n.K.P.I.K.K.Z.V.n.n.H.K.I.!.1X1X!.6XwXeXwX6X6X6XQ.Q.Q.I.m.E.H.n.M.v.e.M.v.$.$.b.m.m.E.D.E.m.m.m.m.| D V a f a a e t f f f f g l k z z k z z Z k l V g f k k l f g f f V f f f f f f f f a p p p a a a f l ", -"f f l f g V l f e > d s w w 1 1 % % e e e e % % % p 4 4 b b % w e % e e e e e e e e e e e e e w e e e e w e d p b p p b a a e a f f f l l f f a a a a a a a a b p p t a f a t d d d d t d a a a a a a a a a a a f a f a f f f f f f f f f f f f f f f f f f l f l f g l f g l l g f f f f f f g l V V f f y a a a f y t f u e t t d t t t e e t t t t e u d t w w t d t t e d t 1 1 > > < w w t u w B F w e e w w w w w $ > w w w > > - r '.P.>X`.J.l.J.P.l.#.) R X./ R / @./ E R #.j.@.E.h.m.m.M.w.Y / ^ Y ^ M.$.^ Y R @./ R X.| V C A A V f l l k V g g l l l l V f a a t a p e d e d t e e p d p e p a a a a a e e e e e e e e e e a p p e b a e e a a f f f f f f f f f f f t a a t a a a d e e e e e w e e e w e w 1 w w 1 1 > > w f f f f V f f t > 1 w w w > > w > w w u t B 4 } ,X5X`.C.z.z./.'.,X,X4X4X,X:X,X`.J.x.x.l.l.#... . .X.@.#.#.R X.#.#.k.} v A Z Z Z z k k f p a f f a a f f f f f f l k s s l l l k h f t e e e % e % e e % w e e e e e w e e e e % e e e p e t t d e e t f a f a a a f u t f f f f f f y t f d e t e e e e t d t e d e e e e e 1 t 1 e e f f f t w e w w w 1 w e e 1 w w w w w w 1 w w e f t > > w e 1 w w 1 w 1 w w w 1 e 1 > % % e u f l V J L ] +.O.m.T.!. w w w u u w w w w w w w w w w w w w w w w > w > # n qX:XJ.4X].j.2X3XJ.j./ @.j.@.E / @.h.O.E Z.K.$.$.M.m.M.M.E.w./ Y R $./ @.$.m.n.h.^ Q Z.L V C A Z l f l l l g B g f l f f g a a p e e e p e e p p p e e e e e e w e e e p a e d e e e e e e e e e e e e a a a u u y a a a f f f l f f y t t a t t t t e t e w e 1 w 1 e e w w w 1 > w w w w w w t f f f t < # - > w w w w 1 > > > w w u d B n h }.4X'.x.x.C.C.C.'.,X4X5X,X,X:X:X:Xx.l.j.z.j.@.R Q X. . .o.] ) #.#.k.&.A z k k k V l l u e e e e e a a a f a d d l k V z A Z Z V f p e e e e b e e e b w w e e e e e e w w % e w p p e t t p s f a u y f f t f f f a t t y f f a f f f y f p e t e w w e e e t e t t t t w w 1 e t w t f f f e w w e w w 1 e w e e e w e e w w w w t a t > > w w w w e w w e w w w % > w 1 1 > % % w t g V A D | w.O.e.T.1X1X0X f t w w w e e e w w w e e % e w % % e w w e b b w w b e e e e e e e e e e e w e b e e e e e e e e e e e e u p a a f V V l f y a a a a p p a e a e e p p p a p e p e e e e t e t a u a u t a u y a f a f a a a a f a u f f f f a f f f f f B l f f l f f f f C C f f f f f f f f f f f f f f f a a u f e a a u a u t t t t e t e e t t t d t t d f d t e 1 w e e w w w w w w w e % w w w w w w w w w w w w 1 w , # s.DX3XJ.qX,X#.j.J.`.#.k.l.l.j. . .#.@.@.R Q U.U.M.M.E.T.K.!.E.^ R / @.@.$.^ $.j.@.h.$.$.M C V Z l f g l l g f f f f f f f f d t t t d p e a e a t a e e e e w w e e e t e w d e w e e e e e e e p e e e e e d a t a d a f f f f f f f y a a t t t t e t e e e t w e e e e w e w w w > 1 e e w t t f f > > , , 1 w w w w w > > w > w w w t y B t /.:X'.x.x.x.}.'.'.:X,X,X,X5X'.x.J.l.....k.#.j.#.X.X.@. .X. .) #.z.z.` k k k k l V k l d e d e p e a a a a d t d l V Z A A Z l V g f t e e e e p e w w w e e e e e e e w % e e e p p e u a f a f f f f w t t d d t t t d d t a f t t f f w t a t e w t e w e e t e t t t w e w e e w e u l t < w w e e w e w w w w w e w w w w e w u w t w e e w w e e e w w e w > 1 > % > % 1 > $ > w a l Z V J y.M.v.I.~.1X!.I.I.Y.m.m.E.E.m.b.M.m.U.m.n.M.m.n.m.m.K.U.K.V.V.L.H.V.n.V.V.n.V.I.Q.I.I.3XuXDXyXtX1XQ.6X6X!.I.H.V.V.n.n.n.e.$.w.0.[ O.w.v.M.m.m.e.$.b.b.M.{ D k f f f e a g f f f u a f l C l z z k l f f f a a l V f f f f f f l g l f f g a a e p p d a a f a f ", -"V V l l V l a w - , > 1 f d % 1 e w e w w e w e % e w b e e b w % % w e w w e b e e e b e e e e w w w w e e e e b e e u e e e u t t t a > y V V l a f f f u u t e p e p p d e t t t d t e u t e d t t p a u t a u t f f y t t d u a u f a a t y f u a u f f f f f f f f f f f f f f f f f f f y f f f f f u u t y u t u a u t p u a a a t d d t d p t t d t t e y f t t t e t < t e e w e w w w w w w e e w w w u w w w w w w w 1 < < % {.].,X].qXj.'.L.'.].#.z.j.j.j.j.@.@.@.j.%.W Q Z.M.m.E.K.U.U.w.^ m.E.h.@.@.E R j.j.h.w.X.C A A V g f f f g f f f f f f l f a e d a a t e a e e a a a a p d a a t t e e e t e w t t p e e e e e e e e e a s a a u a t a f f f f f f y f f u a f f t d t p d e e e w t w e e e w w w w w e w e w d f u > , , < 1 1 w 1 w w 1 1 > > > w w w t t f g F ,X5X'.'.'.:Xx.x.'.,X,X:X,Xx.j..... .....h.l.%.X.Q X.X.) ) o.#.#.z.G j V V V l l l s e e e e p e p a b e e a d s l f l l f f l V l a t e e e e e e e e e e w w w e 1 1 % w e w e t a f a a f y t e t t a t w e u t w e u d t w t f u e t f e t w t w w w t e e w t t w w w e e e e e a f w w w w w w w w e t t e e e e t t e w w w f t w w e w w w w w e w w 1 1 w w 1 1 1 1 > % > $ % u l Z z | K.v.n.I.T.Y.T. $ > f w 1 > w w e w % w e e w w w w w b w w w b e w w p w e e e e e e e w w e e e e e e e e e e e u e e e e e e w e w $ e u a a a a a p u e d t e e t t t t t t e t t p t t t t e u d t d t d d p t p t t d a u p t f a a y u a a f f f f f f f f f f f f f f f y f f f f f t t u t f a y f a a a u a t t t t t t t d t d t e d t f a a a f d y e w e e t w t w u w u w e e w e w w w w w w w w w w w w > > , < n {.P.,X4X'.j.k.I.yXyXh.) #.#.j.l.@.j.j.@.j.%.^ $.h.^ E.K.R.E.m.H.n.v.n.j. .U E H.h.j.^ ] C D V Z l f f a a a f a a u u a t t t e t t t t u e e e y a a g g g V f t u a t e e e t e e w w e e e e e p a a a u u d y a a t t a y f f f f f f f t t e t e e e t e w e w e e e w e e e e e e w w e t a w 1 , , , 1 1 , 1 > < > > w % w w w w t y B V f 1.'.'.'.x.:X:X'.x.x.,X`.,XJ.j.......j.j.k.l.#.] Q Q ^ R ] @.#.j.&.D g V l l g g l a e t t p e e b e e t e e t l l l f u a f f l l f t e w e e e e e w w w e e w 1 > 1 w 1 e t t t f t d t f u w t f e w w w t t e w t t t e d a u t t t t t e t e t t t e t t e e e e w t w w w e e t w w t t e w e w e w w t t t f f f t e w t f l f w e e w e e t w 1 < > 1 e 1 > 1 1 1 % > % > w $ w y V Z } K.K.v.m.K.K.T.T.K.Z.U.!.E.m.U.M.m.U.b.m.b.m.E.K.K.K.T.T.K.K.K.V.K.P.P.l.@.j.x.x.Q.Q.Q.3X3X7X6X6XrXuX6X1XI.K.V.n.v.v.M.O.w.w.w.w.0.O.w.w.M.b.r.O.w.w.w.w.F k t a f e p e u f f f f l l V l V V k l u f f f y f V l f f f f B f f f V V a a f f f a a a f f t a ", -"V l f V C f e > - , > , > , > % % w % % % % 1 % % w w w w b w w w w w w e w % w w e e w w w w w e e w e e e e w w e e e e e t e w e t e t t w e w w e w w t d t e t e t e e t t e t e e e t e t w t t t d t t t u u t e t t t d t a t t t t u p u a f t y y y f f f f f f l B f f f f y f f f f a u d a u t a a t y u u a y t t d t t e t e t e t e t t t t t t t e e e t e < t w w w w w w e w w e w e w e w w w w w w w > > w < , - | ,X>X4X,XJ.k.J.,X,X'.#. ...C.k.l.j.j.j.@.V.$.Q / j.n.U.~.R.K.T.E.H.V.n.h.@.R / @.@.h.h._ V V V C f g f f f a d a d e t e d d t e e e e a f a u a f f f f f l V l f f a d t e e w e e e e e e w e e e a a u u a u t u f f f f f f B f f f f t u t t e t t t w w e w e e w e w e w w w w e e t t f d 1 , , , , < , , > > > > > $ > w w w u d y f B B d G C.x.}.}.,X}.:X:X'.'.`.J.k.#.@...j.j.#.#.X.] ^ Q T Q R ) #.&.G s k l V f g V g e e e e e t e p e e w w u y f f l f f f f f a f a e e e e b b e e w e e w % e 1 1 e e % w d f t f w t t w > 1 w w w w > w e w t w e w u e t w t t a e a t t t e t e t e t t w e w w w t w e e w w t f f y t w e e e t w w t f y f f y t d t f l l f t t e w w w w w w 1 > < < , , < 1 > > $ $ $ > w % w u k Z | T.K.w.O.b.m.n.v.U.!.U.E.m.b.v.M.m.K.n.m.m.E.U.T.T.U.K.K.I.K.V.n.H.H.l.j.j.l.l.Q.1X>X6X3X7X7X6X7XuX6X1XI.H.J.P.n.M.$.O.O.e.$.O.0.w.w.r.w.w.t.w.w.[ 0.e.L s t d a p e a u f f f f l l V l l V k f a f f f y f l D f y f f y f f f f l y t w w u a t w t w t f ", -"C f f V V t > = # % % > , , $ > $ $ 1 1 1 1 1 1 % e e e e e e e e e w w e w % e w w w w w 1 1 w w w w e w e w w 1 w e t t e t e e w e w e w w e e w e e w e e t e t t t t e e e w e e t e t t t t t t e e t d e w u t t u t t t a u a t d t d t f a a u a a y f f f f f f f f f f f y f f f f y t t a u a t d t t d t e t a t d t d e t t d e t e d t t d t e w t t t t w e e w w w w w u w e w w e w e w w w w > w w w w w > w < - $ 1.,X>XtX,X`.L.C.,X>XH.3Xl. .`.j.j.j.l.j.j.@.R Q R E v.~.T.n.K.E.n.l.K.H.j.@.X.h.j.v.K.| B A V l f l f a a a a a a f t t d t t w w e t f g f f f V f y t w w u w e f t t d t t t e e e e w w e e e e e e w e t t d u e a a t e a u a u y u t t f t t t t t t t e e w e w e e e w w w w w w e t f f t > > , , , , 1 , , > $ > > > w w w u t t f f f B B n &.}.:X,X}.,X4X,X:X}.x.z.j.j.j.j.z.j.#.@.] X.] 6 6 T T Q o.D k l l f f l V l g p e t t e d t e p d t t d f B f f l V f f f f t e e % w e e e t e e e e % w e w e w w d 1 w w t t d 1 w w w w w 1 w w e e w 1 w e t t e w e d t t t d t e e t t e w w e e w e w e w r w e w w w w t f V f y u y f f f u w a f y y y y t t t u f a t w w w w e 1 > > > > > > , > > > , > $ $ $ % > > w $ w f S D N.T.K.e.[ $.O.! A.].w.B.v.v.K.b.m.m.v.n.Z.K.T.P.I.v.v.n.n.H.I.I.n.H.I.I.H.I.H.P.>XQ.3X7X6X6XQ.3XtXrX!.Q.I.Q.3Xn.w.w.O.! [ ^ $.w.e.w.t.M.e.w.0.0.{ [ +.C l e e e e p a l l f f f V V l V V V l f f y y f f y f A V f f f f B f f B f f t e e t e t t y f f f ", -"B f V V f e > - > % 1 , 1 d > % $ , , , 1 > > 1 % % e w e e w w e w w % 1 1 w w w w > > 1 w 1 w w w w w w % w w e w t t t e t e w e w e e w w w e w e w t e w w e w e e e w w e w e w e t e t w e t e e t e t t t e t e e e t t u a t t e t e t t u u a y u u a y f y f f f f f f y f f y f y y t a u a t t e t e t e t t t e e e e t e t e t p e t e p t t t e e w u w u t e w w e w e w e w e e w e w w w w w w > w > w w > > > ; i F '.rXtX,Xl.V.k.2X2X6X3X:X[.z.j.j.j...j...R R $./ U O.R.V.H.U.n.j.H.j. .@. .j.l.j.l.*.C Z V V l l f f f y t t t t t t e e t d e e t f l Z C V V V V f t t u w w w t y t e w e e t t e e e e e w e w w e w e t e d t d f u t t f f f f f t e t w w p t f t t w w w w e e w > w e e e w e f f t w f V B < , , , , , > > $ $ > > > w w w w u t d f l l B y | :Xx.:X:XJ.z.x.x.'.J.z.z.z.z.j...@.@.X.] X.9 9 9 8 8 ] L j k k s g f g l V l a t e e e t e t e w e e f f f f f l V V f f d % w w w e e w w e t e d t w t e w w w w t t f f w > w e w 1 w 1 1 1 w e w 1 1 1 w e w e t t e w u w t t u a t d u e e w w w e w e e w w w w r w w w t y f f f f f f l f f f f f f f f y u t t t y u f t e e w w > w > > > $ u > % $ > > $ $ $ > > > > > w > w l V +.T.Q.T.e.N.[ [ [ +.[ $.n.Z.K.m.m.K.m.v.m.!.1X1X1XK.v.m.n.n.I.I.H.I.!.!.I.I.I.x.I.H.Q.1XI.>XQ.H.4XuX6X1X>X1X>Xn.O.O.0.! [ O.M.b.b.S.B.v.t.0.0.M.[ { { B p w w e e e f l l l g l V l V V f l k f y f f f f f V f t f y f f V l f B V f d a t e t e e t t y f ", -"f f f C u 1 2 = 1 % > > $ > w % $ , , , > 1 > > > > 1 > % % 1 1 % % > w 1 w w w w e % % % % % > 1 w w w w e e % e % w % w w w w w w w e w w 1 w w w w e e e e w e w e w w w w w e w w t t e t e w e e t e t t e t w t t t t t t d t t d t p t e t t a u u u a t y f f f f f u a f f f f f a f u a u y t d t e t t e p e d t p t d t t t d t t t t e t t d t t t e e u t w t t e u w w e e w e w w e w e e w w w w > > > w w w > > # < /.4XtXqXx.'.,Xk.`.rX1Xj.x.z.I x.'.,X5Xj.j.X.^ h./ E O.M.V.P.K.K.V.I.V.@.j.h.j.l.x.z.G C V V V l f f f f f a a t t e e t p e e t t f f l V V A V l V V f t t t t f f f d e w w e e t e e e e e w w w w w t d t e t t f u a a f t f t u a t d f f f f f w w e w w e e w e w 1 w e w w e u f f w > t l w > , , , , , > % $ $ > > > > w w w w w t t f l B l C z.z.x.x.z.z.z.z.z.z.z.z.z.z.j... .R R R ] 6 6 T 8 T ` a a f a l f l l V V g a t t e e e e e e e t y f B f B f V l l l f t 1 w e w w w w w > % e t t w w w > w t w f d t e w w e e w w w w 1 e e 1 t t < w e w e w t t w w w w w w d t t e e t e e e w e w e w e w w u w w w w u u y f f l f y y f f f l l l f f f y a t t f f f f t e w w > w w > $ $ $ > > $ > > $ > $ $ > $ 1 1 1 w 1 w B | m.I.!.>XT.e.[ ' ' [ [ $.w.v.m.m.U.m.m.K.1XuXuXuXeX!.~.!.Q.>X>XT.K.H.I.P.P.H.j.l.I.Q.2X3XP.j.j.2XuX6X!.6X6XP.I.n.w.3.^ ! Q O.M.S.b.0.$.w.w.0.w.7.[ M e 1 e w w d w f f a u f V V l l V V l l B f f f f f f V y w t t t u f f B V V f f t t t e e e e w d f ", -"t y V B e > = > , > 1 > > ; > w $ $ , 1 1 > % > > > > > % $ > 1 w % % w > 1 > 1 w % % % % w % w w w w w w e % % % > 1 w w w e e e w w w w w 1 w w w e e w e w e t e w e e e e e e w w e t e t e w e d t e e t t e t e w w e e e e t t t e t e t d u u t t a u d t f f f y y t f y f y y t t f u t t t t t t t e e t t t e t t t t e t e w e t t e t d t e e t e e w w w w e w w w w w w w e w e e w e w w w w w w > > w w w > w > # M /.,XDX4Xz.C.uX]...L.3X/ j.z.l.4Xj.`.,Xj.l.j.I.n.$.h.v.m.H.K.E.n.l.H.l.H.l.V.j.j._ | C A l f u u y t f t t u a d d t t t t e w e d f f l l V V l f l V V B f t w t f f t w e e e w w e t t e w e e e e e t t e d t t t f y y f f f u a f f f t t w , < 1 > > w w w w e w w w w w w e t t > - > 1 f u # > , , > > > > > > > > > > > > w w w e t w w y B B y G x.x.x.z.z.z.j.z.z.z.z.j.j.j...@.) ( R 9 9 8 Q Q _ y f f f f f f g f f f t e w w e e e w w e w t f f f f f f f f f f u e w e w w w w e 1 % t w e w w e e e f f a w t f e w w < w > > > > > w w 1 1 t e w w w w e w w % w w w w u u u w e t w e t w w w w w e w w w w w w w w w f f f y w w ; ; ; r y y y l V B f f a a f y y y t t w t u w > $ $ $ < < > > $ > $ > $ $ ; $ > % > w w w < f L e.m.P.>X!.T.Z.e.y.[ [ O.w.v.w.M.m.v.T. w t w u t f B f f t d d t e e e t t f f ", -"y f V y # 2 - > # , , 1 , , - e , - , , > > > > > 1 1 w > > $ > % > % > % > > > 1 > % 1 $ > > > w 1 w w % % % > > w w w w w w w w w 1 w w w w 1 > w w w w w w w w w e w e e e t e e w w e t e e w e t u t e w w w e w e e w e e t e t t t e e t t t e e t t d t t u t a u a y a f y a u t e a e e e t d e t t e d t t t t t t t e e t w w e e t w u w t t e t e w w w w w w w w w e w w w w e w w w w w w w w w w > > w w w w w > # C C.,XGXDXz.'.].l.z.j.x./ j.`.2Xl.j.j.x.J.l.l.K.^ @.$.M.M.K.V.n.H.H.I.j.l.l.j.H...` G V l y u u a t t t t t t d t t t t t d t e w d y t e w f B l f u f f f f t w e t f f w e e w w e e t e w w e e e t t t t e t t t t e d d t d a t f t d t t w w < 1 1 w w w w w e t w e 1 e w t a t $ > w w t t < > > $ $ > $ > $ > u w > > , > > w w w w w u u y f B l h *.'.z...z.z.z.z.z.z.*.z..... . .R 7 T 8 8 Q W ' m f f y f f y f l f g f f e e e e e e w w w w w t f f f l V f f y w w e t e e w w w > w w t w % w w 1 e t f y f e t e 1 , < 1 , > > > w > w w w w t < > 1 w w 1 1 w u w w w u w w e t t t t e u e w w w w w w w w > > > w w u f f f r % > ; ; , ; - - > w t f l f f y f f f t t t u y u < > - > > # , , > > > $ > $ > $ > $ > 1 w w e u f C { w.Z.T.T.T.P.Z.O.0.[ O.p.e.[ 0.w.m.T.T.H.H.!.!.>XQ.I.N.e.h.%.N.K.N.e.N.V.n.L.L.J.H.V.:XV.O.P.3X!.Q.Q.Q.I.H.Q.1XP.O.Q ^ ^ 5.m.b.b.w.^ ^ w.e.! Q R C t w e e w , 1 e f t f C l l V V V l l B f f f f f V V V V f w e w t t e f B f y t d t t e w t t t f f ", -"f f f w - 2 $ $ , # , , - > - # > > # , % % > > 1 > > % % > % > > > > % > % % > > > > > % > % 1 % > % > > > 1 1 > 1 > % w w w w w 1 1 1 1 w w w 1 1 1 > w > 1 w 1 1 t w w w w w w w w w w w w w w e 1 1 w e e t t w e e t t < e e e t e p t t u u e t e e e t t t t e t d t t t t a y a t t t d d t d y d d e t t e t e t t t d t p t t t w e w t t e e t t t u u w t w w w t e e w w w w e w e e w w w w w w w w w w > w w w w < ; i c.4XHXUXx.].C.@.`.I.@./ ..J.`.j.x.I.Q.x.l./ / M.$.M.m.m.K.V.K.!.I.J.H.H.V.l.z.M V V V f f a a a d t u e t e t w e t e w w e w w w w < w d a t t t t t w 1 1 w e w t t t 1 w w w w e w w w e w e t t t e e e e t t t e t t t t t u f a a t t w e w 1 t w w w w e w w w w t w e t y e w u w w w f w $ > > $ > > > $ > $ u w > > , > w w w w w w w u t f B B h h z.j.z.z.z.z...........I ...X.E U ) R Q ] ( r p f u f u u f f l l V k l e w w e e w w w e e e e f l l V l l f f d t t t t t t t w w w 1 1 % w w w w t t w e t w w w 1 1 1 < < > % > % 1 1 w w w w < w w w < 1 1 w w w w u u u t y f t t e e w u w w w w w w w w u w w u e y f y u w w w w w 1 < > w w , # - w y y f l f f f f f y y t > - > > , # > > > $ > > $ > $ $ > % w w w w w t l z H [ b.U.T.T.K.b.[ [ [ { B.y.H H 8.M.E.K.n.v.e.e.%.o.` F M M F M _ { ] X.+.$.%.A./.n.n.I.h.@.H.I.Q.Q.H.Q.Q.Q.Q.I.h.Q R ^ b.M.m.F.M.^ ^ $.$.O.Q Q _ V d w e e e w e y f u f B l l l V l V V B f y f y f V V V V f t d t t f f V l f y y t t t w t t t y f t ", -"t f f > - $ $ # - $ , , 1 $ > > , > > - $ > % % % > % $ > - > $ > $ % > 1 > $ $ > 1 > > $ $ % > > > 1 > 1 1 > > > > 1 1 1 1 > > w w w w w w 1 > w w 1 1 > % > 1 1 1 1 e w w w 1 w > 1 w w > w w t e e w e w e t t u w e t t e e e t t e e t t u w e w w w e t t t e e t t t d t t u e e t e u w t d t t t t d e e t t e t w w e e e e t w u w u u w u t w t w u w w t t w w w w w w w w w e w e e w w w w < > < > > w > > w > w > < w &.tXIXUX`.4X[.j.J.x.@...j.J.>Xl.H.J.I.H.@. .^ U.E.U.E.E.!.T.v.h.>XI.l.j...z.F l k l l l f a u t t t w e w w e w e w w 1 w w e w w w > w t a u e e w > w w < e t w t t t w w w w w w w w e e w w t t e t t t t d t t e a t t f d y y t e d d t t e w e w w e e w e w t t u t u w w w a l w > y f % w > > $ $ $ > > > $ # $ > > , , > > w w w w w w w u f l h G z...z.............j.......I R T 8 T Y W H u d t d t u f e a l k z k z f w w w > w e w 1 1 1 w w f V C V V l f f f t t t t t t e w w w $ > w e % w d w t d w w > > w > < > 1 > > > > > > > w w w w > < > w w w w w w > w w > w t u t w t e w w w w w w w w w w t t w w w w t t u w > w w < < , , , > , , , - : * : ; r < - , , , , < > , , , > - - > , > , > $ $ $ $ > > > w w w u u f V z | [ y.D.U.T.K.N.{ { 7.[ +.L H ' [ [ [ ' H M m m m y l l l V l V B C ` { o.O.] ` +.O.$.@.%.h.V.V.I.Q.I.Q.!.1X>XH.@.W R ^ b.m.b.D.m.m.M.Q ^ O.^ ' F u w w e e w t w t t t > > f B V V B V V V f t f f f V C V f B f u t w t f f B f u t t t t t t f a f f t ", -"f f > $ - - # # $ # # , $ $ # - # # > ; $ > > > > > > > > > > $ $ $ $ > > % , , , $ $ $ > $ $ $ % > % > % > % % 1 > > 1 < , < , > > < < < w > % > 1 1 , , > > > < 1 1 w w 1 < < > w w 1 w w w w w w w e w e w w > w w w e w e t w w w e w w w w u t t t e e t t e t t a a t t t t t e t t e t t t e t e e e t t t u u e e w w t e e e w w u w u w u t t w w w w u u w w w w w w e e w w w w e w w w e 4 1 > < > w w > > > w w u > < d ` J.5XtXJ.C.j.j.J.j./ j.x.x.I.K.I.I.J.H.l.k.O.m.^.~.E.E.!.P.V.H.P.:XJ.l.l.| l B V V V V f a t d e t t e e e w w 1 w 1 1 w w 1 1 1 > % w w e t t w w e w w e w 1 e t a t w w w w w e e w e t t w e t t e e w e t w e w t t e t t a t e e t w w e w e w e e e w e w e w w % f y w w w e w > > w w t w > > w > > > $ $ $ > > > > > < > w > > > > w w w w u l h ` x.z.j.j.....z.*.*.j.j.....I 8 8 6 8 0 m u e t t f u f f a f l z z k V f u % % w % % 1 1 < , < w f V V V B l l f t t e w w w w w w w > % > > w e t t t e w w > > w > > < > > $ > w w > w > $ w w w w % w w w w w > w w w > w w w w w u u u e w w w w w u w w w w w w w > u w w w w w w > < < , , < < < , < < , , > ; : : - ; : * & r < , < - - - - - - - , > > $ $ w f f y w w w u f V A k | ' q.b.E.U.K.H.+.' [ e.e.H L 8.H M m B f l l l V V C V V V V V V V k f { ] +.{ ' ] ' ( +.h.j.h.n.j.H.Q.Q.I.Q.I.I.h.R ^ ^ M.m.m.m.E.m.O.5 R ' m f 1 e e e w d V w w f f y w f l B l B V V V f y t t t f V B f B B V l f f u f f B f d t d t t t y f f f f ", -"l u > - * # # # # # # # $ $ $ $ i w > $ $ $ > > > % $ $ > > > $ $ $ $ $ $ $ $ > > > $ # $ # # $ $ i i $ $ $ # $ > > > > > > , > , , > > > $ > % > > > > , > > > < > 1 w w > 1 w w w > w w w w w w t t e e e w e w w w w w w w w w w u w w e w e u t e t w e t t t e t a t t t e t t t p e e t t e t t t w u w t r u w w w u w u w u w e u w u w u w w u w w w w w w w w w w w w w w w w w w w e t d t e n C y f t t > w w w > > > w B ( .#.'.[.j.j.j.j...I j.x.I.H.H.I.I.I.I.I.I.M.^ E.E.E.^.X,X&.C C V l l l f u a t e t t e e w e w 1 < 1 w w w > > w w w e e w 1 1 w w w w u w w w e f a w w w w w w 1 e w e t t t t e t t w e e e e e t t e e t t t e t t w w w e w w w w w w w w w w w e u y u w w u w > $ > > ; # w > $ > $ > $ $ $ $ $ > > $ > > , > > > > $ $ > w w w w u l m C.N. .#.....) ) ) .) ( ) 6 6 8 9 N m w w t t p d a u f f l f l V l B t 1 w % > % > 1 > > 1 > u f f l l l l f y t w w w e w w w w w w > u u w u f t t w w w > w > > > > > > > > w > > w w w w w w w w w > w w > w w w > w w w w e e w u w w e e w w w w w w w w w w w w w u w w w w w w w , > < < > > < , , > < < 1 < < 1 1 1 w < * : = ; > - , > ; - ; - > $ $ > w f f f f f y t y l V F 9.7.q.b.b.U.K.e.%.' [ $.e.[ [ { m k l C l f f f f u t f f l l l V V k l C m ' +.%.+.M ` %.%.%.$.O.^ n.P.H.H.I.Q.Q.Q.n.^ h.b.b.b.m.b.m.b.E R m g $ > w w e e e 1 t 1 w d f f f f f B V V V V V f t a t f V V B f f f V C B f B f g g V f f u y y a y f t a ", -"t e $ = - $ $ # # # $ $ $ # # $ $ $ , > $ > > $ $ > > > > $ $ $ $ $ # $ $ $ $ $ > $ $ $ i $ $ $ # $ $ $ $ # $ $ $ $ > > > > > > > > > > > > > > > > w % > > > < > > 1 > > w w < w w w w w w < w e e w u t w e w w w w e e e e e w w w w w w e w w w w t w w w e e t t t t e e t t e t t e w e t t e e t w w w u e u w w w w w w e w w u w u e e w u w w w u u w w w u w w w w w e w w w w w t w r y t w < = ; ; > > < w w w < > > y n o.E ] z.'.x...j.......@.j.h.V.n.H.T.K.E.m.E.E.E.M.^ E.~.~.~.wX~.0XuX0Xu.C k l l u t y a t u w w w > > > 1 1 1 w > > w > > > > > w w w w w w w > w w w w % w w e u y t w w w w w e e e w w w e w w w e e w w w t t t e w e d t p t w e w e w w w w w w w w w w w w e w w y w $ > t t > > > w > > $ > > > > $ $ $ $ > > > > > > > > , , < > > > > $ $ > > w y f | X.@.#...) R N N N N N 9 N m V C l e w w t w t t e e f B l f f a u t e 1 1 > , > , > > > > > w u e a l l l u f t w w u w w w w w w w > w w t f t t t u w > > < > > > < > , < > > $ $ > > > > > > w w w w w > > > > > > > w w w w w u u t u u u w < < w w w w w w w w w w t w w < < > < , , < < > < < > < , > > < < > > > > > > , < , ; r > > - - = - # # - > > > < t y f f f f f t f F +.+.7.4.i.b.b.e.' H H H F H H H L l k l l u > $ > > $ % w u f l f l V V V V V N [ %.{ n +.h.h.h.$.Q v.I.H.n.n.H.I.Q.Q.I.l.n.m.m.n.K.n.M.w.^ +.f w w w w w e w w 1 w e w > 1 w f f a f f B V B V V f t t t f B B f f y f f V D D Z l f l B l f f t t f t t y ", -"w e # 2 # % $ # # $ $ # # $ # $ $ # > , $ > $ > > $ $ > > > $ $ $ $ $ $ # $ $ # $ $ $ $ $ $ $ $ # $ $ i $ $ $ # # > > $ > > $ $ > > $ > $ > $ > > > $ $ > > < > > > > > $ > w w w w w w u u t f w w w t t e e w w u u w w e w e w w w u e w w t w w w u w w t t e t e t e e e e u t t t t e e e t t e e w w w u e e u w w w w u u u e w e w u e u w w w w u u w w w w w w w w w w e w w w w w w w > w w ; > > > < < w > w w < > t B n h.X.U '.x.x.x...........@.$.n.n.H.T.U.E.m.D.E.^.^.m.o.u.N.T.1X6XeX0Xu.m g k l f f t t e w e > > 1 > > > , , < > $ $ > > > > > > > > > w w w w w > > > w > $ w w w $ w w w w w w w e w w w w w w w w w w w e w e e e d t d t e t w e w w e w w w w w w w w w w > w t a t y w $ > $ , < < > w w w > $ $ $ > $ $ > $ > , > > $ > $ > < , < > $ $ $ > > > > w w f B ` #.#.{ { M C V l k V V V l s w $ e t e e e e t t t f f f a f a a w > 1 w 1 , , , 1 < > $ % > f f f y a a u e u w w w w w w w w w w w u e u w t u w u > w > > > - > < > > > > > > > $ > $ $ $ > > > w w > > w > w w > w w w w w w w w t t w w w < r u w w w w w w w w w w > > < > < < , , > < > > < > , , < > > > > < > < , > , > = * * - > - - = = - - > - > > > t u u y u f t f C V F H { ~ q.i.q.{ m B u a a a u s f f , # * # - # # $ $ $ $ > u f l l f l V V l m +.H k F { o.%.$.n.V.n.H.n.v.n.n.n.I.Q.I.T.K.I.I.I.P.Z.m.w.0.H e # w e w e e e e w w w w w w w f f y y f f l B l B B f t d u f B l l l y f l B B | | k C l l l f y f f t f f ", -"t w * = - # $ # # # # $ $ # $ # $ > w w w > > > $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # i # # # # # # $ $ $ $ $ % > > > > > > $ > $ > > $ > $ > > > > > > > 1 > > > > $ > > > w t u $ $ 1 w w w w t e w t y w 1 w w w w w w w t e w e e e w w t w t t t e t d w u t u e u e w u w e w w e e e w w w w w w w w w u w w u e u u e u w e u t t w u w w w w w w w w w w w u w w w w w w w w w w w w w 1 > < w 1 < 1 > > > w B f N @.Q ) '.x.x.x..... .......Y m.U.m.M.E.U.E.E.E.E.W.~.R.u.F | u.+.A.&.m l k l f u f t w e 1 > > > % > > > , , , % > > % > > > > > > > > > > w w w w w w > > > w w w u t w w w w w e w w w w 1 w e w e t w w 1 > > 1 u t w w e w w w w e e e w w w w w w w w w u w u f t u > > w > $ > % > > > > > $ # $ > > > > $ > > > > > > > > > > > > > > > > $ > > w u w w y l F F V k l k V B l l g t > $ w w w e w w w w w e w w u t e t t e w 1 > > > > > > < > $ w w w w t t u w t u e w u w e w w w w w > > w t w w f w 1 w w > 1 > > # - > > > > > > > > $ > > > > > > > > w > > w > % > > > > > > w > u w w u u w w w t t t w w w w w w w w w < < < > < > < < 1 > > < < > > , , < > > < > < > < , > < < < , * : - ; ; - # ; ; - - # - > - ; ; ; , , ; - < f l y m m H 9.{ m < - 2 # # * 2 2 2 2 # # ; > > > ; # # # > > $ u y f l f f l V C m l l H M m ' O.V.I.H.%.j.H.H.n.V.l.H.H.I.I.I.I.I.Z.m.K.b.[ m > w w e e e w e e w w w e w e w w t t u f f V f f l l l f t t u y f f l l f y l a } u.{ V V B l f B f t u f a ", -"t > * - # # # $ $ # # # # > $ > # - < w > $ > > > - > - $ $ > # # $ $ $ $ $ $ $ $ # # $ $ $ $ $ $ $ $ $ i $ # $ $ $ $ $ # $ $ > > > > > $ > > $ $ $ $ $ > > , > > > > > , > > > > > $ > > $ > > > > $ $ $ $ $ w > # > 1 w > w > w w > $ $ w w $ > w w w w u w w w e t t w w u t w u w w w w w w w w u w w w w w u t t t t t t w w w w w w w w e w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w < < w w , ; u C r 6 h.+ C.x.j.x.j.....j...j.../ h.E.M.b.K.K.E.E.R.E.E.R.^.0X9.l V k l a l l l f t t t t w w > % > , < > , > > > $ > $ > > > > > > , , , > > > > > > > > > > > > $ $ $ w $ > w w < w w w w w w w w w w t w w w w < w t t t u w > w w w u w w w w < w w w w w w w t e u w w > > > > $ > - > > > > > > > - - > > > $ $ $ > > > > - > > > > , > > > > > > > > > w w w w u l l V k V V V f f y w , < < w w e w w e e e w w w w w e w e e w > > % > 1 1 % > $ > > > w w w w w t t w w e w w > w w w w w w w w u u t u u w > w > w > - > > > > - > > < > < < % $ > < < > , , > < > > > , > , > w w w w w w u u w w w w e t t w > < t t < < w w < t w w < < 1 < > > > < < < , , < , > > > < < < > < < > > > > > > r , ; - - - ; ; ; ; - - - - - 2 - # - # # # = = - > w i i i w > = - $ $ ; # ; # $ - ; ; - - # - # - # - - - = = - > w t t w u l k k l m m l H [ v.h.%.+.k.P.Q.n.h.n.H.H.H.I.I.K.b.0.w.v.8.m w w w e e e w t e w w w w w w w w w e w t t t f f f l l l l f u y t w u f f l f y l f H +.| C l V m f f u f u u ", -"w > > w > > # # # # # # # ; # $ - - $ # $ $ > > > > > > $ $ > > $ $ > $ $ > > $ > $ $ $ # # ; $ # $ $ $ $ $ $ $ $ $ # ; $ $ $ > > > > ; ; ; ; > > > > $ > > > > > , > > , > > $ > > > > > > > > > > > > $ % $ > % < < w w < w w w w w > w > w w w > > > w w w w w t t w w w w w w u w w w w w w w w w w w w w w w u w t e t w u w e e w e u w e w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w < < < < > , B B 3 n.O.+ C.`.l.x.x.j...j.x.j. ./ l.H.T.U.K.M.M.E.R.R.^.^.R.R.+.B V V V l C l u w t t e w w w > > > , > > , > > $ > > > > > > > > > > > > > > , , > > > $ $ $ > > w > > > > w w < < > > w w w w w w w w w > > u t d d t t w w w u u u w w w w w w w < w w w w r w < w > $ > w > $ $ $ > > > > > > > > > > > > > - ; ; ; > > > - > > > > > > - > > > , , > > > > > w > > u B V V C V V f f w $ w w w t t e w w w w w e e e w e t t d t w $ > > % > > 1 > > > > > > > > t t f a u e w w w u u t w w w w y u u w y w w w > > > > > > , > > > > > > > > > > > > > < < > , , < > < > , , > , < > < < w w w < w w w u u t t t w < w < w < < 1 < < < w w w w 1 < < < > > , , > , < , < < > > > > < > > > > > > , > $ < < : : ; ; : * = - ; > > > $ > > > ; $ $ # # - - = # = = # # > # $ # # # # # - # # # # # # - - - - # # # # * * 2 2 # $ # # # y V l m m C l M %.h.%.%.V.H.H.H.n.H.n.m.H.x.Z.t.0.[ O.O.H e $ w w e w w e e w w w w w w w w w > w u t d e e y f B l l l l l f f f y y u f f f f l u ` S.9.L F l f u f y u y ", -"1 > w w < > $ $ # - # $ # # # # - - # , > $ > > > , > - > > # # $ # > > ; > > > $ > > $ # ; - # # $ $ # $ $ # # $ $ - # ; # > > - - - ; ; ; ; ; ; > > > > > > > > > > > > > > > > > > , > > > > > $ $ $ > > > > > < < > < 1 < < < w > w w w w w w > w w w w w u t u w e w w u w u w w u w w w w w w > > < > > w % w w w w % w u u e w u u u r w u w w w w w w w w w w w w < < < w w w w w w w w w w w w w w w w > w < w w , r B r ( V.7 U l.j.z...x.x.....x.l...R j.H.n.n.m.M.M.U.Q.T.R.^.^.^.Z.{ l l l l l y r w w e w w > > $ > > > > > > > > > $ > > > > > > > > > > > > > > , , > > > > > > < > > > > > > > > < > > > w w w w w > > w w w > % > 1 > w w w u u w u w w w w w w w w w w w w w t w w > w > > > $ # $ # $ > > > > , , > - - - - - ; = = ; , , > > - - > - > > > > , > , > > $ > $ > > $ % u V V l f t w % > w u a f y t t w e w w e e w e w w e e t w % 1 % > , > > > > w w $ > $ % w t t f d e w w e w t w w t t t t y w f w w w > > $ w < > > > > > > > > > , < < > > > > > > , , < > < > < > < , , , < < > < < > w 1 t w t t u t t w w w w < 1 < w w < 1 w < < < < > < 1 < > , , < , , , , < > < < > > > , , , > > > > > > ; ; > , , - - - ; : ; ; ; , , , > > - > # - 1 > > w $ i $ > $ $ $ # - ; # - = - # - - # = - - - # # - # # # # # # 2 * * * * * - w y l V V v k &.P.I.n.V.l.x.H.H.n.n.n.l.h.q.' H ' M.w.{ e w w w e e w w w w w f e , > > $ > % $ $ w t a u y f f f l f f l l l f y f f f y f f y y m 9.+.+.L f f f y f y f ", -"> w u w w > > > > > # - > > # # $ $ # # $ > > > , > > > - - > # # # # ; > > > > > $ > > # # # # # # # # # # # # - # - - ; # # > , > > > ; = - ; ; ; - > - > > > - > > > > > > > > > > > > > > > > > > > > > > > > > > > < < < < < > < < w w < < < < < w w w w w w w w w u w u u w u w w w w w w w w < > < > , w w w w w w w w w w w w w w w w u u w e u r w w w w w w < < w w < < < r w w < w w 1 1 < < w < < < < < < < , , y r + R X.U .z...J.j...j...j.....j...@.@.l.H.Q.1X1X!.U.E.U.R.R.W.m.{ l l l l u y w < w w > > > > $ > > > > > > $ > $ > > > > > > > > > > > , , > > > > > , , > > , > > > < > , , > > > > $ > > w w < < 1 < < w w w w > > u w w w u w u u t t t n r w w w w w w w t w w w w w w w w w t < > < > > , > - > - - - - = - ; ; = - - ; > > > > - - - - - > - > > > > > w > $ u u w t t w > w > - # w t f f f f y f t t d e w w e w w e w t t > > $ > , , > % w > > > w > w w u t t t w w e w d f w t t t d t d t > t w w w $ > > , > > > > $ $ $ > - > > > > > , > > > > , , , , > > < > < , , < < w w < < < w w w w t t u u w < < w < w w < < 1 < < 1 < < > > < < > > > , , , , , , , , , < < 1 > > , , , , > > > > , > > - # - : - - ; = ; < ; - - > > > > , - > > > > ; $ $ i > > > $ $ ; ; = * - - * - - - - - # # - # ; - # - # - - - # - # # # 2 * * ; u y l k &.P.H.h.h.#.h.h.M.h.h.w.$.! H H 0 H +.[ F a w w w w w e e e e w 1 1 , ; ; > > > $ $ $ w e u f l l l f l f l V l l l l f y f f l l f f C M { H l k l g f l f ", -"u w w w w w w , > > ; > # > - > > , , ; - r r < < > > - - > > > > # # ; # > > > $ > > > - $ # - # # # > - - $ > - - - - # # # - - > - - - ; - - = ; ; - ; - > - > > > > , > > > > > > > > > > > , , , , , , , , , - , , , , < , > < > > , < < < > , < < w w w u w w w w t u e e w u w w w w w w w w < w < < > w w w w , > > w w w w w w w w t u w u w w w w w w w w w < < < < < 1 1 w w w < < < w < < < 1 < 1 < > < < < , < y N q Q Q 6 ) ..l.x.x.j.j.x.:X..........l.Q.:X3X3X6X6XQ.I.T.R.R.R.{ a l V l y t w < < > > % $ $ > > $ > # # ; > $ > > $ $ $ $ > > > > > > > > > > > > > > , > , , , > > > t t < < > > > % > > > w w 1 < 1 < w t w w w w u w w u w u u w w u w y t w w w w w > u t < < w w w w > < < 1 < , , - , , - - - > ; - # - - ; = - - - # = > > - > - = = - , - - > , < > > $ > w > > , ; = > , < w 1 1 w t a a f f d t t w 1 w w w 1 w w e w t t > 1 % > , , > > > > $ w > u e e y t t w e e w e d t f f t f f f f e w w w > w w > > > > ; > # ; > # > # > # - > > > > > > , < > , , , , < < , , < , > > < < w 1 < < r t y y u t w w 1 1 w < w > 1 > < > 1 < < < < 1 < < > > , < > < > , , , , , < , , , , , > > > , > > , > > > , - , - - , > ; ; ; < < > w w > , w < > > < ; $ > $ $ $ > w ; - - * - # # - * # # - * - - - - : - - * : - - - * = - - # ; # * * 2 # u u F N.n.M.b.w.m.M.w.O.$.! 0 8 m H H H H H m w e w w e w e e w w w > 1 < > , > > > $ w > > > $ u f l f l f f l l k V l l l f f f l f l l V M w.+.m A Z F C z f ", -"w w w w w u t , > > - > - > > > > > , > > - - t t > > # - > - > > > - > - > , > > > - > - > > > $ > > > > > > - - > - > ; ; ; > - > > - > - ; ; ; ; - ; ; ; - ; - - - - $ - - - - - - > ; ; ; ; > > ; > , , - , , , > , , , , , > , , < , , < , , , > > w w w w u w u w u t u e e w w w w w w t w w < r < < < > > < , , < < > > w w w w w w w w w w w w w w w w w w w w w w w w < < w < < w w w w w w < > < w < < 1 1 w < 1 B N 9 ] W + I ..x.j.x.:Xx.x.j.j.j.j.j.l.x.I.,X:XQ.Q.Q.Q.I.I.U.R.e.n k k B l t t < > < > w $ $ $ $ $ > - > > ; > > $ $ > > $ > > > > > , > > > - - , > > > # - - , , > > , - > < w w < < > w w > 1 w w < w < < > < > w w w w u w u w w u u w w u w t w w u w e w w w w w < > , , , - - - - - - - - - > > - ; - - - - - - - - - # - ; - - - = - - - - > > , t > > > > > > > , < > > > > > > 1 w w 1 w t y t u d w w w w w w w w w > t y w w w % > > > $ > > > > w w u w e t f t w w e u y f f y u f f y w w w w w > > > > $ > > > ; - ; ; - ; - ; # ; - - - - > > > , < , , , , , , , < , , , , < , , < w < < r C t u t w < 1 < < 1 < < < < < < 1 1 > > 1 < < < < 1 < < < < < < < < , , < , < < , < , , , , , , , , - - - - , - , , - > , w t < > < > > > < , > > > < w # > > - ; # : ; - - - = = = = - - * # - - - - - - : - : - - * - - - : = = ; ; # - - ; > ; i M { O.t.D.m.v.e.+.' 7.3.~ 8.{ m m l l u > w e e w > w w w w 1 > > > > > > > % $ > > > > % w u f f f y u f B V V V k V B f f y l B V l | ^ ( M M { +.L f w ", -"w w w w w > > > , > > > > > > > > > > > , , ; r y < - > > > - > > > > - - > > > > < , , > > > > - , , , , - - > > - > - ; = - ; > - > - - - > - > - ; ; - = - - - , - > , , - - ; = ; - = = ; > > , > > , , - , , , , , < , , - , , , , , , < , < < > w < < w w w w w w w w w w u w u w 1 < t w w 1 < < w w < < < , , , , , , < < < w w w w w w w w w u w w w w w w w w w < w w < 1 < < w < w w w w w < < w < 1 1 w < > > w t N 7 O.' o ) ..J.x.x.x.l.x.....j.z.j. ./ j.:X,X:X3X>XI.H.n.N.&.m f B B f y y t < , > > $ $ $ $ $ $ > - > - $ > > > > $ > > , , - - > > > > > - > , > > - > > - - , > > , , > > > < < < < < > < < < < < w 1 t < < < w w w u w w w w w w w u w w t < w t 1 w w w w w w , < < , < , , - , - - - > - - - - - - - - = - - # - - - - - # = - = = = - # - , < < , > > > , , > > > > - > > > $ $ , 1 w e t u t t t e > w u w > w w w w > w w > > > % $ > > > $ $ > > w w w w w y y w w t a t f f t f f t w w u w > w w 1 < > > > $ $ ; - # ; ; ; ; > - ; ; ; ; > , , , < , > , , , , , , < < > , , , , , , < 1 1 t r B t t w < < > < > w < < < < < < < < < < , < < > > < > < < > < < , , , , , , , , < , , , , , - , , , < - - - - , , , , , , > ; > < > % > > > > > > > , > , > > ; ; = ; - - - - = - # = - = - * # * = = - - - - * - * - - - - * - = = = - - - * 2 - ; w w m m H +.7.{ m C H q.7.H B l y i i # > 1 e w > w > > w w 1 > > $ > > > $ > > > > > > w w > t f u e f B l l l l V B B f B l V V l n u.w.6 Y O.M.O.B e w ", -"w w w w w > 1 < , > > > - > > > > > > , , > ; : , r t < > < > > > > - > > - - ; > < , > , , > > , , , - , - > - - > > - ; # - ; - - - > > > - > - > ; ; - - : - - - - - - , - - - ; ; ; ; - - ; - - - - - , - , - - , - - , - - , , , , , , , , < < w w < < w w w w w w w u u u u w w w > < < 1 < > < > < , , , , < , , , , - , w t w w w w w w w w w w w w w > < < w w w 1 < > > < > < < w w > w w w < < w > < w w < > < r a M ] 0.~ O I ..x.`.:Xx.x.l.j.z.j.j...j.j...:Xx.*.c.&.*.` n y f f B B B f y u < > > ; > $ $ # $ $ # - > - - > > > > > ; ; ; > - - - - - > > > - - > > - > , - > , , > > , < , , > , > - > , < > > < < > < < 1 < < r w w w r < < t w t w t w < 1 t < < < t < < < < < w t t r , < - - - - - - - , - > - - - - - - - - - - - 2 * * - - = = = = - - - - , t - - , > > > > > > > > > , > $ $ > > $ w t f f f f t w w w w > w w w > w > > w % $ $ > > > $ > > $ > w w w w w f f u w e t t y f f f u 1 u t w < > > w w > < < > > $ $ > ; - = ; ; - # - - ; ; ; , > < > > , , , , , > , - < < , , , , , , , < w < < 1 n t u > t < < > < < < > < < < > 1 < < < < < 1 > > < < < > < > < , > , < , , , , , , , , , , , , , - , , , , , - - , , , > > , , > > > > > > > > , > , > > > > ; ; = = - - - - = - * - = = - - - - = = - * - * - - * - * : - - - = = = * - - ; = = = # ; ; i u l l l l k l m m y k l k u i < w 1 e w w w w w w 1 1 > w > > $ > > > > > > w w t t e u f y w w f l l B B B B B f B V B k F y.b.$.8 X.' _ H u e t ", -"t w w < 1 < w > < > > > > < , , , , > , , > ; ; - - ; # # # > - - ; ; ; ; ; ; ; ; - ; $ ; > > - - > , - > - - > , ; ; ; = = = = - - # = ; ; ; ; - # = # = = - * - - = - = - - - - ; > ; - ; # - - - , - , - - - , , , - - , , , - - - > > > , , , , w < < < w t t < t w u u w w w w w 1 1 < < < < < > > < < , , , , , , < , , , < w w w w < < w w w < w w r t < , w < w < < < < , , > , < < < < > > > < > > 1 > < w w 1 < y g n 9 0 6 + T ..z.x.x.x.l.Q.x.x.z.j.l.x.z...j.x.n d y f f B B B B B l B t w < ; = ; - # $ $ $ $ $ # - $ > > > > > ; ; ; ; - - ; - ; > - - - ; ; - ; - , , - , - - , , , , , > > > > , , , , , < < , < , , < , > > w w w > 1 r t w < w w < < < , > < < 1 , , < < 1 < t t B y < , - - - , , > # $ # - - # - - - - - , - - - - - - * - - = - - - , , , ; - - ; > , , > > - - > > , , > # $ > > > w u d y y t t t w w > > > > w w w w e , - , > > > > > > > > > w w t u y l f t w w w t t d u w w u > % > < < w > > < w < < > > $ > - ; = ; ; - = - - , ; > - > > , , > > > > , < , , , , , , , , , < > > < 1 w t w w w w w w w w 1 t < < < 1 < < < < < < 1 < 1 < < > 1 < < < < < > > < , , , , , , , , , - , , , , , - , - , , > , , , , , , , > > > , > > < > , , , , > > > > > - - - - - - - - # - # # # - - - # - # - * = = - - - - - - : - : - - : - : = ; - - = ; ; ; i i a l m C l V l l l C C l a w w w w e w w > w w > % > > > > > > > > > > > w > > w t u w u w w u f f l l B B l l B B V B k C y.b.e.O.5._ y u f w w ", -"u t u w w w < < , > < < > < , , , > ; , > > > > , ; # ; t w > , - ; ; ; = - - ; ; ; ; ; ; ; - - - - > - > - > - ; - ; = = = = = - - * - - = - - = - # - - : - * - = * - * - - - - # # - - # - - - , - , , - , , - < - , , < , , < , - - - - , , , , > < < > 1 w w < w w w w w 1 w < < < < < < < < < < 1 > < , , , , , , , , , < > w < < < < 1 < < < t t w < w < < < < > 1 > > , , , > , , , , < < < > < , > < < > w w w > t B N [ y.( 9 ) #.j.j.z.z.l.x.J.x.x.x.x.x.x.x.J.'.h B B C V B B B f f l y u w > # - - - ; # # # # $ ; # $ ; - - > > - ; ; ; ; ; ; ; ; - > > - > ; = ; > - > - # , - # - , , , , , > - - - , , , , , , > < , < , < w r t 1 1 < < < < < > < < 1 < < t w > > r n < < t , , - - ; , , - , , - - - - ; - ; > - - , - - - - - - - - - - - # # = - - , ; - - * , t t , , > > > > > > > - - - > > > > < w w w u u u e u t w w w w > > > w w < - - - , > > > > < < , w w w t f f l f t y y f f w d w u w w > w w , > r < > w < > , > > > > ; ; - ; ; = ; - - , ; - - > > , > , > , , < , , , , , , , < , , , > < < w w t w u w u w w < w w < w < 1 t w w < > < w w t w < < w w w 1 1 < < < < , < , < , < , , , , < < < , , , , , , - < , , , , , , , , > > < < , < , > , , , , , > > , > > - - - - # - - - - - - - # # - - - - # - - = - * * - - - = ; - : - - = = ; ; = = = = ; = ; i e l m C l k V V l k H C a w w w w w w w w > $ $ > > $ w > > > > $ > > > % > > $ > > w w > w u y f l l f l l l l B l V V l l ` t.b.O.M y u w w u ", -"u u u t u w w > < < w 1 w > < , , , ; , > > , , > ; ; ; r n , - - - ; ; ; = = = = = : = - # - > > > > - , , - > - - - = = = = = - - : - - = = = - - - - - : - * - = - = = - - - - - # - > - # - - - - - - - - , - - , , , , , , , , , , , , , , < , > < < > < < t < 1 w t < < t t < w 1 < , < 1 > < < > > , , , , , , , , < , , > > , < > > < < < < > 1 < < < > < < < < < < w 1 < < , < < , , , > < > < < w t w w w w < u y F ( G.[.+ 9 R j.j.j.j.j.z.j.x.x.x.x.j.j.x.x.:X(.4 g C B V B B B B B f u w > # - - - - - = ; # # # # - $ - , > > ; = ; ; ; ; ; ; ; ; ; ; ; # ; ; = ; > - - - - - - - - - - , , - - - - - < , , < , , , , , , , , , , > , < < < < < < < < > < < < < > > > < < < , < < , - : - ; ; - , , ; - # - - - # ; = ; ; = - - - - = * * - - - # # , ; = = : : - > t w : - - - > > - > > > > - > > > > > > , < w w u u u y u w > > > > > # , , - , , , > > > > < > < w w w e t t y t w t t r w > w w u w w w e w < < , , > w < > , < , , > > # ; ; ; ; - ; ; - - - > > - > , , , , , < - , , , , , , , , , , , < < < t < < w w t w w w < < < w t < t w w 1 > < w w < w w w t t t w w w t < < < < < < < , < , , , < < , , , , > - > - , < < , , , , , , , , , , > , , , > < , , , > > , , - > > , - , - - - - - - - - - - - - - - - - = = = = - = = ; ; ; ; ; - ; ; ; ; ; ; - - # = ; ; w i u l C L m l l C C M C e w w w w w w > > > > > > > > $ > > > > > $ > > > > > > > > $ ; ; > u a f l f f B l l l l C m k y l n y.F.{ u u u w w u ", -"w w w u e e u u u u u w t u w r , , , w , , > > > > > - * * r y > ; ; ; ; ; = = - - - - - - - # - - ; ; - - - - - - - = = - - = - - - - - - - - - - - - - - - - - : - - - = = = - $ $ ; # # # $ - , , - , - - - - - , , < , - , , , , , , , , , < , , < > < 1 1 < < < < < t < < < < < < , 1 < < > > < < < , , , , , , , , , , , , , , , < , < > < < < > , , < < w w t , < < < < , < < < < < , < < 1 w w < w < < < < 1 w u f } B.y.+ 6 6 R ....z.z.j.j.......z.x.` n ` *.*.G B B B B B f B B f f t w - - - - - - - - = ; ; # # - - - > - - > # - - ; ; ; ; ; ; ; ; ; ; ; ; - ; = - - - - , - - - , , - - , , - - - - , , , , , , > > , , , , < < < , < , < t e e t < t 1 < > < > < , - - - < - : : ; < ; ; ; - - # - # # * # # # $ ; = # - = = - - - - : * - = - * - # - # # ; , t , = * - - - - - # > - - - - - - - - - > > < w > < w w w > > > > > > ; , ; - = > - - < > , < > < w w w w w u t t t t w < < w < w w w > w t w < > < , > w u < < > , , , > > > - - - > > - - - - - - - > - - - , , , , , , , , , , , > > , < < > < w < < < < w < t t < t w t < r < t t w < t t < r t t w w w < < < < < 1 > < < > < < < , , < , < - ; ; ; > - - > - > , , , - , , , , , , , , , , , > > > , , , , - - - - - - - - , - , , - - - - - - - - : - - * : - = = = = = = ; - ; ; ; > > - > > # - - - - - # ; ; ; i i l m 8 0 H m m H N y u w > w < w w > > > , , > , , > > > > > > > > > > > > > > > > > > < u u y f y y l n l l B { ' H +.` L B.y.y p r w e u u ", -"w u w u w w u u u w u t u u t t u u u w < > < < > > > > ; = * - ; ; - ; ; ; ; - - - - - - # - - - , - , - - - - - - - * - = = = - - 2 - - - - 2 - - - - - - - - * : * - - = = = - - # - - - - - - - - - > - - - - , - , , , , , , , , < , , < < < > > < > < < < t e < < t t e < r 1 < < 1 1 < > < < , < , > , , , , , , , - - , < < < , , , , , , , , , , , , , > > < , < , , < < < r w < < < < < 1 1 1 < t w < < r r w y f | B..._ ( I ..j.....I ......I ..x.J.` e y B f f B B B B B f B B f u w > - , ; = - * = = - = ; - # # - > > - - > - ; - ; ; ; ; ; ; ; - - - - - : - ; : = ; > - - # - , , - - - - - - - , , , , , , , , , , , < < < < < > < < < t < < < < < 1 t 1 < > < , , , - < , ; ; - - - - - - - # # - # = w f t y y w = - * # - * - - * - # * # = = = - ; < w : * * - ; : - # - # $ # - ; > - - - > - - < 1 < 1 w < < > > , , > > > > , , - - ; - , , , , < > < > w u w w u t y w < t w t t , < < w w r < , < w > > > > < > < < > , - , - > > - > - - , , , - - , , - - , - , , , , , , , , , , , , > > , , , < > < < < < < 1 1 t w w t t w t < t 1 t < 1 w t t < < t < t < < < < < < < < < < < w < < < > < 1 < , ; ; ; - - > > - , , , - - , , , , , < , < , , , , , , , , , , , - , - , , - - > - - - - - - - - # - - - - : : - = - - - - - = > - - ; ; > > - - - # , - - , , - - , , - - , n H 6 8 H ' ' 0 m a w i w < w w w > > > > , , > , < > > , , > > > > > > , > > > > < < > w u y u u y B l l F t.O.[ e.M f M r w w w w e t t ", -"t u u t y t u u u u u y u y f f f f y f t u t w > ; ; ; > ; - - = ; ; ; ; - - - = - - - - - - - # - - , , , - - - - : - - - - = 2 - - - - 2 - - 2 # # - 2 - - = * * : - = = = = = - - - - - - - - ; - - - - ; ; ; , ; , , , , , , , , > , , , < > < 1 < < < < w < < < < , t e < < 1 w 1 < 1 < < < < , < , > , , , , , , , , , > , , , , , - , , , , , , < < < , < , < < < < < , 1 1 < w w 1 < < < < < > < 1 < 1 < w w w y f &.{ < /.'.@ ..x.x.j. ... .I j.l.x.J.*._ ` m B C V V B B l B B f w w > - - # # = # - = = = = - # - # ; - > - > > > - ; ; - > ; ; ; ; - - : : - - - : - = > - # - , - - - , , , - , - - - - - , - ; , ; , , , < , < , < > , t 1 t t t t < < < < < > < 1 < < , < , > , ; - # - # = - - - # > t w y y y r t w # # - # - # - # * # = - * = = = = : * 2 * # ; - ; - - - - - - - - - - - - - - , 1 < < , > > - > , ; ; - - - - - - - = - - > - , , , > < < w w w w w w w t , t t > > > > < t w w w 1 w < < < > > > , < > 1 > < > > - - - - - - - - - - , - , - - , - - - , , - - , , , , , , , , , , , < < w w < 1 1 t < < < w < 1 > < < < < t t < t t w w < t t < < t t < t w w < w 1 w 1 1 < < < < > > > , , ; > > - > > > > - > > > < , , , , , - - , , , , , < , , , , - - ; ; ; - - - - - - - - - - # # ; > - # - - - - - - - - ; = - - - - # - - - > > - - - - - - - , - - - , - , 1 ` ' 9 9 8 T N u a w $ w w 1 > > > > , , , > > > > > > , , > > > > > > > > w < > > < w w r u y f f f l m N.b.M.t.' y w > t r r u y y y y ", -"l B B B B B B B f f f f f y t y t y y y t e u > > ; ; - - - # ; ; ; ; ; ; - - - - - - - - , - - - - - - - - - - - : * - - - - - - - - # # 2 - - - # 2 = 2 - = = * * - - - - - = = = * - - - - - ; ; - - ; - ; ; ; - = ; , - , , , , < < , ; ; ; , < > < , , > 1 1 < < < < 1 t < < 1 1 < < < < < < < , < , > , , , , , , , , , , , - - - - > > > - , , , , , , , , , < > < 1 , , < < < < < < < < < < < < < < < 1 < > < w f y {._.F pX5XI I j.j.z.x.j.I ..x.x.x.x.C.z.&.F B l l l l B B f y u > > > > - - = = - - = = - - # - - - - - # - > - # ; > > - - - - - - * * - - - - - - - - - - - - - - - - , - , , - - - - - > - - ; = = - ; ; , , < , , > < < w < < < < t t < < , , < , , , > > > > > ; ; > $ # # ; > < < < w = * 2 * * * = w > - ; - = # * - # > > ; = = = - * : # = # 2 * * * - * - - * - # # - - - - , , > , - - - * - - - = - ; - - - - = = - - , , , , , , < w w w w w w w w w , ; ; > > > % < < , , < > w w w < < > < > > w > , , > > # = - ; - - - - > - , - # - , - , - - - - - , , , , , , , , , , , < < > y y < > > > < < < < < < > > < > < < < t w < r t < < 1 1 < t < w w < t < t w 1 < < < 1 < < < 1 < < > > > > > > > > - > > > > > , , , < , , , , - > - , - - , > , - - > ; ; ; ; - - ; # # - - = = ; = ; - ; - : - * - - - - - # - - - - - - - - > - , - - - - , , - - - - - - , , , C N O 9 8 8 m e w w e w > > > > > > , , , > > > < > < , > > > > > > , < > t e < < w w w y f f B l l f { m.U.m.+.y u y f l B B V l B l l ", -"l B f B B V B n B B B B f y u u u e w > # > ; = ; # - - - - ; - = = ; ; t t ; = - - - - - - - - - - - - - - - - - * : - - - - = - - - # - - # - - 2 = * * - * & * * 2 * = = = = = = - - - : - - = = - # = - * = = - - - - , > > , , < < ; : ; ; , < > < , < < < w < t < < t < < < r w < < 1 t < < < < < , , < ; ; < , > - - - - , - # # > - - > ; - ; - > , > , < < < > , , , - > > > > > % w w < 1 < < , > , < < < < < l B }.1.s.PXJX'...z...I x.j.j.`.2X,X`.x.*.F C V B l l B B f f f w w > > - - - - - - - - = = - = = = - - - - - - - - - - - - - - - - - - : : : - : - * - : : - - - - - - , - - - : - - - - > ; - - - - - - - - ; ; , , , > > > , > < > > , > < < < < , , , , > > > > > # > > # ; > # > # > ; * * - = ; = # - : ; # - - = - - = # - < < ; - - - - - - = - - - = - - - # - - - - * - - - - ; ; - = - # # - : = - - : - - - = - * * * - - , - < < , < < t < w w > t u w r i r : , , , < < < w w w w w w w r , , , > ; ; ; ; ; - - - - - > - - > - - - - - , # - # - , , - > - - - > , , < , , , , < < r t y < < > % > < 1 < < 1 w w > < > > < < < 1 < w < < < w < > w w < < 1 1 < 1 w t < < w 1 > < < < > > , > , > > > > > > > > > > > - , , , < , , - - - - - , - , - # - - - - ; = ; - > ; ; - # # - = ; # = = - - - - - - - - - - - - - - - - - - - - > # - , , , - , , , , , - - - - , i i N 9 N m u i $ w u e w 1 < , > > , , , > > , , , > > > > > - > , , > , > < < > > < < y f y y y C _ { M.e.{ m g B V k l l l V V V V B ", -"f f f f f f F | m f B y t t w w w w , - - - - * = - # - - - - - - - - , - , , - - - - : - - - - - - - - - - - - : : - * : - - = - - - - - = - = 2 * * & * * * * * - * - - - * = = = = = * - - - - - - # - * # - = = ; # - - > ; ; - , - , , , , > > < < , < < < < < < < < t < t 1 t < < < 1 < > > > > < < > < , - - > - > - > - - > , > > - - - - ; ; # - - > - < , , , , > , > < > < > < > w > > 1 < < < < 1 < > < > w f B L F _.PXPXyX'.j.I ..x.`.:X,Xx.x.x...B B B B l l l l l B f u w > w , - - - - = - = - = - * - - - - - - - - - - - - - - # # - - - - - - - - - * - - - - - - = = - - - = ; = - - * - - # - # # - # - - = ; ; > > > > # > , - , , , , < > > > , , , , > , , > > , > > > > > > > > , - - - = = ; ; - - - = = * 2 # # # - ; - ; # # - * * * : - - - 2 = * - = ; - - - * - - - - = * = * - - # = = - - = = 2 = = = = 2 = 2 - - - - - > - - - , , , , w t w t w t w w w w : ; : , , < < w w w r r r r , ; ; ; ; ; ; ; ; ; ; ; = - - - - - - - - # # - - - ; , # - - , , < > - - - - - < - < , , , , , , ; - > > > < < 1 < 1 > > > < 1 < > > < < > < 1 < < < < < > > > > < 1 < w 1 > < w < w w w < > > < < > > , > > > > > > > > , > , > > - , , , , , , - > , - > , - - - # # ; ; ; - - - - - - # * # # # - - # = - # # - - : - - - - - - - - : - - ; ; ; , , > - - , - - - - - > - , , - 1 , w n n m B < , < w t t w , , - , , , - - > > > > , > > > # - , , , > , > > > > > > < < r u f n | +.e.$.e.' u f B f f f l l l f f f f f ", -"y t y y t f B F B y t < < , ; * - - , ; = = - - - - = * = ; - - - - - - = = - - - - - - - - - - - 2 - - - - - - - * * - : - - - - - - - = - - - - - * - * = = = * & * & 2 - = = - = = = - - # * - - - # # - # - = = - # - - ; - - > , , > > > , > > > > < < 1 w 1 < < t < t < < < 1 < < t > < > > > > > > < > , , > > > > > > - > - - - > ; # - - = # $ $ > - > > $ > > > > > > > < > < > > > > > < < 1 , < < < w t < t f M + | %XPXUX[.x.z.....z.z.x.:Xx.j.z.*.B B n y n B B f B B f w w w < > - - - - = = = = : - - * - 2 - - # - - - - - : - > $ ; - > - - > - - - - - - - - - - - = = - - 2 - - ; # - - * # # * - * # * - - = = - > > > $ - > > > , < < , , < ; ; , , , > > > > > > > > > > > > , , ; ; ; ; ; ; ; = ; - - - - - - - - - : ; - - - ; ; - * * * * = * * - - - : - 2 - * * - - - : * = - - - - - = = = = * = * = * * 2 2 = - - - - - - - ; , , > < < < w t w u w w w > w w ; , r r w w t t w u w w ; : ; ; ; : : , , ; ; ; ; ; ; = = = - - - # - # # - # - # - , - > , - , > - > > - > , , , - ; , , , > , ; ; > < < < < < < < > > , , < > < > 1 < 1 < < < < < , > > > > < > > > < < < w w < < w < < < < > > > > > , > > > , , > > > > > , > > > - , , , , > - > > - - > , - - > ; = - > > # - # # - - - ; - - - - = # # # # = - - - = # ; = = - - - # - - - - - - - # , - , - ; ; , - - - - - > < > , < , > < < w r w < - , - - - - , - > > > , - - - - , - - > , > > > > > > > < < < r C M N R X.m.[ F C n f f y f f f f f y y y y u ", -"t t w e u w 1 , ; , ; ; , ; - - - - > - ; ; ; = = = = = = - - - - - - - - - # - - # # - - - ; - - - - - - - - - - - - - - - - - - - - - - - - * : * = 2 = * * - * 2 & - 2 = = = = = = = - - - # # - - # # = - - - # - ; - > ; - - $ > > > > > > > > > , < 1 < < < < 1 t t < < < < < 1 < > < < < < , < > > > > > > > > > > > # ; > # - - # - # - - = # ; ; - - > $ > > > - > > > > , > , > > > > % > , > , < t t t w < u C 3 ) z.A.PXDX[.'.x.j.I z...x.,Xx...#.` f l f B f f B B B f f u u < < , - # # 2 = : - - - : * - * - * - - - - - - # - ; > # ; - - # $ # # # - - - * * - * - * = = - - - * - * 2 # * # # # - # # * - - - : - - $ ; $ # > - - ; > , , > , ; ; ; ; ; - ; > , , > > > > , , , > > ; ; = = = = ; = ; - : : = = - - - : - * * * * - : * * * * * = * * * * * * * * : - = - - - - * = = = ; # * * - = = = = = - * * * * - * & : : & - - - - - - < > < , t u w w w w w u w w w w r r r t t t u w r r r < , : < r r , ; ; : ; ; ; ; = = = = = * # - - # # - # # # - - # # - # - # - > - > > > > , , , > , < , > > > > < 1 < < e 1 > $ , ; ; > , > > < > < , < , , < > > > > > < < > < > > > < w 1 > > , < > > < > > > > > > , , > > > > > > > > - > > - , , - - > - - - - - > - > > - ; ; - > , ; - # # - - # - # * = = = # # - = * - - ; ; ; ; # # # # - # ; ; - - - # - # - - - - = ; - - - , 1 < < < , , , < , > > > , - - - , - - - - - > > , > - - - , - - , - , , , > > > > > < w d C ' ] 5 O.e.w.H a a u t y t y t t t t t w w w u ", -"> < > ; ; ; ; : - - - = - - - - - - - - ; > ; = = = = = - - - - - - , - - - - $ - $ , < > ; ; ; < - - - - - * - * - : - # * - - - - - - = - - * * - - - 2 - - 2 2 - 2 - = = = = * * * = 2 = - - - - - - - ; # # - # ; ; - > $ - > ; > > > ; > > > > > < < > > > > w 1 w w 1 < < < 1 1 > > > < 1 , , , > , > > > , , - - $ - ; > - - > - - - - - # - # ; - > - ; - , , > > > > > - , > $ > ; ; > > < > < < < t w t > < t C o + '.5XPXqX .x.x.j...x.x.`.z.*._ M < B n y B B B B B B f y t w > < , - - - - 2 * * * - * - * - * - - - - - = - - # - - - - - # - # - # - - - - - = * & * 2 * - = = - - : - * # - # * * - - * * * * : - > > - - ; > # - , , ; ; ; ; < < < ; ; ; ; ; ; ; w r < , < < , : , ; ; ; = = = = = - * * * * r = : * * - * * * * - * * * * * * * * * * * * * * * * * & * * * * * * = = ; # * * * - - - 2 * * * & & & * * 2 2 - - 2 - # - , > - 1 > < < t w w $ > e w d t u u t t u u r r w w w u t w , , r r y t t r ; ; < ; < ; = - - - = = # # - - - # # ; - - > - - - - - ; ; , , < < , , , , < , , , > , , > < < < < < < 1 > > , ; ; , < > < > < < > < , , > < < > < > > > > < < > > > > w < w w > > > > % > > > > > > > > , , , - > - - > > - > > > > > ; > - > > - , - $ > > > ; - - > $ # > - # - ; - # # = = = - - - - = - - - # - - - - - - - > > # # $ $ > > # # , - - - : , , - - , t t r < < , - - , ; - - - , - - - - - , - - , - - - > > > - , - > - , - - , - , > > w F M T T R w.Z.B.m t w e t y y y y y t w w > < > < ", -"> < > - - * = - - > $ ; ; ; - - - - - - > > - ; - - - ; ; - ; - , # - > - - - - - - - ; ; ; ; ; - * - - # - - * - - - = - - - * - - - = = = = = * = = = = = # * - - = 2 - = = = # ; - - # - # - - # - - # - - # - - - , - - > - - - > > > > > , < > > < > < > % > w w w w w w < > > > > < < < 1 , ; ; > > > > > > - - - > - - - - - # - - - # - - - # - # - # > - > , > > , - # # - , < > > < < < < < < < w t < < < w t B + @ ) [.UX{./.l.l...j.j.z...3 h h B B B f f B B B f B B f y u w < < , - - - - 2 2 - - 2 * - - * * - - = = 2 = - - - - - - = = = = = - - 2 = - : & * * = * * 2 * - - - - : - * - - * * - - * - * * : : * - > > > ; $ ; > - - ; ; ; ; ; ; , r r < r r w , w < < , , ; ; ; ; ; ; = ; = = = = : : * = : * * * * * * : * * * * * * : : : * * * * * * * * : * * * * * = * * = = # ; ; = * * * * : * * 2 * & * & & * * 2 = = & = - - - , > < r r ; w > < w r w w w > w r t u y y u < w r w w w t < , ; r y B C y y , , ; ; ; = = = - - = = = - - - # - = ; - > ; = - ; ; ; , r r y t r , , ; , r , , , ; ; , > > < < < < < > $ > < ; ; ; , < , , , < , , > < < > > , > , > > < < < > > , , > > < < > w > > w w > w w w > , > , , , , , ; ; > , , > > > > > - - , > - > , - > - # - # - - $ > > - - - # - - - - ; - = - - > # # ; $ - > > # - - - - - - $ $ # > # > > > # - - - - - = ; ; ; ; < < w y t t , , < , , - , , - - - - - , , , - - > - - # , - - , - - , - , , , < , t F { ] O.Q Y ] +.H r w t u u u u t t y t w w < < w < ", -"> > ; - # # ; = - - - - ; ; ; - - - - - - - - # - - - ; = ; - # - - - - - - - - : : - * - : - ; - : = ; = # # # # # * # - * - * = = = 2 = = = = # * - = = = * - = = = = = = = = # # - - - - - - # - > # - > - - > - > , - - - > > > > > > - , , > > < > > > > > w w w > < w w w > $ > > > > < < , , > > > > > > , > > - - - # ; - # - - # - = = ; = = - # - - # > - > > > > > - - - > < > < , - > > < , > w < < < r w f : N ( o.B.]. .I . .I ..j.I I 3 B B B B B B B B B B f B f f y y w > > , - - 2 - 2 2 2 2 2 - * - * - & - - = - * = & - - - # = = = 2 * * - - - - - & 2 * 2 2 2 * * * - * - * = * * - - - - - - * - : : * * * - - - ; ; ; - , , ; ; ; ; ; ; i i ; : ; < : : : : ; : ; , , ; ; ; ; ; : : = = = : : * - = = * * * * * X * = * * * = , r ; : : * ; ; * * * * * * = * * * - : * * * = * * * * * * * * * * * * * * * & 2 = = = 2 - = - - > > w , : - w , ; # r r r w r , ; > , , r r , ; < w r r , , , ; r w y C r r m n w ; ; ; ; = - # * = * * * * * - : : - ; = ; ; ; , w u t y t w w r , r w w , , < ; ; , , > < 1 < < < < $ > , ; ; ; , , > > > > > > > > > > > > > > , > , , , > < < < , , , < > > > > > > > > > > > < > , ; ; < , , , , , , , ; ; > ; ; - , - > - - - > > > > > ; - - $ # # > > - - $ - ; ; - - - - > - > $ - - - - $ - > - # > - > - > > $ - - > - - > - - - ; ; - ; ; ; w t t t y t w , 1 < , - - - - , - - , - - , , - - , - - - , - - - , , , < < < y C n M H { [ ! ( N u e u t y t u u e w w w w w < < , > ", -"r w w , ; # - : : = = = - - - - - - - - - > - - - - - - ; ; ; ; $ - - - - - - - : : : - - - ; ; - - - = = # = ; ; ; : - - - - - = = = = - - = = - # - - * - - - = = = = = = = = - - - - - # - # - - # - - - # - - > , - - - > - > , > > > > > , > < < > 1 > w w w w w w < w w > > > > > > > > > > > > , > > > , , - > - - - - = ; - ; = ; = = = ; ; ; ; ; - = ; - > > > > , - > > > - # > , > > < > > > < < 1 < < , < n N + &.{.%.N.z.+ I ........z.z._ n B B h B B B f f B B B f y y u w w > , - , - - 2 - - - - 2 2 = * * * - & - - * - * - - - - = 2 - 2 2 2 - - = 2 & & 2 & 2 2 & * * - - - = = = = - - - - - - : * : & * * * : * * * - : = - ; ; : : : : ; < ; ; ; < < , < ; r < ; ; , < > , < , , : : = = * * - * : : ; : - * * : * : = = * : : ; r t r , ; , ; * * * * * * * * : : * * * = = = * * * * : * * * * * * & * * * * * = * 2 * - = - > , ; w - < , , - ; : = : n = * ; : ; = = - * * ; < ; ; ; ; ; , ; ; = ; ; : ; r N r ; ; ; ; ; = = = - * * * : - - - * : - : ; ; ; < w t t y y y f y y y l y y y r , , , , , ; > > > > , w > > , ; ; ; ; ; > > > > > > > > > > > ; ; ; , , > > > , , , < r < : , , < < > < 1 w > > > < > < , ; ; ; ; ; ; ; ; , , ; ; ; ; = ; , > - - > - > - > > > - $ > - > - - - > > > # $ > > - - # > - - - $ # # # # > > # > - - $ > - # - - > > - > - - - - # - > , , < w < u y f B B n 1 , - , , - - - - - - - - - - - > ; ; , , - , , > - - - > - ; f t w t n m n M u e u w w t t t t t t u u u w w w w t t ", -"l a y r - # - - = = = : : - - * - - - : - - - > , - - > ; ; ; - - - ; - - - - - - - - - - * - = - - # * * - - ; - ; # # - * * # = = = = - = = = - - - # # - - * = = = = = = = = - - # - - > - > > - > - - - > > > - > - > - - > > > > > > > > , > < > > > > w w w w w > < < w > $ $ > > > < > , > , > > > > > - > - - # - # # - # - = # = = = = = = = = = ; = ; - - > > > - - > > > , < > > > > > $ ; $ > , , < , , < r m . ) GX&.U %...I j...j. .z.l.j...*._ h B f B f B B B f f f y u w w > > - - - - - - - 2 2 2 = = - - - & 2 & - * - & & - = = = 2 * * 2 * 2 = * * & * 2 2 * - 2 & : * - = = = = * - * - * * * - - : * * * * * * = - = = = = = : ; ; : : : : ; ; ; ; ; ; ; ; ; < < < , < , , , ; ; ; ; = # - - 2 * - - : : ; ; = - : : = * = = ; , , - ; ; < ; * : * * * * * : * * * * * = = = = - * * * * * * * X * & * & * 2 = * - : = - ; , w : : : : - ; ; ; : X * - * * : = = = = ; ; ; ; ; ; ; ; ; ; ; = - : - * * * * * ; = ; ; = - * : : * * - * * - * - = ; ; ; ; r t y t u y f y y l f l f f f t r < < ; ; ; > < < > > > > , ; ; ; ; ; ; ; ; ; ; ; > > > > > > , ; : ; ; ; ; : ; ; ; ; : ; ; , , , < w < w w w w 1 < < < , ; : , ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; > - - , - - > > > # > > > > - > - > > # > > - > > - - - > - $ - > $ - > - > - - , , > > > > > > > , - > > > > - ; , , , > , < w t d y B B t 1 , - , , , , , , , , - , , - - > ; , - - - - - # - # - = , t > u f m m s a u u u u u t t t u u u u u t f u f f B B ", -"l f t > # # - - - - - : : - - - * - - - - - - ; ; - - - ; ; - > - - - : : : - - - - - - = # # # = = # * # - * # - - = = - # - - - - - # # # - - - - # $ # # - - - - - - - = = = - - # # # - # , - - , - > > - > - - > > > > > - > > > > > > > , < > > > > > > w w > > w w < w % $ > > < , , , , < > > > - > - - - - - - ; = = = - # * - # # # # # - # # ; = = ; > # - $ - # - # - > - > > > > > $ $ ; ; , , , , , < f G 3 @ + _ ..z.z. ...l.j.....x.x.J.x.l._ B B B f B f B f B n f y y t w w w - - - * - - 2 - 2 2 = = - 2 2 2 * 2 - * - * - * - - * * - 2 & - - * - * * & 2 2 & & * * = = - - - * = * = = * * * - * : * * * - : * * * * = = : ; ; ; = = ; ; : ; : ; ; ; < , : ; r < < < , , > > > , > > - ; - - - = = = = : ; ; ; = ; : ; = = * - = : * = < , - - : = * : * : : - * * * * - * X X * * : * * & * * & * & & * * * & * * & * * - : ; * : ; : * : * = ; : = - * : - - = = = = = ; ; ; ; ; ; ; ; ; ; ; = = : = : : = ; ; = ; = = = - - * : * * * - - - - ; w w ; ; , < r w u t y f y f y y u u y y u y y u r w < < , < r < , , ; : ; ; ; ; ; ; : ; ; ; ; ; ; ; > > > - ; ; ; ; ; ; ; ; ; ; ; ; ; ; , : : r : < , , > < < < < < < ; < ; ; ; ; ; ; ; ; ; ; , ; ; ; ; ; ; > > > > , > > > > > > - > - - > > > > # > > - > - > > > > - - - > - > - > > > - > > > > > > > , > > > - > , > - , , , , , - < w w t e e e t t < , ; ; ; - > , > - , - - ; ; ; - - # - - - # # - > # = > w < V l u a f y u u u t t t t t u t e u e u u t y f l l ", -"e t < ; - # # * = = : - * - * * - - * - - - - ; - > # - ; ; # # = : - # - : ; : : - - * = = = * = = = # - = = - # # - - - > - # - - - > - - - ; # , - - - - # - - # - - - = - 2 * - - - - # - # - > - > > > - > - > > > - > - > - > > > > > , < < < > < < < 1 w w w w > w w w > $ > > , , , , > , , - > - > - > > > # > # = = = - * # # = = = - * - = = - - - - - - # - # - - - > > - > - > - > $ > > ; , , < , < r f n @ @ + &._ ..j.I I I ...j.j.x.x.z._ m B B f B f B f f B f f f y f f y y d B r , - - - 2 2 2 2 = 2 2 - * 2 * 2 2 2 - - : * * & - - - - 2 * : - * - * = * - - - - 2 * - = - - = = - = ; < ; - : * - * * * - - : * : = = i : ; ; : ; ; = : ; ; ; ; ; ; < ; : , r : ; ; < , > , - > - > ; > ; = = = ; ; ; : = ; ; : : : = = - ; ; ; = t t : : i : = = = * : - * * * : * * * * * * * * * * - * & & * * * * * & * * : - : ; ; : ; ; * : : = : * * * * : * * - = = = = = = = = - ; ; = = : = = = = = = = - = = = = = = = * - * * * * : * : * - - ; w t w , ; r w u t u y y y y y y u u u w < , , > ; w < , ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; = = = = = = : - - ; - ; ; ; ; = = ; ; ; , , ; : ; : ; ; ; ; ; ; ; , , > , > > ; , r , < < < : < ; : , ; : ; ; ; ; ; ; > > > ; - > - > > - > > > > > > - > < > > # > > > > - > > > > > > > > > > > > > > , , > > > > , > > > - ; - - - , , , , > , , w w < , < < t t t w ; ; = - - - ; - - - - ; = # - ; - > # - $ > > > # - t w w l a u f f y u u u y y a t y t t u u u t u u u y u y ", -"e e > > > - - - 2 - - - * - * * * - * = - - - - - - - - - > # $ - - - * - : : - : - - - * - - - = = - - * - # # ; ; - - # - - - # - - # # - # - - # - , , - , - - - - - - - = = - - - # - - # - > > > - - - > > > > > > > > > > > > , , < > , < > > > , , < > > > w w > w > w > > > < , , , , > > > - $ > , > - $ # - ; ; - = ; ; - - - - * = : : : * * - - - - - - - # # # # # # - - > - # $ - > ; ; ; ; , < , < < n 3 @ @ &.IX*._ z.I I .I j.j....._ C B f l B f f B f B f B l f f f f f f y y f B B B h 1 - - - = = * 2 2 * 2 2 2 & 2 2 * 2 & & 2 * - - - - - - - - - * - : - : - : - - ; ; < < - * * * ; r ; * * * * * * - - : : - = = ; = = * = = = = : = ; ; ; ; = ; ; , ; ; ; ; < ; ; , - - , < > > < , $ ; ; ; ; ; ; : = = = = = = = ; = ; ; = ; : * * * : ; = * = = = - - * - * * * * * = * * * : * * * & * * * * * * & * * * = - * - * ; , ; : * - - * * * * * : * - - = = - = = = = = = - = = = - - - = = = = = = = = - = = = = = = - - - * * - * - * : * : , r w r w w w w w w u y u f d.(.C V y t t w < , , ; < < ; : ; < : ; : , ; ; - ; ; : ; = = = = = = : : = = = : : = ; ; ; = ; ; , , ; ; : ; : : ; ; ; ; , < < < > < > ; ; ; < < < r < r ; ; ; r < r ; r : ; : , , , < > , , > > > > > > > > > > > > > < , > - - , > > > - > > > > > > > > > > > > > > > w < < < > > > $ > > < , , , , , , , , > = = = > w u d r ; ; ; ; > - ; - - , - - - # - - # - - - > , > > - t w > w u e u f y y u t f y f f y y f y u u y t t u y u t u ", -"w $ ; - , , ; > - * - - * * * : * - : = = : - - - - $ # - - - - - * * - - - ; - * - - - * - - - = = # ; # - # - - # ; , > - - - , - - > $ - # - - , # - # - # - # , - - - - - - - - - - # - # - , ; > - # - > - - > > > > > , , > > > > > > > < < > w w > > > > < w > < w < > > > > , , , , , > , > > > - - - > ; ; > ; ; # = = - = # ; : * * * * * * * * - # # - - - - - - - - - - > - # - - > - > , , < , < < < < C 3 + @ *.IXc.I ..I j.j........._ n f h f f B B B B B f B y B B y y f f f f f t d B t d B h y y w < < < ; - ; < < - - - - - - - 1 < , , 1 1 , , , ; - - - * * * 2 & & * * * & & * & & & : : ; : * * * - * - - - ; ; ; = = = * = = = = = ; = ; ; ; ; = = ; ; ; ; < : < , ; < t 1 w w > > > > , , , ; ; ; ; ; ; ; ; ; ; = = ; : ; > r ; : - : r : * = = = * : * * * : : = = * * - : ; : * * * * - : : * * & * * X * : : * : * * = ; : & * * * * * * * * * * * # - = - - = = = = = - = = = - - - = = ; # = = = = = = = = = = = * : * * * * * * - * * : ; ; ; r r r u u w w w u u V |.kXoXg.t y t u u < < , ; r : , ; ; < , , : ; ; ; ; ; : : : = = = = = = = : = : = = : ; ; ; = ; , ; ; ; : , : w , < < , , > , > , , > < , ; ; ; ; ; ; ; ; ; < ; ; ; ; ; ; , : , , ; ; , , > - , , , , > - - , - , , - - - , > > > > > > > > > > > > > > > , , , , , < w w > > > < > > > > , , , < , , < < , , - > , , , > , < t t , , , > ; - > - - - - # - - - # - - $ - > > - - t y ; < t t y f f f y u u u f f f f y y y y a u e t t u y y u ", -"2 2 * = - , , - # = 2 = & - - * * - - = - - - - $ $ # - # - - - * * - * - - - - - * - * - # - * # # - - - - # - # - # - - , > , > # # , > $ # # - - - > > - - - # - - - - # - - - - # - $ - # , - = ; ; > - > - , > > > > > , , > < > < > > > < > > w w w w > > > > > < < , > > > > , > , , , , > - > - - - - - > > - - = = = = = ; ; - : * * * - * - * - - * - = - - - - - - - # - - ; = ; - - - > - , < , < < < w B M + @ ..FXI + . ... .......z.*.t f f B B f f B l f B B y f B f f f f f f f y y u u t u y y u t t t f y f d B t t d e t y B B f f B B g f n r - - * - * * * - * * * * * * * - * * * : * X : w , : : : * : * : - - - : - * - - = = = = = : : = = = ; ; ; ; ; ; ; ; : ; < < , < r w > w > w w w > < > > > > , , , , ; = : , ; = : : = : : ; - * = ; ; ; : = = - : : ; = = : ; : = ; - * * * * * : : * * * * * : * * * ; * * = * = : * * & * * * * * * * * * - - * # : = = ; = = = - * - - - = = = = = = = = - * * * * * : - * * * : * * * - * * * * * * * 2 & : r d f y u w i i r u <.<.a.K e u y f y f y t w , : : ; ; ; , : < - ; ; ; - = = - * # * # = - = = = ; ; - = = - ; ; > > ; ; ; : : : , < , , , , , , > > > > , , ; ; ; : < , ; ; ; ; : < : , : ; ; , : w ; , , , , - > > > > > - - , > # > > ; > - > > > # > > w > > > > > > < > < > , < < < < > w w w w > < > , < < , < < > > , < , - - < , < , - - , - , , , ; - ; ; ; ; - # - # - - - - # > - - - - t y $ > w y l B f f f y u u f y f y f y y f y u u w w e < , 3 * ", -"# - ; ; - - - - = = = * - : : - - - * - > - - $ - # # $ - - - # : - - - - - - * - - - * - * - - - - , > - # # - - - - # # - > - > - # > # # $ ; - $ - - > - > > - - - - - ; # ; - - - > - - - - - - ; - - - - , - > > , > > > > < > > > < > < 1 > 1 w w > > < < < > > > , , > > > > > > , , , , > > > > > > > - - - , - - # = = = = - * * * * * * * - - - - - - = = - = # - - # - # # # > - > > > - > > > < < < < < d n + @ #.8X_ + ) I I I I I I 3 B h f B B f f f f f f B n B y B B l l y y f f y y u u e e u u u t w w w t w < , < t y d B f y f t t t t e w < ; # - * * * : ; : ; : : * * * * * * * * * = : * : < , - * * * * * * * * : * - * * = = = = = : = : : ; ; ; = = ; ; ; ; i w < < r r w w w w w w w w w < , > 1 < > , , , , < r ; , , ; : * = = ; ; ; , ; : ; ; ; w r , ; = ; : < ; ; ; = = ; : : * : - - - - - : : * * : : * * ; * * * * * * * * * * * * * * * * - - = = ; ; ; ; ; : = : # - * - = = = = = = = = : : : * * * * - - * * * : * * * * : - * : * * * * * * : < ; ; ; ; w w w % w $ w y y y t t y y f f t , < ; ; ; : ; , ; ; = = = = - * # * # * - # = = - ; ; ; = = - - ; ; - ; ; - , , : , , , , , , , > > > > > > , ; ; ; , ; : ; < : ; ; ; , : i ; ; : ; ; : ; , , > > > > , > > - - - ; - ; - - - > ; # # - > > > w > < < < < w < < > , > > > < > w > w w > > > , - < , > < < > , , , < , , , , , < < , , , , , , ; ; ; ; ; ; - - ; - - > # # - > > , w t w ; > r m B f l f f y a y y a y f y y u y t w > > - # & & ", -"# # # - = = = = = = - = * 2 & : - * = - - - - - # $ $ - - - - - = = = # - # - = = - - - * # - # # - , # # - - - - # - - - , # - - > , > > # # - , > , - # # - - - - - # # # - - - # # - # - # , - - ; # - , - > - - , , > > > > > > > > > > > > w w w > > > > < > > < < , , > > > > , > > > , > > > > > - - > - , - - - - - = = - - - * : * * * - * - * * - * - = = = = = - - - - - - - > - - - - > , > > > < < > < t t o O + 5X*.+ U + I I I ) n d d B f B l f y f y y f B y B B B f f y f f l a y u u t e w w w t t t t w t t t r < r < t < w w u f y t w r < > > > - - : = * * * * * * * * * * * * * * * = # = = = , ; - * * * * * * * * : * * * = = = = = = = ; ; ; = = : : ; ; ; , < < ; ; , w w w w w w w w > > $ > < t u t w < < ; , = = : : - * = = ; ; = : : ; ; ; > r r ; ; ; w : < ; ; ; ; ; ; ; ; ; ; ; : ; * - ; ; * - ; : * * : : * * = * & * : * & : * * * * * : - ; : ; ; ; ; ; ; ; ; ; ; ; : = = = = = # = = = - - * * * * * * * ; : * * - * * * - * * * * : * * * * * * * ; , w r r r > , r y t t t t y y y y y y r ; ; ; ; ; , - ; ; : : = = * # * - * # * * = = = = = = = = = = ; ; ; - - > , ; : : ; , > > , , , > > > > > > , , , , , ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; , > - - , - - - ; = = - ; - - - > - - # > > > > < > > > > > > > > < < > < , , > < < > < > > > > , , , 1 < > < < < , , , , , , , , , , , , , , , < , ; ; ; ; ; ; - > , $ $ > , 1 t e w > - < ; r F B y y y y f f y u u y f f y u t u u ; * * 2 * - - = ", -"* # 2 * = 2 = = * 2 * 2 2 & * : - - - - - # # - - - - - - - * * = - - # - - # - = = = - = * - - # - # - > - - # # - , # - > , - - - - > > > > - # ; , , 1 , - # - - - - ; - - # - > - , - - # - > > > - > > - - > > - , > > - > > > < < > < > > w > w w w > > > < < > > , , , > > , , > , > > > , > > > > - > > - , - - - # = # - : = = * : * * - - * - - - * - = = = = = - - - # - > > - # > - - - - > , , < < > , w V 3 + + z.6 O 6 + I I .z.M d h B B B f f u l f a y f f B n *.o.*.*.| F u a u t t e e e u w t t t t w t r t t t < < < t w < w r t t w < > > > , > ; ; - - : * 2 - - = ; ; : : : ; - * = # = * - ; < < = : * : * * * * * * * * = = = = = = = = : = ; ; ; ; ; ; ; ; ; : i w r w w u w w w > > > $ > w w $ w y u > , , ; r : - : = ; ; ; = = ; ; ; ; ; r r ; : : ; w w r , ; ; , ; ; - = ; ; , ; ; : ; ; ; = ; ; - = - ; : * * * = * & * & * * : & * : * : - - = = ; ; ; ; , w i ; ; ; ; ; ; ; ; = = = = # = - * * * * * * * - : : * * * * : * * * * : * : * * - * * * * ; ; ; ; , ; ; ; r y w w t t t y y y t y f t , ; ; ; ; ; ; ; : ; = = # * - * # * # = = = = = = = ; = = = ; ; ; - > ; , , ; ; ; , > > > , > > > > > > > > > > , , ; ; ; ; ; ; ; ; ; ; ; ; , ; ; ; ; = - - - > , , , ; # - # - - # # # - > - # - > - > > > > > > > > > , > > , < < , , > > < w w w w > $ > < < t 1 < < < < < , , < , , , , , , , , , , , , , ; ; ; ; ; ; > > > # > < < r : - - * * * - r y f f y y y f f y y y y f f y a u u w - * : - - - : = ", -"- - - * 2 - * * - 2 & * * - * - - - - - - ; - = - - - - * - - - = = # # - - # - - - $ $ ; - - # - - # # # - - - , - - - > > - , , > - > > > > , , ; = = - < < , - - - - - ; ; - - - - , , , - - - - - > > > - > > - , - > - > > > < > > < 1 > w w w > > w $ > > < > > > , , , , , , > > > > , > > > - - > - ; # # - - - # - # = - - : * * * * - - - * - - - * - = = = = = = = = # # # # # - > > - > > > > > , , , , 1 B * O @ + o._ 9 N ) I + ) + t B B B B f y a f a l u u f F _ *.j.j.#._ B f y u u w w u w w w t r r w w r t 1 < r < < , , r < > , ; > > ; > > > , > > < < > ; ; ; < < t r w ; ; , ; ; : ; = - : - : ; , , ; - * * * * : * * * * = = = = = = - = = ; ; ; ; ; ; : ; ; ; < r , , w w w w w w > w w w w r t > > > > w < , ; ; ; ; : : = ; ; : ; : < , r r : ; r , ; ; < , ; ; , w r ; ; ; < < ; ; ; ; < ; ; ; = ; - - ; ; : * * & : * & & & & * * & * * * * * # - - = ; ; r r r r w w ; ; ; , , , ; ; = - * # = - : : * * * * - : * * * * * * * : * : * * : * - : * * * * * - : * * - - - ; ; = ; r t t t y y y y y f f t , , , , ; ; - - - - # : - - - - - : : = = : : - - = = ; = : = ; ; ; ; ; ; ; ; ; > , , , > > > > > , , > > > , , > > > : ; ; ; ; ; , : ; ; ; ; > > ; - ; - > , > , - # - - # ; - - * # - # - = - > > > > > > - > , > > > > > > > > > ; , > w t t w w u > $ < < < < > t 1 < 1 , , < , , - - , , , , , - , - ; ; ; ; ; - ; - > # - > 1 r : = > $ # - # w y u u t u y f f f f y y y f t y u u , 2 * : * 2 & & * * ", -"- * 2 * - : - - * & * * 2 * & * & - - - - - : - - - : - * - - : - - - * # ; ; - # - - - - > , , - # # - - - # - - , , # - # # > # > , > > > > > > > > < , - - - < , > - > - # # , - - , - - > > > , > > > , - - > > > > > > > > > < < > < w > w w > > w > > > < > > > > > > > > > > > > > > > > > > - > - ; ; - # - - # * - - - = * = * * * * * * - - - * # # * = = = = = = = = # - # * # - ; ; - - - - - - , , , , < y n X O @ o.o.6 9 U *.o.o.1.` t B B B f f a u u y l u u y n t F _ m y f y u u w w w w > > > , ; , ; ; , - , , > > , , , < < < w , ; ; ; > > > > > > w t w < ; ; ; < ; ; ; ; ; ; ; = = ; = * * * * * & ; r : - = = = = - - = * = = = = = = - - = = ; ; ; ; ; ; ; ; ; ; < ; , ; ; , > , w w w e w 1 , , < < < < w w : < ; , ; ; ; , ; ; ; ; < < ; ; < < ; ; ; < ; ; ; : , < ; ; ; , < r ; < < : : ; w ; ; : * : ; * * & * * * * & & & * * & * * * * * * : : * - ; ; < r y y r r t u t < , < , ; = = # # # = : * * * * * * : : * * : * : * * * * * * * * * * * * * : : * * * * * * : : - - = w r r r y r y y y y u t y B y r ; = - : * * - * * : * * * * = : - - : * = = = = = = = = ; ; : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; , > > > > > ; : : ; < , , < ; ; ; ; ; - > ; - > > - - - > - < > - # ; # * = - = - = = = - - > , - - > - , - , , , > , > > > > > < , > > > > > , < < > < < w t < < < < , , < , , , < , , < , - ; ; ; ; , , , , , , , ; = > r - - < , - - - ; r u u u u t u B B f f f f f y f f e $ 2 * - - = - - - - - ", -"* * # : : * - & - - - 2 * 2 2 2 * * - - - - - - - - - - - - - - - = - # - # - - = ; - # - > - > , > - > , # - # - , , - - - > - > - > > > > , > , < < > > w t 1 > > , < > - > - # - - - - - - , - > > > > , - , , > > > > > > > > 1 w 1 > > > > w > > > > % > < > > > > > > > > > > > > > > > > > > > - > - - # - - - - # # = ; = = = * : * * * * = = 2 * 2 * - = = = = * * = = * - - # - - # - > > - > - , , - , , , t t n o @ 6 _ o.( + &./._ ( _ C f f f f y l a l y y f f a d d t t t u r w w > < > > $ $ > < w w t y y t w w w w t t t t t t t y f f y w < , > > > > 1 w w < ; : ; ; ; < ; ; ; : = - - - : * - * * * : - * - ; ; = # - : : : * = = = = = = = ; = ; = = = = ; ; ; ; ; ; ; < < < ; ; w r w r r w r w w r r r r < ; , < < ; ; : w i w r ; , < ; ; : ; , ; < < ; ; ; ; ; ; ; - ; ; ; ; ; ; ; , ; ; r r ; = : - : ; * * * : : * : * & * * & & * * * * * * * - * # = ; ; ; < ; ; i ; : t f l y t , w ; = - * - - - * * * * * * * & * - * : * * : * * - * * : : * * - * : : : * * * * - - = : - - : i r r n G n y y u w w w t y r ; - ; ; ; = * - * * * * * * * * * * * * * = = = = = = ; = = : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; > > > > > > ; : i ; , , , , ; : = = ; - - > , - > - > > - - # # - - > # - - - - = = - - - $ - - - > - - > > - , , > > > > > , > < > > > > w > > < > t t < 1 < t < < , , , , , , , , < , , , , ; - - , , , , , , , , - ; r : - , ; # # - # ; w t t t t u f y y y f f y f f f y w : # # : : = - - - - * ", -"* * - - * - - * & - - * - - - - = * = - * - - - - - * - - : - = - - - - > - - # # - - - - > - - # , < > , - ; ; , # - , > $ # > > > > > , , > , < < , , t t < < w < < , > > < w 1 , - - , - - - - - - - > , > , , , > > > > > , < < > > > < w w w w w > > > > , > > > > > > > > > > - > - > > - $ - - > - - - - - # # - = = = = = - : * * * * * * = * = * - # * = = * = * = - - : - - * - # - - - ; ; - > - > , , < , < < r * + . + _ o.( ( A.&.( Q M n f f f l y y y y l u a l y d t e w w < > > ; $ > > w u f f B B y t w , - 2 - ; , > > < < e t w t f B B f e t y f y y w t y r , , ; < , ; i : = = = * * * * * * * * * * : ; = = - # * * * * * : = = = = = : = = : ; ; = = ; ; ; ; ; , ; ; ; = ; r w , ; w r w r w r w , ; ; w < ; : ; r t r w r w ; ; r ; : : : : ; : # : - : ; ; ; ; - ; ; ; ; ; = ; ; = - : ; : - = : ; - : * * : = - * & * & * & * & & * * * * * : = = ; r < ; ; ; : ; ; = = w r = : ; ; = - - : * * : ; : * * * * * * * * * - * * * : * * * * * * * * * * & * * - * * - * = * * * * i w w < F y w e u w e u w e w ; = ; w r w : * * * - * * * * * * * * * * * = = = = = = = = = = = = ; ; : ; ; ; ; > ; ; > > ; ; ; ; - ; ; > ; ; ; : : ; ; ; ; : ; ; = = - - ; # - - - - - - - - > # # ; - - - - - = = - - - # # # # # - ; - = - - - ; ; ; > > > > > > > , > > < > < w w t t t w < 1 < - - - , , , , , , - , < < , , ; , , - > - > - ; < , & - - ; - - # - ; > w e u u t y y y t u t y y f y r : * & - # - = * * & - = = ", -"& - * - * * * - - - : * = = = = - - - * # * - * * - - - - - = ; ; ; ; ; - > - > # - - > > - - > > > > > , , , > > > , > $ - > > > > > , > > > > > > , , < < < < w w w w w w > > w > , > > , > ; ; ; > > # > , , > > , , , > < > < w w w w > w w w w w > $ w w , > > > > > > > , > - - > - > - > ; ; > - - - - - - - - - = = - = : : - * * * * * * * = - * = = = * - - : - * * = = = = : - - * * * - - > - > > > ; , ; # > > u : + + + 6 ( U A.&.o.6 9 N m > e u y y f y f f f f B B f f y l y B y u u u u y u u r ; : : * = * * , > # - # # - - > > > > ; w r w t B B V L { 9.| y f r - : : : ; = X X * X X * X & & * : * * * - ; - * * * - : = : ; * * * - - - * - - = ; = = = ; ; , , ; ; ; ; < r : w ; : < r w w w ; r ; , , : : < r y r r , w ; ; : : * = ; : ; ; : : - * * * * * * : : - ; ; = - ; = = * * * * * : - * ; r : * : : & * & & & & & * * & & & & * : : : : = ; ; r < , , ; ; ; = = * & * * * * * * * * * * ; y < * * * * * * * * * * * * * * - * * * - * : * - * * : * * - : - = = * * * ; ; w ; : ; = i r w r w w w w w w ; ; - : * - * * * : * * - * * * * - * : * * * = = = = = = = = = = = : = : = ; ; ; ; ; ; ; = = ; = = = = ; ; ; ; ; ; ; ; : : = = = = = = - - - - - - - # - - - - - # # = - - - - # * = # - - - = - - - = - * - # = = = ; ; , , , ; ; > , > > < , > w u w w w w w w > > - ; > ; > , , , < , , , , , , , , > - > , - > # t > - - * - - - - - # r y e u y y u t t e u w e < ; * . & & * 2 - = = = * * * * 2 ", -"- & - : : - - - - * - - - = - 2 - * * - * - * - - - # # * # = ; = ; - ; - > - # - > - > - > - , , > > > > > > > > > > > , > > > - > > > > > > < > < > , > > > w w w w w w < < < < < < > , > > > > , , < , < < > > , < w < w < < > w w w w w w > > > > > > $ < , > > > > > , > > > - > > - - - - - > - - - - - # # = # # # * - - * : * * * * * * & * * * * = = = - - * : & * * * = = = 2 * * = : - - - - > ; # ; , , > - - - < t n r O + 6 _ o.6 6 *.6 6 ) o.{ } r u n f y y y f f f y f y a y l f y r : : = * * * * * * * : , ; ; - * : - = - : : - = * * ; ; ; ; r B F | u.&.B f t ; X . O O . . . O O . * * - ; - - ; ; * * * - - : * * * * : - = - * * * = * = = ; ; ; ; : ; ; ; ; , r , ; w < r ; ; : r r r t t ; ; ; r y n ; ; : ; : r ; ; ; ; : ; : - * * * * * * * * & & * * : : = - = : - * : # = : * * ; ; : X * & . o o & * * * * & & & & & & * * & * : ; ; ; ; ; ; ; ; ; : : - - : * * * * * * * * * * ; ; & * * * * X * * * X X * * * * - * * * * * * * - * : ; ; : = : = * * * * ; ; : : : : r w r r w r t w < < r w , = - - & * * * * * * * * * - * * * * * * * = = = = = = = = = = = = = ; = ; : - ; : ; ; : : : : : : ; : : = = ; : = = - - = = = = = = - - * : - - * - - * * - - - * * - * * : = = * * * * * * * * * * * - # * - * = ; : : : : - - ; > > > > > > > > $ > w w w u w > > > > ; , , , - > , > , , , > ; - > > - > , > 1 n : * * * * * : * # ; w w e e u t u t u u u t - 2 - = & - * 2 * - - * - 2 * ", -"& - & - - - - - * * 2 = = = = = # - * - # * - - - - - # # - ; # - # # - - # - - - - - - - > , > > > > > , , , , , < > < < > w > > > > > > - > > > > > > < < < w w < < , > > , , > < < > < > > > , > - - ; < w w < , = # > > > 1 w w w w < < > > > > > > > > > > > ; > > , > ; ; ; ; ; ; ; ; > - - - - - # - # # # # ; # - : * : * * * * * * * X * * * & & 2 * * - - - - - = 2 = = = - - : = * : - - - - = - ; ; - > - ; - : & : ; r < 3 o + + 8 N 6 ( N ( ( N _ r o : = * & & * * : : : 2 * * * ; = : : ; : : * * * * * : - : ; ; < : : : : ; ; ; ; , , , , , , , , ; - * # 2 n F B f y r ; - ; : : * * O . . & . O @ O * : - : = ; ; * * * * : X X * * * * * : ; : - - = # # = * : ; r , ; , ; ; , , , , ; > , , r < : ; ; - : ; ; : ; ; ; , r r r , > w w ; : * * X * * * * * & & * * * * * * * * - - * * * * * * * * * : * X * * & & & * & * & * & X * & & & & & * : : ; ; ; = = = = = = - * * * * * * * X * * & & X . . * * * X X . X * * * * * * * * * * * & * * * * * : ; : : : - * * * : : ; = * * : : ; i ; ; : < r r < < ; : r , ; * : ; : : - : * * - * * * * * * * : * * = * = = = * = = = = * - = = = = - - - : ; - ; = - - = = - - = = = = = = : - - * * * : * * * * * * - - - * - * * * * * * * * * * * = = = * * * * * * : * * - * * * - # * = = = = - - ; > , ; ; ; , ; ; ; ; w w w , ; , w w , ; ; , > , > > > > ; # ; ; ; = = - ; - - t n * : : = * * * = # - * * # w u w w w w $ - & 2 2 - = * = * - * 2 - & - - 2 = * ", -"& - - 2 * - = - - - - = = = = = * - - - - - # # - # # - # = = = - = ; ; - - - - > > > - , > > > > > > > ; ; ; , < < < > < > > w w w w w < t < , > < > > < > > < < < w w < > , , > > < , > > , , , > > > # - = ; - - - - > > # - ; > w , < < > < , > > < , > ; ; ; ; ; = ; ; ; = - - = = ; ; - - - - - - - - - - - * * * * : * - * - * * * * * & * & X * * & X X * * * - - - - - * * * * * : * : * * - - - - : - - - ; = * * * ; ; r r : : o o 6 3 N t ; X : * * * * * * * * * * & * X o . * * ; r , ; : = * - : : * : : ; - ; ; = = ; ; ; , , , w ; : , < w w ; = : : * * : ; ; = < r < w w , w < < < y r < * . O . X : : = = - * * * * * = : * * * * * * * * * = * * * * : * * - * * : ; : : < < : : ; : * : * : * * * * ; : ; ; ; < : ; ; : * * X X * & * & & & * * * * * * * * * * * - * * : * : * * * - : * X & & & & & & X X X X X & & & & & & * : = ; = = = * * * * * * * * * * * & * * X X X o . . o o o X X * : - : - - * * * * * * * * * * * * * : : w i ; : * * * = * * * * * = ; ; ; : ; ; ; < < < < : ; ; ; : * * * * * * * * * * * * * - : * * * = : : : * * * * * * * * * = - = = = - * - - * - - = - - : : - : : : : * * : * * * * : : * * : * : * * * * * * * * * : * : * * * : * * = = * * * * * * * * : * * * : - = * - = = = = = - = : = ; , ; ; , , ; ; ; w ; r ; ; r , , = = - > , > > > ; ; ; ; ; ; - - - = - - : & : = = * * * * : * & * : : ; : 2 - : & & & 2 2 2 2 2 2 - 2 & & - - - * * & = * ", -"* * * - = = = 2 = = = = 2 = = = = = - * - - # # # # # - = # = = - - # - - - > - > - - - > > > > > > > , > , , > > < > > < > w w > w w w w w < < < w > > > < > < , , w , , , , , < > > > , > > > - > > > ; i # # = - - - - - - - * * - - > , > > , , , , > , ; : : : : = = = = ; = ; = = - - - - - = - - - : : * * * * * * * * * * * * * * * * * & & & & * * & * & * X & * * & * * X & & * & * * * * * * * * * - - - : - = * * * : : r y n n n * r i : * : : * = : : - : = * * = * = = : * o & * X * * * * * & & * : * * : * * = : ; ; : : - * ; ; w < : i ; < ; - ; = * * * : , ; ; ; ; : w < , ; i r n y < O O - ; - - * * * * * * * * * * * * * * * * X * * * * = * * = * * * * : : : : : < : : ; ; < ; : : * : : - - : : : * * * * X * * * * * * * * * * & * * * * * - : - - - * * * * * ; , ; X . . & & 3 . & . . o o . X o X X X X o X * * X X X X * X X X * & & * * * X X X X o . X o o X X o X X X X * * * * X X X X X * * * * * * * * * : i r r i : : = * = = = : i r w ; ; ; ; ; ; ; ; ; r < ; ; ; * * * * * * * * * * * * * * * * * * * * * * : * * * * * : * * * * = * - - : * - * * = * * * * * * * * * * * * * * * X * * * * * * * * * * * * * X * * * * * * * * * * * * * * * = * * * * * * * * * * * : : : - * = : * : = = = : * - : ; ; : ; ; ; ; ; ; : r r ; ; ; ; ; ; ; ; , > ; ; ; ; ; ; ; ; ; ; ; : * : : ; ; = * * - * * * * & & . & * 2 2 & 2 * = * 2 - - & * - - - - 2 - & ", -"* * * - = = * = = = = = = * = = = = - # - # - - - # - - = - = = # - # - - - > , - - > > > - > > > > , ; , > < > > w > > > > w w w w w w > > > < , , , < , > > > w w , > w , , , > > , , , , > > > - ; ; ; ; $ ; ; ; = # - : - * * - - : - * - * - = : ; , ; : : : ; = = # ; = = # = * = - # * - - - * * * * : * * * * * * * * * * * - * * * * 2 * & * * * & * & * * & & & & & * & * * * * : * * * * * * * * * * * * * * * * * * * * * X . X : n r < = o X * * * * * : * * * * : : * * * * : : : * * * * * * * * X X X X & : : * * * * * * : : : : : # * = = , ; < r ; ; ; - ; : ; w ; ; ; = ; < ; : , , ; , n r r r < # O . * - * * * : * : * * : * : : * * * * * : - : * * = = * : = = = : : : : : : : : : : * * * - - : * * * * * * * X * X * * * * X X . & X X * X . X * * * * * * * * = X . . X X X & . . . o & . & . . o & X o o . o o X X X X * X o X X X X * & * X * & * & o X X X . . . * * * * * * * * * * * * * * o X : r y y y y y y y n r r r ; ; , ; : ; ; i ; ; r r r r r : * * X * * * * * * * * * * * * * * * * * * * * * * * * * * : * = * * * * : : * * * * * : * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * & * * & * * * * - = * = : * * * * * : * * = = ; = ; : ; ; ; ; : ; : ; ; : ; ; : = : : - ; ; ; ; ; : = = : * * < ; - * - ; ; : : * * * * & * & * * * * * * & * = * & 2 2 * 2 = = = 2 & - - - * * ", -"- 2 2 - 2 = = = = = = = = 2 = = - * - # # ; # = # - # - # - - - - # - ; - > - , > > - > > , > , , , , , , < < > > w > w > w w w w w w w > < < , < , > , - - ; ; ; > ; i , ; ; ; ; ; ; ; ; : : ; = = : = = ; ; ; = * : - = = - - - - - * * * * * * X X * * * * * * * * * * * * - = = = = = * * - : = * * * : * * * * : * * - - * * * & * * * * * & * * * : : * & * & * * * * & * * * * * * : & * & * & X X * * * * X * X * * * - * * * = = * * . . * * * : * * * * : : * * * * * : * = : * * * * * : * * * * * : : : : : : & * : : : : ; ; : = ; , : ; ; = ; ; ; , ; ; ; ; ; ; ; = ; ; ; ; : ; ; ; ; : ; ; ; : - < n r < ; = . . * = * * * * * * - * * * * - : : * : : = - - * * * * * * : : : : : * : : : : : * : * * * * * * * * : * * * = * * * o o . . . . o . & * X . . X X X X * * * X X * . X X X X X . & o o . & . o . o . . X * o . X . . o o o * . . X X o & X . o o X X X X X * o * & X X X X X X X X X X * * & * * * * * * * * * * X o o X * : : , w r r r r r i : : : = ; : r r : r r r r r r r < : : * * * * * * * * * * * * * * * * : * * * * * * * : * * * * * * * * * * * * * X * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * * * * * * * * * * * * * * X * & * * * X & & * * * : * * * * * * * * : * : * * * = * = = : ; ; ; ; ; ; r ; ; : = : : = : - * * = = = - - * * * ; : * * * = * * * * X * * * & * * * & * * * * & * 2 * 2 * * 2 * * * * 2 * * * - * ", -"- - * - = = = = = = = = = = = = - = # # > - ; - - - # - - - # # - - - > > - > - - > > > > , > , , , , , , > < > w < > > w w w w < > w > > > < < , , , > ; ; : = * : : : = : ; ; : ; ; ; : ; ; ; ; ; ; : = = : = * = * * - # - * * : * * * * * - - * * * * * * * * * * * * * * * * * * * * * * : : * : * * * * - : : * * * * * * : * * * * * * * & * * * * * & & & * * X * * * * X * X & & * * & & & & X X X o X X X X X X * * * * : : * * * ; ; : : * * : : * * * * * * : : : * : * * * : : : * * * * * * * * * * * * * * * : : = = ; ; ; ; , ; ; : ; : ; ; ; ; ; ; ; : ; ; ; r r ; ; : < ; ; : - : ; ; ; ; ; = ; ; : n ; ; : . * * : : * * * * * * * * * * * * X * * * * * : : * * : : * = : * * * : : : : : * * ; : * & * * : * * * X * X . . . . . . o . . . . . . . . . . X X X X X X X X X . . o X X X X X . . . o & o o & o o . o * o o * X o . * o . * o o & o . & X O o o o o o * o . * & O X * o X X X X X X X X X X * X X * X * * * * * * = X . . . X X : * : = ; : = : : i : r r r < r r r r w r t r < : * * * * * * * * * * * * * X * * * * * * * * * * * * * * : = * * * * * * * * * * * * * X * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * & * X * X * X * * * * & * * * * * X * X X * * * X * * * * * * * * : * : = = = ; ; ; ; : : ; ; : r : - ; ; ; ; = - : * = * = = = * X : : ; ; ; : : * * * * * X * * * * * * * * * * & * * * * * * * & * & - & & * * - ", -"- - = = = = - - - - - # * - - > - - - > - # - - - - - - # - # - - - > , - - - > , - > > w , > > , , , , , w < , , , w w w w w w < > > > > < , , : : ; ; : ; ; ; ; : : : * = = = = ; : ; = ; ; # = ; = : : = - = # - * - * : * * - * * * : * : * * * * * * * & & * * * * * * * * * * * * * * * - * * * * * * - : = - * * * * * * * * * * : < : * * * * * * . X X & & X X X X X X * X X X X . X o X X X X X X X X * X X * X * * * * * * * * * - = = ; : ; * * : : : * ; : * : : : : : : : * - * : * * * * * * * * : : * * = : * : * = ; = ; ; : : ; : ; : ; ; ; ; ; ; ; ; ; ; ; r < , ; ; : ; ; : : = : = ; ; = ; : : r m : r ; * . X * * * * * * X * * * * * * * & : * * * * * * * * : * * * * * * * * X X . X X * * X X * * X X . . . . . . . . . . . . . . . . . . . X o . . . X X & X . . . o o X X X X o . . . . . o o . . . . . . . o o o o . . & & X . . & . o & X X & . & X . o o & o X * * & * & X o * * X X X X o & o X X X X X X X X X X X * * * * & * * * & X X X * * * * * * ; < ; w r r r r r r r r r r r i i r r : : * * * * * * * * * * * * * * * * * * * * * * : * * * * : - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * * * * X * X * * X * * * X * * * * * & & * X * * X X X * * * * * * * * * * * : : * - * - : - = = = : : = ; ; : ; ; : ; ; ; : : ; : : ; ; ; : * . : = : * * : * * * * * * * * & * * X & * & * * & * * * * * * * * X * * * * * * * * - ", -"= = = = = = # > - - 2 * * # > $ $ - - # > - - > - # - - > - > , ; - - > - > > > , , > > , , > , , > , , , , , , , w w w w w w w > > , , ; < , ; i : ; ; ; ; > > > , ; ; ; ; : = : * * * * = = = : : : : : = * - * - * * & * * * * * * * * * * * * * * * * * & & & X X X * X * * : * * * * * * X * * * * * * * & * * * * * * * * X * * X X X X * * * * * & X X X X X X X X * X X o & o X X X X X X X X X X X X X X X X * * * * * * : : - - - : : * = : : : * * : : : * : : : * * & * * * * * : * * : : ; : = = : : : ; * * * : ; : ; ; w i r r : * * : : : : : = ; ; ; ; : r r : : ; : : : : : : = ; ; ; ; : : r n r r : * . X * * * * * * X * : : : : : : : 3 : : : * * X X X * & X X X X o o o . o * X o X o . O . . . . . . . . . . . . . . . . . . . o . . . o o X X X * X X X * * X o X X X X X o X . . o o . . . . . . X . o o . . & o o o . . . o . . & X X X X o X X . o X * & X : & & X X X X X o o o X X X X X X X X X X * * * * * X X * * * : * * * * * * : i r r r r r r t r r r r r r r r r r r r r r ; * * * * * * * * * * * * * * * * * X * * * * * * * * - : * * * * * * * * * * * * * X * * * * * * * * * * * * * * * * * * * * X X * * * * * * X * * * * * * * * & & * * * & * X * * * & * * * X X * * * * * * * * * * : * * * * * * * * : - - = = : ; = ; ; : ; : ; ; ; = ; ; ; ; : i , ; o X : * * * X * * * * * * * * * * * * X * & & * & * * & * * * * * * * * : * * * X * ", -"- = = = * # - - ; ; - ; ; # - # - # # - - - - , > > > $ - > - - > > - , > - , ; ; , , ; ; ; ; , , , , ; , w , , < , w w w , , ; ; ; ; ; ; ; ; ; ; ; = ; ; ; ; ; ; ; ; ; ; ; = : * * * * * * * X * - * : : : * = * * * * * * * * * * * * * * & * * * * & * * X X X X X X X X X X & & & * * * & * X X X * * * X * * X X X X X X o X X X X X X & o * X X X X X o & X o o o X X X X X X o o X X & o X X X X X X * X X * X * * * * * = : : : = * * * : : : : : * * * & o & * * * : : : * : : - * = * : : = : : : * X * * * * * : : i : r r = X * * * * * : r r : : : : : ; ; : ; ; r ; : : : = , < ; ; i i r n i = : X & * * = : : * : : : : : : * * X o X * * * * * * * X o X X X X X X X X X X o X o o . . o o o o o . . . . . X X o o . . o . . o . . . . X . . X . . . X X . X X X X X X X X o . X o . . . . . . X X o X X o X X X X X X o X X o X X X X & o X o . O : & O o : o o X o X X X X X X X X X X X X X * * * * * * * * * * * * * * * ; : < r r r r r r r r w r i i r i i i r r r r r r r ; * * * * * * * * * * * * * * * * * X * * * * * * * : * * : * * * * * * * * * X * * * * : * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * X * X * & & * * X X * * X * X * * * * * * * * * * * * * * * * * * : = * = = = = : r : ; ; : r ; ; ; ; ; : ; ; ; : ; r X * : = : * * * * * * * * * * * * * * * * & & & * * & & * * & * & * * * * * * * * * ", -": - = * # - # - - - > ; # # - - > > , > , - > > - $ # - # $ > , ; ; ; ; - , ; ; ; ; ; ; ; ; ; ; ; < < ; r < : r < ; ; ; ; ; ; ; , ; ; ; ; ; ; ; ; ; : ; ; ; = = * - : = = * * * : * * * * * * * * & * * * * - : * * * * * * * * * * * & * X & X X X X X X X X X X X X X X X X & o X X X X X * * X X X . . . X X X X . X X X X X & X X X X X X X X o o X X X X X o X X X X X X X X X X X X X X X X X X X X X X * * * * X * * * * * * * : : * * : * : * * : : = * * * * * * * : 3 ; = * : : : : - = = - - = : : : ; * * : * * X X X X o o o . X * : : r r r r w ; r : : r r r r i ; ; : < : : : : : r r r n : : : * . . * : : * * * : : ; : : : < : : * & o * X o o X * X X X X X X X X X X X * * * * X X & X o o . X X X X o o X X X X X X X X X X X o o o . o . . . . . . o o . X X X X X X X X . . o o o . . o o o . X X X X X X X X X X X X X X X X X X X X & X X X X X . * X o o & o X o O * X O o X X X X X X X X X X X X * * X * * * * * * * * * * * X * * * : : : ; , , < < < ; i i i i ; : i i i r r r r r t r : * * * * * * * * * * * * * * * X * * * * * * * * : * * * * * * * * * X * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * * * * * * X * * * * * * * * * * * * * * * * * : : * * * = : ; = = : ; : ; ; ; ; : ; i r : ; ; : ; : ; r < : : ; : : * * * * * * * * * * * * * * * * * * * * * * & * & * * : * : * * - * * ", -"* = = : - = ; - # ; > - ; ; > ; - , > > ; , ; ; , , ; - - - - ; ; ; ; ; ; ; ; = ; ; ; ; ; < ; r < ; ; < < < < ; < < : : < ; ; ; : ; ; ; ; = = : : : * * * : : * * * * * X * * * * * * * * * * : * : : * * X * * X X X X X * X X X X X X X X X X & o o o o o o X X X X X X X X X X X X X o o X . . X X X X X o o X X X X X X o o X X X X X X X X X X X X X X X X & o o & X X X X X X X X X X X X X X X X X * : : * * * * * * * * * X X * = : = r r : : : : : : * * * - : : : * * 3 : * * - * * ; ; < r : : : : : r r i < r n n r : : X * * X : : : r r r : : : : i i r r r r r : : < n n n < : r : : r : : X O O . * : : : * * : : : : * * * X * o X X X o o X X X o X o o . X X o o * o X & X . o o X . . X X o . o X X o . . o o . . . o o o X X X X X X X X . . . . o . . o . o o X X X X X X X X X X X X X X X X X X X X X o X & o X : . o * X o * * & X X X X o O & X . o X X o X X X X X X X X X X * * * * * * * * * * * * * * * * * * * & * * * : : : : : * = : : = : < r r r r r r i r ; * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * X * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * * & * * * X * * * * * * * * * * * * * * * * X X * * * * * * * : * * : : - : : = ; = : ; ; : : i ; ; ; ; : ; , ; r r : : : : : : : : : = ; : : : * * * * * * * * * * & & * * * * * * * * * * * : * ", -"* * = = = - = : ; ; , ; ; ; ; ; ; - ; ; - ; , ; ; ; , ; ; - : ; = = ; ; ; : ; ; < , ; < : , , : ; ; < r < ; , ; ; ; ; ; ; ; , ; ; ; ; = - = = : : * * * * * * * * * * * * * * X * * * * X X X X * : : : * * * o . . . X * * X X X X X X X X X o o & & & & o X X X X X X X X X X X o o X X X X X X X X X o X X X X X X o X X X o X X X X X X X X X X X X X X X X * * & * & & * & & * * * & & & X X X X X X X X * * * * * * * * * * * * * * * * = = : ; ; : = = = = * : : : * * X . * ; : r r r r t r r r r : : : : i : < r t B C C C l n n r r : : : : * X * : r n i * X o X * : * * * * * : * : X X * * * * * * : : : * * X * X * X X * X X X X X X X * * X X o X X X X . X * . o * o X X X * o o * . O X . . X o X X X . o o o X X o o . X . o o . o & X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X . o X O o * . X * o o : o O X X * X X X X X X X X X X X * & & * & & * * * * * * * * * * * * * * * * : * * * * * * : * * * : - * * * : = * * * ; : : ; r : i r r r r : ; ; : : * * * * * * * : * : * * * * * * * * * * * * * * * * * * * * * * * * * X * * * : * * * : * * : * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * : * * * * * * * * & * * * * * * * * * * * * * * * * * * * * * * : * * : * : * * * * * * : : : = = ; ; : : : ; ; ; i ; ; , ; ; ; r ; i r : : : : : : < : : * * * * * * * * * X X & & & & * * * * * * * * * * * ", -"* * = = = = ; = = ; ; ; ; ; = = ; : : ; ; ; ; < ; ; ; = ; ; ; ; ; - = ; ; ; ; ; , < : , ; ; : ; , < r , : : : ; ; ; ; ; = : : : = = * : * * * * * * * * * * * * * * * * * * * * * * * X X X X X X . * * * * X X X X * X X X X X X X X X X o X o o & o * X X X X X X X X X X X o o & X X X X X X X X X X X X X X X X X X & X X X X X X X X X X X X X X X X X X X o * * * & * * * * & * X * & * X X X * X X X X * * * X X * * * * * * * * * * * * X o * : : : = = : = * * & & & : : r < r n B B y r y y r w t n r : : * = - : ; r r r r r y y y y y y r * : i ; ; : : X : r : : : : : * * * & * * & * X X * * * : : * * & X X X X X X X o X X X X X X X X X X X X X X X X o X * o X X X X X . O X X o * * X * X . . o o X X X X . . . . . o . . . . . o . o . . . . . o o X X X X X X X X X X X X X X X X X X X X X X X X X X X * o X X X X X X X X X X X X X o o * o o X X X & & & o X X X X X X X X X X X X X X & * * & X * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * : = = = = : : : : : : : : r r : = : : r : * : * * * * * * * * * * * * * * * * * : * * * * * : * * * : * : * * * : * * : * * * * * * * * * * : * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * : * * * * * * * * * * * * * * * * : * : ; ; : : : : : : : ; r r < r ; r ; ; : : ; r ; < ; ; : : : : * * * * : : * * * * * * * * * * & * * * * * * ", -": : = = = : : = # = : = ; ; , ; ; , , , , , ; ; ; < < ; : - : , r w ; : ; ; ; : ; ; ; ; r : i ; < : : ; ; : : ; ; ; ; = : : * : : = : * * * : * * * * * * * X * * * * * * * * * * * * X X X X X X X * X X X * X X X * o X * o o * o o X X X X X * o & * o & o X X X X X X X X X X X * * & X X o X X X X X X X X X X X X X X X * X X X X X X X & * X X X * & & o X * X X X * & & * & * * * X * * * * X X * & X X * * * * X * * * * * * * * * * : = * = : : * : : : = * * = : < r n n B C C C n r i : : r t t r r : : * * : ; : = = : r y y y r y r r r t : : : : ; r : : X : * * * * * : * X * * * * * : * * * * * . o X X X * * * X X X : * X X X X X X . . X X X X X X X X X X X X o X X X X X X o o X . X o X o o X X X X X X o . . . . . . . . . . . X X o o o . . o o . o X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X * * X & & & & & X X X X X X X X X X X & X X X X * * & * * * * * * * * * * X * * * * * * * * * * * * * * * * * * * * * * * * * * = ; : ; ; ; : r r i : : i ; = * * * : : : : : * : * : * * * * - * * : : * * * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * : : * * * * : * * : * * ; ; w , ; i ; : : ; ; ; ; i : ; r r : : r : ; : r : ; : r : w ; : * * * * * * * * * * * X * * * * * * * : ", -": * : - = : = = ; ; ; ; ; ; ; w , : ; ; ; , : ; ; ; r < r ; : : : : r ; ; ; i ; ; : ; ; , : : ; ; ; ; : ; : ; ; ; : ; : : * * * = = : * * * : * * * * * * * * * * * * * * X X X o X X * & X X X X X X X * * X X o & o O X : o o * o o * X X X X X X X X o & o * X X X X X X X X X X X X * o o * X X & X X X X X X X X X X X X X X X X X X X X & * * X & * X * * * * * * * X * * * * X * * * * * * * * * & & & & * * * * * * * * * * : * * = * * * = = = : : * : * * * : r n n B B B G <.F ; ; r r n t y r r i * * * * = = ; = = : : * * * : i r r r : * * * : ; : * * : * * X X * * : : X * * * * X * X * * X o X X X X X X X X X X X X X * X X X X & X X X X X X X X X X X X X X X X X X X X X X X * * & o . X X X o X X X X X X X X X X X X X X X X X . . X & * & X X X X . . X X X X X X X X X X X X X X X X X X X X X X X o o & X X X X X X X X X X X X X X X * * * & & * & & X X X X X X X o o & o o & X X X X & & & * * * * & * * * * : * * * * * * : * * * * * * : * : * * - * * * : * * * * = = = ; ; ; : i r r i : : ; : ; : : = = = : : - * : * * : = : : : : : : - * * : - * * * * X * * * * * * * * * * * * * * * * * : * : * - = * * * * * : * * * : = * * * * * * : * * * - * * * * * * * * * : * * * * * * * * * * * * * * * * * * = : = * * * * * = * = * * * : * * * * * * : * * : * : * ; : : : : i : r r r r r r r ; : ; r ; ; ; : r r ; r r ; : r r r r < : r : * * * * * * * * * : = = = : * * ", -": : : ; ; ; ; ; ; ; < ; ; ; : : : i ; : : r ; ; < ; ; ; ; : - : : ; : ; r ; ; i ; : ; : : ; : ; ; : ; ; ; ; ; ; ; : ; ; : * : : = : * * * : : * * * * * * * * * * * * * * * X X X X X * * X X X X X X X X & X o & & o & * & X & X X X X X X X X X * & o * & o X X X X & X X X X X X X o X & o X X * X X X X X X X X X X X X X X X X X X X X * * * * * * & & & & & * & * & & & & & * * * * * * * * * * & * * * * * * * * * * * * * * = = = = : : * = = = i r : : ; n t F G n n G } n < n r n y y n B y y y r r r ; ; ; ; ; ; = = = * * * : * X * * X * * : ; * * * * * X o . o X * * X X X X * * * X o X * * & X X X X X * X X X X X & X X X o X X X X X X X X X X X X X X X X X X X X X X X X * & o o X X o o X X X X X X X X X X X X X X X X X X X X X X X . . . X X X X X X X X X X X * * X X X X X X X X X X X X X X X X X X X X X X & o * o X X X X * X X X X X X X X X X * * * * * * * * * * X X X X X o * * * * o X X * X * & * * * * * * * * * * * * * * * * * * * * : * * * * * * - * * * : * * * : * * * * * = = = ; * * : : r i w i ; ; : = = = * - * : * : * : * * - : ; = = ; ; ; < ; ; : = : r ; ; : : < : : : * * : : : : : : : = * * * : : = : : : : : : ; = : = = = * * * : * * * * * * * * * - * * * * * * * * * * * * * * * * * * * * : * * : : : : : : : = * * * * * * * * : : * * * : : * * : * * * : : X : = = i r r ; : r ; ; : : ; ; ; : ; ; : ; : r : : r : : r r : i r r : : : : : * * : : = : : = : : ", -"= = = : : ; ; ; ; : ; ; ; : * : : : : : : i : r < r < : < r < ; ; < ; ; = = ; : : ; ; : ; ; ; ; ; ; ; ; = = : : : : ; = : : * * * * * * : * * * * * * * * * * * * * * * * * X X * X X * * * X X X X X X & X o o & & X X X X & & X X & X X X X o X X X X X X X X X X X X X X o X o X X X X X X X X X X X X X X X X X X * X X * X X X * X * * * * & & & * & & * * * & * * * * * * * * * * * * * * * * * * * * * * * * * : * : = = = = = : : = = : : ; i r n B n y B t r t w w w n B C 1.F d.a.} r u y n B n y y r r r : = = : : : r : * X * * : * * & X X X X X X * & X X X X X X * X X * X X * X X X X X X X X X X X X & o o X X X X X X X X X X X X X X X X X X X X X X X X X & * O O & & o . X * * : * * * X X X X X * X X X X X X X X X o . o . . . o X o & o X X X X o o X X X X X X X X X X X X X X X X X X X * & * o o & * X X X & X & X & * X * X * X * * * * * * * & X X o X X X * * & * X X X X X * X * * * * * * * * * * * * * * * * * * * * * : * : * * * * : * * * * * : : : : = ; * = = = = * * * * : ; = = - * : = = = * * * : * * * : = = : ; ; ; ; ; ; r r w y r t r , F } <.<.: : : : * * : : ; : : ; : = - : : = : : = : ; : : = = ; ; : : : : : : * * : * : : : * * = * * * * * * : : * * : : * : * : * * * : : : * * * = = = = ; = = * * * : : : * * * * * : * * * * - = = : - = ; : ; : = = : : r ; : r ; : ; ; : : : ; ; : : ; ; ; : : : ; : : ; : r r r r : < ; r : : * = : : : : : ", -"; ; : ; : ; ; : : : ; ; : : , ; ; ; i : i i r i ; : : : : ; ; ; < : : < i : : : : : ; ; ; : ; : = = : : = * * * : * * * * * * : : : : : * * * * * * * * * * * * * * * & X * & * * * * & * X X X & * & X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X & X X X X X X X X X X X X X X X X * * * X X X X X * * * * & * X * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * : : * - * * = = = = = : ; ; ; ; : r r y y y r ; ; n C r r C G <.1.(.oXd.&.` n m r y y y r w i ; ; = * = : : * * * * * * X X X * * * * * & * * X o X * * * * * * * X X X X X X * * X X X X X X X X X X X & o X X X X & & X X X X X X X X X X X X X X X X X X X X X X X X X X X * X o * X X & X X X * : < : r : : ; ; : * * * * * * X X X X X o o o X X X X o & o & X X X X X X X X X X * * * X X X X X X X X X X X X X X X X & X X * & & o o & * & * * * * * & & : * * * * * * * * * * * : * * * * * & & * : * * : * X * * X * * * * * * : * * * : * = = = * = : : : : : : : ; = = : - : : : : = = - - = = : * : * = = = = * = = = * * * * * - = = * : * : : : : : = : ; ; ; ; ; r r w = = L d.(.d.n } @X&X*X X` n ; : : : ; < < ; : : : ; : : = ; ; r ; ; ; ; r i r i i : ; ; = : : = ; : : - : ; = : : : : ; : : : : : ; : : r : : : ; : : : ; ; ; ; : * * : = = = ; : * : : * = * : * : * * * : * * * : = * - - = = = = = ; : = : : ; ; ; ; r ; ; r ; ; ; : ; : : ; : ; ; : : r : : : : : : ; i r ; ; ; : = ; : ; ; ; ; ", -"= ; : : : : ; ; : r : ; ; r w r i i : = ; : ; ; ; : : : ; ; : ; ; : : ; ; : : : = = : = - : : * : * * * * * * * * * * * : * * * * * : : = * * : * * * * * * * : * * * * X * * * * * * * * * X X X * * X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X & X X X X X X X X o X X X X X X X X X X * * * X X X X X X * X * * X * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : : * : : : : : : = = = = : : ; : w r r r n y y y B <.} n } n } (.kXVXZXlX|.(.<.n t r y y r r : = * = ; ; : = * : * * * X X X X X X X X * * * * * X o X & * * * * * * * X X X X * * * * X X X X X X X X X X X o o X X o * & * & o & o X X X X X X X X X X X X X X X X X X X X X X X * X & X X X X * * : ; i : r w r r < < : * * * * * X X o X X X X X X * & X X X X X X X X X X X X X X X X X * * X X X X X X X X X X X X X X X X * * * * * X X X X * & & & & & * * * * * * * * * * = : : : : : : = : : : : ; ; : : : : - * * = * * * * * * * * : : : : = : = = * * : = : ; ; ; ; ; ; ; ; - = = = = * ; = : = = ; * * = = * = = = * = ; - : : = = : = = : ; ; ; ; ; ; ; ; ; ; ; : ; , r r t A s.OX-XzXoX(.%XhX%XXXXX*X@X} # ; w r ; ; ; = : ; ; ; : ; i i : ; : < r r r r r : r : : : i i ; ; ; = ; : = : : : : r ; ; r r r r w r i r r r r r n n , ; ; : : : : : ; : = = = = ; ; = : : : : : - = = = = = : : = = = = : = ; ; ; ; ; ; ; ; = ; r ; i ; ; ; ; ; ; : = : : : = ; ; : = = = : ; ; = : : i : : < : : : ; ; i r ; ; ; ", -": w r r r : : ; ; ; ; ; ; ; ; ; ; = : ; ; ; i ; i , i ; ; : = - : * : : * : : : * * : * * * * * * * * * * * * * * * * * * * * * : * * * * * X X * * * * * * * * * * * * * * * * * * X * X * * X * X * X * * * X * X * * * & X X X * * X * * X & & & & * * X X X X X X * * X X & & & X & & * & & * & & * & * * * * * * X * X * * * * * * * * : * * * < : * * * * * * * * * * * * * * * * * * * * * * : * * * * & & * * * * = = = : ; ; ; i y y y r r r y t B d.d.<.(.@X*XVXvX&X|.} C n m y t y y r ; = ; : ; ; = = = = * * * * * * * * * * * * * * * * * * * * X * * * * * * * & * * X X X X X * X * * * * X X * X & * & & & & * * & & & o & X o & o X X X X X X X X X X X X X X X X X X X & o o & X * : ; ; ; ; r r ; ; : : * * * * X X X X X * * * * * * * * * * * * * * * * X X X X X X * X & * * * * * X & X X * & * * * & & * * * : * : * * * X & * * * * * * : * * * * * * * * * : : ; ; i r : * : : ; r < : : < : - - : : : ; : : : : : * * * * : ; : : : ; : - = : ; ; , i ; : ; ; ; : : ; ; ; ; : ; ; ; ; = ; ; = ; ; * * = X : ; ; : : : ; ; : * 2 # # # # ; w i r r t y y y n r G %XcX=X;X*X=XzX*X*X*XhX*X*X*X|.1.G r r t t t r r : : ; : r < i r r r r r < : r : r = i i * : * ; ; , w r : i r i i = = # w > = * r B i y n y y r < F G y y n t r r r r r ; i i : i : : ; ; : ; : ; ; : ; ; ; = ; ; : ; ; : ; : ; ; ; ; : ; ; ; ; : ; : ; ; : : ; : ; ; ; : ; : : ; ; ; ; : : = = ; : : i : : : : : ; : : : : : < ; ; ", -"; i : i r r : ; i ; : ; : < ; : ; i ; : : = ; ; ; ; ; = : = : : * * * * * * * * * * * * * : * * * * * : * * * * * * * * * * * * & * * & * * * : * * * * * * * * * * * * * * * * * * * X X X * * * * * * * * * * X * * * * & & & & * * * * & * & & & X & * X X X X X X & * * & & & * * * & * & & & & * & * * & * & * * & & * & * * & * * X * * * * * * & : * * * * * * * * * * * * * * : * * * : * * * * * : : * * : : * : : = = = = = ; ; r y y r y u w C m ; <.(.{.lXVXxXxXkXzX*XF ; r t r t r y r r r r : i ; ; : = ; = * : * * * * : * * * * * * * * * * * * * * * * * X * & * X * & & X X X X X X X X X * * * : * * & * * * : * * * & * o * o . o o o & X X X X X X X X X X X X X X X X X X X X X X X X o o & o X * : : ; ; ; i i ; * X X X * * * * * * * * * * * * = ; ; ; : ; ; : : * * & X X X * X * * & * & * * * * X X X & * X * * * * * * * X * : 3 * * * * * * & X * * * & * * : = = : * : = : r r i r : : r w r < , > > < , % < , # ; ; ; : : : : : * * * - * ; ; : < : ; : ; : ; r : : ; ; ; ; ; ; i : i : ; ; ; ; ; : : ; ; ; = ; i r r i : ; i ; w : i n <.<.F r F } F w n C n y y y u d G @XxX*X=X-X=X=X*X*X+XhX*X%X%XXX%X&X X<.r n - > u y y n y y t r i $ > w ; = < } B d.|.} m m | |.d.r w ; < < r r y C G <.s.(.K | s._._.oX(.d.s.F } (.d.B w u i i , , ; , , < r r r r r r w r < ; < ; ; ; ; i : : ; , w r ; : i ; ; : : ; ; ; ; : ; : : ; ; ; ; : < : ; : ; ; : ; ; ; ; ; ; ; : : ; ; = : : : * : * : : * : : : * * : : : ", -"* * * = ; i ; : : : : ; : ; ; = : ; ; : : * - : : * : : = = * * * * * : : * : * : : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * X X X * * * * * * * * * * * * * * * * * * * * * X & * * * * * * * * & * X X X X * * X * * * * * & * * * * * * * & * * * * * * * * * * & * X * * * * * * X X * * o X * * * * * * * * * * * * * * * * * * * * * * : * * : : : * : : : ; ; ; ; r r n n y r u u r <.(.@X|.*XAXPXKXlXkX-XlX%X<.w n n t n n t r t t y r r r : ; ; : : = : : * * * * * * * * * * * * * * * * * * * * * * * * * * * & * X X X X X X X X X * X * X * * * * & & * & & * * & & o o 3 & o 3 o X X * X X X X X X X X X X X X X X X * X X X * X * o * o X * : ; i : : = * * * * * * * = * * : * * * : * : : i w r r : ; ; * * * * & & * X X X X * * * * * * * * * * * X X * * * * * : * * : r r y r * * * * * * * & & * * * : * : ; ; : : : : ; : ; : i r r r r y t t <.a.a.d.(.d.s.s.s.s.<.n - ; : ; : r ; ; : : ; ; : ; ; ; < : ; ; ; r r r ; ; r r ; : i : i i ; ; ; ; ; ; = ; ; r r F u u i } F r y r C d.*X-XxX%XoX%X X|.d.|.oX<.> < > n n <.=X&X=X=X&X=X;X*X;X&X*XOX*X*X%XoXoXOXoX|. Xd.1.} n , w t r G 1.d.d.|.d.s._.oX*X|.-X-X%XoX|.*XkXd.r F _.|.} r < d.%XdXSXKXKXnXnXZXKXKXAXVXSXbX%X&XmXVX X| } s.1.d.d.1.d.d.| n y r r t t y y t t t y y n y r r r y n n r y r r w ; ; ; ; i ; < : ; ; ; : i ; ; : ; r : r : i ; : ; ; ; ; ; : ; : : ; ; ; : : : = = * : * = = : : * : = * ", -": * * * : : : ; r : - : : : : : : : = : ; - : * * * : * * * : * * * * : * * : * * : * * : * : * * * * : : * * : * * * * * : * * * * * * * X X X * : * * * * : : : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * X * * * X * * X * * X X * * * * * * * : * : * * & * * * * * * * * * X * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * : * * * * * * * = = : : = : : : = : r r n n y y r r u m 1.oXkXlXJXKXSXmXSXmXmXmX%XK w t r n r r r r r r r r r r i ; i : ; : ; = * * * * * * * * : * * : * * * * * * * * * X o * * * * * * X * X & * * * & * * * * * & * X X X * & & X X X X o * o o X X X X X X o * o o o & X X * X X * * & & X * X * * * * * * * : = * * * * * * : * * * * * * * * * : : : : : : : = : * * * * * * * * * * & * * * * * * * * * * * * X * * * * * * * * : * * : < r y r : * * * * * * * * * * * = : = = ; ; w r < < w r y y r r r u F a.%XVXSXVXSXZXZXKXKXSXnXJXsXs.G r i w r r t t r r , < r < < r r i : r r r : w w w r r r r w r r r r : r r r r r F } d.{.` s..XfXsXa.} s.-XcXNXNXxXxXcXkXXX&XkXkXkXoXd.1.d.oXoXOX&X=X=X&X&X&X=X*XOX@X|.+XhXvXvXhX&X&XkXnXnXbXMXhXXX(.} F <.oX&X=XvXmXAXAXJXmXvXcXlXhXhXlX X} m 1 , B @XBXd.r _.mXAXJXKXKXLXPXKXJXSXkXkXZXJXJXKXHXZXKXKXHXZXKXZXSXJXHXnXKXbXXX%X%Xd.} } C w r r r t t r r r r y r r t y r y y y n y r w < , w ; ; ; ; ; ; ; ; : ; r F m w ; ; n ; n n : ; ; ; : ; ; ; - = = ; ; ; ; ; : = = ; : = = * : ", -"* : * * * * : * : * * : = = : : = : = = : : : * * * * * : : : : : : : : * * * * : : : * * * * * * * : * * * : * * : * * * * * * * * * * * * * : * * * * * & & & * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * : * * * * * * * X X * * * & * * * * * X * * * * * * * * * * * * * : * * * * * * * * * * * * * * : * * * * * * * * * * * * * : : = * = = = = : : : : r r n n n r y t B _.lX(.s.hXZXKXHXSXcXxXcXNXcXmX%XG r n r y r n n y r r r r r ; : : = * = = = = : : * : : * - * * * * * * * * * : * * * : * * * * * * * * * * * * * * X * * * * * & * * * & * * & & X X * * X X X X X & o o & X X X X X & * o o * * o X X * * * * & * * * * * * * * * * * X o o * * = : : = * * * * * : * : * = : ; ; ; ; = = * * : * * * * * * * * * * * * * * : * * * * * * * : * * * * : * * * * : * ; r r r : * : : * * * * * : : : * * : ; ; = ; r ; < r t w w r G } G m d.hXxXCXVXmXVXAXZXPXPXLXSXJXLXKX%X| m n y r e 1 t t r r r r r r r r r u y y n B n y y n y n t n y n y n n y F d._.bXAXAXVXlXnXVXVXnXlXVXmXBXcXlXxXcXxXNXcXxX-XkXkXkX&X&X*XmXmXvXzXvXvXhXvXkXhX*X*XOX*X&XbXMXbXbXnXbXnXbXvXvXmXmXvXbXhXhX&XjX=X+X*XkXmXAXJXSXmXmXVXVXbXvXmX*X|.1.} G C s.*XzX*XxXAXvXlXKXLXKXAXAXJXmXjXlXJXKXKXKXKXPXPXPXPXPXPXKXAXZXAXVXVXcXVXxXlXNXcXlXlXXX|.(.d.s.d.<.} F n n } } r , r , ; r t y y y n n y r < : r ; r ; i ; : : * n n r r r n r r r , ; r ; ; ; r ; = = : : ; ; ; ; = = * = = * * * ", -"r r ; : : : * * * * * * : * : ; : : : : * * * * - * * : : : * : : : : : : * : * * * * * * * * * * * * * * X & * * * * * * * * * * * : * * * * * * * * * * * * * : * * : * : * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * : = * * * * * * * * * * * & * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * : * * : * * : : : = : - = w r y B n y t r r r r s.ZXlXmXcXVXKXSXVXxXxXlXcXxXNXAXs.; # r y n r r r n n r r r ; ; : : : : ; = = : * * : - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * & * X & * * * X * * & & o X & X * X X X X o o & o X X * X X & X o o o X X X X X X & & & & * X * * * * * X * * * X * * X * : : : * * * * * * * * * * : : r r r , : : * : : * * * * * * * * * * * * * * * * * * * * * : * * * * : : : : : ; w y y r r r * : < : : : * = - ; r < : : r r n C r n C n G s.| F _.SXhX%X|.%XlXcXkXlXNXKXLXPXLXKXkXcXCXSXNXlX-X_.d.} K } G F K G C F G G C m B y r y e % $ r n t r r t y y y y y y t d.KXCXVXmXmXAXmXAXAXSXNXCXZXHXSXVXNXVXcXVXVXBXVXVXVXVXNXcXcXcXBXmXmXJXJXJXAXVXlXvXlXnXnXmXvXvXvXvXvXmXmXnXmXVXmXmXmXvXlXlXvXvXbXvXvXvXvXmXmXmXSXmXmXvXvXvXlXvXlXnXmXmXmXmXmXvXvXnXJXSXVXAXKXKXKXKXJXSXxXlXSXJXKXZXZXKXKXKXZXZXZXZXAXAXVXNXmXvXxXcXcXNXCXZXCXZXVXxXcXNXVXNXNX&X*X_.(.hX-X1.n r n C m n i r y y u y n n r < ; ; ; ; ; : ; ; : : r n C ; < n r r r n r r : * r r : ; : - : ; : = = = = = = ; ; ", -": : ; = : ; : : : * * * X * * : = * * * : : * * * * : * * * * * * : * * : : : : * * * * * * * * * * X * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * * * * * : * * * * : * : * * : * : * * * * * * * X * * * * * * * * * * * * * * * * * * * : : * : * * * * * * * * X * * * * * * * * * * * * X X X * * * * * * X X * * * : * * * * * : * * : : * : : * * : : * : = ; : : * : : = = = ; w n n y y y y r r r u y r d.*X*XoXOXSXLXSXVXmXcXmXkXcXcXcXxX(.<.B r r n r n r r n y y n r r r i i : ; ; ; = : ; - : : * * - * * - * * * * : * * * * * * * * * * * * X * * * X * * * * X * * * * X * & * * & & & : * & * & X * X X * * o * * * * * & & X * * & : & * X * * * * & X * * * * * X * * * * * * * X * X * * * * * * * * * * * = : r : i r r i : , : * * : * : ; : * * * * * * * = = * * : : : : * * * : ; ; ; ; ; ; , r n y y i ; ; = * = : w r , , ; # : r ; w # n _.%Xs.(.|.(.%XKXKXsXNX&X-XkXxXCXZXZXVXcXNXZXKXKXZXZXcXNXNXVXCXZXxXNXKXVXmXAXlX*XlX*XoX%X&XXX|._.d.d.d.(.s.<.<.(.} # n n y y y y y y w n a.d.*XVXnXvXmXAXnXmXlXNXCXNXZXZXVXVXNXNXcXNXVXVXBXVXVXVXmXmXmXAXVXAXAXAXZXKXAXVXzXmXZXmXmXmXmXmXbXmXmXJXJXAXSXmXmXmXvXmXmXmXvXvXvXmXnXmXmXmXVXmXlXmXmXVXmXmXVXZXZXAXmXnXmXnXvXlXmXmXmXAXJXZXZXJXKXKXKXKXJXKXKXKXZXSXVXVXNXVXVXVXNXNXmXmXmXcXcXcXcXcXNXNXNXxXcXxX-X-XcXCXSXlX*X+X*X*X|.OXXX(.1.d.@X|.(.G F = # # ; > ; r r r r : r : i ; , ; ; ; - ; < < n r ; r n : ; ; ; * : ; ; ; ; = : : : ; : = : ; ; ; ", -"X * ; ; ; = ; r ; : * * * : * * * * * * * * : : : * : * * * * : * : * : : * * * * * * * * * * * * * * * * * * * * * * * * * * X * X * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * : * * : * * - : * * * * * * * * * : : : : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * : : r : : = : : : * : : ; : : : : : : : : : : = : : = : i i r r y y r ; # r L C w $ i 2 G OX*XOX&XJXKXSXNXSXVXNXcXxXxXxXBXBXoXF r r r n r n r n t n r r r r r ; ; ; ; ; ; ; : = : = : * * * * * * * * * * * : * : * * * * * * * * * * & * * * * * * * * X * * * * * * * * * * * * & * & X X X X X X X X * * * * * * X X & & * : : * : : : : : : : : ; : * : * * * - * * * * * * * * : : ; : : ; < ; ; : = : i ; ; r r ; ; ; ; : ; ; ; = ; = : : : : : * = : = : : = ; = = : ; : ; ; ; < r ; w w $ $ # G s.<.<.<.` G G F 1 r C G G G <.<.s.(.lXJXVXAXJXPXKXkXVXPXKXlXkXlXCXNXVXVXcXcXVXZXKXZXZXVXNXNXVXZXZXCXCXNXNXNXNXNXSXZXAXAXAXBXcXcXBXBXBXVXAXVXxXlXAXVX_.G t n r , ; r u u r t } _.kXNXNXxXVXSXAXAXCXNXxXNXNXNXNXCXcXcXcXNXBXVXVXcXVXVXVXmXmXVXVXVXVXAXJXAXVXmXVXJXVXVXmXmXmXmXmXHXJXJXVXVXnXmXmXmXmXvXcXvXkXzXvXnXmXvXlXmXSXSXSXSXAXmXJXmXAXVXAXZXSXAXnXmXVXAXVXZXJXZXZXZXKXZXZXZXZXKXKXZXKXZXZXCXVXmXVXVXVXmXcXmXcXcXxXxXxXcXNXNXVXVXVXCXVXVXcXlXZXPXKXVX-X&XkX-X&X-X-X-XxXlX*X&X*XoX|.1.s.<.} <.<.G n r r r r r r r : : w ; ; : : * * : ; ; : : : ; ; r : : * : : : : = - = : = ; : : : ", -"* = : : : * * * * * : : * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * * * : * * : * * * * : : * * * * * * * * * * * * * * * * * * : : : * * * : * : * : * : : ; < r : : ; : = : = ; : : - : * * * : * : : : : = - = = : * * * X * * * * * * * * * * * * * * * * * * * * : * * : * : : : * * * : : : = = : : : = = ; ; ; ; ; ; ; : : ; , r r : r r y y y n r r w C 1.{.oX%X%X_._.<.<.|.lXxXxXkXSXZXSXSXNXmXmXcXxXcX-Xd.<.F n y y n r n r n r r r r r ; : : : : ; = = = - * * * * * * : : * * : * * * * * * * * * : * * : : * * * * * * * * * * * * * * * * * * * * * * * * * * * & X * * * * X X X X X * X X X X X X * : * * : : = : r r r r r r ; ; : ; ; , < w , : : : ; ; ; , ; ; r r r r r , ; ; : ; ; r r t t t r r > # r C C B r * = = : : : : : ; i ; ; ; : ; ; : : : < < : $ B } s.d.a.d.%XcX&X*X*XOXOXoX|.@Xg.@X@XoX*XxXmXAXKXAXAXKXZXZXAXmXSXZXZXKXKXVXVXVXcXcXVXVXVXZXKXKXZXCXCXVXCXZXZXCXCXCXCXNXNXNXNXCXZXKXZXCXAXVXVXNXVXVXmXxXkXkX&X&X&XzXoX_._._.d.1.C # $ # <.&XAXZXCXNXNXAXCXNXNXNXNXNXNXNXCXNXNXNXNXNXNXNXcXcXcXcXcXVXVXBXVXmXVXVXAXZXVXVXAXAXnXVXmXVXVXmXJXAXJXAXVXmXmXVXmXVXmXvXvXvXzXvXzXzXkXvXmXlXmXlXVXVXnXmXmXmXmXmXJXJXSXSXJXAXAXAXAXZXKXAXKXZXZXZXZXZXZXZXZXZXZXZXZXAXVXcXvXcXvXcXcXvXcXcXxXcXcXcXNXVXCXSXAXKXZXKXKXZXKXLXPXLXZXVXAXVXVXVXZXAXNXcXVXmXlXkXjX=X*XcXcXoXXXlX X} C r # r # : = ; w r r ; ; : r r r ; : ; r ; i ; ; ; : ; : = : : : * = = = = ; * * ", -": = : : * * * * & : * * * * * * * * * : * : * * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X * * * * * * * * * * * : * * * * * * * * * * * * * * * * * * * * : = = : : : ; ; : : ; ; : * : : : r y r r r r i = = = : = : * : - : : ; : = = = = = = ; ; * * : * * * * : : * * * * * * * * * * * * * * : : : : : = : : * X * * : = ; ; r r r r r r r r y y y t r n y y y n y y r y r F _.dXSXPXKXAXZXCXPXSXNXCXNXNXmXmXNXSXCXJXZXZXSXVXkXBX-XK # r y r n r n r n r r r r i i ; : = = = = - * * - * : : : * = * - : * * : * : * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * * * * * * * X X X X X & X & & * * * : : r r : r ; : r r r ; ; ; : ; ; i # $ w < < < , , , , w , ; ; w w ; ; ; ; i : < r w y w , t C s.oXoXXXOXoX|.d.} C r # = = - - # = ; ; : : ; ; = # ; w n } a.%X-X-X-X-XOXOXvXcX;XOX+X&X=X=X*X+XOXg.oXAXJXJXAXAXAXAXZXAXAXVXCXKXKXCXJXZXZXVXVXVXNXNXCXAXZXZXZXZXZXCXCXCXCXCXCXNXNXNXNXNXNXNXNXNXVXVXVXVXCXCXVXVXNXxXkXkXzXzX-X;X*X-X-X*X&X&X%X Xd.(.@X%XzXNXCXSXNXNXVXVXVXVXCXNXNXNXNXNXNXNXNXNXNXNXNXcXVXNXNXVXcXVXVXVXVXVXSXAXAXVXAXAXAXmXVXVXVXnXmXnXAXAXAXVXBXAXZXAXZXVXmXmXvXkXzXvXvXvXvXmXmXmXmXmXmXmXmXmXmXmXmXVXAXSXAXAXAXZXZXJXZXZXJXZXZXZXZXAXAXCXAXAXVXVXZXCXVXNXVXVXvXkXcXBXcXzXxXxXxXNXNXNXCXKXKXZXKXKXKXKXKXKXKXKXJXCXCXAXAXAXKXKXKXKXVXlXNXAXAXmXxXkXxXVXmXmXAXlX&X%X_.|.%Xd.d.<.` n ; < ; ; < , w i ; ; : ; : ; i : : r r : : : : * = : = = = * = * ", -"* ; = : : = * : * * * : - : * * * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * = * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * * * * * & X * * * * : * : * * * * X * : : : : ; ; : : : : ; : : : : : * * * * : r r r n n r r = = = : - - = = = = : = = : = = = : : : : : : * : - = : : = : : * = ; = = : r r y r r r : : = ; i < w r r r r r r y y y y y y y y n n n t t y y y r r r y <.d.%XZXKXCXVXNXNXcXSXSXKXVXzXcXNXVXSXVXVXKXKXKXJXVXxXBXd.r y y y r r n r n r n r r r i ; ; ; ; : = : = : = = = = = : : = * * * : * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * X X X X X & * : * r r r r t w i i i i r r r w r y r r y n n <.(._._._._.1.<.1.K F G G G <.} <.K 1.(.d.d.(._.oX*X%XoXoX%XxXmXBXBXCXBXBXNX-X*X%XoXoXoX@Xd.s.1.} } G C <.<.<.<.d.d.oX&X-XNX-X&X*X*X|.OXjXJXNX;XxXVXkX=X*XOX|.oXhXnXmXmXAXAXAXJXAXJXAXZXZXKXKXCXKXKXZXZXAXVXVXVXAXCXVXVXZXZXZXZXCXZXZXVXCXNXNXxXNXNXNXNXNXNXNXNXcXlXNXNXcXxX&XzX-X&X=XzX-X*X*X*X*X-X-X&XkXxX&XcXNXxXNXNXNXNXNXNXNXVXVXVXNXCXCXCXCXCXNXNXNXNXNXNXVXcXNXNXNXcXcXmXmXVXVXVXVXVXVXVXVXSXAXAXmXnXVXAXVXAXVXAXVXAXJXZXKXZXJXJXJXVXmXvXvXxXvXvXvXmXvXmXmXmXmXmXmXmXmXmXmXmXVXAXAXAXZXAXZXZXZXZXKXZXKXZXZXAXAXZXZXAXAXAXVXmXcXcXVXNXcXxXcXNXcXxXzXNXNXNXVXVXZXZXKXKXKXKXKXLXKXKXJXZXCXVXVXAXZXZXZXZXZXKXAXNXlXCXKXVXmXcXvXvXcXVXZXZXKXKXNX-XBXCXZXSXbXhXd.G r F } G n n n r ; = = = ; ; r r : r r ; i ; ; ; : = ; = = = ", -"i : r r r < : ; : * * * * : : * : * * : : * * * * * : * * * * * * * * * * * * * * * * * * * * * = * : * * * * * * : * * * * * * * * : * * : * * * * * : * * * * * * * * * * * * X * * * X * * * * * * * : : : = - = = : = = , r : ; : r : : : * X * X X * = r : ; : : : ; : : ; : * ; : : ; : r , , , r r , : < y y u r r ; i y l y B y n B n y y y t t y y y y r y y y y y y y y y n n r n n r r r n r r r n r n F 1.=XxXcXcXNXVXVXVXVXVXNXkXnXCXkXlXlXxXcXNXCXKXZXSXSXNXlXNX%X<.n y r r r r n r n r r y r y r r ; ; , ; ; ; : : : : : = = = = = = = = : * * : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * * * * * * * * * * * * * * * * * : : : : r y r i % r f C G } } G } <.<.} } s.1._.%X-X-XCXCXVXVXVXVXNXNXNXcXcXcXcXlXcXcXcXcXVXAXZXAXVXVXvX*XhXvXmXmXmXkXvXmXmXjXkXxXcXVXxXzXzX=XjXcX=X=X-XxX-X*X&X&X-X;X-X-X-X-X-X-XNX-XxXxXBXNXNXAXVXVXAXAXAXmXmXxX&XlXJXAXJXJXAXAXJXAXAXAXAXAXAXZXZXZXZXZXZXZXZXZXZXZXZXZXCXCXZXCXZXZXCXZXZXZXZXZXZXZXZXZXCXCXCXNXNXxXxX-X;X;X=X*XOXOXOX*X;X;X;X*XOXOX;XBXVXNXVXNXNXVXNXxXcXxXlXNXNXNXNXNXNXNXNXBXVXBXNXNXNXNXVXNXVXNXVXNXNXNXNXNXNXNXVXNXVXVXVXmXBXNXVXAXVXVXmXVXAXJXAXAXAXAXAXHXJXAXAXAXVXVXAXmXmXjXvXvXvXvXvXvXvXvXvXmXmXmXmXmXmXmXBXBXBXVXVXJXZXAXZXKXZXZXZXZXKXKXZXZXZXKXZXZXZXCXNXNXNXxXcXcXxXxX-XBXNX-XBXNXNXNXVXCXZXZXZXKXKXKXKXKXKXKXKXCXAXSXAXAXAXAXVXVXVXAXZXZXKXZXZXAXVXVXVXVXmXNXCXCXCXCXNXxXCXZXKXKXZXNX*X*X%X%X*XoX X%XoX|.a.m m m r r i : i i r r : r : ; < : : ; : : ", -"n r r r r r r r i : ; : : : : * - * * * * * * * * * * * * * * * * - * : * * * * * * * * * * * * * : * * * * * * * : * - * * * * * * * * * * * * * * * * * * * * * * : * * * * X * * * : : * * * = = : ; : : : : : ; : = = = * * : r w ; : : r r r r r r r w r r r r r r r < r ; r r i ; : < r y f y n n n B n r w w u u y C m n w i r y y y u u y y n y n y y y r y y y y t r r t y n r n r r r r n r n n n n r G d.hX%X*XNXNXNXVXVXcXcXlXlXlXhXKXlX-XxXNXNXNXVXNXVXSXZXSXNXlXCX|.n r y y n r r n r r r r u r w i ; : r i : ; ; ; ; ; : ; ; ; : ; ; : = = = * * * * : * * : * * : : * : * : * * * * * * * * * * * : : * * : * * * * * * * : * * * * * * : : ; r r r r y r i y m K 1.d._.%XcXmXmXmXKXAXVXCXAXAXBXCXCXNXVXNXNXcXxXcXcXBXVXVXVXVXVXVXNXNXmXVXVXVXNXVXSXVXVXvXkXhX*XhXhXvXmXmXkXvXvXcXcXcXkX=X&X*X+X&XzX=X*X;XxXxXxXzX-X&X-X-XNXxX-XNXNXBXNXcXcXxXBXNXNXNXcXvXvXmXAXAXZXZXJXJXZXZXAXAXAXAXAXAXAXJXAXZXZXZXZXZXZXZXZXCXZXZXZXZXZXZXZXZXZXCXCXCXZXKXKXCXCXZXZXZXZXCXCXCXBXNXNXBXBXBXxX*X*XOX|.OX*X;X;X*XOXOX-XcXcXVXNXVXVXNXNXCXVXcXcXNXNXNXNXNXNXNXNXNXCXCXCXCXCXCXCXVXVXVXNXNXVXNXNXcXcXcXcXcXNXcXcXcXcXcXcXVXVXSXVXAXAXAXAXJXJXAXAXJXAXAXAXJXZXAXAXAXmXmXmXcXcXvXcXmXmXVXcXmXmXmXVXmXmXmXmXCXCXVXAXAXZXZXZXZXZXZXKXKXZXZXKXKXZXKXZXZXCXCXCXBXBXBXNXcXcXcXcXNX-XxXNXNXNXBXNXVXVXAXZXZXZXZXKXJXZXKXKXSXVXAXAXAXAXVXVXVXVXVXVXVXVXCXSXVXVXAXVXAXVXVXVXCXCXCXNXNXCXCXKXZXHXKXlX*XlXCX&X*X-XlXNXlXlXlXaX%XaX_._.| N i X = ; ; < r r r : i i i r ", -"i r r r r t y y r r r i : : : : * * * * : : * * * * * * * * * * * * * * * * * * : * * * * * * * * : * * : - : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * : * * * : * * = ; ; = = = = ; ; i ; i r ; ; : : ; ; ; ; ; : : ; : : ; r r r r r r y r y y t r r y n r r y r r r r , : i r r r r w w r } 1.s.(.(._._._._.d.s.} r i u y y y y y n r y y y n n y r r r r n n r r r r n r n n r n r r r n n t n ` } |.ZXVXVXNXmXVXVXNXVXcXNXSXVX-XzXcXNXNXxXcXNXZXVXVXNXNXZX|.L u y n r r n r n r r r r r r r r ; r r w r r w i , r r : : ; ; : : = = = : : : * * * * * * : * * * * : * * : : : = = * * * * * * * * : * * * * * * * * * * * * * * : r r t y y y u w y D } |.*XZXKXKXNXxXxXlXSXZXNXVXCXVXNXBXSXVXNXNXcXkXxXkXmXVXVXVXVXVXVXVXVXVXVXSXVXVXVXxXkXlXlXcXmXcXkXjXjX*XkXmXvXkXmXmXBXNXNXxXcXcXcXcXxXxXkX-X-X-XzX-X;X*X&X&X-XkXNXNXNXBXBXNXcXcXxXxXcXcXcXxX+XoX*XmXAXAXSXAXJXAXJXAXAXJXAXAXAXAXAXAXZXJXZXZXAXCXAXAXCXCXZXZXZXZXZXZXZXCXCXCXCXCXCXCXCXCXBXNXCXNXNXNXNXNXxXNXxXxX;X;X-X*XOX|.|.OXOXOX|.oX*XxXmXVXNXcXNXVXBXNXNXVXVXVXNXNXCXCXCXCXCXCXCXCXCXAXCXCXCXCXVXVXVXVXVXVXNXNXNXcXNXNXcXcXcXcXcXcXBXcXmXVXVXVXmXSXAXJXAXAXJXJXJXJXAXJXAXJXAXSXVXnXmXmXmXmXmXmXmXVXmXVXmXmXNXVXVXVXSXVXZXZXZXZXZXZXZXZXKXZXZXKXKXKXZXZXZXZXZXZXCXCXCXVXNXNXNXNXNXcXcXNXNXNXNXNXNXcXxXNXVXCXAXAXZXAXCXVXVXAXAXSXVXVXVXAXVXAXVXVXVXmXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXCXBXBXNXCXCXZXZXHXZX-XOX*XCXSXkX-XlXlXZXSXlXNXUXlXZXZXSX X(.a.F F F < r r r r i r : : ", -"i i r r n t n r r r w ; ; = : : : : : : * * : : * * : * * * * : * : * * * * * : * * * * * * - * * * * * * : * * * * * * * * * * * * * * * * * * * * : * * : * : * * * * : : * : : : : = ; : ; ; : ; ; : ; i ; # , r r r r i < < r r ; , r r r r y r y r r r r r r r t n r ; r n y n n r y n r r r n r n } G d.sXZXLXKXPXLXZXPXPXPXPXSXf.L : i * = # # * n n $ # = ; r y y y y y n r r r r r n r r n n t n m , ; ; w % L |.%XkXlXVXVXNXNXcXNXVXVXVXmXxX-X-XNXNXNXNXVXVXNXcXlXlXkXBX%XF r n y r n n r r r r r r r r r r y y n y y y r t r r r r r w r < ; ; : : ; ; * : * * * * : : * * * : : : : : : = : * * * : : - : : : : - * : : : * * = : = : : r r r , ; , r C C <.(.oXoXvXhXhXCXZXNXNXVXCXVXCXZXZXZXZXNXVXSXZXSXVXlXlXNXCXCXVXVXmXSXAXAXSXAXSXAXZXVXVXVXSXmXVXlXmXlXlXlXlXmXVXmXmXmXBXcXxXcXNXxXcXcXxXxXxXxXxXkX-X*X&X*XoX|.OXOXoX*XOX*XxXNXNX-XNXmXxXcXcXxXxXcXxXOX@X+XlXSXAXSXVXVXAXmXVXmXVXVXSXSXSXAXAXVXAXCXAXVXVXCXVXCXCXCXCXCXCXCXNXCXCXVXCXCXNXNXBXNXNXNXNXNXxXNXxXxXxXxXxXxXxX;X;X*XOX|.|.OXOXOXOXOXzXcXmXVXNXBXVXNXVXNXNXxXNXVXVXNXNXCXCXCXCXCXCXZXZXZXAXCXCXCXCXCXVXVXVXVXVXNXlXcXNXcXcXmXVXcXcXcXcXcXcXcXcXmXcXmXnXmXmXVXAXAXJXAXAXAXAXAXAXVXmXVXBXmXmXmXmXmXmXlXVXVXVXVXVXNXVXAXAXAXZXZXZXZXZXZXZXKXZXZXZXZXZXZXZXZXZXZXZXCXCXCXCXCXCXNXBXCXNXNXNXxXNXNXNXxXNXcXcXcXNXVXVXVXVXVXVXVXAXAXVXVXcXmXmXVXmXcXmXVXcXcXcXcXcXcXcXcXcXcXNXcXVXVXVXNXNXxXxXNXBXCXCXZXKXKXKXCXlX-X*XlXSXNXxXlXNXSXSXlXlXZXlXaXUXSXlXSXZXaX(.} r r r r r i : : r ", -"r r r t r r n r r r i ; ; ; : = - * : = * * : * * * * * * * * - * * * * * * * * * * * * - * * * * * * * * : * * * * * * * * * * * * * * * * * * : * : * * : * * : : * * : = = : = = ; ; ; : ; ; ; w i r < : C G r : i = r y y r t y y t n y y r r r r r r r r r r r r r } 1.L ; i i i r r r y y r w r n | XlXSXSXVXVXSXSXZXSXSXSXKXLXZX-X|._.(._.(.d.(._.%X_._.d.s.} ; ; # i w i u u u y y y y y r r r G |.|._.d.s.} y n F K } 1.oXSXSXVXVXcXlXNXNXlXNXNXVXVXZXZXNXNXNXcXxXkXkX-XNX|.y r r n n n n r r r r r r r y y n y y y n y y y n n y y r r r r r r w i i ; ; : : : : : : = ; ; ; : ; ; ; ; ; = = * * : = = = = = : : : = * * * = ; ; r r i 2 # i F a.d._.|.oX%XlXAXVXNXxX+XhXVXVXCXCXCXZXCXZXZXZXZXVXVXZXVXcXVXCXZXAXSXZXZXHXZXZXJXSXZXSXZXAXAXAXVXcXVXVXAXVXVXVXcXvXAXVXnXSXmXVXNXNXVXmXmXNXNXcXxXxXxXkXkX-X&X*X*X&X-X*X*X-X*X*X-X-X-XxXBXNXxXxX-X-XxXxXcXcXcXvX+XoXjXmXSXVXAXVXmXAXVXSXVXnXmXnXBXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXNXNXNXNXNXNXNXNXNXNXxXxXBX-X-XxXxX-XxXxXxXxXxX-X;X;X*XOX|.g.|.OXOX*X;X;XvXvXcXmXVXcXcXmXlXkXvXVXVXNXVXVXNXVXCXZXCXCXCXCXZXZXZXAXCXCXCXCXCXVXVXVXVXVXNXNXNXcXcXcXcXcXNXcXcXcXcXcXcXcXcXcXcXmXVXmXBXAXAXAXAXAXAXAXmXVXAXAXVXmXmXmXmXmXmXcXcXVXVXVXCXCXCXCXAXAXZXZXZXZXZXKXZXZXZXZXKXZXKXZXZXZXZXZXZXZXCXCXZXCXVXNXNXNXNXBXxXxXxXNXNXxXNXxXcXcXcXBXVXcXcXcXxXmXVXVXVXmXcXmXcXmXmXcXcXVXmXcXmXcXcXcXcXcXcXcXcXmXcXmXNXNXNXNXBXBXBXBXxXxXBXBXSXZXZXSXSX-X-XlXNXCXSXSXJXUXNXlXlXlXnXZXdXaXlXMXCXs.r y n t r r r i i r ", -"n n t n t r r < i : : : ; ; ; ; = : : = * : * : : : : * : * * : : : : * : * : * * : : * * & * * : : * : * * : * * * * * * : * * * * * * * : * : * * * : : * : * * * * : : ; ; ; ; ; ; ; ; > i r r u t r y F ` s.oXoX_.d.} y u C n r r u r r r r r u r r r r r r r r r r F <.1.d.d.s.} i r r r r n } G r <.lXCXSXVXZXZXZXZXCXJXKXZXZXZXSXCXKXKXAXAXZXZXZXKXLXKXCXVXSXlX_.(.(.s.a.d.n w w w t y u r G a.} s.{.%XZXZXmX%XoXoX X1.<.<.|.CXCXVXVXcXxXcXNXVXZXCXCXZXZXZXNXxXlXlXlXcXxX-XcXs.u n r r r r r r r r y n y y y r y y y y y y n y y y y y t r r r r r r i i ; < ; < ; ; ; ; ; ; ; ; r ; ; ; ; ; : : : : = = = : : ; ; = : ; i r r r y y n r B _.|.%X%XxXCXZXAXAXBXBXxXcXNXVXVXVXVXNXCXCXCXZXZXZXCXZXZXVXBXVXmXVXZXZXJXZXAXAXAXAXAXAXAXVXBXVXcXcXVXVXcXcXcXcXcXcXcXcXVXVXcXVXBXmXVXVXVXVXCXVXCXVXVXVXNXNXNXcXxXxXxXxXkXzX-X-XxXcXNX-XxXxXNXNXlXxXxXxXkXlXNXcXcXBXmXcXvXjXvXmXnXVXVXnXVXnXmXmXVXVXVXVXmXVXVXmXVXVXVXmXVXVXVXVXVXVXVXNXNXNXNXNXNXNXNX-XNXxXxXxXBX-XxX-X-X-X;X-X-X;X*XOXOXOXOX|.g.g.g.g.OX;X;X;XvXvXcXcXxXvXvXmXmXlXcXVXVXVXVXCXCXCXZXVXCXCXZXCXZXZXZXZXCXCXCXCXVXVXVXVXVXVXVXNXNXcXNXBXcXNXNXcXcXcXcXcXcXcXcXcXcXcXcXmXmXmXmXBXVXVXcXVXmXmXmXmXmXmXmXmXmXmXcXcXmXcXVXVXCXCXCXCXZXZXZXZXZXZXZXZXKXKXZXKXZXZXZXZXZXZXZXZXCXCXCXCXCXCXBXNXNXxXxXxXxXxXNXxXxXNXNXxXcXcXcXcXlXcXxXcXVXVXVXVXNXcXmXVXmXmXmXmXcXVXmXVXNXcXvXxXxXcXcXmXmXNXmXVXVXVXVXSXBX;XOX|.OX|.OXOXkXCXVXlX-XNXNX-XSXIXZXsXHXZXlXlXlXSXsXSXSXSXbX.X1.m t r t n t r y y y y ", -"t t t r y t r < : : : : ; ; ; r i ; - * * : : : : : : : * * : : : = = : - : : = : = * * * * * : : * * * * * * * * * * * * * = : : : = : : : : : * : = * - = ; : : ; : ; , ; ; ; ; - = ; m m n u e e t r < 1.%XSXKXKXZXZXNX%X%XhX%Xd.1.| } F F G l u r r n n r n n r r w ; ; n oXlXlX-XoX1.C y y y n n B B } (.hXlXlXlXcXVXVXSXNXZXZXCXSXNXNXlXmXKXKXKXZXVXlXcXVXCXAXZXZXVXcXcXVXCX|.<.s.1.t u w 1.|.hXSX%X(.%XlXVXAXBXBXCXKXcXxXlXxXlXlXcXcXcXNXNXcXNXZXVXNXCXZXCXlXkXxXkX-XxXlXBX|.n r r r r n y n r n y n y r r y r n r r t r r r r y t t r r r y y y y r r r r r r r r r ; ; ; < w r , ; ; ; r ; : : ; ; : r r r r r r r r n y y y f l y u C |.CXCXCXCXBXBXVXZXZXNXNXNXNXVXZXCXCXVXVXVXCXZXVXCXCXVXVXCXVXVXZXZXAXZXVXNXVXVXVXVXVXmXVXVXVXVXcXmXcXNXcXcXcXcXNXcXcXcXNXVXVXVXCXAXVXVXNXVXZXZXZXAXCXCXVXVXVXVXVXVXVXNXNXcXxXlXkXxXNXNXcXNXNXNXNXNXBXNXNXNXNXNXNXcXVXNXmXmXmXcXmXVXAXAXAXAXSXVXnXVXVXVXVXAXVXVXVXmXVXVXVXVXVXVXVXVXVXVXVXVXNXVXVXNXBXNXNXBXxXxXNXNX-XxXxX-X-X;X*XOXOXOXOXOXOXOXOX|.|.OXOX*XxXxXBXcXcXvXvXxXcXcXcXcXcXxXcXNXVXVXSXCXZXZXZXCXZXZXCXZXZXCXCXCXVXVXVXVXVXVXVXVXVXVXNXNXNXBXcXcXNXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXxXcXvXvXvXmXmXcXcXmXmXcXcXcXVXVXVXVXCXZXZXZXZXZXKXZXZXKXKXZXZXZXZXZXZXZXZXZXZXZXZXZXZXCXCXCXCXCXCXNXNXxXxXxX-XxXxXxXNX-XxXxXxXxXNXNXNXxXcXcXNXVXVXVXVXVXVXmXNXVXVXVXNXNXVXVXmXNXcXcXVXcXBXVXVXVXVXVXVXSXCXCXNXOXOX|.g.|.g.|.|.*XkXlXcXlXSXKXlXlXHXZXSXZXSXlX%XnXHXSXJXSXSX*X1.m n r r r y y n n r u y ", -"y n n r t r r r r r r r r w ; ; : ; ; : : : - ; ; : : : = - : : : = = = * = = = = = * : - : : : : * : * : * - * * : : * * : = : : = : : : : = : i , , < n n y u m _.d.s.<.} F m n B m m (.-XoXd.s.s.d.<.d.hXZXZXVXNXSXSXZXZXVXcXcXVXZXKXZXVXVXAX%X%XoX-X%XoXoX@XoX%X(.} } <.<.(.hXvXVXVXlX&Xs.t w i w t ; F |.&X&XkXNXNXcXNXVXVXZXZXZXZXZXZXZXZXZXZXNXxXNXBXZXZXZXZXCXCXZXVXCXZXCXBXBXxX-X%X|.|.oX-XxXNXNX-XcXZXVXxX-X-XxXcXlXxXxXxXcXxXxXNXcXlXkXxXNXlXNXVXNXNXVXNXNXNXcXxXxXkX_.C r y n y y r r r y n r y r n r n r r t n n r y n r r n r r n r y y y y y r y n y y r y t t t r r t r r t y t y y y t t r r r t y y n n y y r w r t n y u u d.lX-XNXNXNXNXNXNXcXcXkXkXNXVXNXVXVXNXNXVXCXVXVXVXVXVXCXVXVXCXCXZXVXNXNXNXNXcXcXNXcXVXNXVXNXNXcXcXcXNXcXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXCXVXVXVXCXZXZXAXAXCXCXCXCXCXVXCXCXVXVXNXNXNXNXNXNXNXNXNXNXNXBXNXNXNXNXcXcXcXcXNXcXNXcXcXmXVXVXmXAXAXAXAXAXAXAXAXAXVXVXVXVXVXVXVXVXVXVXVXVXVXVXNXNXNXNXNXNXNXNXNXBXNXNXBXNXNXNXxXxXxX-X-X-X;X;X;X;X*X*XOXOX*XOX*X*X=XxXxXxX-XcXxXcXxXvXcXvXxXxXxXcXvXcXcXNXVXSXZXZXZXCXCXCXZXZXZXAXAXVXVXVXCXVXVXVXVXNXVXNXNXNXNXNXmXNXcXxXcXcXxXxXcXcXvXvXcXvXcXcXcXcXcXvXvXvXzXvXvXxXcXcXcXcXcXcXmXcXcXVXVXVXCXZXZXZXZXKXZXZXZXZXKXZXZXKXZXZXKXKXZXKXZXKXZXZXZXCXCXCXCXCXCXCXVXNXNXNXNXBX-XkXkXkXxXxXxXxXxXxXNXVXVXcXmXVXVXVXVXAXVXVXVXVXNXVXVXmXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXAXCXAXkX;X;X;X|.|.|.|.|.*X-X%X&XSXSXHXlXlXSXVXlXNXSXSX-XNXdX%X|.s.} B r n n r r r y r r r r r r ", -"t y n r n r r r r < r < r , : r r ; < : : r ; ; , ; : ; : : = = : = = = : = = ; = = = = : : * * : : * * * * : : * * : : : ; = = ; = = # # i C C m L 1.d. X_.(.d._.ZXZXSXKXKXhX_. XoXoX%XlXlXVXZXKXAXAXAXVXcXVXAXVXVXVXVXCXVXmXmXcXNXNXNXcXNXmXcXcXAXVXVXmXmXBXlXVXJXVXAXAXmXZXJXSXSXSXAXmXkXjXs.K } } G K <.@X*X*X=X-X*X*XlXcXNXSXZXZXCXNXcXxXkXkXNXxXxX-X;XkXNXVXZXZXZXZXZXCXNXNXlX=X&X&X-X-X=X*X*X;X*X;X-X-XxX-X*X*X*X;XxXNXNXxXNXVXNXcXcXcXcXcXcXNXNXNXBXCXVXNXSXAXmXVXSXNX_.n # $ w t y n n r n r r n n n n r n n r r t r t y r n t n n t y y y r r y y y y y y y y y n n n y n y n y n y n n y n n y y t n y t t t y n y n } <.d._.(.d.|.-XVXNXNXNXNXNXVXcXzXjXvXcXNXNXVXVXAXVXVXVXSXVXVXZXZXZXZXSXVXVXcXcXNXNXNXNXNXxXNXNXNXNXVXVXNXNXNXVXVXVXVXVXVXVXVXVXCXCXVXVXVXCXcXlXNXVXVXCXVXVXZXVXVXZXZXVXNXSXVXCXCXCXCXCXCXCXVXVXCXNXNXNXNXNXNXNXNXNXNXNXNXNXlXlXcXcXcXVXNXcXNXNXmXVXAXAXSXAXAXAXAXVXVXVXVXVXVXVXVXVXVXmXNXmXVXVXNXNXNXNXNXcXxXxXxXxXxXxXxXxXxXxXxXxXxXxXkX-XzX-X-X-XzX-X-X=X-XzXzXzXxXxXcXcXzXxXxXxXxXkXxXxXxXxXkXvXvXxXxXcXmXNXVXVXVXVXVXCXCXCXCXVXCXVXVXVXVXVXVXNXNXNXNXNXNXNXNXNXNXmXcXcXxXxXxXxXxXxXcXcXxXxXxXxXvXxXxXzXzXzX=XzXzXvXvXvXxXxXcXcXNXNXNXNXNXVXVXVXCXZXZXZXZXKXKXZXZXKXZXKXKXZXKXKXKXKXKXZXZXZXZXZXBXVXNXNXBXNXNXNXxXxXxXxXxXzXxXxXxXxXxXxXcXxXxXcXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXAXAXVXVXAXVXmXkX-X*X*X*XNXZX-X*X*X-XSXlX%X-X&XoX%X%X%X X1.K n < w r t t r t t n r r t n n y r y ", -"r n r r r t t r r r r t r r r r r r r , r r r r < ; , : ; ; ; ; ; ; = = : = ; : : = = = * : : : * = * : * : : : : ; = * * i u m K <.<.1.|._._.%XZXCXSXCXZXKXKXZXVXmXlXkX*XmXKXAXmXCXNXNXSXNXcXcXxXcXNXcXcXcXmXVXVXNXmXlXxXxXxXxXxXxXxXkXxXzXxXcXVXVXAXVXVXVXcXlXkXxXlXxXzXlXlXnXmXmXZXVXVXVXBXmXxX&XzXmXcXhXjXjXjXjXjXvXlXxXNXNXcXcXNXNXcXVXNXNXNXNXNXlXkXNXAXZXZXZXZXCXVXVXVXNXcXVXVXNXxXzX-XkXxXkX*X*X*X*X*XOXOXOXOX*XxXNXNXNXVXxXcXNXNXNXVXVXVXVXNXNXSXZXZXnXnXlXlXZXlX%X(.s.} G n , = w u y n n t n r n r n n r n r n t t n t t r r n r y r y r r n n y r n n t n t t t t t t r t r t t r < r r y n n r t n t , , > # K xXKXZXCXCXCXCXBXNXNXcXcXcXVXZXVXmXVXVXmXcXVXVXAXAXVXVXAXVXVXVXNXVXmXmXmXNXcXcXcXxXcXcXcXxXNXNXNXNXNXNXVXNXNXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXNXNXVXVXVXVXVXNXVXZXCXVXCXCXVXVXVXVXVXNXNXNXNXNXVXVXVXCXCXCXNXNXNXNXNXNXNXNXNXNXNXBXlXNXcXcXcXcXcXNXBXmXVXVXAXAXAXAXCXAXVXAXVXVXVXVXVXVXmXcXcXxXxXxXcXNXlXNXNXcXcXxXkX&X-X-X-X&X&X-X&X;X-X-X-X-XzX-X-X-XzXzX-X-X-X-XzXzXzXxXcXxXzXkXxXvXxXxXvXcXkXvXxXxXcXkXkXcXcXcXcXVXVXVXVXVXAXCXAXVXVXVXVXNXVXNXNXNXNXcXNXcXNXcXNXmXcXcXcXcXcXcXcXxXxXxXxXxX-XxXzXzXzX=XzXzXzXzXzXzXxXvXvXxXcXBXBXNXVXVXVXCXZXCXVXZXZXZXZXZXZXZXZXZXKXZXZXZXKXKXKXKXZXKXKXKXZXZXZXVXVXBXNXNXcXxXxXxXzXzXxXxX-XzXxXxXxXxXxXxXxXxXxXxXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXAXVXAXVXVXlXXX*XlXfXlX*XoX%X(.} r m r $ r t t n n t t t n t n t n r r r r r n ", -"r y n t t r r t n y y y y n y r y y r y r r y y y y r y r r r r w i : : ; : = ; = = * # * = = = = = = : ; = # # ; $ G d.a.d.d._._.|.%X%X*XVXZXZXKXJXVXcXNXNXNXJXKXZXlXNXZXZXVXmXVXVXlXvXkXSXSXNXcXcXNXVXCXVXVXVXVXCXVXNXmXcXcXcXcXxXlXxXcXkXkXzXzXcXmXcXxXlXmXVXVXVXVXcXNXcXkXlXAXVXmXVXmXmXmXmXmXmXBXVXmXcXcXcXcXcXzXvXxXxXxXcXxXzXkXxXxXkXlXNXNXNXNXNXNXNXBXNXVXVXVXVXVXAXCXVXVXVXVXVXVXcXNXNXBXVXVXVXBXNX-X-X;X;X;X*XOX*X*X*X&XkXkXkXcXcXcXcXVXSXVXZXZXZXSXSXVXlXcXNXVXNXNXVXZXZXkX%X@X(.d.} V y , w r r y y t n r r n t t t y y r n y y y y y y y y y y y n t t r t n t t t t t n r r r n r n n n y t r r y t r n } } | <.(.lXZXZXVXNXNXNXNXcXxXxXcXVXVXmXcXVXVXmXVXVXAXSXVXcXcXBXcXcXcXNXcXNXcXcXNXNXcXNXNXcXcXcXcXxXNXxXNXNXNXNXNXNXcXNXcXNXNXVXVXVXNXNXNXVXNXNXNXcXcXcXcXcXNXcXVXVXVXCXVXVXVXZXCXVXVXVXVXCXCXVXCXVXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXBXNXNXNXNXcXcXcXcXcXcXxXvXxXxXmXVXVXZXCXAXVXVXVXVXVXVXmXVXcXmXmXcXmXcXcXNXcXxXxXxXxXlXkX-X=X&X&X-X;X*X;X*X;X=XzX-X-X;X;X-XzXzXzXzXzXzXzXzXzXxXxXxXkXvXxXvXxXxXxXxXxXcXzXxXcXkXxXcXcXcXcXmXVXVXVXVXVXVXVXVXNXNXNXNXcXcXNXNXcXcXNXNXcXNXcXBXcXcXcXcXcXzXxXxXxX-XxX-XxXzXzXzXxXzXzXxXxX-XxXxXxXvXxXcXNXNXNXNXVXCXCXZXCXZXZXZXZXZXZXZXKXZXZXZXKXZXKXZXKXZXKXZXZXZXZXZXCXCXBXVXVXBXCXNXNXNXNXNXNXcXNXNXNXNXNXNXxXcXcXBXcXcXcXNXNXVXNXVXVXVXVXVXVXVXVXVXmXVXmXVXVXVXVXVXVXVXVXcXVXcXNXcXmXmXcXcXmXcXcXvXvXcXcXcXcXvXkXkXkXkXkXkXlXmX*X*X%XhXlXlXhXd.} K F B y y n t r t r y y t t r r r y r r n t n r ", -"y y r r r n r r r t y r r y y y y n y n y y r y n y n n y y y n r y n y y y y r r r r r r r r r r r r r r <.d.d.d._.oXAXAXKXZXVXZXAXKXKXZXVXSXKXLXKXAXVXhXNXZXKXKXKXCXVXSXZXVXvXVXAXAXVXNXZXZXVXVXVXNXNXVXZXCXCXVXmXNXCXCXAXAXxXlXlX*X-XxXxXcXkXzXzXvX&X*X-XVXVXZXSXSXcX-XNXZXZXZXZXZXAXVXmXVXmXNXVXcXxXxXxXlXxXzXzXzXxXkXxXcXNXxXkX-XkXzXzXlXkX-X-XxXxXNXcXNXNXNXNXNXNXVXVXVXVXVXVXVXVXVXmXcXVXcXcXxXcXNXNXcXcXBXBX=X*X*X&XjXkXkXzXcXNXNXVXVXVXVXNXmXVXVXNXcXcXcXcXcXlXxXxXcXcXxXlXcXBXCXAXCX-X%X|.(.<.G n ; w r y y y y y r y y r y r y r y y r y y y y r r r r r n r r r r r r r r r r r r r r t y d r y t < , > B s.&X*XkXlXlXvXlXlXlXxXxXxXvXxXxXcXcXmXmXmXmXmXSXAXnXVXmXcXcXmXcXcXcXcXcXcXxXcXVXVXVXVXVXVXVXVXNXNXBXxXxXNXcXcXcXcXcXNXcXNXNXNXNXNXNXNXNXcXVXVXVXVXVXVXNXNXcXcXcXVXVXVXVXVXVXVXBXVXBXVXNXVXCXCXCXCXCXVXVXCXNXCXCXCXCXNXVXVXNXBXVXVXNXNXNXNXVXVXVXVXvXxXzXzXxXxXvXxXcXmXNXBXmXmXcXmXcXcXcXcXcXVXVXVXVXVXmXcXNXcXcXcXxXkXkXkX-X=X;X*X;X&X;X-X;X=X-X-X;X;X;XxXxXxXcXcXxXxXxXxXzXzXzX-XjXzXkXkXkXkXxXxXxXkXxXxXcXxXvXcXcXcXcXmXcXNXVXNXVXVXNXNXcXcXcXzXxXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXxXxXzXxXxX-XxX-XxXzXzXzX=X=XzX-X=XxX-XvXxXxXxXxXcXcXNXNXNXNXNXNXNXVXVXCXCXZXZXZXZXZXZXZXZXZXZXZXZXCXCXCXCXCXCXCXCXZXZXZXZXZXZXZXZXCXVXNXBXNXNXcXxXcXcXNXNXcXBXNXNXVXVXNXVXNXNXmXVXNXNXNXNXNXNXcXcXVXmXcXvXcXcXVXcXNXcXNXcXcXcXcXcXcXcXcXcXcXcXvXkXzXzXkXxXlXkXkX-X&XkXlXlXSX%X-X-XhXnXnXkX` r C C n r r r r r r r r r r n r n n r r n r r t t ", -"r y t r n n n n r r r t y r r r t t t n t n t t t t t n y n y y t y n t n n n f t r r t e t r r r r w w , n _.mXhXVXVXkXNXzX*X*X*X*X*XkXKXJXKXKXLXKXKXZXVXVXVXAXVXSXAXVXVXVXNXcXNXCXZXCXZXCXVXVXVXCXVXAXVXVXVXVXlXlXCXCXCXNX-X*X&XcXcX-XlXlXNXVXlX&X&X&X-X-XcXNXVXVXNXlX-XlXNXNXVXNXNXcXcXNXNXcXxXxXxXxXxXxXxXxXlXxXxXNXNXNXVXVXNXNXcXcXxXNXxXxX-XNXNXNXNXBXBXNXNXNXNXNXNXNXNXcXcXcXxXxXcXcXcXxXkXkXkXxXcXmXmXlXxXxXzXzXcXvXvXmXcXxXxXxXxXcXkXkX=X=XzX=X=X=X=X=XkXkXkXxXxXxX-XxXxXcXxXcXxXkXkXNXBXBXcX;X*XOX|.2.G r 1 e t t t y y t y y y r y r y y r y r r r r n r r r r r r r r r r r r r r t 1 1 w e w t G <.1.d.|.|.=X=X&XjX-X&X-X=XkXxXcXcXxXxXxXcXcXmXmXVXBXmXBXcXmXmXcXcXcXcXcXxXcXcXvXxXxXVXVXVXVXNXNXVXVXVXVXCXVXVXNXNXcXcXcXcXBXNXNXcXcXNXNXVXNXNXVXVXVXVXVXVXVXVXVXNXcXVXVXVXVXVXVXVXZXZXVXNXVXVXVXmXCXCXSXCXVXVXVXCXNXCXNXNXVXVXVXVXCXCXVXVXVXNXVXVXNXNXNXBXNXxXxXxXxXcXcXcX-X-XNX-XxXcXxXcXcXcXcXBXVXVXVXVXVXVXVXcXcXNXNXcXcXcXcXxXxXxXzXzX-XkXxXxXzXxXcXxXxXxXxXcXcXcXNXcXcXcXcXxXxXxXzXzXjXjXzX&XjXjXkXkXxX&XzXcXcXxXxXxXxXvXzXcXxXxXcXcXxXcXcXNXxX-XzXBXcXxXxXxXcXcXxXxXxXcXcXxXxXcXxXxXxXzXzXzXxX-XxX=XzXzX=XzXzX=X-XxXxXxX-XBXNXxXxXxXxXcXNXxXcXcXcXcXcXcXNXNXVXNXNXNXNXBXBXVXCXCXCXCXCXZXZXZXZXZXZXZXZXKXKXKXZXKXKXZXKXZXZXZXVXCXVXVXVXcXcXNXNXcXNXcXNXcXVXNXNXcXcXNXcXcXmXcXcXcXcXcXcXcXcXcXcXcXvXcXcXcXNXNXcXcXcXcXmXmXmXvXcXcXxXxXxXxXzXxXxXcXmXcXcXxXkXhX*XhXlXhX%X%X%XsXhXNX` X : i i r r r r r r r u r t t t r y r r y n t n r ", -"r r < < r r r n n r n n n n r n n y t r t y n t y n r t t r r r r r w , w ; w ; C (.(._.(._._._._.(._.d.d.@X%XkXcXNXVXcXxXcXkX%XkX&XOXOXZXKXKXKXKXKXKXKXKXAXmXVXNXNXVXVXVXVXVXVXSXVXCXAXCXAXCXVXVXVXVXVXVXVXmXkXcXmXVXVXcXkX*X*X*XcXNXkXcXxXhX-X&X*X-XkXxXxXxXxXxXxXxXxXxXxXxXxXxXkXxXxXxXxXxXxXNXxXxXxXxXxX-X-X-X-X-XxXlXxXcXNXNXlXNXNXNXcXxXxXNXxXxXxXxXzXxXxXNXcXNXNXxXxXcXVXcXcXzXzXxXcXmXzX*X&XxXVXVXSXZXZXVXcXcXvXvXzXjXzXkX-X&X&XjX&X&X&X*X=X&X=XxXxX=X=XkXkXzXxXxX-X-X-X=X-X=X=X;X;X*X*XOXOX+X+X*X*X*X+XOXoX|.d.d.<.G n t t t 1 w i u r u u r r r r r r r r r w r r r y r r r w r r n B } <.1.<.d.oXoX*X=XjXzXzXjX=XjX&X=XjX=XjXzXxXzXzXvXcXcXvXcXvXmXmXvXvXcXvXcXvXcXcXcXcXVXVXVXVXVXcXcXVXVXVXVXcXcXcXcXcXNXVXNXVXVXVXVXVXVXcXcXcXcXcXcXcXNXNXNXNXNXVXVXVXVXVXVXVXVXVXVXmXVXVXVXCXCXVXVXVXCXCXVXAXVXVXVXNXVXCXAXAXAXVXCXNXNXNXNXVXVXCXBXVXCXVXSXVXVXNXNXNXNXNXBXNXNXNXNXcXNXcXNXNXBXxXcXcXNXcXNXcXcXVXVXVXVXNXNXNXNXBXVXVXNXVXNXVXVXVXmXcXNXcXcXcXcXcXmXcXcXcXmXVXVXcXcXcXcXcXcXcXcXcXcXcXcXcXxXvXzXxXxXzXvXxXzXkXxXcXcXxXvXvXxXvXzXzXvXzXxXzXkXxXxXxX-XxXcXBXcXcXxXBXcXcXxXxXxXxXxXxXxXzX=X=X-X-X-X-X-X=X=XxX-XxXxX=XxXxXxXxXxXBXNXNXxXxXNXNXcXxXxXxXxXcXcXcXcXcXcXNXNXlXNXNXNXNXlXlXBXCXCXCXZXCXZXKXKXZXKXZXZXZXZXZXKXZXZXKXZXZXZXZXCXNXcXcXNXcXcXNXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXmXcXcXcXcXmXcXcXNXNXNXVXBXcXcXcXcXxXxXxXxXxXzXxXlXcXcXcXNXNXmXkX*X+XXXhXjX-X*XXXoXoX%X%XoXd.n n r r n F n n y r u r r r w n r n r r r r , ", -"1.<.} F n n r : ; ; ; ; ; , < , < w > , ; , , ; ; w w > r r n n m F F F } } } G s.mXKXZXKXKXKXKXJXAXmXxXVXvXmXZXVXlXlXVXVXAXKXKXKXZXlX-XKXLXKXKXKXKXKXKXVXmXcXVXVXmXmXcXmXmXVXmXNXVXVXVXVXVXVXVXVXVXVXVXVXVXmXcXVXVXVXcXVXcX&X*XxXNXcXlX*X*X=XzXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXzXxXxX-X-X-X-X-XzXkXkXkXkXkXxXxXcXcXNXxXNXNXNXxXxXxXxX-X*X;X-X*X&X;X*X*X&XSXVXxXzX*X&XxXcXxXkXkXxXcXxXxXvXxXmXcXvXzXzXzXzXvXxXkXxXkX&X=X&X&X=X-X;X=X;X=X=X=XkX-X&X&X*X*X*X=X=X*X*XOXOX+X*XOX*X*X*XOX*X*X*X*X*X=X=X*X&X*X=X+X@Xd.<.<.L F B n y y n B B n G <.G n n n n y y y r t t f G <.d.@X*X*X+X*XzXvXcXvXvXvXzXzXzXzXzXzXzXjX&X=XjXzX=X&XkXkXzXjXjXkXkXjXjXzXvXvXvXxXvXcXmXmXVXVXVXVXVXVXVXVXNXcXcXNXxXcXNXcXcXcXlXcXVXCXZXZXAXVXNXcXNXNXcXcXlXNXVXNXNXVXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXSXVXVXVXVXVXVXZXAXVXVXCXNXNXNXVXVXVXVXVXVXVXBXNXNXNXNXNXNXNXNXNXNXNXNXNXxXcXNXNXNXBXBXNXcXNXVXNXNXNXcXNXxXxXxXxXzXcXcXcXxXcXNXVXVXVXVXBXVXVXVXCXVXCXVXVXVXVXVXVXVXVXVXVXVXNXcXNXcXcXcXNXxXcXcXcXcXcXcXcXcXcXcXxXxXxXxXxXxXxXxXxXzXzXvXzXzXzXzXzXxXxXxXcXcXcXxXxXxXxXxXxXxXzXzXzX-XzXzXzXzX-XzXzXzX=XzX-X=X-X-XzXzXxXxXxXzXzXzXxXxXxXxXxXxXxXxXxXNXxXxXxXxXxXxXcXNXcXNXNXNXVXNXlXNXNXNXNXNXNXNXCXNXNXCXCXCXZXCXZXZXZXZXZXZXZXZXCXCXVXVXVXVXNXNXcXcXxXxXcXcXcXcXcXxXcXcXcXcXcXcXcXcXcXxXxXxXxXcXxXcXcXxXcXvXcXcXcXcXNXxXcXcXcXcXBXxXxXcXxXxXcXcXcXcXxXcXcXcXcXcXmXBXcX*X|.@X|.OXOX=XoX@X@XoXNXKXSXlXlX%X_._.lX-X-X%X%X|._.oX*X%X|._._.(.d.a.<.} ", -"AXAXZXVX%X|.d.} } } <.} } } } } } } } } } } <.} } } } K 1._._.@XoX*XlXmXBXAXAXAXAXVXmXAXAXxX&XkXxXkXzXcXVXBXAXJXVXlXlXNXAXAXAXKXJXZXZXAXVXZXAXAXAXCXVXmXBXVXmXcXVXmXcXcXVXmXmXmXVXmXVXVXcXVXVXVXNXNXNXVXmXVXVXVXVXVXVXVXVXVXNXcXlXkXkXkXkXkXxXkXxXxXxXxXxXxXxXxXcXxXxXxXxXxXxXxXxXxXxXxXxXxXxX-X-X-X-X-XcXzXxX-X-XzXcXcXcXcXNXNXNXNXNXcXNXNXNXxXxXNXxXNXxXzXzX-X&X&X*X*X&X+X+XlXVXmXkX-X&X&X&X-XkXjXzXzXzXzXzXzX;X;X=X-XzXzXzXzXzXzXzXkXzXzXzX=X;X=XxXxX=X=X=X=X&X*X+X*X*X*X*X*X*X;X*X;X=X*X;X;X*X*X*X*X*XOX+XOXOX+X+X+X+X+X+X+X+X+X*X=X=X-X*XoX@X_.|.oXoXoX&XzX&X*XoX|.@X_.(.d.d.1.s.@XOX*X&XjX-X&X=X=X-XzXjX&X=X=X=XjXjXjXjX=X=XzX&XkXjXzXjX&X&X&X=XjXzXkXkXvXvXcXcXvXvXvXvXvXvXVXVXVXVXVXVXVXNXVXCXmXcXNXNXVXVXcXNXcXNXNXVXVXZXZXZXAXVXVXNXcXNXNXNXNXVXNXcXNXNXNXVXVXcXcXcXcXNXcXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXZXAXVXVXSXCXCXCXVXCXVXCXVXVXCXVXVXVXNXNXNXNXBXNXNXNXNXNXNXNXcXxXxXNXxXBXNXNXNXNXNXcXNXcXxXkX-XzXzXxXxXxXzXxXxXNXVXVXCXAXAXAXAXAXAXVXCXCXCXVXVXVXVXVXVXVXVXVXNXNXNXcXNXNXNXNXcXcXcXcXxXxXxXcXcXcXcXxXxXxXvXxXzXzXzXxXxXvXvXzXzXzXxXzXxXxX=XxXxXzXxXxXxXxXzXzXzX-XzX-X-XzX&XzXzXzXzXzXzXzXzXxXxXxXzXcXxXxXxXxXxXxX-XxXxXxXxXxXxXxXxXxXxXxXxXxXxXcXcXNXNXNXBXVXVXVXVXNXVXVXCXCXCXCXCXNXNXNXNXNXCXCXVXNXVXCXCXCXVXCXVXVXVXVXNXcXNXcXxXxXcXxXxXzXvXcXxXxXxXxXxXcXcXcXcXxXxXxXcXxXcXxXxXxXxXxXxXxXxXcXxXcXcXNXcXcXcXcXcXcXcXxXxXcXcXcXNXNXNXNXNXVXNXcXcXmXNXkX*XoXOX*XOX|.|.|.|.+XhXhXlXlXNXVXVXVXVXVXVXAXAXZXKXZXKXZXZXZXZXZXZXZXZXAX", -"mXmXcXcXVXCXAXAXAXKXZXAXVXVXVXVXVXNXBXBXVXBXBXBXBXmXmXmXAXAXBXmXlXVXAXmXvXvXxXcXmXVXVXNXvXjXkXxXmXcXmXcXmXcXmXBXVXVXcXcXmXxXvXvXvXvXvXvXvXcXvXvXvXcXcXvXcXcXxXcXxXlXcXmXcXmXmXmXmXmXcXVXmXlXlXlXlXkXxXlXkXmXAXSXVXcXcXVXmXcXvXvXxXxXvXkXxXxXxXxXxXcXcXxXxXxXxXcXxXcXNXcXcXxXcXcXxXzXxXxXzX-XzX-X-X-XzX-X-XzX-X-XxXxXxXcXNXNXBXVXNXNXNXcXNXcXNXcXcXcXNXcXxXxX-XxXxXkXkXxXkXcX-X-XlXSXCXmXkX&X*X&X&X&X&XkXxXvXcXvXkXjX&X&XjX&X&X&XjXkXjXzX*X=X*X=X;X;X-X=X=X+X*X*X*X*X*X*X*X*X+X*X*X*X+X*X*X*X*X=X*X+X=X+X=X=X*X+X*X*X*X*X*X+XOX+XOXOX*X*X&XzXzXxXVXxXzXzXjX=X*X&X&X=XjXzXzXzXzXzX*XOXOX*X=X-XzXxXxXzX&X&XjX&X&X&X&X&X*X*X&XjXjXjXzXzXzXzXxXzXjXzXjX=X=XjXzXzX=XjXzXzXxXzXzXzXxXxXxXxXvXxXxXcXxXxXxXxXlXNXcXNXNXNXNXVXVXNXNXNXNXNXVXVXVXVXVXNXNXNXNXcXcXNXVXVXNXVXNXNXVXVXVXmXcXcXcXcXcXxXcXmXcXVXVXVXVXVXVXVXVXSXVXVXVXVXAXAXAXCXVXSXNXVXNXVXVXNXVXVXNXNXNXNXNXNXNXNXNXBXxXNXNXNXNXxXxX-XNXNXxXNXNXNXNXNXxX-X-XxXxXxXxXzX-X-XzXzXxXcXcXcXcXNXNXVXCXCXVXVXVXVXNXNXVXVXVXNXNXNXNXNXVXcXcXxXxXxXxXxXxXxXxXxXxXxXkXkXlXxXxXkXxXzXzXzXzXzXzXzXzXzX-XzXzXzXzXzXzXzXzXkXxX=X-X-X-X=X=XxXxXxXxXxXxX=XxX=XzXzXzXzXxXxXzXxXxXxXxXxXxXcXxXxXzXxXxXxXxXzXxXxXxXxXxXxXxXxXxXxXxXcXcXcXcXcXcXcXcXNXNXNXNXVXVXCXCXBXNXNXBXVXBXVXVXVXVXCXVXVXVXVXNXNXVXVXVXNXNXNXcXcXcXxXzXzXxXxXzXzXzXzXzXxXxXxXxXxXxXxXxXzXzXxXxXxXxXxXxXxXxX-XxXxXcXcXcXcXxXxXNXNXNXcXcXxXxXxXxXcXxXcXxXlXzXxXxXcXxXkXkXxXcXlXvXcXvXlX%X*XkXkXkXcXcXxXvXcXcXcXcXcXvXmXVXBXBXVXVXVXVXVXBXNXBXVXNXNXNXNX", -"cXcXxXvXcXNXVXVXNXNXNXVXVXVXVXVXVXmXVXmXmXcXcXmXcXcXcXVXVXnXmXmXSXKXKXVXcXvXvXvXkXcXcXlXxXxXvXzXzXvXvXzXzX=X=X=X&X*X+X+X*X*X=XxXvXvXcXvXcXBXcXvXvXvXvXlXvXcXvXvXxXxXcXcXzXvXxXxXlXvXcXcXmXvXxXcXcXkX&X*XkXVXZXAXVXvXzXcXVXcXxXxXcXcXxXvXcXvXzXxXxXxXxXxXxXcXcXcXNXBXmXcXNXNXNXcXcXxXcXcXxXxXxXxXkXkXkX-XxXxXxX-XxXxXcXNXNXNXNXNXlXNXNXcXcXcXcXcXcXxXxXxXxXxXxXxXxXkX-XzXxXxXxXxXhXhX&XxXkXkXzXcXxX&X*X*X*X&X&X&XjXzXzXzXjXjXjXzXjX=X&X+X*X*X=X=X;X*X*X*X+X+X*X*X*X*X*X*X+X*X*X=X*X=X*X*X=X+X=X+X*X*X+X+X*X*X*X=X*X*X*X*XOXOXOX+XOX*X*X*X=XxXzX-XkXkXjXjX&X*X*X&X&X=X=X*X*X&X-X&X*X*X=X=XzX-X&XzXzXzXkXkX&X*X*X*X*X=X=X*XkXkXlXvXxXcXcXzXzXjX&X&X=X&X&X&X&X&X=X&XzX=X=X=X&X&X&X=X=XjXzXzX&X&X&XjXkX-XlXNXVXVXVXVXSXVXVXVXVXNXNXNXNXNXNXVXNXVXVXVXVXNXcXNXNXVXVXVXVXVXVXVXVXVXNXcXcXcXcXcXcXcXcXcXcXcXcXcXcXmXmXVXVXNXNXNXVXVXNXNXNXNXNXcXNXNXNXNXNXNXNXNXNXNXNXNXNXNXBXBXNXxXxX-XxXNXNXxXNX-XNXxXxXxXxXNXxXNXcX-XzX-X-X-X-XzXxXcXNXNXcXcXxXxXxXxXcXcXcXcXNXNXNXNXNXNXcXxXxXxXxXxXxXkXxXxXzXzX-XzX-X-XkXkXzXzXxXzXzXzX-XkX-X-XkXzXzX&X&XkX-XzX-X-XzX-X-X-X-X-X-XzX=XzXxX=X-XxX=XxX=X=X=X=X=XxX-XxXzX-XzX-X-X=X=XxX=XxXxXxXxXxXxXcXxXxXxXxXxXxXcXcXNXxXxXxXxXBXxXNXcXcXNXcXcXcXcXNXNXNXNXNXVXVXVXNXNXNXNXxXNXxXNXNXNXcXxXcXNXNXxXcXNXlXNXNXNXNXNXNXcXcXcXxXxXxXkXzXzXzXzXzXzXzXxXxXxXcXxXxXxXxXxXxXzXxXxXxXxXxXxXxXxXcXxXxXxXcXNXxXNXcXcXcXcXcXcXxXcXxXxXxXxXlX-X&X&X&XzXkX&XlXlXlXvXxXcXcXVXVXVXVXBXNXNXVXNXNXNXVXcXVXmXcXcXcXcXcXcXcXcXcXmXmXNXcXmXmXNXVX", -"zXzXzXzXcXcXcXcXcXmXVXVXmXVXVXVXVXVXVXVXVXmXmXmXmXcXcXmXBXmXcXcXcXcXlXcXcXmXvXxX&XjXkXzX&XjXzXkX=X=X=X*X*XOXOXOXOXOX|.|.OX|.OXOXOX+X+X+X=X+X+X+X*X*XOXOX*XjXzXxXvXcXzXvXvXvXvXcXlXxXjXkXxXlXvXvXVXVXxXxXVXcXmXcXcXcXvXxXmXmXvXxXxXcXcXcXxXcXcXcXvXxXcXcXcXcXcXcXNXNXcXNXcXcXcXNXNXNXcXcXNXNXxXxXxXxXkXxXxXxXxXNXxXxXxXxXcXxXxXxXxXlXxXxXxXxXcXxXxXxXxX-XkXNXxXxXNXNXxXzXkXzXzXzXzX-X*X*X*X&X*X&X*X&X*X*X*X=XjXvXcXcXxXjX&XjXzX&X*X*X+X+X*X*X=X*XOXOX*X*X=X=X*X=X*X*X+X*X*X*X+X*X*X*X*X*X+X+X+X*X*X*X*X*X=X=X=X=X=X*X*XOXOXOXOXOXOXOXOX+X*XzXxXcXVXZXlX&X&XjXzXjXjXjX*XOX+X*X=X&X=X&XzXzX&X=X-XzXjXzXzX&X&X*X*X*X&XzXxXxXxXxXkXxXxXkXkXzXzXzXzX=XjX-X&X&X=XzX&X=X&X&X&X&X&XzX-XkX-X;X=X=X&X*X*X*X&XkXNXVXCXCXCXCXNXNXVXVXVXVXNXNXNXNXNXNXNXNXVXcXmXNXNXcXcXcXcXcXmXVXVXcXmXcXxXcXcXcXcXcXcXcXcXcXxXcXvXcXcXcXcXNXcXNXcXcXcXNXNXNXNXNXNXNXNXxXNXNXcXNXcXcXcXcXNXcXNXNXNXNXNXBXxXNXNXxXxXxX-XBX-XxXxXxXzXxXxXNXBXxXxX-X-XzXxXzXzXxXxXxXxXxXxXxXzXxXxXxXxXzXxXxXxXxXcXxXxXxXzXzXzXzXzXzXzX-XzX-X-XzXjX&XzX&X&XOXOXOXOX*X&X&X=X&X=X;X&X&X&XkX-X&X&X;XzXzX-X-XzX-X-XzX-X-XzXzXxXxX=X-XxX=X=XxXxX=XxX=X-XzXzXzXxXxXzXxXxXxXxXxXxXxXxXxXNXNXxXBXBXxXcXcXNXNXxXxXxXxXNXNXNXcXcXcXNXNXNXNXNXNXNXNXNXNXcXNXNXNXNXNXNXNXNXNXcXcXcXcXcXcXcXNXlXNXNXNXNXcXcXcXcXcXxXxXcXxXkXzXzXzXzXzXzXzXxXxXvXxXxXcXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXvXxXcXBXBXNXNXNXcXNXNXNXcXxXxXxXxX&X+X+X+XOXXX*XOXoX%XkXlXvXcXcXcXcXcXcXcXcXcXcXmXNXNXNXcXcXcXvXcXcXcXcXcXcXcXxXcXcXcXvXvXvXxXcXxX", -"cXzXxXzXzXvXvXzXcXxXxXvXvXcXcXmXmXVXmXmXVXVXBXVXVXVXVXVXVXmXmXcXmXlXxXxXxXvXzXjXjXjXzXzXzXzXzXzXzX=X*X*XOXOXOXOXOXOXOXOXOX|.OXOXOXOXOXOXOXOX|.OXOXOXOXOXOX=XxXvXxXxXxXcXcXcXcXxXxX&X&XvXkX&XkXcXVXVXmXxXvXcXxXkXxXkXkXzXxXcXcXxXvXmXcXcXvXcXcXcXcXcXcXcXcXcXcXcXcXxXxXxXzX-XkX-XzXzXzXzXzXxXxXxXcXxXcXcXNXNXNXxXxXcXxXxXxXzXcXxXkXkXxXkXzX-XlXkXkXlXxXxXxXxXNXcXNXNXcXcXcXxXxXxXxXxXcXkXkXzXzX*X*X&XjXjX&X&X=X&XjXzXzX&X&X=X&X&X*X=X*X*X*X*X*X*X=X*X*X*X=X*X+X+X*X*X*X=X*XOX+X*X=X=X*X*X=X=X+X=X*X*X*X+X+X+X*X+X+X*X=X*X+XOXOX+X*X*X*X=XxXcXVXVXmXvXkX&XjXzXjX=XzXzXjX=XzXzXkXkXzXxXzXkXkXxXkXzXzXjX*X*X+XOXOXOX*X+X*X*X*X*X*X&X=X&XjXzXzXzXxXjX*X&X&X*X&X&X*X*X&X=X&X&XkXzXxXxXzXzXxXzXxXxXkXkX&X-XkX-XlXVXVXVXNXNXlXlXNXNXNXNXNXVXcXvXcXVXVXVXNXcXNXcXxXxXNXcXcXcXcXcXcXcXxXxXxXxXxXxXzXvXvXcXxXvXcXcXcXcXcXcXxXcXxXcXxXcXxXcXcXcXNXNXNXNXNXNXcXcXcXcXcXcXcXcX-XNX-X-XxXxXxX-XxX-XxXxXNXxXBXxXxXxXxXxXxX-XzX-XkXzXzXxXzXzXzX=X=XkXkXzX-X-XzXzXkX-X&XzXzXzXzXzX-X-X&X=X-X-XzXzXkXkXzXzX-X;X=X-X-X-X-X&X=X*X*XOXOX&X-X&X=X=X;X;X-XzX&X&X&X&X&X=X-XzX=X=X-X-XzXzXzXzXxX-XxX=XxXzX=XxX=XxXxXxX=XzXxXzXzXxXxXxXvXxXxXxXBXxXcXcXxXcXxXxXNXxXcXxXcXcXNXxXNXNXBXNXxXNXBXNXcXNXNXcXNXNXNXNXNXmXcXNXcXNXBXNXNXNXcXxXNXcXNXcXcXcXcXNXNXcXNXNXNXNXcXcXcXxXxXzXzXzXzXzXkXxXzXzXcXzXzXzXzXxXzXxXvXxXcXxXxXxXxXxXcXxXxXxXcXxXxXcXcXcXcXBXcXcXcXcXcXcXNXcXcXxXNXxXcXNXlX&X*XoXoXoXoXOXoXoXOXXX&XxXvXcXcXcXcXcXcXmXmXcXcXcXcXcXcXvXvXcXxXvXcXcXcXvXvXxXvXvXvXvXxXvXcXvX", -"cXcXcXvXvXvXzXvXvXvXvXvXxXvXxXvXvXvXvXlXmXnXmXmXmXmXcXcXmXmXmXmXcXmXcXvXkXjXzXzXvXxXzXvXzXzXzXzXzX=X*X*X+X+X+XOXOXOXOXOXOXOXOX|.OX|.OX|.OXOX+X+XOXOXOXOXOXzXcXvXcXcXvXvXzXzXkXvXcXvXxXmXlXvXcXvXvXvXcXcXvXvXvXvXxXkXzXjXxXxXvXvXxXvXvXvXvXvXcXvXvXcXcXcXcXcXcXxXcXcXcXcXzX&XkXzXzXkXzXxXxXxXxXcXcXcXxXcXcXxXcXxXxXxXzXzXzXzXzXxXxXxXxXzXzXzXlXkXxXxXxXcXBXcXcXcXxXxXxXxXxXxXxXcXcXxXxXcXcXxXcXvXzXzXzXzXkXjX&X&XjXkXxXzX&X*X&X*X=X*X*X*X*X*X*X*X*X*X=X*X*X*X=X+X*X=X*X*X*X+X*X=XjX*X*X&X=X=X=X*X&X*X&X&X*X*X*X*X=X=XvXvXzXjXjX&X=XzXzXkXxXvXxXkXkX=X=X=X&X&X=X=XkXkXzX=X*X*X=XvXzX&X&X&X&X&X*X*X*X&XjX&XOXOXOX+X+X*XxXxX&X&XhXxXjX=X=X&X&X*X*X&X&X*X*X&X&X&X=X&X&X-XzX&XkXzXxXxXxXxXNXNXNXNXVXcXxXzXzXxXcXcXNXBXNXxXNXxXkXkXkXxXxXcXxXxXcXmXBXcXcXcXNXcXcXcXcXxXxXxXxXxXkXkXxXxXxXxXzXzXxXxXxXzXzXzXzXxXxXzXxXxXxXzXzXxXzXxXxXxXxXxXzXzX-X-XzXxXxXzXxXxXxXxXxXxXxXxXxXxX-XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX-X&X&XkXzXzXzXzXzXzX&X-XzX-X-X-XzX-XzXzXzXzXzXzXzXzX-XkXzX-X-XzXzXzX-XzX-X-X=X*X*X*XOXOX+X*X*X*XOXOXOX*X*X*XOX*X*X*XOX*XOX+X*X*X&X&X=X=X=X=XzXzXzXzXzX=X-XzXzXzXzXxX-X-XxXzXzXxXxXxXxXxXcXxXxXcXvXcXxXcXcXcXcXcXcXBXcXNXcXcXNXcXcXcXNXNXNXNXNXcXcXcXNXcXBXNXcXcXcXcXcXcXNXcXNXcXNXNXcXcXxXxXcXcXcXcXcXcXcXcXcXcXvXmXcXcXcXxXcXcXxXzXkXjX&XzXzXxXxXxXxXxXxXxXzXzXzXxXvXxXcXcXxXxXzXcXvXxXxXxXcXcXcXcXvXcXcXcXcXcXcXcXcXcXxXkXxXxXxXxXxXxXxXkXxXkX*XOX|.|.OX*XhX&XhXvXxXxXvXcXvXcXvXcXcXcXcXvXcXvXvXvXcXcXcXvXvXcXcXcXcXmXvXmXvXcXcXcXcXcXcX", -"vXvXcXvXvXvXvXvXvXvXvXvXvXxXvXvXvXvXvXvXmXvXvXvXvXvXlXvXvXvXmXvXvXvXjXjXzXvXvXvXzXzXzXkXzXzXzXkXjX=X=X*XOXOX+X=X=X*XOXOXOXOXOXOXOX|.|.OX|.|.OXOXOXOXOXOXOX+X*X*XjXvXvXvXvXjX*XzXvXvXmXmXcXxXvXvXvXvXvXvXvXvXkXxXkXzXzXvXxXvXzXvXvXvXvXxXvXvXcXcXcXzXzXzXzXvXxXvXcXcXxXxXxXcXVXcXxXxXcXxXxXcXxXxXkXzXzXzXxX-XzXzXzXzXzXzXzXzXzX-X-X-X-XzX-X-X-XzXxXxXxXNXxXxXzXxXxXxXxXcXcXcXcXcXlXzXzXzXzXkXzXzXzXzXzXkXkXxXzXzXkXkXzX&X*X*X&X*X=X;X*X*X*X*X*X*X=X=X=X=X*X+X*X=X*X*X*X=X*X&X=X*X&X*X&X&X=X*X*X=X*X&X&X*X&X&X&X&X=X=X=X=X&XjXzXjXzXjXjXjXkXzXzXkX-X-XjXzXzXzXjXjX&X&X*X*X+X*X*X&X*XOXOXOX*X*X&X*X*X&X&X=X=X=XjXjX=X=X&XkX&XzXxXjXjXzXzXzXjX&X&X&X&X&X&X*X+XOX*XzXcXcXcXcXcXcXxXNXNXNXNXNXVXVXVXVXNXNXcXxXcXcXcXlX-X-XxXkX-X-X-XzXxXcXcXcXcXcXcXcXxXxXcXcXcXcXxXxXvXvXxXvXxXzXzXzXzXzXxXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXjXjXzXzXzXzXzXzXzX-XzXzXzXzXzXzXzXzXzX-X-XzXzXzXzX-XxXzXxXzXzXzXzXzXzXzXxXzXkXkXkXxX-XxXxXxXkX&X&XzXzXjXzX=X*X*X*X*X*X*X=XjX-XkX&X-XkX-X-X-XzXzX-X-X-X-X=X&X&X*X*X+X*X*X*X*X*X*X*XOX+XOX*X*X*X*X*X*X*X*XOX+XOX+X+X*X*X=X=XzX=XzXzXzXzXzX-X=XzXxX-XxXzXzXxXBXxXxXBXxXcXcXxXcXcXvXcXcXcXcXcXBXcXcXcXcXcXcXcXcXcXcXcXBXBXNXmXcXNXcXcXNXcXNXNXcXNXcXNXcXNXcXcXcXcXcXcXcXcXcXcXxXxXxXcXxXcXxXcXcXcXzXzXvXxXxXcXxXcXcXzXxXzXzXzXzXxXxXzXzXvXxXxXcXxXxXcXcXxXxXxXxXxXxXxXcXcXxXcXcXvXcXvXNXcXcXcXcXcXcXcXcXvXvXxXzXzXzXzXjXjX=X=X&X*X*X*X&X&X&X*X*X=X*X&X&X-X&X-X&X&XzXzXxXzXzXzXvXvXvXvXvXcXvXxXvXvXcXcXxXxXcXcXcXcXvXvXcXvXcXcXvXxXcXvX", -"cXcXcXvXvXvXvXvXzXjXzXvXjXzXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXkXvXzXjXjX&X=XjXjX&X&XjX=X=X=XjXjXzXzXvXvXvXcXvXjXjXzXjX=X*XOXOXOXOX*X*X*XOX*XjXcXlXvXxXvXvXvXcXzXjXvXxXlXlXmXvXmXvXvXvXvXvXvXvXvXvXvXvXvXvXcXvXvXvXvXzXzXjXzXkXvXcXcXvXxXzXvXcXcXcXcXcXcXvXvXcXvXxXvXxXxXkXkXkXkXzXzXzXkXkXzXzXzX-XzXzXkXzXzXzXkXkXxXxXzXzXzXxXxXxXxXxXNXxXxXcXxXzXzXxXxXxXxXcXxXxXxXzXzX-XkXzXjXzXzX-XzXzXzXjXzXzXzXzX&X*X&X&X*X&X*X*X*X*X*X*X*X;X=X=XvXzX=X=X=X=X=X=X=X=X&X&X=X*X=X&X=X=X=X=X=X=X=XjXjXjXjXjXzXjXjX=X=X=XjXzXkXzXzXzX&XjX&X&XzXzXxXxXzXjX*XOXOXOXOXOXOX+X*X&X&X&X&X*X&X&X*X*X&XjX=X&X&X*X=X=X&X&X&X=X&X&X*X&XjXzXzXvXxXzX&X&XjX&XjXzXzX-X*X*X=XjXkXkXxXxXcXBXNXcXNXNXNXVXCXCXVXVXVXVXVXVXCXCXVXZXAXCXVXNXNXxXxXcXcXcXxXzXzXzXvXmXcXcXcXvXvXvXxXxXkXkXkXkXxXzXzXkXzXkXkXkXkXzXzXzXzXzXzXzXjXzXzXzXzXjXjXzXjXjXzXjXjXjXjXzXzXzXzXzXzXzXzXkXzXkXkXkXzX-XkXzXzXzX-XkXkXzXzXkXzXzXzXzXzXkXkXkXzXzXzXzXxXzX&X&X-XkXjX=X&XzXkXkXxXzX*X*XkXkXkX-XjXjXjX&XkX-X=XzXzX=XzX=X=XzX=X=X&X*X*XOX+X*X*XOX*X*X*X*X*X*X*X*X*X*X*X*X*X&X=X;X=X&X=X&XzXzXzXzXvXxXxXxXxXvXxXxXxXxXvXcXcXcXBXcXcXcXcXcXcXcXcXcXmXcXcXBXcXBXcXBXcXBXcXcXmXcXcXNXcXcXcXNXcXcXcXNXcXNXcXxXxXNXcXcXcXcXxXcXxXcXcXlXxXxXxXzXzXxXxXzXzXxXzXxXxXzXzXzXzXzXzXzXzXvXcXvXzXcXvXxXvXkXxXxXxXxXcXvXvXcXVXcXcXcXcXxXcXcXcXcXcXcXxXvXvXcXcXcXcXcXcXcXcXcXvXxXvXvXvXvXcXzXzXzX=XzXjX&X&X&X=X=XzXkXkXzXzXlXxX=X*X*XXX*X*X*XjXjXjXjXjXzXkXkXkXxXxXxXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXcXcXcXcX", -"vXvXvXvXvXvXvXvXvXzXzXzXzXzXvXvXvXvXjXjXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXkXvXvXvXvXzXzXkXkXvXvXvXzXvXzXvXzXzXzXzXvXvXvXvXvXzXzXvXvX=X*XjXzXcXBXmXcXvXjXcXcXkXkXcXvXvXmXvXlXvXvXzXjXjXjXzXvXvXmXmXmXmXmXmXmXmXmXcXvXcXcXcXcXcXcXvXcXcXcXxXxXcXxXvXcXvXvXxXxXxXvXzXzXzXzXzXzXzXzXzXxXkXxXxXkXzX-XzXkXkXkXzXzXzXkXxXxXxXxXcXcXlXxXxXxXxXxXxXcXcXcXxXxXxXxXcXBXcXcXcXcXxXxXcXzXxXxXzXzXzXzXzX-X=X=X=X&X&X=XzX=X=X=X&XjX&X=X=X&X&X&X*X&X;X;X=X=X=X=X=XzXzXzX=XjX=XjX=X=X=X=XjX=XjXjX&X=X=X=XjX=X=X=XjX&X&X&X&X&X*X*X*X=X=X=XzXxXvXvXvXvX&X*X*X*X&XkXzX&X*XoXoX|.|.OXOX+X*X*X*X&X=XjXjXjXkXjXhXjXjX&X&XjX&X&X&X&X&X&XjXjX&X=XjXkXkXkXcXcXxXcXxXjXjXkXxXzXzXkXxXxXzXxXcXxXxXxXxXvXcXcXNXNXNXcXNXVXNXNXVXNXVXVXNXVXNXNXNXNXNXcXNXNXcXcXcXcXzXzXzXzXzXzXzXzXvXzXxXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXjXzXzXzXjXzXjXzXjXzXzXzXzXzXjXkXkXjXkXjXkXjXzXzXzXzX=X=XjXkX&XjXjXzXzXzX=XzXzXzX&X-XkX-XzXzX&XzX&X&X=XzXkXzXjXzXzXzXzXzXzXzXzXzXzXzXzXjX&X=X&XlXkXzXxXkXkX&X&X&XxXxXzXkX&X&XzXzXzXkX-XzX=XzXjXzXzXzXzXzXzXzXzX-X=X=X=X=X&X&X&X&X;X*X;X*X*X*X&X&X&XkXxXxXxXxXcXcXcXxXcXcXcXcXcXcXcXcXcXcXxXxXcXcXcXcXvXcXcXcXcXcXcXcXcXcXxXcXcXcXcXcXcXcXcXcXcXcXcXcXcXNXcXcXcXcXxXxXxXxXzXzXzXxXzXzXxXxXzXkXkXzXzXkXxXxXzXzXzXzXzXzXzXzXzXzXxXzXzXzXzXcXvXcXcXcXcXcXcXcXmXcXcXcXcXxXzXcXcXmXcXxXcXVXVXcXmXcXmXcXcXcXmXcXmXcXcXcXmXcXmXcXcXcXvXvXcXcXxXxXzXxXcXzXxXzXzXzXzXzXzXjXjXjXkXkXcXcXcXcX&X*X+X*X*X*X*X*X*X*X&XjXzXkXlXxXvXzXkXjXzXzXzXvXzXxXvXvXvXvXvXvXvXvXvXvXvXvXvXcX", -"zXzXzXxXzXvXzXzXzXjXzXvXvXjXvXvXvXvXvXvXvXmXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXbXvXvXvXhXvXkXhXhXhXjXhX*XhXvXvXvXvXmXvXvXvXvXvXjXhXhX*X%X*XhXlXbXmXvXjXvXzX&X+X+XhXcXVXVXmXmXmXmXcXhX&X&XkXxXvXvXmXmXmXmXmXvXlXvXmXvXvXmXxXlXkXxXvXxXvXcXcXcXvXvXvXvXvXvXvXcXcXxXxXcXxXcXcXvXvXvXcXcXxXvXvXxXxXxXxXzXkXxXxXkXxXxXxXxXcXcXcXNXmXNXNXNXNXxXxXcXxXcXcXxXxXxXcXcXcXcXcXcXcXxXcXxXxXxXxXkXzXxXzXzXzX-XzX=X=X=X=X-XzXzX=X=XzX=XzX=XzX=X-XkXkXkXkXkXkXjXjXzXzXjXjXjXjXjXjXjX=XjXjX=XjX=X&X&X=XjX&X&X*X*X+X+X*X=X=X=X=X+X+X&X&X*X*XkXlXmXVXmXjX&X&XjXzX=X*X+XOXoX|.OXOXOX+X+X=X=X*X&X&X&XjXxXxXzXzX-XkX-XjX-XkXzXjXjX&X&X&XjXzXzXzXzXzXjX&XkXzXcXxXvXvXcXcXzXjXzXzXxXxXxXxXxXkXkXzXzXxXzXcXxXxXzXxXcXcXcXcXNXNXNXcXcXcXcXcXcXcXcXcXlXzX-XzX-X&XjXzXkX-XzXzXzXzXzXzXzXzXzXjXzXzXzXzXzXkXkXzXzXzXzXzXzXjXkXkXjXzXkXjXzXzXzXzXzXzXzXjXjXzXzX&X&XkXjXkXzX&X&XjXjXkXkXjXjX&X*X*X*X&XjXjX&XjXjX&X&X&X&XjX&X&X*XjXzX=X=XzXzXzXzXzXjXzXzXzXkXzXzXzXxXzXzXzXzXjXjXzXzX*X*XjXvXxXzXkX&XkXzXzXzX&X&XzX=XzXzXzXzXzXzXzXzXzXzXzXzXkXkXkXxXzXxXxXxXxXkXxXxXxXxXcXcXxXvXcXcXcXzXcXcXcXcXcXcXcXcXcXcXcXxXxXcXcXcXvXcXcXvXvXcXcXcXcXxXcXxXxXcXvXcXvXxXcXxXxXxXxXxXcXcXxXxXxXxXxXxXxXxXzXzXzXzX-XzX-XzXzXzX-XzXxXkXzX=XzXzXzXzXzXzXvXxXzXkXlXcXxXcXxXxXcXcXcXmXmXBXmXBXNXcXmXVXcXxXcXcXvXcXxXlXcXvXcXvXNXBXBXmXmXmXcXcXVXcXcXcXcXcXcXcXcXcXvXvXvXcXcXxXvXcXcXcXcXcXcXcXcXcXcXcXcXxXxXvX&X*X+X*X*X=X&XOXoXoXoX|.oXoXOXOXOX+XOXoXoX+X*X&X&XjXvXjXvXjXvXjXjXjXjXvXjXzXjXzXkXkXzXvXzXzXzX", -"zXzXzXjXjXjXjXjXjXjXhXjXvXjXjXjXhXvXjXhXjXjXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXhXvXbXvXvXvXvXvXkXvXvXvXhXvXvXvXmXvXvXvXvXvXvXjXjXhXhXvXmXmXmXvXvXvXjXvXvXvXkX&X&X&XkXcXcXlXzXvXmXmXmXmXvXvXxXvXvXvXzXzXvXvXvXvXvXvXvXvXxXvXvXvXvXvXvXxXcXxXvXvXvXvXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXvXvXxXvXxXvXvXcXcXcXcXxXkXzXzXzXzXzXxXcXcXcXNXcXcXxXxXNXxXxXcXxXcXcXcXcXcXcXcXcXcXcXcXcXvXvXxXzXxXkXkXzXkX-X=X-X&X=X=X=X&X&X=X=X=X=X=X=X=X=X=X=X=X=X&XjXjXjXjXjXjXjXzXjXzXzXjX&XjXjXjXjX*X+X+X*X*X&X&X&X&XOXoXOX+X+X+X+XOX=X=XjXvXvXxXxXkXxXVXVXVXcXzXzXcXkX&X*X*X+X+X+X&X+X*X*X*X+X+X*X*X*X*X*X&X&X&X&X=X&X&X&X=X&X=X&XjXkXxXkXzXzXxXzXxXxXzXzXzXkXkXkXkXzXkXzXzXzXzXzXzXzXzXzXzXkXkXkXxXcXxXkXkXzXkXkXxXxXlXlXxXcXcXcXcXxXxXkXkXlXkXxXkXkXzXzXzXzXkXkX-X-X&X&X-X&XjXjX&XkX=X&XjX=X&X&XzXjX&X&X=X&X=XjXjXjXkXkXzXzXjXjXjXjXzX=X&X&X&XzXzX&X-X&X&XjXjX=X=XjX&XjXjXkX&X&X&X&X&X&X&X-XzXzXjXjXjX=X&X*X&XjX&X=X=X&X&XzX=X&XjXjX=XkXjXjXkXkX&XzXjXjXzXzXzXjXzXzXzXzXzXzXzXxXxXzXzXzXzXxXzXzXzXzXzXjXzXzXzXzXzXzXzXzXzXkXxXzXxXkXxXxXxXzXxXxXvXxXvXxXvXxXxXxXxXvXxXxXcXcXcXcXcXvXcXvXxXzXvXcXzXcXcXcXcXxXvXxXcXvXvXcXcXxXxXxXxXxXxXxXxXxXzXxXxXxXzXzXxXvXxXzXzXzXxXxXxXxXzXzXzXkXzXzXzXzXzXzXzXzXzXzXzXzXzXxXzXzXzXzX-X=XzXzXzXjXzXzXzXkXxXxXxXxXxXxXcXcXcXcXcXNXBXcXcXcXcXmXcXcXcXcXcXcXcXvXxXvXxXcXcXxXxXcXxXvXcXxXxXcXcXcXcXcXcXcXcXcXcXcXcXcXvXcXmXxXcXcXxXvXvXcXcXcXxXlXzXjX&X&X*X+XoXOXoX+X*XjX+XOX*X*X+XoX+X*X+XOX*X&X+X+X+X+X+X*X*X+XhXhXhXjXjXjXzXjXzXzXvXzXkXkXkXkXvX", -"jXzXzXzXzXzXjXjX=X=XjXjXjXjXhXhXjXjXjXjXjXvXjXvXvXvXkXkXvXvXjXhXvXvXvXMXvXvXvXvXvXvXvXvXvXvXmXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXjXvXvXjXjXjXjXvXjXzXjXzXzXvXvXvXvXvXvXvXjXjXjXvXzXvXkXvXjXjXjXjXjXjXzXzXvXvXvXvXvXvXxXvXvXcXcXcXmXmXcXcXcXmXcXcXcXcXcXxXvXvXxXkXkXjXzXzXzXzXvXvXzXzXzXxXxXxXxXxXvXxXxXvXxXzXzXzXzXzXzXxXxXxXxXxXxXxXxXxXxXxXxXcXxXcXcXcXcXcXcXcXcXcXcXcXcXcXvXzXzXzX&X&X&X&X&X&X*X*X*X*X*X*X*X*X*X*X*X*X*XOX*X*X*X*X*X*X*X*X&X&X=XjXzXzXzXvXvXhXjXjX=X=XjX=X=X=X=XjX=X*X+X&X&X+XOX|.|.OXOX*XzXvXcXcXcXvXvXcXmXcXcXcXcXcXxXkX&X=XzXzXzXzXzXjX=XjX=X*X*X*X*X*X*XOX+X+X*X+X*X+X*X*X*X*X=X=X-XzXxXxXxXxXcXcXxX=X-XjX-XzX-X&XzXzX-XzX-XzX=XzXzXzX-XzXzX&X&XzXzX-X-X-X-X=X&X&X&XkXkXxXxXzXzXzXzXzX=X-X-X&X-X-XzXzX-X-X=X=X&X&X&X&X&X=X-X=X=X&X&XjXjX&X&XjXjX&XkXjX&X&X&X=X=XjXjXjXjXjX&X&X&X&XjX&X&X=XjXjXjXjXjX&XjXjXjX&X&X&XjX=X=X&X*X*X&X&X*XOX*X&X=X&X*X*X&X*X*X&X&XjX&X&X*X&XzXzXjXjXzX=X=XzXjXjXkX&XzXzXjXzXzXzXjXzXzXjXzXkXzXzXjXzXzXzXzXzXzXzXzXzXzXzXzXzXxXzXzXzXvXzXzXvXvXvXxXxXxXxXvXxXxXxXvXvXxXxXcXxXxXvXxXvXxXxXxXvXxXxXxXvXvXcXvXcXvXcXcXcXcXcXcXvXxXvXcXvXxXvXcXvXxXvXvXxXzXzXzXxXxXzXxXzXxXxXvXvXzXzXzXzXzXzXzXzXzXzXzX-XzXzXzXzXzXzXzXzXzXzXzXzXzX-XzXzXzX&XzXzXzXzXzXzXxXzXzXxXzXzXzXzXzXzXxXxXxXxXxXxXcXxXxXxXxXxXcXcXcXcXcXcXcXvXcXcXvXxXcXvXcXvXvXcXxXvXvXxXxXxXxXcXcXcXcXcXcXcXcXcXcXcXxXcXcXcXxXxXcXvXcXcXcXcXcXcXcXcXcXvXcXxXxXkXxX=X&XjX&X&X*XjXvXhXkXkXkXxXkXzX=X+XoXoX|.|.OX*X+XhXhX*X+X*X+X+X*X=XjX*X*X&X-XjXzXkXjX", -"zXjX&X=XjXjX&XOXOXoXoXOX+XOXOXOXOXoXoX+X9X9XjXhXkXkXvXkXhXbXhXvXhXhXvXkXkXvXvXkXhXvXhXvXhXhXkXkXhXvXjXvXvXhXhXjXjXkXhXhXhXjXvXjXjXjXjXjXhXkXhXjXjXjXjXjXjXjXjXhXkXjXjXvXjXjXhXhXjXvXkXjXjXjXkXkXhXjXjXkXvXvXlXvXvXlXvXvXvXvXvXvXlXlXvXvXxXvXvXvXvXzXzXzXjXzXjXjXjXjXzXzXjXzXzXzXzXjXzXzXzXjX&X*X*X&X&XjXjXzXzXzXzXxXkXkXkXkXkXkXxXxXcXcXcXcXcXcXBXNXNXBXBXmXcXcXcXcXcXcXvXxXkXzXzX&X=X=X=X*X*X*X*X*X*X*X*X*X*X*X*X*X&X&X=X=X=X=X=X=XjXkXkXvXvXvXvXxXvXvXvXjX&X*X+X+XOXOX+X+X*X*X*X*X+X*X*X*X*XOXOXOX=X=X=XjXjXzXvXcXcXcXxXvXvXcXvXvXvXxXvXxXcXvXvXvXxXxXcXxXvXvXzXzXzXjXzXzXzXjX=X&X&X=X=XjXjXzXzXzXzX-X-X-X-X-X=X-X-X*X;X*X*X=X&X&X=X=X-X-X-XzXkX-XkXkXzXxXzXzX-X=XjXzX=X-X&X=X-XzXzX=XzXkXlXkXzXxXxXzXzX&X=X=X&X&X&X&X=X=X=X&X&X&X&X&X=X=X=X=X=X&X&X&X&XjX&X=X&X&XjX&X=X&X&XjXjX-X&X&X&X=X=X=XzXzX&X&XzX&X&X&X&XjX&X&XjX&XjX&XzXjX*X&XjX&XjXjXhX*X*X*XjXvXkXjX&X&XkXzXzXxXkX&XjX&X*X&X*X*X*X+XOX=X=X=X=X&XjXkXzXjXzXzXzXjXzXzXzXzXkXzXzXkXjXjXzXzXzXzXzXzXzXzXxXzXzXxXxXxXvXzXvXxXvXvXvXxXvXxXxXvXvXcXcXcXxXvXcXxXvXxXvXxXcXcXcXcXvXvXcXcXcXcXcXcXcXcXvXcXcXvXzXcXcXvXcXzXxXxXvXxXxXvXzXvXzXzXzXzXzXzXzXxXzXzXxXxXzXzXzXzXzXzX=XzXzXzXzXzXzXzX-XzXzXzXzXzXzXzXzXzXzXzXzX-X-XzXzXkXkXzXzX-X-X=X&X=X&X=XjXzXzXxXzXzXxXzXxXcXcXcXzXzXzXvXzXzXzXzXzXxXxXvXvXcXcXcXcXxXcXcXcXcXcXcXcXcXcXcXcXcXcXmXcXcXcXcXcXcXcXcXcXcXcXmXcXcXmXmXcXcXBXmXcXvXcXxXcXcXxXxXxXvXxXxXxXvXvXvXxXkXkXjX=X+XOX+X*X*X+XoX+X+X+X*X&X&X*X*X+XoXoXOXoXOXOXOXOXoX|.oXoX+X&XoX|.|.|.OX", -"hX&X%X*X*XOXoXOX|.oXOX+XoXoX*X%X*X*X*X*X9X+XOXoXoX+X*XhXvXcXcXlXmXmXmXmXvXvXlXvXvXmXvXvXvXvXvXvXvXvXvXhXvXvXjXhXjXhXhXjXhXjX9X*X*X&XhXhXhXhXkXvXvXvXvXvXjXjXkXvXzXjXjXjXhXjXhXkXkXvXvXmXvXbXvXvXvXvXvXmXmXvXvXvXlXvXvXkXkXkXzXzXzXzXzXxXkXkXkXkXkXkX&XzX*X&XhX&X&X&XkXlXzXzXzXzXjX&XjX&XjX&X&XjXjXzXxXlXxXcXxXxXxXxXcXcXNXcXcXcXNXNXNXcXcXmXmXcXcXxXkXkXxXmXmXmXcXcXcXcXxXcXvXvXzXzX=X&X*X*X*X*X&X&X&X=X=X&XzXzX-XzXzXzXzXzXzXzXzXzXzXvXvXjXjX&X&XjX=X&X&X&X&X&X+X+X+X|.@X@XoX+X*XhXjXjXjXzXzXjXzXzXzXvXzXzXzXvXcXcXcXcXcXcXcXcXcXcXcXcXcXvXcXcXcXcXcXcXcXvXxXxXvXcXvXvXcXvXcXcXcXcXmXcXcXxXcXVXBXmXmXmXmXmXxXxXzXzXzX-X-X&X=X=X&X*X-XzXzXzXzXzXzXzXxXxXxXkXkXxXcX-X-XzXxXkXkXxXxXzXzXzXkXkX-X&XjX&X&X&X&X&X=X=X*X*X&X&X*X*X*X&X&X=X=X=X&X&X=X=X=X-X&XzX=XzXzX=X=X=X=X=X=XkX&X-X&X-X-X=X=XzX=X=XzX=X&X&X&XjX&X&XjXjXzXjX&XjXjX=X&X&XjXjX&XjXjXjXhXhX&X-XzXzX=X&X=XjXjXjX=XjX&X=XOXOX|.oXOXOXOXOXOXOXOXOXOXOX+X*X=X*X*X+X+X+X*X&X&X&X*X*X&X&X&X&X&X&XjX&XjX&XjXzXzXzXzXzXzXzXzXzXzXvXvXvXvXvXvXvXxXvXxXvXvXcXcXcXcXxXxXxXvXvXcXvXcXcXcXxXvXcXvXcXxXvXxXcXcXzXcXxXvXcXcXcXzXzXzXzXvXzXvXzXvXzXzXzXxXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXzX-XzXzXzXzXzXzXzXzXzX-X-XzXzXzX-XzXzXzXzXjX&X&X&X=X&XzXzXjXzX=X=XzXzXzXzXzXvXvXzXzXzXzXzXvXxXvXxXcXcXxXcXcXxXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXNXBXBXNXcXcXcXNXmXBXNXcXcXcXcXNXmXcXBXcXcXcXNXcXcXcXcXcXxXvXcXcXmXcXxXlXkXkX&X+X+XOXOXOXOXoXOX|.@X|.|.|.oXoXoXoXoXOX+X*X%X&XkX-X*X+X*X*XhX", -"xXxXcXcXcXmXzX*X*X*X=XxXBXNXBXVXSXmXvX=XjX+X+X+X*X%X&X&X&XhXlXVXmXvXjXjXxXjXjX&XjXjXvXvX=X*X*X&X*X+X+X+X+X*XjX*X&XjX*X*XjX9XjX+XOXOX+X+X+X+X*X*XhXhXhXhXvXhXzXhXjXjXvXkXkXkXkXkXvXhXhXkXkXlXvXvXvXkXhX&X*XhXjX&X*X*X*X*X*X*X*X&X&X&X-X=X&X&X*X*X&X=X&X&X&X&X&XjXkXzXkXlXxXzXxXxXxXxXkXxXzXzXzXzXxXxXxXlXkXlXlXxXxXxXxXxXxXxXlXzXxXxXxXxXlXxXxXcXcXxXlXxXVXVXcXxXvXvXzXzXvXvXzXzX-X=X=X=X=XzXzXzXvXvXvXvXcXcXxXxXcXxXvXcXcXvXvXvXvXzXvXvXjXhXjXjX&XhXjXjXzXkXjXvX&XjXvXmXmXmXvXvXvXvXvXzXzXkXkXkXvXvXvXcXvXvXvXcXvXcXcXvXvXvXcXcXcXcXmXmXmXBXBXcXcXmXcXmXmXmXmXNXmXcXcXcXmXNXcXmXVXcXcXVXVXVXmXmXmXmXmXmXmXmXVXVXBXBXmXmXcXmXBXcXxXcXNXVXcXcXmXcXcXcXmXVXVXNXlXlXcXlXxXxXxXcXxXlXzXvXzX-X&X&X&X&X=X&X&X&X;X-X;X;X;X&X&XjX-X&X&X&X&X&X&X&X&X&X&X=X=X=X&X-X=X&X-XkXkXkXzXzXkXkXkXkXkXkXzXxXxXzXzXzXzXzXzX=XzXzXzXjXjXjX&X*X&X*X*X*X+X*X*X*X*X*X*X*X*X*X*X+X+X+X*X*X*X&X&X&X*X*X+XOXOXOXOXOX+XOX+X+X*X*X+X+X*X*X+X*X+X+X*X*X*X&X&X=XjX&X&XjXzXzXzXjXjXjXzXzXzXzXkXzXjXjXkXjXjXzXzXjXzXzXzXzXvXzXvXcXxXxXxXvXxXcXcXcXcXvXcXxXxXcXcXcXcXvXvXvXvXxXxXxXxXxXvXxXzXcXvXcXvXvXzXcXcXvXvXvXvXvXxXvXvXzXzXvXzXzXzXzXxXzXzXzXzXzXzXzXxXzXzXzXzXzX=XzXzXzXzXzXzXzXzXzX-XzXzXzXzXzXzXzXzXzXzXzXzXzXzXzXkXkXkXzXzXzXzXzXkXkXzXzXzXzXzXzXzXzXzXzXzXvXzXzXzXxXxXxXxXxXxXxXvXxXcXcXcXvXcXcXcXcXcXcXcXcXcXcXcXcXcXmXcXNXcXcXNXcXcXcXcXcXBXcXNXcXcXBXNXcXcXNXcXNXNXNXcXcXNXNXNXcXBXcXcXVXVXNXNXVXNXNXmXcXcXlXlXzXjX&XOXoXOXOXoX|.|.|.oX+X+X+XOXOXOXOX+X+X*X&X&XkXhXhXkXkXkXkX", -"jXzXjXkXzXkXkXvXNXVXNXVXVXVXCXZXSXCXCXCXAXAXmXmXcXkX&X*XoXoX+X*X&X&XXX*XjXjXOX@X@X@X@X|.oXOXOX*XOXoX|.oXoXoXOXoXOX+X+X=XjX*X=X+XOX+X*X&XzXkXkXkXlXvXkXxXzXjXjX*X*X&XhXhX&XkXhXhXkX*XXX+X*X*X*X&X+XXXoXOXXX*X&X*X&X*XkXcXmXVXVXAXBXNXcXcXzXvXxXzXzXzXzXxXxXzXxXxXxXxXzXzXzXzXzXzXzXxXxXxXkXkXjXkXjXkXkXkXlXxXcXcXVXVXVXVXVXVXVXNXVXVXNXcXcXVXVXVXVXVXVXVXcXcXcXlXvXzXzXzXzXzXzXkXkXzXzXzXxXxXzXxXvXcXvXvXvXcXvXvXzXxXzXcXvXvXvXvXvXvXzXjXjXjXhX&X*X*X&XjXjXjXzXvXvXjXjXzXzXzXzXzXkXjXjXjXzXzXxXxXvXvXvXvXcXvXcXcXcXvXcXcXmXcXmXcXNXNXcXcXmXcXcXmXmXBXcXcXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXcXmXcXcXcXmXcXcXcXcXcXxXxXvXcXcXvXvXvXcXvXcXcXxXcXmXBXVXcXmXmXcXVXVXNXcXNXVXVXVXVXcXVXcXcXcXcXcXcXxXlXxXxXxXxXxXxXkXlXzX=XzXzXzXzXxXxXxXkXxXzXzXzXzXzXjXzXjXjX=XjXjXzX=XzXxXzXzXzXzXzXzXzXxXxXzXzXzXzXzXzXjXjX&X&X&X&X&X*X*X*X*X&X=X=XjXjXjX&X=X=X&X&X&X&X*X*X*X*X*X;X*X*X&X&X*X*X*X*X*X*X+X+X&X&X*X*X*X*X=X=X=X*X=X=X=X=X&X&XkXzXzXjXjX=XjXkXkXxXxXvXvXzXkXzXzXzXxXxXvXxXvXxXxXvXxXvXvXvXcXxXcXxXxXvXvXcXxXvXcXcXvXcXcXcXxXvXcXvXxXcXvXvXxXvXvXvXcXxXxXxXxXxXcXvXcXcXcXvXcXcXcXcXcXcXcXcXvXcXcXvXvXvXvXvXvXvXcXcXvXxXvXvXcXcXvXcXcXcXcXcXxXxXvXxXvXxXxXxXxXxXxXxXxXxXxXxXzXzXzXzXzXzXxXxXzXxXxXxXxXxXxXzXxXzXzXzXxXzXzXzXzXzXvXvXvXzXvXzXvXvXvXzXcXcXxXxXxXxXcXxXvXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXmXcXcXcXcXcXcXcXNXcXmXcXBXcXNXcXcXcXNXNXBXNXcXcXNXNXNXcXcXcXNXcXNXNXcXcXcXcXcXNXNXcXcXcXcXxXvXkXxXvXmXvXvXvXvXxXcXvXvXvXvXjXjXjXhXhX&XzXzXkXxXjX&X&XzXkXzX", -"vXzXxXkXkXvXxXxXNXNXVXVXVXVXNXNXVXNXNXNXNXmXmXcXcXvXxXxX*X*X*X%X*XhXvXmXlXhXOX|.|.+X+XXX%XlXlXkXhX+XXXXXXX+X+X+XOXoX|.oXOXOX|.|.oX+XhXvXcXmXVXVXmXcXmXcXcXmXcXVXVXcXVXvXNXVXVXmXVXVXxXvXkXkXkXkXkXxXxXvXcXcXvXkXhXkXzXvXvXvXlXxXcXcXNXmXcXcXNXcXcXcXcXcXcXcXcXxXlXkXkXkX-X-XzXzXkXkXxXxXxXxXcXcXNXVXVXVXAXAXZXZXAXZXZXZXKXKXKXKXZXZXAXVXVXVXVXVXVXVXVXmXmXVXVXVXmXcXcXcXxXcXxXxXcXcXcXvXxXxXxXcXcXmXcXcXcXcXmXVXcXcXvXvXvXzXvXzXhXjX=X*X+X*XhXhXjXjXjXjXjXjXjXkXzXzXzXvXzXvXzXzXzXxXzXzXzXzXjXjXzXzXzXzXvXvXcXxXcXNXcXcXmXcXxXxXcXcXcXcXcXcXcXmXcXBXmXBXVXVXVXVXVXVXVXmXmXVXVXVXVXmXNXNXcXcXcXVXVXcXmXmXcXcXcXcXcXmXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXxXxXxXxXxXxXxXxXxXcXxXcXcXcXcXcXcXcXcXcXcXcXmXmXVXVXVXcXcXcXmXcXcXcXcXcXcXcXkXxXvXkXxXzXxXxXvXxXvXxXzXvXcXvXxXcXcXzXcXcXvXcXvXcXzXzXzXxXvXkXvXxXzXxXzXzXzXzXkXkXkXkXzXzXxXkXkXzXzXzXkXkXkXxXzXzXzXzXzXzXzXzXzXjXzXjXhXkXkXkXhXjXjXzXzXzXvXvXvXvXvXvXvXzXvXzXcXzXxXxXxXxXvXcXvXcXcXvXcXxXvXcXcXcXcXcXcXcXxXcXcXcXxXxXcXcXcXxXxXvXvXcXvXvXvXcXxXxXxXvXxXxXvXxXxXvXxXxXcXcXcXcXxXcXxXcXvXcXcXcXcXcXcXcXcXvXcXcXcXcXvXcXcXcXcXcXcXcXcXcXcXvXcXvXxXcXcXcXcXvXcXcXcXcXcXcXcXcXcXcXcXmXcXcXcXmXcXcXcXcXcXcXcXcXcXxXcXcXcXcXcXcXxXcXcXcXcXcXcXxXxXxXcXcXvXcXvXcXcXcXvXcXcXxXvXvXvXvXvXxXvXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXvXcXcXmXcXcXcXcXNXNXNXcXcXcXcXNXNXcXNXNXcXNXcXNXcXcXNXcXcXcXNXNXcXNXNXcXNXcXcXcXNXcXcXcXcXcXcXNXNXNXcXNXVXcXcXcXcXvXvXvXcXcXvXvXmXmXvXvXmXmXNXcXmXmXmXcXcXxXkXvXvXvX", -"cXcXcXcXNXNXNXNXNXNXNXNXNXlXNXNXNXVXmXmXNXNXNXmXNXNXNXcXNXcXcXcXmXvXcXcXlXlXlXkXcXNXVXVXSXmXlXlXlXxXkX-X&X&X-XzXvXhX&X&XkXkXkXkXxXxXxXcXlXlXcXVXmXcXxXxXcXcXcXcXxXcXcXcXcXxXxXvXcXcXvXcXcXcXcXcXxXxXcXxXlXxXxXxXxXvXxXvXzXzXkXxXkXxXvXvXxXxXxXcXcXcXcXxXlXlXxXxXxXlXkXlXxXxXxXcXcXcXNXVXVXVXCXZXCXZXZXAXZXCXCXAXAXAXAXAXAXCXSXAXVXSXAXVXVXVXVXVXVXVXVXmXVXNXNXNXNXmXmXlXmXNXNXmXcXcXcXmXmXmXmXmXcXcXmXmXmXvXvXvXvXvXvXvXvXvXvXvXkXkXjXjXjXkXkXvXvXzXzXlXxXzXxXxXvXvXvXvXxXxXxXvXvXxXzXzXxXzXzXzXzXzXzXzXzXzXzXxXzXxXxXzXxXxXvXxXxXxXcXcXcXcXcXvXcXcXcXcXVXVXcXcXcXcXcXVXVXVXVXVXVXNXVXVXVXNXVXVXVXNXcXcXcXmXmXmXcXcXcXcXcXNXcXcXcXcXcXcXcXcXNXNXNXNXNXNXcXcXxXxXcXcXcXNXNXxXNXxXcXcXNXcXcXNXcXcXmXcXcXcXmXcXmXmXcXNXNXVXcXcXVXVXVXcXcXmXmXNXmXVXmXmXcXcXcXcXxXxXxXcXvXvXvXxXvXcXvXcXcXcXcXcXxXvXcXcXvXcXcXcXcXcXcXmXvXcXcXvXcXcXvXvXcXcXcXcXxXxXcXcXcXcXcXmXcXcXcXcXcXmXcXcXcXcXcXcXcXcXcXvXvXvXcXcXvXcXvXzXxXzXxXxXxXlXxXlXxXxXcXvXcXvXxXxXcXcXcXcXcXxXxXxXxXxXcXcXcXcXcXcXcXcXcXcXcXvXxXvXcXcXcXcXcXcXcXcXxXcXcXxXcXcXcXxXxXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXmXmXmXcXcXmXcXcXcXcXcXcXNXcXcXcXcXmXmXcXcXcXcXNXcXcXmXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXNXcXcXcXcXcXcXcXcXcXcXcXcXxXxXNXxXxXNXxXxXxXxXcXxXNXxXxXcXxXcXcXcXcXcXcXcXcXcXcXxXcXxXxXcXcXcXcXcXcXcXcXcXcXcXcXcXmXBXcXcXmXmXcXBXcXcXcXNXcXNXcXcXcXNXNXNXNXNXcXNXNXcXNXcXcXcXNXcXNXcXNXcXNXNXNXNXNXNXNXNXNXmXNXmXNXmXcXNXNXmXmXcXmXcXNXcXcXcXcXxXxXcXxXxXxXcXcXcXcXcXcXcXcXlXmX", -"NXNXVXVXNXNXNXNXNXVXVXVXVXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXNXVXNXVXVXVXVXVXNXVXVXNXNXmXlXkXlXkXlXcXNXNXxXlXlXNXBXVXBXVXBXBXNXNXNXBXVXNXNXcXVXcXcXcXcXcXcXvXxXcXxXcXxXcXcXxXcXcXcXcXcXcXcXcXcXNXcXNXNXcXcXmXVXVXmXVXNXcXcXVXmXmXcXcXcXcXxXxXcXcXcXNXcXcXNXVXNXNXVXVXVXAXVXVXAXAXVXCXVXVXAXAXVXAXAXAXCXCXVXAXCXCXCXVXVXVXVXVXAXVXVXVXVXVXVXVXVXVXNXVXVXNXNXVXNXNXSXNXNXmXNXVXcXcXcXmXmXlXcXcXcXvXcXcXvXvXvXvXvXvXcXvXvXvXcXcXcXcXcXcXcXcXvXcXcXcXvXvXvXvXvXvXcXcXcXcXvXcXcXcXcXcXcXcXcXcXcXxXzXxXcXxXxXxXxXxXxXzXcXcXcXcXcXcXcXcXcXcXcXVXNXcXVXVXVXVXVXVXVXVXVXVXVXVXNXNXNXNXNXVXVXNXVXVXVXVXNXVXNXNXNXNXVXVXVXVXVXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXcXNXNXNXNXNXNXNXNXNXNXNXNXcXcXNXNXNXVXVXVXVXVXAXVXVXVXVXAXAXVXAXAXAXAXAXAXAXAXAXAXAXAXAXSXVXVXVXVXVXVXVXVXmXmXVXVXVXmXcXmXvXcXmXmXcXcXcXcXmXcXcXcXcXcXcXcXcXcXcXcXmXcXcXcXcXcXcXcXcXxXcXcXcXvXvXvXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXmXcXcXcXcXvXvXcXcXcXxXcXcXvXvXxXcXcXcXxXxXxXvXvXvXcXvXxXxXcXcXcXcXcXcXcXcXcXcXcXcXvXvXvXxXxXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXcXmXcXcXcXNXcXcXcXmXcXcXcXcXcXmXcXcXcXcXcXmXBXcXcXmXcXVXcXVXNXcXcXmXmXcXcXNXBXcXmXNXNXcXNXcXBXNXcXBXmXBXcXcXcXcXcXmXcXcXmXcXcXNXcXcXNXBXmXcXcXcXcXNXcXNXcXcXcXNXcXNXNXNXNXNXNXcXNXcXcXcXcXcXcXxXNXcXcXcXcXcXcXxXcXvXvXvXvXcXcXcXcXxXvXzXxXzXzXzXcXxXxXcXvXvXvXcXvXcXcXcXcXmXNXVXcXcXcXNXBXNXNXNXNXNXNXcXNXcXNXcXNXNXNXNXNXNXcXcXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXlXNXNXNXcXcXcXcXcXNXNXcXcXcXcXcXNXNXcXcXNXNXNX", -"NXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXVXCXCXCXCXCXCXVXCXCXVXVXCXVXVXBXVXSXVXVXVXVXVXVXVXVXVXVXNXNXNXNXNXNXNXNXNXNXNXNXcXmXNXNXcXNXcXNXNXNXNXNXBXNXNXNXNXcXcXNXNXNXNXNXNXNXNXNXNXNXNXVXNXCXCXCXBXCXCXVXVXVXVXVXVXVXVXCXVXCXVXVXCXCXCXCXCXVXVXVXVXVXNXNXVXmXcXcXcXcXNXcXcXcXcXcXcXVXNXVXVXVXVXVXVXNXVXVXNXNXVXmXNXNXNXNXVXVXNXVXVXVXVXVXVXVXAXCXAXVXAXVXCXVXCXVXNXVXNXNXNXNXNXNXVXNXNXNXVXVXmXmXcXVXNXcXmXmXmXVXVXmXVXcXVXVXVXmXVXmXVXmXVXmXVXcXcXmXmXmXmXVXmXVXVXVXmXmXNXNXVXVXVXVXNXNXNXNXNXNXNXNXNXVXNXNXNXNXNXNXVXVXVXVXVXVXVXNXNXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXCXCXVXAXSXAXVXAXAXAXAXAXAXAXZXZXZXZXZXZXZXZXZXZXZXAXAXAXAXAXAXAXAXAXAXAXAXVXAXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXmXVXVXVXNXNXmXcXmXcXcXcXcXcXmXvXcXcXcXxXcXcXcXcXcXxXcXcXcXcXcXcXcXcXcXcXcXcXmXmXcXcXmXcXcXcXcXcXBXBXcXcXNXNXBXcXcXNXmXVXNXVXVXVXNXNXVXcXcXcXNXVXNXNXVXcXVXcXmXmXcXcXcXcXxXxXcXcXcXcXcXBXmXmXmXNXNXNXmXNXcXNXcXNXNXNXNXmXcXNXVXNXNXNXNXNXVXNXVXVXVXVXVXVXVXVXNXVXVXVXVXNXVXNXNXNXNXVXVXNXcXcXNXVXNXNXNXNXNXcXNXNXNXNXNXNXNXNXNXNXVXNXNXNXVXBXVXVXNXVXNXNXBXVXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXNXcXNXcXcXcXcXcXcXcXcXcXvXcXvXcXcXcXcXcXvXvXvXxXvXvXvXxXcXzXvXxXvXcXcXcXcXcXcXcXxXvXcXcXcXcXcXNXcXcXcXcXcXcXcXcXNXcXNXNXNXcXcXNXNXNXNXNXNXNXNXNXNXNXNXNXNXVXNXNXNXNXVXNXNXNXNXNXNXVXNXNXNXVXVXNXNXNXNXNXNXNXNXVXVXVXVXVXVX", -"VXVXVXVXCXVXVXBXCXCXVXVXVXVXCXVXVXVXCXCXVXCXCXCXCXCXVXCXCXCXCXCXCXCXCXCXCXVXVXVXVXVXVXVXVXVXVXVXVXVXCXCXVXVXCXCXVXVXCXCXVXCXVXVXCXVXVXVXVXVXVXVXCXCXCXVXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXCXCXCXCXCXCXCXCXCXCXCXCXVXVXVXVXVXVXVXVXVXNXVXVXBXVXNXNXVXBXBXcXcXcXcXcXcXcXxXxXcXcXcXcXcXcXcXcXVXNXNXNXcXcXcXcXlXxXcXlXcXcXcXcXNXcXNXNXcXmXNXNXVXVXmXcXlXNXNXlXlXlXlXmXNXlXNXlXNXlXNXNXmXNXVXVXVXVXVXSXSXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXBXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXSXAXVXAXSXAXAXAXAXAXAXAXAXAXAXAXAXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXAXAXSXAXAXVXVXVXVXVXCXVXCXCXVXVXVXVXVXVXVXSXVXVXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXAXSXSXSXSXAXZXAXZXZXZXZXZXAXZXAXZXZXZXZXZXZXZXCXCXZXZXZXZXAXSXAXAXAXAXAXAXAXAXSXAXVXSXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXBXVXVXVXcXcXmXVXmXVXmXVXVXNXVXNXNXNXBXNXVXBXVXVXVXVXVXBXBXVXVXVXVXVXVXVXVXVXNXlXmXmXmXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXCXVXVXVXVXVXVXVXVXVXVXNXVXVXNXNXNXVXVXNXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXNXBXVXVXNXVXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXNXVXNXNXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXNXNXVXNXNXNXVXNXVXNXNXNXVXNXVXVXNXBXVXNXNXNXNXBXmXNXVXVXNXNXNXcXNXNXNXNXNXNXmXcXcXcXcXNXcXNXmXcXcXcXcXcXcXcXcXcXcXcXNXcXNXNXNXNXNXNXNXNXNXNXNXBXVXNXNXVXVXVXVXNXNXNXSXNXVXVXVXVXNXNXSXVXVXVXVXVXVXVXVXSXSXNXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX", -"VXVXCXVXCXCXVXCXVXVXVXCXVXCXCXVXVXVXVXVXCXCXBXCXVXVXVXVXCXCXVXCXCXVXCXCXCXVXCXVXVXCXCXBXCXCXVXCXCXCXVXCXCXCXCXCXVXCXCXCXVXVXZXVXVXCXCXCXCXVXCXVXVXCXCXCXCXCXCXCXCXCXCXCXVXZXVXCXCXCXVXCXCXCXVXCXVXVXVXVXVXCXCXVXVXVXVXVXCXCXVXCXCXVXVXAXVXCXVXCXVXVXVXVXVXVXVXCXVXVXCXCXCXCXCXVXVXCXVXCXCXCXVXCXVXVXVXSXVXCXSXVXVXNXVXVXVXVXVXNXVXCXVXAXVXVXVXNXCXBXBXBXNXNXlXcXmXlXhXlXkXlXkXlXmXmXmXVXVXVXVXVXVXCXCXCXVXVXSXSXVXVXVXVXVXVXVXVXVXVXVXVXAXVXAXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXmXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXSXSXVXNXVXVXVXVXCXVXVXVXVXVXAXVXAXAXVXAXAXCXCXVXAXCXAXCXCXAXAXAXAXAXAXAXZXAXAXZXZXZXZXZXZXZXZXZXZXZXZXZXZXAXZXZXZXZXZXZXZXZXZXZXZXAXAXAXCXAXVXVXVXVXVXSXAXCXAXAXZXAXAXAXAXZXZXZXZXZXZXZXAXAXAXAXAXAXZXAXAXAXAXAXAXAXAXAXAXAXZXAXAXCXAXAXAXAXAXZXZXAXAXAXAXCXCXCXCXCXVXCXAXAXAXCXVXVXVXVXVXVXVXVXVXAXCXCXCXCXAXAXCXCXCXCXCXCXCXCXCXCXVXVXVXCXVXVXVXVXVXVXVXCXVXVXCXVXVXCXCXAXCXAXCXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXCXAXVXAXAXAXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXCXVXVXVXVXVXVXVXVXCXCXCXCXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXVXVXVXVXVXVXCXCXCXVXVXCXVXVXVXVXVXVXCXCXCXVXCXCXCXVXVXCXVXCXVXVXVXCXVXVXCXVXVXVXVXVXVXVXCXVXVXAXCXCXVXVXVXVXVXCXVXCXVXVXCXVXVXVXVXCXVXCXVXBXVXVXVXVXVXCXVXVXCXVXCXCXVXVXVXVXCXCXVXVXVXVXVXVXVXCXVXVXVXVXSXVXSXVXVXVXCXVXCXCXCXCXVXVXVXVXVXVXCXCXVXCXCXVXVXCXCXCXCXVXCXCXCX", -"ZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXAXCXZXZXZXZXZXZXCXZXZXZXCXZXCXZXZXCXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXAXZXZXZXZXZXCXZXCXZXCXCXZXCXCXZXCXZXCXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXCXZXZXZXZXZXZXZXZXZXZXZXCXCXZXZXCXCXCXZXZXZXZXAXZXZXZXZXZXZXZXZXZXZXZXZXZXZXAXZXZXZXAXZXZXZXAXZXZXZXZXAXZXZXZXZXCXZXZXZXZXCXCXZXZXZXZXCXZXZXZXZXZXAXZXZXZXZXZXZXZXZXZXZXZXAXZXZXCXZXCXZXZXZXZXZXZXZXZXZXZXZXZXZXZXZXAXAXZXAXZXZXZXZXZXZXZXAXAXAXAXZXZXZXZXZXZXAXAXAXZXZXZXZXCXZXZXAXZXCXCXZXZXAXZXZXCXZXCXZXCXCXZXZXAXCXAXAXCXCXCXSXAXCXCXCXCXCXZXZXCXZXZXCXCXCXCXCXZXZXZXZXZXZXAXAXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXAXCXAXCXCXCXCXCXCXAXCXCXCXCXCXCXCXAXAXCXCXCXCXCXCXCXCXVXCXCXCXCXCXAXCXAXVXCXVXCXCXVXVXCXCXVXCXVXVXVXCXCXCXCXCXVXCXVXCXVXVXCXVXVXCXVXVXCXCXVXVXVXVXVXVXVXVXCXCXVXVXVXVXVXVXVXCXVXVXVXVXVXVXVXCXVXVXVXCXCXCXCXCXVXVXCXCXCXCXVXVXVXCXCXCXCXCXCXCXCXCXCXCXVXAXVXZXCXCXCXVXVXCXCXVXCXCXCXCXCXCXCXCXCXCXCXZXVXCXVXCXCXVXVXCXCXVXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXVXCXCXVXVXCXAXCXCXCXCXVXVXVXCXVXVXVXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXZXCXVXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXCXCXCXCXCXCXCXCXCXCXCXCXCXSXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXCXCXVXCXCXCXCXCXCXCXCXCXCXCX" -}; - -/* AO27 pixmap - about dialog */ - -static char * ao27_small_xpm[] = { -"82 134 1853 2", -" c None", -". c #0D28DB", -"+ c #122DD9", -"@ c #0D28DA", -"# c #0F2ADB", -"$ c #0E29DB", -"% c #0E29D9", -"& c #0E29DA", -"* c #1D35D5", -"= c #3E414F", -"- c #112AD1", -"; c #5A5A33", -"> c #122DD6", -", c #0E28D8", -"' c #373A29", -") c #424E8B", -"! c #333D50", -"~ c #666F7B", -"{ c #112BD7", -"] c #0E29D6", -"^ c #86865D", -"/ c #223AD1", -"( c #4B4C34", -"_ c #2940D7", -": c #2D3D77", -"< c #5566B3", -"[ c #3D50BC", -"} c #6C6F46", -"| c #142ED4", -"1 c #132DD8", -"2 c #444637", -"3 c #4D5477", -"4 c #676F52", -"5 c #4B4C3B", -"6 c #0E28D9", -"7 c #3E50B8", -"8 c #5A593B", -"9 c #142DD1", -"0 c #1730D9", -"a c #57533A", -"b c #2435A3", -"c c #0F2ADA", -"d c #666342", -"e c #403E3C", -"f c #102AD5", -"g c #0E28DA", -"h c #39351F", -"i c #2335B3", -"j c #0F29DA", -"k c #0F29D6", -"l c #3F4028", -"m c #504946", -"n c #102AD6", -"o c #102ADA", -"p c #0E29D8", -"q c #4D4F36", -"r c #2D2E16", -"s c #142CCF", -"t c #31341D", -"u c #122BCD", -"v c #3A3E25", -"w c #394145", -"x c #102AD4", -"y c #102BDB", -"z c #102AD3", -"A c #474832", -"B c #343520", -"C c #2C3DA4", -"D c #0E28DB", -"E c #444536", -"F c #312F19", -"G c #4E4B33", -"H c #0F29D5", -"I c #383824", -"J c #5E5835", -"K c #112AD3", -"L c #102AD9", -"M c #474939", -"N c #44442A", -"O c #162FD4", -"P c #102AD8", -"Q c #3B361E", -"R c #0E29D7", -"S c #3F3924", -"T c #453C21", -"U c #112AD4", -"V c #4B4838", -"W c #332C1A", -"X c #162DC7", -"Y c #52533F", -"Z c #403F29", -"` c #142CC9", -" . c #0F29D7", -".. c #4A4B31", -"+. c #373816", -"@. c #54522C", -"#. c #383723", -"$. c #132BD0", -"%. c #122BCF", -"&. c #453F1F", -"*. c #494746", -"=. c #5B5136", -"-. c #443B1B", -";. c #6C5F2E", -">. c #443418", -",. c #112AD5", -"'. c #152CCB", -"). c #5D4B28", -"!. c #5D481D", -"~. c #0F29D9", -"{. c #122AD2", -"]. c #6B572D", -"^. c #69522F", -"/. c #152CCF", -"(. c #122BD4", -"_. c #474479", -":. c #725638", -"<. c #132BD2", -"[. c #0F29DB", -"}. c #67502B", -"|. c #2230B0", -"1. c #62574A", -"2. c #4C4340", -"3. c #142BCF", -"4. c #5C4B24", -"5. c #554D50", -"6. c #0F29D8", -"7. c #665529", -"8. c #584B35", -"9. c #6A5B2C", -"0. c #655228", -"a. c #2233B5", -"b. c #695F38", -"c. c #6A5C32", -"d. c #6C5724", -"e. c #2A379B", -"f. c #675C30", -"g. c #5A4E24", -"h. c #1D31BC", -"i. c #6C6132", -"j. c #635831", -"k. c #2333AD", -"l. c #3E4484", -"m. c #645629", -"n. c #685822", -"o. c #102ADB", -"p. c #1E37D9", -"q. c #112AD2", -"r. c #5D4C2D", -"s. c #6A5727", -"t. c #343D95", -"u. c #112BDB", -"v. c #ADB19F", -"w. c #9A975E", -"x. c #82785A", -"y. c #9F9781", -"z. c #ACA78F", -"A. c #B8B399", -"B. c #8A856B", -"C. c #4C4C33", -"D. c #4B4E3C", -"E. c #3F4136", -"F. c #343F6D", -"G. c #60592F", -"H. c #645428", -"I. c #6B5B25", -"J. c #102BDA", -"K. c #152AB0", -"L. c #9A9D61", -"M. c #A59F4E", -"N. c #6B5728", -"O. c #3D2B1A", -"P. c #2C2017", -"Q. c #2F2319", -"R. c #2A1E17", -"S. c #302C1E", -"T. c #2B2E22", -"U. c #262722", -"V. c #32352A", -"W. c #373B29", -"X. c #1C2D94", -"Y. c #5B542E", -"Z. c #6E5F2B", -"`. c #1D2FA3", -" + c #353616", -".+ c #5E5B30", -"++ c #BBAD64", -"@+ c #A98D46", -"#+ c #786434", -"$+ c #3C2E18", -"%+ c #2D1C14", -"&+ c #2B1F18", -"*+ c #231D13", -"=+ c #17140B", -"-+ c #1D1C16", -";+ c #191A13", -">+ c #2E3023", -",+ c #26281E", -"'+ c #1A2B9A", -")+ c #112CD5", -"!+ c #605C41", -"~+ c #564D1D", -"{+ c #172ECB", -"]+ c #87908D", -"^+ c #8B8E49", -"/+ c #7F774B", -"(+ c #4B321C", -"_+ c #B99B6B", -":+ c #B3A358", -"<+ c #928435", -"[+ c #534116", -"}+ c #382D18", -"|+ c #342B24", -"1+ c #372C26", -"2+ c #251F18", -"3+ c #333227", -"4+ c #2C2D22", -"5+ c #2B2B21", -"6+ c #424238", -"7+ c #1D1D15", -"8+ c #202E92", -"9+ c #5E5426", -"0+ c #6C5F1C", -"a+ c #8F9BA5", -"b+ c #A8AE53", -"c+ c #A3A85C", -"d+ c #433F24", -"e+ c #180701", -"f+ c #351E0F", -"g+ c #9B8552", -"h+ c #C8B856", -"i+ c #C3B239", -"j+ c #6A5C24", -"k+ c #2A1E19", -"l+ c #281D1C", -"m+ c #28221E", -"n+ c #23221A", -"o+ c #181912", -"p+ c #1E1E15", -"q+ c #1F1F17", -"r+ c #1A1A11", -"s+ c #252319", -"t+ c #363125", -"u+ c #1B2EB7", -"v+ c #4C4850", -"w+ c #665C29", -"x+ c #0F2AD9", -"y+ c #2C42C9", -"z+ c #A8AF54", -"A+ c #9CA43F", -"B+ c #72753E", -"C+ c #0E0B05", -"D+ c #10080B", -"E+ c #484036", -"F+ c #2C140A", -"G+ c #7B542D", -"H+ c #DBC26E", -"I+ c #A4913B", -"J+ c #6E6332", -"K+ c #211A0A", -"L+ c #110C06", -"M+ c #15130F", -"N+ c #0F0F0B", -"O+ c #11110B", -"P+ c #1A1A12", -"Q+ c #1F1F15", -"R+ c #242119", -"S+ c #241E18", -"T+ c #231D17", -"U+ c #4A482C", -"V+ c #5F5A2A", -"W+ c #685D2E", -"X+ c #5F5329", -"Y+ c #505056", -"Z+ c #425199", -"`+ c #A1A46C", -" @ c #979F48", -".@ c #939A4C", -"+@ c #272614", -"@@ c #0C070A", -"#@ c #181416", -"$@ c #2A2721", -"%@ c #170609", -"&@ c #2A0B10", -"*@ c #6A4532", -"=@ c #CBB272", -"-@ c #A89E50", -";@ c #948F44", -">@ c #3B3314", -",@ c #1B1512", -"'@ c #242323", -")@ c #26261F", -"!@ c #18150D", -"~@ c #271D16", -"{@ c #291C1B", -"]@ c #2A1B18", -"^@ c #271C09", -"/@ c #7A733C", -"(@ c #655C29", -"_@ c #706539", -":@ c #122BD3", -"<@ c #142FD9", -"[@ c #1430C9", -"}@ c #626F48", -"|@ c #969F5D", -"1@ c #677130", -"2@ c #3D4125", -"3@ c #0C0707", -"4@ c #100907", -"5@ c #3A342A", -"6@ c #0F0809", -"7@ c #0D0806", -"8@ c #46453D", -"9@ c #231A15", -"0@ c #412213", -"a@ c #B59A5E", -"b@ c #C1AC5B", -"c@ c #947C38", -"d@ c #473C1B", -"e@ c #242216", -"f@ c #211E15", -"g@ c #262018", -"h@ c #292118", -"i@ c #342F1B", -"j@ c #4B4624", -"k@ c #554923", -"l@ c #867930", -"m@ c #B9B24E", -"n@ c #5F5932", -"o@ c #676033", -"p@ c #2034B8", -"q@ c #0D29DB", -"r@ c #445A88", -"s@ c #7F8D4C", -"t@ c #7C8644", -"u@ c #4C512E", -"v@ c #10100C", -"w@ c #1D1816", -"x@ c #332C27", -"y@ c #2D2620", -"z@ c #0E0704", -"A@ c #1B150B", -"B@ c #28271C", -"C@ c #1A1813", -"D@ c #1D0D09", -"E@ c #5C3E2D", -"F@ c #97744D", -"G@ c #D2B676", -"H@ c #A1913C", -"I@ c #716733", -"J@ c #352818", -"K@ c #373424", -"L@ c #373A2D", -"M@ c #28321D", -"N@ c #4B582B", -"O@ c #949A58", -"P@ c #C7C771", -"Q@ c #676421", -"R@ c #5B5839", -"S@ c #686347", -"T@ c #625F35", -"U@ c #3C4785", -"V@ c #0E2ADA", -"W@ c #233CD7", -"X@ c #4E62C1", -"Y@ c #8F9A50", -"Z@ c #555C32", -"`@ c #13120C", -" # c #050301", -".# c #201D12", -"+# c #3B352D", -"@# c #110A08", -"## c #0E0802", -"$# c #332921", -"%# c #191513", -"&# c #080D0A", -"*# c #2F3023", -"=# c #2C2B1B", -"-# c #3D2E21", -";# c #6F4C2F", -"># c #D2B672", -",# c #D0BC6C", -"'# c #7B6A36", -")# c #3C2B14", -"!# c #3E2C1A", -"~# c #422F25", -"{# c #51432F", -"]# c #6D6836", -"^# c #535329", -"/# c #646639", -"(# c #666840", -"_# c #282619", -":# c #292717", -"<# c #716D49", -"[# c #162DCB", -"}# c #1029D5", -"|# c #3B51D4", -"1# c #A8AD6A", -"2# c #757B41", -"3# c #07040A", -"4# c #0A0802", -"5# c #4A4837", -"6# c #0D0804", -"7# c #231E1B", -"8# c #2C291D", -"9# c #312825", -"0# c #0F090D", -"a# c #10140C", -"b# c #343A28", -"c# c #1E2C18", -"d# c #272B22", -"e# c #523C37", -"f# c #4F2B17", -"g# c #BCA065", -"h# c #D7C576", -"i# c #9D7F39", -"j# c #846220", -"k# c #7D5519", -"l# c #97742A", -"m# c #D2C758", -"n# c #7F8220", -"o# c #889142", -"p# c #51572D", -"q# c #131306", -"r# c #110D0C", -"s# c #0E0905", -"t# c #534D30", -"u# c #38406D", -"v# c #1831D9", -"w# c #A9B198", -"x# c #929A43", -"y# c #605F38", -"z# c #160F0B", -"A# c #10070D", -"B# c #282218", -"C# c #191711", -"D# c #060404", -"E# c #1C1C17", -"F# c #35362A", -"G# c #211D17", -"H# c #0F0903", -"I# c #4E4936", -"J# c #272119", -"K# c #27201B", -"L# c #362F28", -"M# c #251F19", -"N# c #0B0400", -"O# c #321A0C", -"P# c #A58555", -"Q# c #D4BC64", -"R# c #C7B434", -"S# c #CFC33F", -"T# c #E4D650", -"U# c #C0B736", -"V# c #ACAA31", -"W# c #949637", -"X# c #87894E", -"Y# c #575636", -"Z# c #2B251C", -"`# c #282020", -" $ c #2B2520", -".$ c #37341B", -"+$ c #5D6A9D", -"@$ c #979A71", -"#$ c #A1A955", -"$$ c #70782E", -"%$ c #423F24", -"&$ c #110B07", -"*$ c #17100C", -"=$ c #342E26", -"-$ c #090702", -";$ c #060502", -">$ c #383833", -",$ c #080803", -"'$ c #17130D", -")$ c #373126", -"!$ c #2E281E", -"~$ c #221C13", -"{$ c #1E1712", -"]$ c #38312B", -"^$ c #0D0703", -"/$ c #0C0501", -"($ c #54443E", -"_$ c #270F07", -":$ c #765C34", -"<$ c #D3C179", -"[$ c #BAA63E", -"}$ c #A69F2B", -"|$ c #625E15", -"1$ c #464124", -"2$ c #343121", -"3$ c #37361D", -"4$ c #2E2A19", -"5$ c #393329", -"6$ c #2B2420", -"7$ c #2F2922", -"8$ c #2B2717", -"9$ c #3A391E", -"0$ c #4C524B", -"a$ c #162ECB", -"b$ c #0D28D8", -"c$ c #1126BB", -"d$ c #676B3C", -"e$ c #878F3C", -"f$ c #80844E", -"g$ c #120D08", -"h$ c #262014", -"i$ c #3E392A", -"j$ c #17100D", -"k$ c #0B0905", -"l$ c #21211A", -"m$ c #131310", -"n$ c #020101", -"o$ c #1F1B13", -"p$ c #27201C", -"q$ c #2A241B", -"r$ c #524C3F", -"s$ c #0E0703", -"t$ c #27201A", -"u$ c #201B1A", -"v$ c #0A0304", -"w$ c #1E0B06", -"x$ c #765439", -"y$ c #CDB47C", -"z$ c #B9AA4F", -"A$ c #918732", -"B$ c #3D3416", -"C$ c #180F08", -"D$ c #211C11", -"E$ c #1E1810", -"F$ c #282219", -"G$ c #201A11", -"H$ c #342F23", -"I$ c #2C2719", -"J$ c #1E1D0D", -"K$ c #383A1E", -"L$ c #6A6030", -"M$ c #1A30CE", -"N$ c #282120", -"O$ c #50522A", -"P$ c #757B3D", -"Q$ c #24220E", -"R$ c #0D0708", -"S$ c #1F1A13", -"T$ c #2D2917", -"U$ c #19130F", -"V$ c #15130C", -"W$ c #36352A", -"X$ c #070404", -"Y$ c #080505", -"Z$ c #3C3A30", -"`$ c #0E0A05", -" % c #0F0A09", -".% c #2B291B", -"+% c #2C281D", -"@% c #0D0602", -"#% c #1B150E", -"$% c #342D25", -"%% c #060506", -"&% c #040505", -"*% c #50453C", -"=% c #210A06", -"-% c #412012", -";% c #B59562", -">% c #C6B363", -",% c #A2933D", -"'% c #665C30", -")% c #413731", -"!% c #342C27", -"~% c #3B352C", -"{% c #3A372B", -"]% c #333028", -"^% c #37342C", -"/% c #3A352E", -"(% c #2D2B25", -"_% c #29291E", -":% c #473D26", -"<% c #6C5729", -"[% c #2337CB", -"}% c #ACA88B", -"|% c #6A6740", -"1% c #737646", -"2% c #444525", -"3% c #0A0507", -"4% c #0B0606", -"5% c #3F3B34", -"6% c #0F0B05", -"7% c #1C1811", -"8% c #343020", -"9% c #0F070D", -"0% c #322C21", -"a% c #201F18", -"b% c #030504", -"c% c #0F1309", -"d% c #434935", -"e% c #242217", -"f% c #261E15", -"g% c #47412D", -"h% c #18110B", -"i% c #0C0709", -"j% c #1E1E1A", -"k% c #1B1C0F", -"l% c #060602", -"m% c #120A04", -"n% c #5A3F2D", -"o% c #8E6C4E", -"p% c #DBC783", -"q% c #A4983F", -"r% c #6C602A", -"s% c #2C2114", -"t% c #231E18", -"u% c #181810", -"v% c #191A11", -"w% c #1A1A13", -"x% c #1F1D19", -"y% c #261F19", -"z% c #201A12", -"A% c #292416", -"B% c #4C432B", -"C% c #172DCF", -"D% c #2A44CC", -"E% c #B0B076", -"F% c #888950", -"G% c #62643C", -"H% c #16140A", -"I% c #09030A", -"J% c #211C1C", -"K% c #18140F", -"L% c #0B0703", -"M% c #1A1610", -"N% c #38332A", -"O% c #1E1811", -"P% c #514A43", -"Q% c #070702", -"R% c #070904", -"S% c #2B2F20", -"T% c #2C2A1F", -"U% c #342C24", -"V% c #383126", -"W% c #110903", -"X% c #0E0A07", -"Y% c #3C3B36", -"Z% c #080804", -"`% c #333427", -" & c #1B160C", -".& c #220E03", -"+& c #6C502B", -"@& c #D4C372", -"#& c #AFA546", -"$& c #8B8247", -"%& c #3B341F", -"&& c #141105", -"*& c #3E3C27", -"=& c #1D1811", -"-& c #231E17", -";& c #27221D", -">& c #271F1D", -",& c #201916", -"'& c #211A16", -")& c #1C140E", -"!& c #4C3923", -"~& c #1B30CB", -"{& c #A6AD6E", -"]& c #A3A64D", -"^& c #5B5D2E", -"/& c #34321D", -"(& c #110D09", -"_& c #090502", -":& c #39352D", -"<& c #0C0504", -"[& c #100903", -"}& c #393422", -"|& c #17110C", -"1& c #0A0905", -"2& c #1A1D14", -"3& c #26291F", -"4& c #23271C", -"5& c #232117", -"6& c #50483E", -"7& c #130B09", -"8& c #2C241C", -"9& c #3D3A2D", -"0& c #1B1A15", -"a& c #090808", -"b& c #12120C", -"c& c #26251B", -"d& c #090904", -"e& c #574A36", -"f& c #513916", -"g& c #C2AF74", -"h& c #B5AB61", -"i& c #8B8544", -"j& c #5D5A30", -"k& c #544F30", -"l& c #211713", -"m& c #1D130F", -"n& c #342D21", -"o& c #292419", -"p& c #26201A", -"q& c #1F1916", -"r& c #2B2422", -"s& c #2B2419", -"t& c #463C1A", -"u& c #2538BE", -"v& c #112BD6", -"w& c #1834CE", -"x& c #5C73AC", -"y& c #B2B45A", -"z& c #787B23", -"A& c #353516", -"B& c #0D0905", -"C& c #1F191A", -"D& c #2F2D1D", -"E& c #1B150D", -"F& c #0F0904", -"G& c #221E17", -"H& c #1B1915", -"I& c #0A0405", -"J& c #211B13", -"K& c #2C291A", -"L& c #1F1914", -"M& c #1B1A13", -"N& c #373B2E", -"O& c #202419", -"P& c #262A1D", -"Q& c #3C3B2D", -"R& c #130D08", -"S& c #120A0A", -"T& c #251F17", -"U& c #343323", -"V& c #191712", -"W& c #0E080A", -"X& c #504E48", -"Y& c #0C0705", -"Z& c #090306", -"`& c #191E19", -" * c #33342A", -".* c #1F0D0D", -"+* c #371B14", -"@* c #938753", -"#* c #BDBA6A", -"$* c #BEBE6E", -"%* c #59531B", -"&* c #423415", -"** c #453418", -"=* c #483B16", -"-* c #474216", -";* c #443E18", -">* c #413B14", -",* c #4C441D", -"'* c #4F451B", -")* c #50491A", -"!* c #7F7240", -"~* c #132ACF", -"{* c #0D27D7", -"]* c #2442C2", -"^* c #96AA6A", -"/* c #A09E31", -"(* c #514921", -"_* c #130E0B", -":* c #060100", -"<* c #27221E", -"[* c #241F1A", -"}* c #201414", -"|* c #1A100B", -"1* c #444130", -"2* c #050601", -"3* c #0A0804", -"4* c #35312A", -"5* c #0E0A06", -"6* c #0B0602", -"7* c #2A2F1F", -"8* c #39422F", -"9* c #272D1A", -"0* c #383B25", -"a* c #1E1D15", -"b* c #030102", -"c* c #050401", -"d* c #3F4034", -"e* c #0A0C06", -"f* c #201A15", -"g* c #433325", -"h* c #0A070C", -"i* c #1A1115", -"j* c #302823", -"k* c #120A08", -"l* c #271A18", -"m* c #5F513D", -"n* c #6F6847", -"o* c #54542C", -"p* c #828444", -"q* c #989330", -"r* c #B2A13D", -"s* c #BA9B3C", -"t* c #B39637", -"u* c #A09531", -"v* c #9E9331", -"w* c #958A2B", -"x* c #8E8123", -"y* c #8C781E", -"z* c #857432", -"A* c #444574", -"B* c #0E28D5", -"C* c #0D28D9", -"D* c #587793", -"E* c #9EA95A", -"F* c #71671E", -"G* c #2E2519", -"H* c #090402", -"I* c #2F2B27", -"J* c #0D0805", -"K* c #140D09", -"L* c #413B31", -"M* c #130F08", -"N* c #0B0702", -"O* c #221F16", -"P* c #0A040B", -"Q* c #140F0D", -"R* c #637554", -"S* c #768F66", -"T* c #4A5037", -"U* c #44392B", -"V* c #0C0401", -"W* c #040300", -"X* c #2F2F2A", -"Y* c #10100B", -"Z* c #0B0A04", -"`* c #241F16", -" = c #433C2E", -".= c #2C281B", -"+= c #110D04", -"@= c #544E3F", -"#= c #1E1613", -"$= c #180F0F", -"%= c #2F2417", -"&= c #8A824B", -"*= c #807D4B", -"== c #2C2B15", -"-= c #322E1C", -";= c #2C220E", -">= c #3A2A14", -",= c #38200E", -"'= c #3F2819", -")= c #322418", -"!= c #271A0F", -"~= c #382A1D", -"{= c #281917", -"]= c #301B1D", -"^= c #38211A", -"/= c #1629B8", -"(= c #0F29CA", -"_= c #839C57", -":= c #85853A", -"<= c #65532C", -"[= c #110B0D", -"}= c #0E0B0C", -"|= c #2A2521", -"1= c #0C0704", -"2= c #090501", -"3= c #353529", -"4= c #1B1912", -"5= c #2A2320", -"6= c #190F0B", -"7= c #464035", -"8= c #0B0607", -"9= c #484826", -"0= c #91A466", -"a= c #819761", -"b= c #676E4B", -"c= c #393226", -"d= c #18140C", -"e= c #1D1D16", -"f= c #2B2A25", -"g= c #050402", -"h= c #484533", -"i= c #303324", -"j= c #34311F", -"k= c #413B1F", -"l= c #3C3724", -"m= c #1F1715", -"n= c #181108", -"o= c #898457", -"p= c #D6D37D", -"q= c #A8AC4B", -"r= c #4D4F27", -"s= c #322E25", -"t= c #2F2624", -"u= c #291F1D", -"v= c #281F1F", -"w= c #231C20", -"x= c #282126", -"y= c #1E171B", -"z= c #191416", -"A= c #3F342E", -"B= c #182DC9", -"C= c #132CD7", -"D= c #132EDC", -"E= c #102BDC", -"F= c #39492F", -"G= c #87973E", -"H= c #8A8343", -"I= c #392716", -"J= c #1D1815", -"K= c #2D2420", -"L= c #090401", -"M= c #0E0C07", -"N= c #292D1F", -"O= c #0A0A05", -"P= c #130C0D", -"Q= c #3C3128", -"R= c #1D130E", -"S= c #0A0205", -"T= c #29271A", -"U= c #727A38", -"V= c #C5D17D", -"W= c #848D54", -"X= c #555A40", -"Y= c #0B0D06", -"Z= c #202016", -"`= c #35352A", -" - c #060402", -".- c #2D291A", -"+- c #313219", -"@- c #2E3623", -"#- c #38361D", -"$- c #4A4325", -"%- c #363121", -"&- c #29201A", -"*- c #413B1C", -"=- c #8E8A45", -"-- c #D3D264", -";- c #B4BC38", -">- c #8D9145", -",- c #1C1A0E", -"'- c #181511", -")- c #12110B", -"!- c #14160F", -"~- c #0D0F0A", -"{- c #0F1009", -"]- c #13150C", -"^- c #181B11", -"/- c #393C23", -"(- c #1A30C8", -"_- c #172ECF", -":- c #0F27C0", -"<- c #74783B", -"[- c #9A9E43", -"}- c #57522F", -"|- c #110606", -"1- c #170E08", -"2- c #493429", -"3- c #180605", -"4- c #130B0C", -"5- c #313325", -"6- c #080903", -"7- c #030200", -"8- c #2F2E2B", -"9- c #1A1916", -"0- c #1F1011", -"a- c #2A1C14", -"b- c #575736", -"c- c #7E8865", -"d- c #767F3B", -"e- c #605F2E", -"f- c #140C0C", -"g- c #0B0107", -"h- c #272118", -"i- c #292219", -"j- c #211B17", -"k- c #221E11", -"l- c #505735", -"m- c #2D391C", -"n- c #393F26", -"o- c #49482C", -"p- c #2D2A1D", -"q- c #383728", -"r- c #433F1E", -"s- c #958C4F", -"t- c #C4BA61", -"u- c #B3AE35", -"v- c #929125", -"w- c #433F13", -"x- c #2E291F", -"y- c #2B2B25", -"z- c #2F2F29", -"A- c #282822", -"B- c #272720", -"C- c #27281C", -"D- c #29291A", -"E- c #252517", -"F- c #232416", -"G- c #2436B1", -"H- c #142CD3", -"I- c #142246", -"J- c #747A37", -"K- c #77763C", -"L- c #140D03", -"M- c #0D0303", -"N- c #2E251D", -"O- c #2A1D16", -"P- c #261915", -"Q- c #322721", -"R- c #332C26", -"S- c #0B0804", -"T- c #100F0D", -"U- c #1F1E1C", -"V- c #0C0B09", -"W- c #0F0805", -"X- c #373025", -"Y- c #7F7C62", -"Z- c #9C9D7C", -"`- c #7C7D4A", -" ; c #312D16", -".; c #0F0607", -"+; c #473F39", -"@; c #0D0603", -"#; c #120C07", -"$; c #3F3A2B", -"%; c #3E4029", -"&; c #333A22", -"*; c #43482E", -"=; c #353823", -"-; c #2E2F1D", -";; c #31321D", -">; c #939060", -",; c #BFB96F", -"'; c #CFC76E", -"); c #C4BF63", -"!; c #686428", -"~; c #262114", -"{; c #1E1916", -"]; c #11110C", -"^; c #171712", -"/; c #13140E", -"(; c #0E0E08", -"_; c #16110C", -":; c #1C1309", -"<; c #5B4C2D", -"[; c #142DD5", -"}; c #0E28D7", -"|; c #313C1D", -"1; c #6F723C", -"2; c #403920", -"3; c #0D0301", -"4; c #170D0C", -"5; c #392E28", -"6; c #0A0602", -"7; c #0F0B03", -"8; c #3E3227", -"9; c #231210", -"0; c #0E0806", -"a; c #2E2D2B", -"b; c #080705", -"c; c #2E3123", -"d; c #2A2B1F", -"e; c #1A150B", -"f; c #5E5439", -"g; c #534B30", -"h; c #170F0C", -"i; c #2A211C", -"j; c #130A0C", -"k; c #080001", -"l; c #28221B", -"m; c #322C24", -"n; c #322D21", -"o; c #41412F", -"p; c #535641", -"q; c #232B14", -"r; c #2F361F", -"s; c #454826", -"t; c #8B8A51", -"u; c #C8C36D", -"v; c #CDC868", -"w; c #7B7938", -"x; c #231E0E", -"y; c #161311", -"z; c #1A1917", -"A; c #22221C", -"B; c #23231E", -"C; c #1F1F19", -"D; c #23241D", -"E; c #1D1D1B", -"F; c #190F11", -"G; c #43301E", -"H; c #1E33CD", -"I; c #112BD9", -"J; c #0E27D3", -"K; c #102BD6", -"L; c #646D35", -"M; c #49441F", -"N; c #130403", -"O; c #0F0203", -"P; c #3C322E", -"Q; c #120C06", -"R; c #090905", -"S; c #2A291D", -"T; c #2D2218", -"U; c #2B1515", -"V; c #271D1B", -"W; c #25211F", -"X; c #060403", -"Y; c #0D0C08", -"Z; c #313828", -"`; c #11160B", -" > c #1C1610", -".> c #453824", -"+> c #2A1E16", -"@> c #231B18", -"#> c #231B15", -"$> c #39322A", -"%> c #0B0307", -"&> c #0C0405", -"*> c #373225", -"=> c #0E0805", -"-> c #130C08", -";> c #343023", -">> c #2B2C1F", -",> c #2F3622", -"'> c #3B4026", -")> c #64663A", -"!> c #BEBE74", -"~> c #C4C164", -"{> c #9C9A3C", -"]> c #4B4C1D", -"^> c #23201C", -"/> c #18171B", -"(> c #12130F", -"_> c #11100C", -":> c #13120E", -"<> c #100F0A", -"[> c #0B0C07", -"}> c #0C0C0D", -"|> c #1C1215", -"1> c #2337CF", -"2> c #152ED6", -"3> c #0D28D5", -"4> c #2439BC", -"5> c #8E842E", -"6> c #624A1F", -"7> c #311D0E", -"8> c #383028", -"9> c #040802", -"0> c #0D0A05", -"a> c #100905", -"b> c #42342A", -"c> c #2A1C1A", -"d> c #0D0508", -"e> c #48483D", -"f> c #0E0F08", -"g> c #1A1A14", -"h> c #1E1E18", -"i> c #1A1914", -"j> c #100B09", -"k> c #231D14", -"l> c #3B3625", -"m> c #120C08", -"n> c #2F2B24", -"o> c #14100C", -"p> c #060200", -"q> c #111007", -"r> c #494739", -"s> c #261D1B", -"t> c #413529", -"u> c #7A6F48", -"v> c #BEB96A", -"w> c #C3C15D", -"x> c #B3B155", -"y> c #585523", -"z> c #13140B", -"A> c #0F0E0B", -"B> c #131112", -"C> c #110E0F", -"D> c #17130F", -"E> c #201B17", -"F> c #221E1A", -"G> c #1D1A15", -"H> c #1E35CD", -"I> c #152EDA", -"J> c #0D28D7", -"K> c #0E27D2", -"L> c #0F28C9", -"M> c #6C833E", -"N> c #898C2B", -"O> c #6B6517", -"P> c #1D1606", -"Q> c #0D0408", -"R> c #3E3635", -"S> c #0F0803", -"T> c #0E0804", -"U> c #312B25", -"V> c #241A15", -"W> c #150B09", -"X> c #2E2522", -"Y> c #25201A", -"Z> c #17150F", -"`> c #25251F", -" , c #120E0A", -"., c #423C33", -"+, c #1F1911", -"@, c #1A1510", -"#, c #4A4640", -"$, c #0A0603", -"%, c #070301", -"&, c #2C2B22", -"*, c #15120A", -"=, c #0F0703", -"-, c #352B18", -";, c #847D3E", -">, c #C5C260", -",, c #C3C15B", -"', c #928D3C", -"), c #312B12", -"!, c #242017", -"~, c #26211B", -"{, c #191410", -"], c #1C1714", -"^, c #1E1A16", -"/, c #17120E", -"(, c #18130F", -"_, c #160E09", -":, c #3C2B18", -"<, c #1931D4", -"[, c #112CDA", -"}, c #132DDC", -"|, c #2943CC", -"1, c #A5B269", -"2, c #8C9239", -"3, c #756F2B", -"4, c #3B2814", -"5, c #312621", -"6, c #0A0301", -"7, c #0B0704", -"8, c #140F0A", -"9, c #40372D", -"0, c #302320", -"a, c #15100E", -"b, c #40403A", -"c, c #0D0D08", -"d, c #050500", -"e, c #201C14", -"f, c #2C261E", -"g, c #140D0B", -"h, c #17110A", -"i, c #3A352B", -"j, c #110D08", -"k, c #25211C", -"l, c #1F1D17", -"m, c #191512", -"n, c #110A02", -"o, c #686237", -"p, c #B4B05B", -"q, c #C9C85F", -"r, c #A4A148", -"s, c #544A22", -"t, c #1E120B", -"u, c #1A110D", -"v, c #221913", -"w, c #2B2317", -"x, c #463F34", -"y, c #292420", -"z, c #26211D", -"A, c #3B3126", -"B, c #2238D5", -"C, c #0E28D3", -"D, c #9B978E", -"E, c #AAA69C", -"F, c #BFBCB1", -"G, c #CECBC1", -"H, c #DDDDCF", -"I, c #E0E0D3", -"J, c #E2E2D4", -"K, c #E1E1D4", -"L, c #DDDED3", -"M, c #D4D5C6", -"N, c #C6D0C1", -"O, c #C7D2CE", -"P, c #C2CCBD", -"Q, c #ADB47C", -"R, c #96923B", -"S, c #8D7D2F", -"T, c #30230A", -"U, c #433C3C", -"V, c #070504", -"W, c #1F1C14", -"X, c #312920", -"Y, c #1C0E0D", -"Z, c #29241E", -"`, c #27261F", -" ' c #080602", -".' c #0D0C06", -"+' c #322E21", -"@' c #19120E", -"#' c #160F10", -"$' c #443E35", -"%' c #231F19", -"&' c #1D1911", -"*' c #3E3A31", -"=' c #110E0B", -"-' c #0D090A", -";' c #353020", -">' c #A3A061", -",' c #C0C05F", -"'' c #BABA5A", -")' c #696424", -"!' c #2B1E16", -"~' c #2C1D25", -"{' c #312520", -"]' c #372D21", -"^' c #5D533E", -"/' c #2C2318", -"(' c #201A17", -"_' c #150F0D", -":' c #100A07", -"<' c #191E60", -"[' c #0F27D1", -"}' c #112CD9", -"|' c #1A33D5", -"1' c #172FD2", -"2' c #152ED0", -"3' c #132CCE", -"4' c #112ACF", -"5' c #0F29CF", -"6' c #0F28CD", -"7' c #2139D5", -"8' c #5364C0", -"9' c #8E9540", -"0' c #887B22", -"a' c #5C4820", -"b' c #291D21", -"c' c #050706", -"d' c #130D06", -"e' c #352A2A", -"f' c #130C0F", -"g' c #0C0B07", -"h' c #454330", -"i' c #1F1912", -"j' c #1E1715", -"k' c #3B3527", -"l' c #1D1910", -"m' c #0F0A06", -"n' c #1E1915", -"o' c #0C060A", -"p' c #1A1313", -"q' c #373221", -"r' c #241F10", -"s' c #1A1811", -"t' c #20201A", -"u' c #595B3F", -"v' c #7C8144", -"w' c #BEC46D", -"x' c #757834", -"y' c #2E2C13", -"z' c #17100E", -"A' c #140C16", -"B' c #120C05", -"C' c #444220", -"D' c #58553A", -"E' c #18110D", -"F' c #1D1312", -"G' c #1E1312", -"H' c #332920", -"I' c #233AD6", -"J' c #1A33D4", -"K' c #A6A546", -"L' c #918A26", -"M' c #635315", -"N' c #210601", -"O' c #514136", -"P' c #211714", -"Q' c #1E1D18", -"R' c #19160E", -"S' c #140F0B", -"T' c #302B27", -"U' c #0E0904", -"V' c #1C1611", -"W' c #18120D", -"X' c #292215", -"Y' c #423E26", -"Z' c #504E2E", -"`' c #33321E", -" ) c #2A2519", -".) c #160F0A", -"+) c #201818", -"@) c #201917", -"#) c #282314", -"$) c #555234", -"%) c #201A10", -"&) c #21171D", -"*) c #211715", -"=) c #251D10", -"-) c #2A40D3", -";) c #132EDB", -">) c #334AC6", -",) c #B6B755", -"') c #978C2B", -")) c #7C6122", -"!) c #38280C", -"~) c #0F0701", -"{) c #1B1513", -"]) c #23221F", -"^) c #0A0605", -"/) c #110A07", -"() c #453E36", -"_) c #120B09", -":) c #25201E", -"<) c #37322E", -"[) c #1B1613", -"}) c #070200", -"|) c #171207", -"1) c #29221A", -"2) c #0E060D", -"3) c #0D0702", -"4) c #615635", -"5) c #A59A58", -"6) c #83813E", -"7) c #373721", -"8) c #1C181B", -"9) c #20171B", -"0) c #221A19", -"a) c #251E1A", -"b) c #1D1610", -"c) c #4B4537", -"d) c #2A2517", -"e) c #1C1317", -"f) c #150C09", -"g) c #293EBC", -"h) c #1832DA", -"i) c #394FD6", -"j) c #C9C77E", -"k) c #929227", -"l) c #807A33", -"m) c #332912", -"n) c #403732", -"o) c #0E0D0A", -"p) c #231C18", -"q) c #1D1711", -"r) c #0D0608", -"s) c #171211", -"t) c #110D0A", -"u) c #3A352A", -"v) c #10090C", -"w) c #100712", -"x) c #352F1A", -"y) c #978B53", -"z) c #CDBE6A", -"A) c #D0D066", -"B) c #616831", -"C) c #141508", -"D) c #1D1812", -"E) c #241F19", -"F) c #1C1613", -"G) c #221B1B", -"H) c #1A130F", -"I) c #1A140D", -"J) c #150D0A", -"K) c #393321", -"L) c #2F46D9", -"M) c #ACB296", -"N) c #979431", -"O) c #8C7A2A", -"P) c #4C3412", -"Q) c #100705", -"R) c #312A23", -"S) c #090309", -"T) c #090706", -"U) c #464530", -"V) c #231D12", -"W) c #2B2321", -"X) c #362F26", -"Y) c #161110", -"Z) c #0A0305", -"`) c #130802", -" ! c #5A4A2B", -".! c #9F9056", -"+! c #D5D174", -"@! c #A4A745", -"#! c #575A2F", -"$! c #1A1816", -"%! c #141210", -"&! c #0B0A07", -"*! c #100D0B", -"=! c #090405", -"-! c #08020A", -";! c #140F0F", -">! c #1D1B10", -",! c #263DD0", -"'! c #233BDA", -")! c #6172CE", -"!! c #D8DE8C", -"~! c #8E902D", -"{! c #9B8E2F", -"]! c #5D431D", -"^! c #412A25", -"/! c #17090A", -"(! c #10070C", -"_! c #28291D", -":! c #312F22", -"~ c #1832D9", -",~ c #122CDB", -"'~ c #D9DAD2", -")~ c #C7CACC", -"!~ c #2039D4", -"~~ c #2E44D3", -"{~ c #2F44CF", -"]~ c #71692F", -"^~ c #767226", -"/~ c #9F9C2C", -"(~ c #8D8324", -"_~ c #4B3519", -":~ c #2F1F16", -"<~ c #554F42", -"[~ c #221F1A", -"}~ c #11130C", -"|~ c #47452A", -"1~ c #847F41", -"2~ c #B7B851", -"3~ c #B2B444", -"4~ c #636528", -"5~ c #1A1B0B", -"6~ c #1C1B16", -"7~ c #1E1D19", -"8~ c #22221E", -"9~ c #171613", -"0~ c #10100D", -"a~ c #0C0806", -"b~ c #263BCB", -"c~ c #1C35D9", -"d~ c #EFEDCB", -"e~ c #EBE8C7", -"f~ c #273FD8", -"g~ c #122CDA", -"h~ c #1932D9", -"i~ c #A18C52", -"j~ c #B18A42", -"k~ c #4B5AC1", -"l~ c #475ABC", -"m~ c #A3A135", -"n~ c #988F2B", -"o~ c #605718", -"p~ c #423624", -"q~ c #221820", -"r~ c #2D2E12", -"s~ c #A8A960", -"t~ c #B7B757", -"u~ c #ABAE3B", -"v~ c #8A8934", -"w~ c #353216", -"x~ c #161514", -"y~ c #0D0C0C", -"z~ c #0A0706", -"A~ c #0D0906", -"B~ c #201B18", -"C~ c #211B18", -"D~ c #1325AA", -"E~ c #D8DBB8", -"F~ c #E8E7C5", -"G~ c #1730DA", -"H~ c #767FB6", -"I~ c #513A1B", -"J~ c #AF8D58", -"K~ c #152FDA", -"L~ c #1731D8", -"M~ c #989B4F", -"N~ c #A09A2D", -"O~ c #685920", -"P~ c #291910", -"Q~ c #565121", -"R~ c #99964F", -"S~ c #A6A44D", -"T~ c #9FA03A", -"U~ c #50491C", -"V~ c #110A06", -"W~ c #141313", -"X~ c #21201D", -"Y~ c #19150D", -"Z~ c #2F281B", -"`~ c #413B2F", -" { c #1029D1", -".{ c #122FD8", -"+{ c #1A35D6", -"@{ c #BEC1A4", -"#{ c #E1E6C3", -"${ c #1B35DB", -"%{ c #574D33", -"&{ c #4E432D", -"*{ c #2038D8", -"={ c #112BDA", -"-{ c #132DDB", -";{ c #354BD5", -">{ c #BBB454", -",{ c #A1952D", -"'{ c #62561A", -"){ c #6B6039", -"!{ c #635844", -"~{ c #726B40", -"{{ c #65632B", -"]{ c #2E2517", -"^{ c #140D0F", -"/{ c #323223", -"({ c #353621", -"_{ c #2E3561", -":{ c #1532D5", -"<{ c #A9C5AF", -"[{ c #E7EED5", -"}{ c #1831DA", -"|{ c #3F4EB8", -"1{ c #3D3622", -"2{ c #4352BA", -"3{ c #1832DB", -"4{ c #B4B955", -"5{ c #929A2C", -"6{ c #393713", -"7{ c #231B1F", -"8{ c #1C1A14", -"9{ c #313721", -"0{ c #303A24", -"a{ c #454934", -"b{ c #5B5539", -"c{ c #5C502D", -"d{ c #2A3BBA", -"e{ c #1C3BD0", -"f{ c #B2CEC0", -"g{ c #D8E7D7", -"h{ c #1F38D7", -"i{ c #1933D9", -"j{ c #263DD3", -"k{ c #443E27", -"l{ c #757051", -"m{ c #1E37D3", -"n{ c #939B2E", -"o{ c #A1A648", -"p{ c #343111", -"q{ c #494D27", -"r{ c #1F2715", -"s{ c #343721", -"t{ c #414A76", -"u{ c #112AD7", -"v{ c #0E27DA", -"w{ c #263DA9", -"x{ c #BBDBDB", -"y{ c #C7DDD3", -"z{ c #666347", -"A{ c #474225", -"B{ c #1B33D9", -"C{ c #293FBE", -"D{ c #B0B655", -"E{ c #94934E", -"F{ c #A5A16A", -"G{ c #83844D", -"H{ c #A1A388", -"I{ c #91936E", -"J{ c #142EDA", -"K{ c #1630DA", -"L{ c #0E27D6", -"M{ c #CCD8DF", -"N{ c #ABC3C2", -"O{ c #132ED7", -"P{ c #2038CE", -"Q{ c #3D3A21", -"R{ c #273DCC", -"S{ c #1830D1", -"T{ c #132DD6", -"U{ c #263CC3", -"V{ c #CECDB1", -"W{ c #ABAB84", -"X{ c #172ECA", -"Y{ c #0D27D8", -"Z{ c #0D27D4", -"`{ c #182FCC", -" ] c #DBE2E4", -".] c #433F25", -"+] c #676249", -"@] c #132DDA", -"#] c #1B33CE", -"$] c #C4C4A6", -"%] c #9E997A", -"&] c #142DD0", -"*] c #142DCD", -"=] c #1B33D3", -"-] c #CDC8C6", -";] c #F9F9F9", -">] c #102CD9", -",] c #4A5288", -"'] c #313238", -")] c #273ED4", -"!] c #2239C7", -"~] c #D0D1B3", -"{] c #B8B291", -"]] c #162ECE", -"^] c #4053D0", -"/] c #142ED9", -"(] c #2238D1", -"_] c #342F21", -":] c #283DC7", -"<] c #CECEB0", -"[] c #C6C09E", -"}] c #162ECF", -"|] c #152ECF", -"1] c #122BD6", -"2] c #3C52E1", -"3] c #1B34D6", -"4] c #46402F", -"5] c #534D3B", -"6] c #D1CCA8", -"7] c #132BCE", -"8] c #172ECC", -"9] c #273EDE", -"0] c #122CD9", -"a] c #62666C", -"b] c #373418", -"c] c #1F37D2", -"d] c #D3D5AD", -"e] c #BEBB96", -"f] c #152DCF", -"g] c #273FDE", -"h] c #253EC9", -"i] c #30351A", -"j] c #4B568A", -"k] c #1A32CF", -"l] c #D0D1AC", -"m] c #C8C5A3", -"n] c #102CD8", -"o] c #485635", -"p] c #3B472E", -"q] c #152ED3", -"r] c #DFDFC0", -"s] c #D8D4B6", -"t] c #112DD7", -"u] c #556F59", -"v] c #2A3919", -"w] c #3048C2", -"x] c #EEEDD4", -"y] c #D9D6BB", -"z] c #112CD2", -"A] c #142FD3", -"B] c #273923", -"C] c #2C44A8", -"D] c #DFE0B9", -"E] c #EAE9CE", -"F] c #0D27D5", -"G] c #3B5148", -"H] c #2E4450", -"I] c #162FD6", -"J] c #DADCB2", -"K] c #E5E4CA", -"L] c #0D27D1", -"M] c #1F3731", -"N] c #2A45B0", -"O] c #142FD8", -"P] c #142FD7", -"Q] c #D8D9B0", -"R] c #F6F5DB", -"S] c #2A3F57", -"T] c #405C6A", -"U] c #D7D8AF", -"V] c #F2F2D7", -"W] c #0D26CB", -"X] c #203151", -"Y] c #102BD9", -"Z] c #F4F1CD", -"`] c #FAF6E5", -" ^ c #E2DEBC", -".^ c #FAF7E5", -"+^ c #E0DDBB", -"@^ c #FAF7E0", -"#^ c #C8C4A1", -"$^ c #F5F2D7", -"%^ c #122CD7", -"&^ c #0F2AD8", -"*^ c #5B67AB", -"=^ c #E5E3BA", -"-^ c #132DD5", -";^ c #142EDC", -">^ c #1933DD", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + . . @ ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . . . . . . . $ . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & . . . . * ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . = ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % . . . . - ; ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . > . . . . , ' ) ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . @ ! ~ { ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ] ^ / . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ @ ( _ . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : < . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . [ } | . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 3 . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ 4 5 6 . . @ $ ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . { . . . . 7 8 9 . . & $ # ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . . 0 a b & . c . $ # ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . & d e f . g . . . # ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ , . . . @ h i . . . $ $ . j ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k l m n . . $ . . o & ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . p q r s . . $ . . . . g ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . t u . . . . $ . . . $ ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - v w x . . . . . . . . y ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . z A B C . . . . D . . . $ # ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . g E F G f . . . j . . # # # # ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . H I J K . . . L . . $ # $ . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M N O . P . . . . . $ . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ u Q n . . . . 1 $ . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 . . . R S T U . . . . . . $ . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & . . . , V W X & . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R @ . . Y Z ` & . . . j . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...+. .. . . . D . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @.#.$.. . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . %.&.*.@ . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p . . k =.-.n . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . ;.>.,.. . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . '.).!.~.@ . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . {.].^./.$ (.. . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _.:.<.% @ . . . . [.. . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .}.|.. . . . . . j . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3.. . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n 4.5.@ . . @ . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7.8.'.. . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k 9.0.a.. . . . & . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b.c.d.x . . . & . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e.f.g.h.. . . 6.. . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ . . . . . . . i.j.k.. . . j . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ $ . . . . . . . . . . . . . p . . . . . . l.m.n.6.. . . $ . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ $ [.# o.$ p.D . @ 6 . . . . . . . . p . . . q.r.s.t.. . . $ $ . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . u.. v.w.x.y.z.A.B.C.D.E.F.@ . . . . @ . @ @ . . . G.H.I.. . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . J.. K.L.M.N.O.P.Q.R.S.T.U.V.W.X.. . . . . . . . . @ Y.Z.U . . . $ . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . J.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+% . . . . . . !+~+{+. . . o . . $ . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . o.]+^+/+(+_+:+<+[+}+|+1+2+3+4+5+6+7+8+ .6.. @ . s 9+0+,.. . . . . . . . . . . . . . . . . . . . . . . . . . . $ ", -". . . . . . . . . . . . . . . . . . . . . . . . . . a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+. z k v+w+ .. . . . $ . . $ $ . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . $ . x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+. . . . . $ . o.$ . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . c . . Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@2+~@{@]@^@/@(@_@:@. . . . . . . $ $ . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . <@. . [@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@. @ 6.. . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . q@. . . r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . V@. . W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#}#. @ . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . V@. . . |#1#2#B 3#4#5#6#7#8#9#0#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#. . $ . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . v#w#x#y#z#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#`# $.$+$& . $ . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . @ . . c @$#$$$%$&$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$P $ . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . b$. . . c$d$e$f$g$h$i$j$k$l$m$n$o$)$p$q$r$s$z@t$u$v$w$x$y$z$A$B$C$D$E$g@F$G$H$I$J$K$L$M$J.. . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . ,.N$O$P$Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%o.. . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . }%|%1%2%3%4%5%6%7%8%@#9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%7+u%v%w%x%y%z%A%B%C%o . . $ . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . D%E%F%G%H%I%J%K%L%M%N%O%j$P%Q%R%V.S%T%U%V%W%X%Y%Z%;$`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&)&!&~&~.. . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . $ {&]&^&/&X%(&5%L%_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&Q%d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&. . . . [.. . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& *.*+*@*#*$*%*&***=*-*;*>*,*'*)*!*~*. . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . {*]*^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*T+h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*A*B*. . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . @ C*D*E*F*G*3@H*I*J*K*L*M*N*O*w@P*Q*R*S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=^=/=. $ . # . . . $ . . . . . . . . . . ", -". . . . . . . . . . . . . . b$(=_=:=<=[=}=|=1=2=3=4=5=6=7=Z&8=9=0=a=b=c=d=e=f=g=##h=i=j=k=l=m=n=o=p=q=r=s=>&t=u=v=w=x=y=z=#%A=B=C=. D=$ . . . E=. . . . . . . . . . ", -"@ . . . . . . . . . . . . . C*F=G=H=I=J=f*K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=`=k$ -.-+-@-#-$-%-&-*-=---;->-,-'-)-!-~-O+{-]-^-/-(-_-. . . $ $ . . [.. . . . . . . . . . ", -"C*. . . . . . . . . . . . . :-<-[-}-|-1-2-3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-A-B-C-D-E-F-G-H-. . . . . . . $ . . . . . . . . . . . ", -". . . . . . . . @ . . . . . I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-`- ;S&.;+;@;#;$;%;&;*;=;-;;;>;,;';);!;~;{;N+];^;/;(;_;:;<;[;$ . . . . $ . . $ . . . . . . . . . . . ", -"C*@ . . . . . . @ . . . . };|;1;2;3;4;5;6;7;8;9;0;a;b;g=c;d;e;f;g;n=h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;A;B;C;D;E;F;G;H;I;. . . . $ $ . . . . . . . . . . . . . . ", -"J;. . . . . . . . . . . . K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;`; >.>+>@>#>$>%>&>*>=>->;>>>,>'>)>!>~>{>]>^>/>(>_>:><>[>}>|>1>2>. . . . . # . . . . . . . . . . . . . . . ", -"@ . . . C*@ @ 3>@ . . . . @ 4>5>6>7>8>9>0>K#@%a>b>c>d>e>f>g>h>i>j>k>l>m>7@n>o>p>q>r>s>t>u>v>w>x>y>z>A>B>C>D>E>J=F>G>H>I>. . o . . . . . . . . . . . . . . . . . . . ", -". . . J>@ @ @ @ . @ . K>. . L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>^;`>Q% ,.,+,g@@,#,$,%,&,*,=,-,;,>,,,',),!,~,{,],^,/,(,_,:,<,. . [,. $ $ . },. . . $ . . . . . . . . . . . ", -". @ . C*C*C*C*@ C*C*@ @ @ g x+|,1,2,3,4,5,6,a>R-7,8,9,0,a,b,c,d,e,f,g,h,i,j,L%k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,E>A,B,. . . . $ $ . $ $ . . $ . . . . . . . . . . . . ", -". @ . C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,3;U,X%V,W,X,Y,Z,`, '.'+'@'#'$'_*%'&'*'='-';'>',''')'!'~'{']'^'/'('_':'<'c D $ . . . . . . . . . $ . . . . . . . . . . . . ", -". @ . ['}'|'<,1'2'3'4'5'6'@ @ $ c 7'8'9'0'a'b'c'd'e'f'g'h'i'j'k'l'm'J=n'o'p'q'r's't'u'v'w'x'y'z'A'B'C'D'E'F'G'H'@ . . $ . $ . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . $ I'J'K'L'M'N'O'P'#'Q'R'a>'&=$=&S'T'J*U'=$V'W'X'Y'Z'`'j= ).)+)@)#)$)%)&)*)=)-). . $ . . ;). . . $ . . . . . . . . . . . . . . . . ", -". . @ . . . . . . . . @ @ . . . . . . o >),)')))!)~){)])^)/)()_):)<)[)})|)1)2)3)4)5)6)7)8)9)0)a)b)c)d)b)e)f)g). [.. . . $ # . . . . . . . . . . . . . . . . . . . . ", -". . . . C,@ @ @ @ . . @ . @ . . . . . . h)i)j)k)l)m)n)o)i%p)q)r)s)5%t)Y&u)v)w)x)y)z)A)B)C)U'D)E)F)G)H)I)J)K)j . . . . $ $ . . . . . . . . . . . . . . . . . . . . . ", -". . . . . b$. . @ . . C*. . . . . . . . [.. L)M)N)O)P)Q)'$R)S)T)U)V)W)X)Y)Z)`) !.!+!@!#!U-$!%!&!*!=!-!;!>!,!. . . . # . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . @ @ . . . . . . . . $ . . . # '!)!!!~!{!]!^!/!(!_!:!~# . $ . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . @ . . . . . . @ . . . . . . ,~'~)~_ !~~~{~]~^~/~(~_~:~<~[~}~|~1~2~3~4~5~&~6~7~8~9~0~a~J)b~. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . V@q@. . c~d~e~f~g~# h~i~j~k~l~m~n~o~p~q~r~s~t~u~v~w~j%x~y~z~7@A~B~C~D~$ . . . . . $ [.. $ . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . o E~F~$ o g~G~H~I~J~K~$ L~M~N~O~P~Q~R~S~T~U~V~W~X~A;Y~X'Z~`~ {. $ . . . . . $ $ . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . @ . . .{+{@{#{p.$ J.o.${%{&{*{$ ={-{;{>{,{'{){!{~{{{]{^{6~/{({_{6.. . . . . . . . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . C*. . @ c :{<{[{}{[,[.$ $ |{1{2{$ . y # 3{h~4{5{6{7{8{9{0{a{b{c{d{. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . @ . @ {* .e{f{g{h{. . . i{j{k{l{o . . . . $ [.m{n{o{p{Z!q{r{s{t{u{. . . . . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . C*. v{b$w{x{y{J'. . . . ={z{A{B{. . . . o.. . L~C{D{E{F{G{H{I{. . . D J{K{$ # . . . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . };. b$C*L{. M{N{O{. . . . $ P{Q{R{. . . . . $ y . . D S{T{. U{V{W{6.X{& . . . $ . . . . . . # . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . Y{C*. @ Z{`{ ]x{& . . . . & g~.]+]@]. . $ . . . $ $ . . . . . #]$]%]&]*]% . . $ . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . @ @ C*Y{=]-];]. . >]. . & o ,]'])]. . . . . . . . ={. . . . . !]~]{]]]]]@ . ={# . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . @ . . . g ^];]x{. . & . . . /](]_]:]# . . . . . . . . . . . . . . g <][]}]|]1]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . 2]x{x{. . @ . . . o 3]4]5]. . . $ . o . $ . . . . . . . . . $]6]S{7]8]D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . @ . . . 9];]x{. . . b$. . . 0]a]b]c]c o.. o.. . . . . . . . $ . . . $ d]e][;f]n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . @ . . . g]x{x{. . . {*. . . & h]i]j]. . $ . . $ . . $ J.. $ . . . k]. $ l]m]& L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". @ @ C*. . . . . @ . . . . . . & n]o]p]. . . . . . . . . . $ . $ . . c q]. $ r]s]& g . g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . t]u]v]w]$ c . . . . $ . . . . . $ . $ & . . $ x]y]x+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . @ . b$. . z]A]B]C]J.. . . . . . . . . $ $ $ . . J.. . . & D]E]0]. @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . @ . @ . . . . . C*. b$F]@ n G]H]$ . . . . . . . . . . . $ . . . o.. . . I]J]K]c . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . C*. @ L]. M]N]O]. . . . $ . . . u.. . $ . . . $ . . . P]Q]R]}'. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . @ . L]S]T]c x+. . . $ $ . . . . . . . $ . $ . . . . . U]V]$ . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . W]X]Y]. . . . . . J.. $ [.$ . . . . . . $ . . . c Z]`]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . @ J;b$J>};& q@. . $ D c o.={$ . . . . . . $ $ # . . . $ ^.^D . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . $ $ $ # . $ . . . $ $ . $ . . . +^@^. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . $ $ . . . . . . . . . g~. . #^$^& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . $ $ $ . . . . . %^&]&^$ c *^=^. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . $ $ . . . . D . . . . + . % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . $ $ . . . . . > -^& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . $ $ . > x+. . . . . . . . . . . # $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . $ $ $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . . . . . . . . . . # . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . $ . . . . . . . . . . . . $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $ ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . $ . . $ . D $ $ . . $ . D v&/];^$ $ . . . . . . . . . . . . . . . . . . . . . . . y # . . . . . . . . $ $ >^"}; diff --git a/clients/gsat-1.1.0/src/interface.c b/clients/gsat-1.1.0/src/interface.c deleted file mode 100644 index a08d1db..0000000 --- a/clients/gsat-1.1.0/src/interface.c +++ /dev/null @@ -1,2317 +0,0 @@ -/* - * DO NOT EDIT THIS FILE - it is generated by Glade. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include - -#include -#include - -#include "callbacks.h" -#include "interface.h" -#include "support.h" - -GtkWidget* -create_mainwindow (void) -{ - GtkWidget *mainwindow; - GtkWidget *fixed; - GtkWidget *tx_latitude; - GtkWidget *tx_azimuth; - GtkWidget *tx_range; - GtkWidget *tx_longitude; - GtkWidget *tx_elevation; - GtkWidget *tx_footprint; - GtkWidget *tx_date; - GtkWidget *tx_aos; - GtkWidget *tx_uplink; - GtkWidget *tx_updoppler; - GtkWidget *tx_downlink; - GtkWidget *tx_dwdoppler; - GtkWidget *tx_upshift; - GtkWidget *tx_downshift; - GtkWidget *tx_altitude; - GtkWidget *tx_velocity; - GtkWidget *tx_orbit; - GtkWidget *statusbar; - GtkWidget *drawingframe; - GtkWidget *maparea; - GtkWidget *toolbar; - GtkWidget *cb_connect; - GtkWidget *cb_disconnect; - GtkWidget *tb_grid; - GtkWidget *tb_utctime; - GtkWidget *tb_footpsat; - GtkWidget *tb_footpqth; - GtkWidget *tb_track; - GtkWidget *tb_autofreq; - GtkWidget *bt_azelgraph; - GtkWidget *bt_preferences; - GtkWidget *bt_dbedit; - GtkWidget *bt_about; - GtkWidget *tx_beacon; - GtkWidget *tx_beaconshift; - GtkWidget *tx_beacondoppler; - GtkWidget *tx_ma; - GtkWidget *lb_date; - GtkWidget *lb_downlink; - GtkWidget *lb_beacon; - GtkWidget *lb_satellite; - GtkWidget *lb_uplink; - GtkWidget *lb_latitude; - GtkWidget *lb_longitude; - GtkWidget *lb_orbit; - GtkWidget *combo; - GtkWidget *combo_tx_satname; - GtkWidget *tx_squint; - GtkWidget *lb_mode; - GtkWidget *satbar; - GtkWidget *lb_aos; - GtkWidget *cb_updoppler; - GtkWidget *cb_dwdoppler; - GtkWidget *cb_beacondoppler; - GtkWidget *lb_updoppler; - GtkWidget *lb_dwdoppler; - GtkWidget *lb_beacondoppler; - GtkWidget *lb_updpshift; - GtkWidget *lb_dwdpshift; - GtkWidget *lb_bcndpshift; - GtkWidget *combo_mode; - GtkWidget *combo_tx_mode; - GtkWidget *cb_rotor; - GtkWidget *lb_azimuth; - GtkWidget *lb_elevation; - GtkWidget *lb_range; - GtkWidget *lb_footprint; - GtkWidget *lb_altitude; - GtkWidget *lb_velocity; - GtkWidget *lb_ma; - GtkWidget *lb_squint; - - mainwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_widget_set_name (mainwindow, "mainwindow"); - gtk_object_set_data (GTK_OBJECT (mainwindow), "mainwindow", mainwindow); - gtk_widget_set_usize (mainwindow, 716, 576); - gtk_container_set_border_width (GTK_CONTAINER (mainwindow), 4); - gtk_window_set_title (GTK_WINDOW (mainwindow), _("gsat - Satellite Tracking")); - gtk_window_set_position (GTK_WINDOW (mainwindow), GTK_WIN_POS_CENTER); - gtk_window_set_default_size (GTK_WINDOW (mainwindow), 716, 600); - gtk_window_set_policy (GTK_WINDOW (mainwindow), FALSE, FALSE, FALSE); - - fixed = gtk_fixed_new (); - gtk_widget_set_name (fixed, "fixed"); - gtk_widget_ref (fixed); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "fixed", fixed, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed); - gtk_container_add (GTK_CONTAINER (mainwindow), fixed); - gtk_widget_set_usize (fixed, 710, 540); - - tx_latitude = gtk_entry_new (); - gtk_widget_set_name (tx_latitude, "tx_latitude"); - gtk_widget_ref (tx_latitude); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_latitude", tx_latitude, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_latitude); - gtk_fixed_put (GTK_FIXED (fixed), tx_latitude, 64, 412); - gtk_widget_set_uposition (tx_latitude, 64, 412); - gtk_widget_set_usize (tx_latitude, 54, 0); - GTK_WIDGET_UNSET_FLAGS (tx_latitude, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_latitude), FALSE); - - tx_azimuth = gtk_entry_new (); - gtk_widget_set_name (tx_azimuth, "tx_azimuth"); - gtk_widget_ref (tx_azimuth); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_azimuth", tx_azimuth, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_azimuth); - gtk_fixed_put (GTK_FIXED (fixed), tx_azimuth, 196, 412); - gtk_widget_set_uposition (tx_azimuth, 196, 412); - gtk_widget_set_usize (tx_azimuth, 64, 0); - GTK_WIDGET_UNSET_FLAGS (tx_azimuth, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_azimuth), FALSE); - - tx_range = gtk_entry_new (); - gtk_widget_set_name (tx_range, "tx_range"); - gtk_widget_ref (tx_range); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_range", tx_range, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_range); - gtk_fixed_put (GTK_FIXED (fixed), tx_range, 336, 412); - gtk_widget_set_uposition (tx_range, 336, 412); - gtk_widget_set_usize (tx_range, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_range, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_range), FALSE); - - tx_longitude = gtk_entry_new (); - gtk_widget_set_name (tx_longitude, "tx_longitude"); - gtk_widget_ref (tx_longitude); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_longitude", tx_longitude, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_longitude); - gtk_fixed_put (GTK_FIXED (fixed), tx_longitude, 64, 440); - gtk_widget_set_uposition (tx_longitude, 64, 440); - gtk_widget_set_usize (tx_longitude, 54, 0); - GTK_WIDGET_UNSET_FLAGS (tx_longitude, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_longitude), FALSE); - - tx_elevation = gtk_entry_new (); - gtk_widget_set_name (tx_elevation, "tx_elevation"); - gtk_widget_ref (tx_elevation); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_elevation", tx_elevation, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_elevation); - gtk_fixed_put (GTK_FIXED (fixed), tx_elevation, 196, 440); - gtk_widget_set_uposition (tx_elevation, 196, 440); - gtk_widget_set_usize (tx_elevation, 64, 0); - GTK_WIDGET_UNSET_FLAGS (tx_elevation, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_elevation), FALSE); - - tx_footprint = gtk_entry_new (); - gtk_widget_set_name (tx_footprint, "tx_footprint"); - gtk_widget_ref (tx_footprint); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_footprint", tx_footprint, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_footprint); - gtk_fixed_put (GTK_FIXED (fixed), tx_footprint, 336, 440); - gtk_widget_set_uposition (tx_footprint, 336, 440); - gtk_widget_set_usize (tx_footprint, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_footprint, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_footprint), FALSE); - - tx_date = gtk_entry_new (); - gtk_widget_set_name (tx_date, "tx_date"); - gtk_widget_ref (tx_date); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_date", tx_date, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_date); - gtk_fixed_put (GTK_FIXED (fixed), tx_date, 358, 384); - gtk_widget_set_uposition (tx_date, 358, 384); - gtk_widget_set_usize (tx_date, 136, 20); - GTK_WIDGET_UNSET_FLAGS (tx_date, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_date), FALSE); - - tx_aos = gtk_entry_new (); - gtk_widget_set_name (tx_aos, "tx_aos"); - gtk_widget_ref (tx_aos); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_aos", tx_aos, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_aos); - gtk_fixed_put (GTK_FIXED (fixed), tx_aos, 566, 384); - gtk_widget_set_uposition (tx_aos, 566, 384); - gtk_widget_set_usize (tx_aos, 136, 20); - GTK_WIDGET_UNSET_FLAGS (tx_aos, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_aos), FALSE); - - tx_uplink = gtk_entry_new (); - gtk_widget_set_name (tx_uplink, "tx_uplink"); - gtk_widget_ref (tx_uplink); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_uplink", tx_uplink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_uplink); - gtk_fixed_put (GTK_FIXED (fixed), tx_uplink, 104, 472); - gtk_widget_set_uposition (tx_uplink, 104, 472); - gtk_widget_set_usize (tx_uplink, 80, 0); - - tx_updoppler = gtk_entry_new (); - gtk_widget_set_name (tx_updoppler, "tx_updoppler"); - gtk_widget_ref (tx_updoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_updoppler", tx_updoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_updoppler); - gtk_fixed_put (GTK_FIXED (fixed), tx_updoppler, 554, 472); - gtk_widget_set_uposition (tx_updoppler, 554, 472); - gtk_widget_set_usize (tx_updoppler, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_updoppler, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_updoppler), FALSE); - - tx_downlink = gtk_entry_new (); - gtk_widget_set_name (tx_downlink, "tx_downlink"); - gtk_widget_ref (tx_downlink); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_downlink", tx_downlink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_downlink); - gtk_fixed_put (GTK_FIXED (fixed), tx_downlink, 104, 496); - gtk_widget_set_uposition (tx_downlink, 104, 496); - gtk_widget_set_usize (tx_downlink, 80, 0); - - tx_dwdoppler = gtk_entry_new (); - gtk_widget_set_name (tx_dwdoppler, "tx_dwdoppler"); - gtk_widget_ref (tx_dwdoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_dwdoppler", tx_dwdoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_dwdoppler); - gtk_fixed_put (GTK_FIXED (fixed), tx_dwdoppler, 554, 496); - gtk_widget_set_uposition (tx_dwdoppler, 554, 496); - gtk_widget_set_usize (tx_dwdoppler, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_dwdoppler, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_dwdoppler), FALSE); - - tx_upshift = gtk_entry_new (); - gtk_widget_set_name (tx_upshift, "tx_upshift"); - gtk_widget_ref (tx_upshift); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_upshift", tx_upshift, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_upshift); - gtk_fixed_put (GTK_FIXED (fixed), tx_upshift, 366, 472); - gtk_widget_set_uposition (tx_upshift, 366, 472); - gtk_widget_set_usize (tx_upshift, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_upshift, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_upshift), FALSE); - - tx_downshift = gtk_entry_new (); - gtk_widget_set_name (tx_downshift, "tx_downshift"); - gtk_widget_ref (tx_downshift); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_downshift", tx_downshift, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_downshift); - gtk_fixed_put (GTK_FIXED (fixed), tx_downshift, 366, 496); - gtk_widget_set_uposition (tx_downshift, 366, 496); - gtk_widget_set_usize (tx_downshift, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_downshift, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_downshift), FALSE); - - tx_altitude = gtk_entry_new (); - gtk_widget_set_name (tx_altitude, "tx_altitude"); - gtk_widget_ref (tx_altitude); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_altitude", tx_altitude, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_altitude); - gtk_fixed_put (GTK_FIXED (fixed), tx_altitude, 484, 412); - gtk_widget_set_uposition (tx_altitude, 484, 412); - gtk_widget_set_usize (tx_altitude, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_altitude, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_altitude), FALSE); - - tx_velocity = gtk_entry_new (); - gtk_widget_set_name (tx_velocity, "tx_velocity"); - gtk_widget_ref (tx_velocity); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_velocity", tx_velocity, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_velocity); - gtk_fixed_put (GTK_FIXED (fixed), tx_velocity, 484, 440); - gtk_widget_set_uposition (tx_velocity, 484, 440); - gtk_widget_set_usize (tx_velocity, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_velocity, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_velocity), FALSE); - - tx_orbit = gtk_entry_new (); - gtk_widget_set_name (tx_orbit, "tx_orbit"); - gtk_widget_ref (tx_orbit); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_orbit", tx_orbit, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_orbit); - gtk_fixed_put (GTK_FIXED (fixed), tx_orbit, 240, 384); - gtk_widget_set_uposition (tx_orbit, 240, 384); - gtk_widget_set_usize (tx_orbit, 56, 20); - GTK_WIDGET_UNSET_FLAGS (tx_orbit, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_orbit), FALSE); - - statusbar = gtk_statusbar_new (); - gtk_widget_set_name (statusbar, "statusbar"); - gtk_widget_ref (statusbar); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "statusbar", statusbar, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (statusbar); - gtk_fixed_put (GTK_FIXED (fixed), statusbar, 0, 544); - gtk_widget_set_uposition (statusbar, 0, 544); - gtk_widget_set_usize (statusbar, 350, 24); - gtk_container_set_border_width (GTK_CONTAINER (statusbar), 2); - - drawingframe = gtk_frame_new (NULL); - gtk_widget_set_name (drawingframe, "drawingframe"); - gtk_widget_ref (drawingframe); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "drawingframe", drawingframe, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (drawingframe); - gtk_fixed_put (GTK_FIXED (fixed), drawingframe, 0, 24); - gtk_widget_set_uposition (drawingframe, 0, 24); - gtk_widget_set_usize (drawingframe, 704, 354); - gtk_container_set_border_width (GTK_CONTAINER (drawingframe), 2); - gtk_frame_set_shadow_type (GTK_FRAME (drawingframe), GTK_SHADOW_ETCHED_OUT); - - maparea = gtk_drawing_area_new (); - gtk_widget_set_name (maparea, "maparea"); - gtk_widget_ref (maparea); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "maparea", maparea, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (maparea); - gtk_container_add (GTK_CONTAINER (drawingframe), maparea); - gtk_widget_set_usize (maparea, 700, 350); - gtk_widget_set_sensitive (maparea, FALSE); - - toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_TEXT); - gtk_widget_set_name (toolbar, "toolbar"); - gtk_widget_ref (toolbar); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "toolbar", toolbar, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (toolbar); - gtk_fixed_put (GTK_FIXED (fixed), toolbar, 0, 0); - gtk_widget_set_uposition (toolbar, 0, 0); - gtk_widget_set_usize (toolbar, 696, 24); - gtk_container_set_border_width (GTK_CONTAINER (toolbar), 5); - gtk_toolbar_set_space_size (GTK_TOOLBAR (toolbar), 10); - gtk_toolbar_set_space_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_SPACE_LINE); - gtk_toolbar_set_tooltips (GTK_TOOLBAR (toolbar), FALSE); - - cb_connect = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_BUTTON, - NULL, - _("Connect"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (cb_connect, "cb_connect"); - gtk_widget_ref (cb_connect); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "cb_connect", cb_connect, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cb_connect); - - cb_disconnect = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_BUTTON, - NULL, - _("Disconnect"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (cb_disconnect, "cb_disconnect"); - gtk_widget_ref (cb_disconnect); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "cb_disconnect", cb_disconnect, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cb_disconnect); - - tb_grid = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, - _("Grid"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (tb_grid, "tb_grid"); - gtk_widget_ref (tb_grid); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tb_grid", tb_grid, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tb_grid); - - tb_utctime = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, - _("UTC Time"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (tb_utctime, "tb_utctime"); - gtk_widget_ref (tb_utctime); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tb_utctime", tb_utctime, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tb_utctime); - - tb_footpsat = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, - _("Satellite"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (tb_footpsat, "tb_footpsat"); - gtk_widget_ref (tb_footpsat); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tb_footpsat", tb_footpsat, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tb_footpsat); - - tb_footpqth = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, - _("QTH"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (tb_footpqth, "tb_footpqth"); - gtk_widget_ref (tb_footpqth); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tb_footpqth", tb_footpqth, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tb_footpqth); - - tb_track = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, - _("Track"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (tb_track, "tb_track"); - gtk_widget_ref (tb_track); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tb_track", tb_track, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tb_track); - - tb_autofreq = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_TOGGLEBUTTON, - NULL, - _("AutoFreq"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (tb_autofreq, "tb_autofreq"); - gtk_widget_ref (tb_autofreq); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tb_autofreq", tb_autofreq, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tb_autofreq); - - bt_azelgraph = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_BUTTON, - NULL, - _("AZ/EL"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (bt_azelgraph, "bt_azelgraph"); - gtk_widget_ref (bt_azelgraph); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "bt_azelgraph", bt_azelgraph, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_azelgraph); - - bt_preferences = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_BUTTON, - NULL, - _("Prefs"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (bt_preferences, "bt_preferences"); - gtk_widget_ref (bt_preferences); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "bt_preferences", bt_preferences, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_preferences); - - bt_dbedit = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_BUTTON, - NULL, - _("SatDB"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (bt_dbedit, "bt_dbedit"); - gtk_widget_ref (bt_dbedit); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "bt_dbedit", bt_dbedit, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_dbedit); - - bt_about = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar), - GTK_TOOLBAR_CHILD_BUTTON, - NULL, - _("About"), - NULL, NULL, - NULL, NULL, NULL); - gtk_widget_set_name (bt_about, "bt_about"); - gtk_widget_ref (bt_about); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "bt_about", bt_about, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_about); - - tx_beacon = gtk_entry_new (); - gtk_widget_set_name (tx_beacon, "tx_beacon"); - gtk_widget_ref (tx_beacon); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_beacon", tx_beacon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_beacon); - gtk_fixed_put (GTK_FIXED (fixed), tx_beacon, 104, 520); - gtk_widget_set_uposition (tx_beacon, 104, 520); - gtk_widget_set_usize (tx_beacon, 80, 0); - - tx_beaconshift = gtk_entry_new (); - gtk_widget_set_name (tx_beaconshift, "tx_beaconshift"); - gtk_widget_ref (tx_beaconshift); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_beaconshift", tx_beaconshift, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_beaconshift); - gtk_fixed_put (GTK_FIXED (fixed), tx_beaconshift, 366, 520); - gtk_widget_set_uposition (tx_beaconshift, 366, 520); - gtk_widget_set_usize (tx_beaconshift, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_beaconshift, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_beaconshift), FALSE); - - tx_beacondoppler = gtk_entry_new (); - gtk_widget_set_name (tx_beacondoppler, "tx_beacondoppler"); - gtk_widget_ref (tx_beacondoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_beacondoppler", tx_beacondoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_beacondoppler); - gtk_fixed_put (GTK_FIXED (fixed), tx_beacondoppler, 554, 520); - gtk_widget_set_uposition (tx_beacondoppler, 554, 520); - gtk_widget_set_usize (tx_beacondoppler, 80, 0); - GTK_WIDGET_UNSET_FLAGS (tx_beacondoppler, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_beacondoppler), FALSE); - - tx_ma = gtk_entry_new (); - gtk_widget_set_name (tx_ma, "tx_ma"); - gtk_widget_ref (tx_ma); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_ma", tx_ma, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_ma); - gtk_fixed_put (GTK_FIXED (fixed), tx_ma, 632, 412); - gtk_widget_set_uposition (tx_ma, 632, 412); - gtk_widget_set_usize (tx_ma, 64, 20); - GTK_WIDGET_UNSET_FLAGS (tx_ma, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_ma), FALSE); - - lb_date = gtk_label_new (_("Date")); - gtk_widget_set_name (lb_date, "lb_date"); - gtk_widget_ref (lb_date); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_date", lb_date, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_date); - gtk_fixed_put (GTK_FIXED (fixed), lb_date, 326, 388); - gtk_widget_set_uposition (lb_date, 326, 388); - gtk_widget_set_usize (lb_date, 0, 0); - - lb_downlink = gtk_label_new (_("Downlink Frequency")); - gtk_widget_set_name (lb_downlink, "lb_downlink"); - gtk_widget_ref (lb_downlink); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_downlink", lb_downlink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_downlink); - gtk_fixed_put (GTK_FIXED (fixed), lb_downlink, 8, 500); - gtk_widget_set_uposition (lb_downlink, 8, 500); - gtk_widget_set_usize (lb_downlink, 0, 0); - - lb_beacon = gtk_label_new (_("Beacon Frequency")); - gtk_widget_set_name (lb_beacon, "lb_beacon"); - gtk_widget_ref (lb_beacon); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_beacon", lb_beacon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_beacon); - gtk_fixed_put (GTK_FIXED (fixed), lb_beacon, 8, 524); - gtk_widget_set_uposition (lb_beacon, 8, 524); - gtk_widget_set_usize (lb_beacon, 0, 0); - - lb_satellite = gtk_label_new (_("Satellite")); - gtk_widget_set_name (lb_satellite, "lb_satellite"); - gtk_widget_ref (lb_satellite); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_satellite", lb_satellite, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_satellite); - gtk_fixed_put (GTK_FIXED (fixed), lb_satellite, 8, 388); - gtk_widget_set_uposition (lb_satellite, 8, 388); - gtk_widget_set_usize (lb_satellite, 0, 0); - - lb_uplink = gtk_label_new (_("Uplink Frequency")); - gtk_widget_set_name (lb_uplink, "lb_uplink"); - gtk_widget_ref (lb_uplink); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_uplink", lb_uplink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_uplink); - gtk_fixed_put (GTK_FIXED (fixed), lb_uplink, 8, 476); - gtk_widget_set_uposition (lb_uplink, 8, 476); - gtk_widget_set_usize (lb_uplink, 0, 0); - - lb_latitude = gtk_label_new (_("Latitude")); - gtk_widget_set_name (lb_latitude, "lb_latitude"); - gtk_widget_ref (lb_latitude); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_latitude", lb_latitude, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_latitude); - gtk_fixed_put (GTK_FIXED (fixed), lb_latitude, 8, 416); - gtk_widget_set_uposition (lb_latitude, 8, 416); - gtk_widget_set_usize (lb_latitude, 0, 0); - - lb_longitude = gtk_label_new (_("Longitude")); - gtk_widget_set_name (lb_longitude, "lb_longitude"); - gtk_widget_ref (lb_longitude); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_longitude", lb_longitude, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_longitude); - gtk_fixed_put (GTK_FIXED (fixed), lb_longitude, 8, 444); - gtk_widget_set_uposition (lb_longitude, 8, 444); - gtk_widget_set_usize (lb_longitude, 0, 0); - - lb_orbit = gtk_label_new (_("Orbit")); - gtk_widget_set_name (lb_orbit, "lb_orbit"); - gtk_widget_ref (lb_orbit); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_orbit", lb_orbit, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_orbit); - gtk_fixed_put (GTK_FIXED (fixed), lb_orbit, 208, 388); - gtk_widget_set_uposition (lb_orbit, 208, 388); - gtk_widget_set_usize (lb_orbit, 0, 0); - - combo = gtk_combo_new (); - gtk_widget_set_name (combo, "combo"); - gtk_widget_ref (combo); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "combo", combo, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo); - gtk_fixed_put (GTK_FIXED (fixed), combo, 58, 384); - gtk_widget_set_uposition (combo, 58, 384); - gtk_widget_set_usize (combo, 110, 20); - - combo_tx_satname = GTK_COMBO (combo)->entry; - gtk_widget_set_name (combo_tx_satname, "combo_tx_satname"); - gtk_widget_ref (combo_tx_satname); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "combo_tx_satname", combo_tx_satname, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo_tx_satname); - GTK_WIDGET_SET_FLAGS (combo_tx_satname, GTK_CAN_DEFAULT); - gtk_entry_set_editable (GTK_ENTRY (combo_tx_satname), FALSE); - - tx_squint = gtk_entry_new (); - gtk_widget_set_name (tx_squint, "tx_squint"); - gtk_widget_ref (tx_squint); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "tx_squint", tx_squint, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_squint); - gtk_fixed_put (GTK_FIXED (fixed), tx_squint, 632, 440); - gtk_widget_set_uposition (tx_squint, 632, 440); - gtk_widget_set_usize (tx_squint, 64, 20); - GTK_WIDGET_UNSET_FLAGS (tx_squint, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_squint), FALSE); - - lb_mode = gtk_label_new (_("Mode")); - gtk_widget_set_name (lb_mode, "lb_mode"); - gtk_widget_ref (lb_mode); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_mode", lb_mode, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_mode); - gtk_fixed_put (GTK_FIXED (fixed), lb_mode, 194, 514); - gtk_widget_set_uposition (lb_mode, 194, 514); - gtk_widget_set_usize (lb_mode, 0, 0); - - satbar = gtk_statusbar_new (); - gtk_widget_set_name (satbar, "satbar"); - gtk_widget_ref (satbar); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "satbar", satbar, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (satbar); - gtk_fixed_put (GTK_FIXED (fixed), satbar, 356, 544); - gtk_widget_set_uposition (satbar, 356, 544); - gtk_widget_set_usize (satbar, 350, 24); - gtk_container_set_border_width (GTK_CONTAINER (satbar), 2); - - lb_aos = gtk_label_new (_("Next AOS")); - gtk_widget_set_name (lb_aos, "lb_aos"); - gtk_widget_ref (lb_aos); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_aos", lb_aos, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_aos); - gtk_fixed_put (GTK_FIXED (fixed), lb_aos, 516, 388); - gtk_widget_set_uposition (lb_aos, 516, 388); - gtk_widget_set_usize (lb_aos, 0, 0); - - cb_updoppler = gtk_check_button_new_with_label (_("Radio")); - gtk_widget_set_name (cb_updoppler, "cb_updoppler"); - gtk_widget_ref (cb_updoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "cb_updoppler", cb_updoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cb_updoppler); - gtk_fixed_put (GTK_FIXED (fixed), cb_updoppler, 646, 470); - gtk_widget_set_uposition (cb_updoppler, 646, 470); - gtk_widget_set_usize (cb_updoppler, 0, 0); - - cb_dwdoppler = gtk_check_button_new_with_label (_("Radio")); - gtk_widget_set_name (cb_dwdoppler, "cb_dwdoppler"); - gtk_widget_ref (cb_dwdoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "cb_dwdoppler", cb_dwdoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cb_dwdoppler); - gtk_fixed_put (GTK_FIXED (fixed), cb_dwdoppler, 646, 494); - gtk_widget_set_uposition (cb_dwdoppler, 646, 494); - gtk_widget_set_usize (cb_dwdoppler, 0, 0); - - cb_beacondoppler = gtk_check_button_new_with_label (_("Radio")); - gtk_widget_set_name (cb_beacondoppler, "cb_beacondoppler"); - gtk_widget_ref (cb_beacondoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "cb_beacondoppler", cb_beacondoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cb_beacondoppler); - gtk_fixed_put (GTK_FIXED (fixed), cb_beacondoppler, 646, 518); - gtk_widget_set_uposition (cb_beacondoppler, 646, 518); - gtk_widget_set_usize (cb_beacondoppler, 0, 0); - - lb_updoppler = gtk_label_new (_("Doppler Frequency")); - gtk_widget_set_name (lb_updoppler, "lb_updoppler"); - gtk_widget_ref (lb_updoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_updoppler", lb_updoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_updoppler); - gtk_fixed_put (GTK_FIXED (fixed), lb_updoppler, 458, 476); - gtk_widget_set_uposition (lb_updoppler, 458, 476); - gtk_widget_set_usize (lb_updoppler, 0, 0); - - lb_dwdoppler = gtk_label_new (_("Doppler Frequency")); - gtk_widget_set_name (lb_dwdoppler, "lb_dwdoppler"); - gtk_widget_ref (lb_dwdoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_dwdoppler", lb_dwdoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_dwdoppler); - gtk_fixed_put (GTK_FIXED (fixed), lb_dwdoppler, 458, 500); - gtk_widget_set_uposition (lb_dwdoppler, 458, 500); - gtk_widget_set_usize (lb_dwdoppler, 0, 0); - - lb_beacondoppler = gtk_label_new (_("Doppler Frequency")); - gtk_widget_set_name (lb_beacondoppler, "lb_beacondoppler"); - gtk_widget_ref (lb_beacondoppler); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_beacondoppler", lb_beacondoppler, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_beacondoppler); - gtk_fixed_put (GTK_FIXED (fixed), lb_beacondoppler, 458, 524); - gtk_widget_set_uposition (lb_beacondoppler, 458, 524); - gtk_widget_set_usize (lb_beacondoppler, 0, 0); - - lb_updpshift = gtk_label_new (_("Doppler Shift")); - gtk_widget_set_name (lb_updpshift, "lb_updpshift"); - gtk_widget_ref (lb_updpshift); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_updpshift", lb_updpshift, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_updpshift); - gtk_fixed_put (GTK_FIXED (fixed), lb_updpshift, 294, 476); - gtk_widget_set_uposition (lb_updpshift, 294, 476); - gtk_widget_set_usize (lb_updpshift, 0, 0); - - lb_dwdpshift = gtk_label_new (_("Doppler Shift")); - gtk_widget_set_name (lb_dwdpshift, "lb_dwdpshift"); - gtk_widget_ref (lb_dwdpshift); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_dwdpshift", lb_dwdpshift, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_dwdpshift); - gtk_fixed_put (GTK_FIXED (fixed), lb_dwdpshift, 294, 500); - gtk_widget_set_uposition (lb_dwdpshift, 294, 500); - gtk_widget_set_usize (lb_dwdpshift, 0, 0); - - lb_bcndpshift = gtk_label_new (_("Doppler Shift")); - gtk_widget_set_name (lb_bcndpshift, "lb_bcndpshift"); - gtk_widget_ref (lb_bcndpshift); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_bcndpshift", lb_bcndpshift, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_bcndpshift); - gtk_fixed_put (GTK_FIXED (fixed), lb_bcndpshift, 294, 524); - gtk_widget_set_uposition (lb_bcndpshift, 294, 524); - gtk_widget_set_usize (lb_bcndpshift, 0, 0); - - combo_mode = gtk_combo_new (); - gtk_widget_set_name (combo_mode, "combo_mode"); - gtk_widget_ref (combo_mode); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "combo_mode", combo_mode, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo_mode); - gtk_fixed_put (GTK_FIXED (fixed), combo_mode, 222, 510); - gtk_widget_set_uposition (combo_mode, 222, 510); - gtk_widget_set_usize (combo_mode, 64, 18); - - combo_tx_mode = GTK_COMBO (combo_mode)->entry; - gtk_widget_set_name (combo_tx_mode, "combo_tx_mode"); - gtk_widget_ref (combo_tx_mode); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "combo_tx_mode", combo_tx_mode, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo_tx_mode); - gtk_entry_set_editable (GTK_ENTRY (combo_tx_mode), FALSE); - - cb_rotor = gtk_check_button_new_with_label (_("Rotor")); - gtk_widget_set_name (cb_rotor, "cb_rotor"); - gtk_widget_ref (cb_rotor); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "cb_rotor", cb_rotor, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (cb_rotor); - gtk_fixed_put (GTK_FIXED (fixed), cb_rotor, 212, 476); - gtk_widget_set_uposition (cb_rotor, 212, 476); - gtk_widget_set_usize (cb_rotor, 56, 22); - - lb_azimuth = gtk_label_new (_("Azimuth")); - gtk_widget_set_name (lb_azimuth, "lb_azimuth"); - gtk_widget_ref (lb_azimuth); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_azimuth", lb_azimuth, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_azimuth); - gtk_fixed_put (GTK_FIXED (fixed), lb_azimuth, 138, 416); - gtk_widget_set_uposition (lb_azimuth, 138, 416); - gtk_widget_set_usize (lb_azimuth, 0, 0); - - lb_elevation = gtk_label_new (_("Elevation")); - gtk_widget_set_name (lb_elevation, "lb_elevation"); - gtk_widget_ref (lb_elevation); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_elevation", lb_elevation, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_elevation); - gtk_fixed_put (GTK_FIXED (fixed), lb_elevation, 138, 444); - gtk_widget_set_uposition (lb_elevation, 138, 444); - gtk_widget_set_usize (lb_elevation, 0, 0); - - lb_range = gtk_label_new (_("Range")); - gtk_widget_set_name (lb_range, "lb_range"); - gtk_widget_ref (lb_range); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_range", lb_range, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_range); - gtk_fixed_put (GTK_FIXED (fixed), lb_range, 280, 416); - gtk_widget_set_uposition (lb_range, 280, 416); - gtk_widget_set_usize (lb_range, 0, 0); - - lb_footprint = gtk_label_new (_("Footprint")); - gtk_widget_set_name (lb_footprint, "lb_footprint"); - gtk_widget_ref (lb_footprint); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_footprint", lb_footprint, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_footprint); - gtk_fixed_put (GTK_FIXED (fixed), lb_footprint, 280, 444); - gtk_widget_set_uposition (lb_footprint, 280, 444); - gtk_widget_set_usize (lb_footprint, 0, 0); - - lb_altitude = gtk_label_new (_("Altitude")); - gtk_widget_set_name (lb_altitude, "lb_altitude"); - gtk_widget_ref (lb_altitude); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_altitude", lb_altitude, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_altitude); - gtk_fixed_put (GTK_FIXED (fixed), lb_altitude, 436, 416); - gtk_widget_set_uposition (lb_altitude, 436, 416); - gtk_widget_set_usize (lb_altitude, 0, 0); - - lb_velocity = gtk_label_new (_("Velocity")); - gtk_widget_set_name (lb_velocity, "lb_velocity"); - gtk_widget_ref (lb_velocity); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_velocity", lb_velocity, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_velocity); - gtk_fixed_put (GTK_FIXED (fixed), lb_velocity, 436, 444); - gtk_widget_set_uposition (lb_velocity, 436, 444); - gtk_widget_set_usize (lb_velocity, 0, 0); - - lb_ma = gtk_label_new (_("Phase")); - gtk_widget_set_name (lb_ma, "lb_ma"); - gtk_widget_ref (lb_ma); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_ma", lb_ma, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_ma); - gtk_fixed_put (GTK_FIXED (fixed), lb_ma, 584, 416); - gtk_widget_set_uposition (lb_ma, 584, 416); - gtk_widget_set_usize (lb_ma, 0, 0); - - lb_squint = gtk_label_new (_("Squint")); - gtk_widget_set_name (lb_squint, "lb_squint"); - gtk_widget_ref (lb_squint); - gtk_object_set_data_full (GTK_OBJECT (mainwindow), "lb_squint", lb_squint, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_squint); - gtk_fixed_put (GTK_FIXED (fixed), lb_squint, 584, 444); - gtk_widget_set_uposition (lb_squint, 584, 444); - gtk_widget_set_usize (lb_squint, 0, 0); - - gtk_signal_connect (GTK_OBJECT (mainwindow), "delete_event", - GTK_SIGNAL_FUNC (mainwindow_delete_event), - NULL); - gtk_signal_connect (GTK_OBJECT (maparea), "expose_event", - GTK_SIGNAL_FUNC (maparea_expose_event), - NULL); - gtk_signal_connect (GTK_OBJECT (cb_connect), "clicked", - GTK_SIGNAL_FUNC (on_cb_connect_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (cb_disconnect), "clicked", - GTK_SIGNAL_FUNC (on_cb_disconnect_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (tb_grid), "toggled", - GTK_SIGNAL_FUNC (on_tb_grid_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (tb_utctime), "toggled", - GTK_SIGNAL_FUNC (on_tb_utctime_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (tb_footpsat), "toggled", - GTK_SIGNAL_FUNC (on_tb_footpsat_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (tb_footpqth), "toggled", - GTK_SIGNAL_FUNC (on_tb_footpqth_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (tb_track), "toggled", - GTK_SIGNAL_FUNC (on_tb_track_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (tb_autofreq), "toggled", - GTK_SIGNAL_FUNC (on_tb_autofreq_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_azelgraph), "clicked", - GTK_SIGNAL_FUNC (on_bt_azelgraph_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_preferences), "clicked", - GTK_SIGNAL_FUNC (on_bt_preferences_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_dbedit), "clicked", - GTK_SIGNAL_FUNC (on_bt_dbedit_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_about), "clicked", - GTK_SIGNAL_FUNC (on_bt_about_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (combo_tx_satname), "changed", - GTK_SIGNAL_FUNC (combo_tx_satname_changed), - NULL); - gtk_signal_connect (GTK_OBJECT (cb_updoppler), "toggled", - GTK_SIGNAL_FUNC (on_cb_updoppler_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (cb_dwdoppler), "toggled", - GTK_SIGNAL_FUNC (on_cb_dwdoppler_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (cb_beacondoppler), "toggled", - GTK_SIGNAL_FUNC (on_cb_beacondoppler_toggled), - NULL); - gtk_signal_connect (GTK_OBJECT (combo_tx_mode), "changed", - GTK_SIGNAL_FUNC (combo_tx_mode_changed), - NULL); - gtk_signal_connect (GTK_OBJECT (cb_rotor), "toggled", - GTK_SIGNAL_FUNC (on_cb_rotor_toggled), - NULL); - - gtk_widget_grab_focus (combo_tx_satname); - gtk_widget_grab_default (combo_tx_satname); - return mainwindow; -} - -GtkWidget* -create_dialog_preferences (void) -{ - GtkWidget *dialog_preferences; - GtkWidget *dialog_vbox1; - GtkWidget *fixed1; - GtkWidget *fr_radiocontrol; - GtkWidget *fixed3; - GtkWidget *tx_downpluginconfig; - GtkWidget *tx_uppluginconfig; - GtkWidget *tx_beaconpluginconfig; - GtkWidget *lb_prefs_upconfig; - GtkWidget *lb_prefs_beacon; - GtkWidget *lb_prefs_beaconconfig; - GtkWidget *combo_downplugin; - GtkWidget *entry_downplugin; - GtkWidget *combo_beaconplugin; - GtkWidget *entry_beaconplugin; - GtkWidget *lb_prefs_downlink; - GtkWidget *lb_prefs_downconfig; - GtkWidget *lb_prefs_uplink; - GtkWidget *combo_upplugin; - GtkWidget *entry_upplugin; - GtkWidget *fr_rotorcontrol; - GtkWidget *fixed8; - GtkWidget *tx_rotorpluginconfig; - GtkWidget *lb_prefs_rotor; - GtkWidget *lb_prefs_rotorpluginconfig; - GtkWidget *combo_rotorplugin; - GtkWidget *entry_rotorplugin; - GtkWidget *fr_options; - GtkWidget *fixed2; - GtkWidget *tx_aoscommand; - GtkWidget *tx_loscommand; - GtkWidget *lb_prefs_time; - GSList *timeprefs_group = NULL; - GtkWidget *rd_prefs_local; - GtkWidget *rd_prefs_utc; - GtkWidget *lb_prefs_grid; - GSList *gridprefs_group = NULL; - GtkWidget *rd_prefs_gridon; - GtkWidget *rd_prefs_gridoff; - GtkWidget *lb_prefs_fpsat; - GSList *fpsatprefs_group = NULL; - GtkWidget *rd_prefs_fpsaton; - GtkWidget *rd_prefs_fpsatoff; - GtkWidget *lb_prefs_fpqth; - GSList *fpqthprefs_group = NULL; - GtkWidget *rd_prefs_fpqthon; - GtkWidget *rd_prefs_fpqthoff; - GtkWidget *lb_prefs_track; - GSList *trackprefs_group = NULL; - GtkWidget *rd_prefs_trackon; - GtkWidget *rd_prefs_trackoff; - GtkWidget *lb_prefs_autofreq; - GSList *autofreqprefs_group = NULL; - GtkWidget *rd_prefs_autofreqon; - GtkWidget *rd_prefs_autofreqoff; - GtkWidget *lb_prefs_aoscommand; - GtkWidget *lb_prefs_loscommand; - GtkWidget *dialog_action_area1; - GtkWidget *bt_prefs_apply; - GtkWidget *bt_prefs_save; - GtkWidget *bt_prefs_cancel; - GtkAccelGroup *accel_group; - - accel_group = gtk_accel_group_new (); - - dialog_preferences = gtk_dialog_new (); - gtk_widget_set_name (dialog_preferences, "dialog_preferences"); - gtk_object_set_data (GTK_OBJECT (dialog_preferences), "dialog_preferences", dialog_preferences); - gtk_window_set_title (GTK_WINDOW (dialog_preferences), _("gsat - Preferences")); - gtk_window_set_position (GTK_WINDOW (dialog_preferences), GTK_WIN_POS_CENTER); - gtk_window_set_policy (GTK_WINDOW (dialog_preferences), FALSE, FALSE, FALSE); - - dialog_vbox1 = GTK_DIALOG (dialog_preferences)->vbox; - gtk_widget_set_name (dialog_vbox1, "dialog_vbox1"); - gtk_object_set_data (GTK_OBJECT (dialog_preferences), "dialog_vbox1", dialog_vbox1); - gtk_widget_show (dialog_vbox1); - - fixed1 = gtk_fixed_new (); - gtk_widget_set_name (fixed1, "fixed1"); - gtk_widget_ref (fixed1); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "fixed1", fixed1, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed1); - gtk_box_pack_start (GTK_BOX (dialog_vbox1), fixed1, TRUE, TRUE, 0); - - fr_radiocontrol = gtk_frame_new (_("Radio Control")); - gtk_widget_set_name (fr_radiocontrol, "fr_radiocontrol"); - gtk_widget_ref (fr_radiocontrol); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "fr_radiocontrol", fr_radiocontrol, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fr_radiocontrol); - gtk_fixed_put (GTK_FIXED (fixed1), fr_radiocontrol, 302, 8); - gtk_widget_set_uposition (fr_radiocontrol, 302, 8); - gtk_widget_set_usize (fr_radiocontrol, 288, 240); - gtk_container_set_border_width (GTK_CONTAINER (fr_radiocontrol), 2); - - fixed3 = gtk_fixed_new (); - gtk_widget_set_name (fixed3, "fixed3"); - gtk_widget_ref (fixed3); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "fixed3", fixed3, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed3); - gtk_container_add (GTK_CONTAINER (fr_radiocontrol), fixed3); - - tx_downpluginconfig = gtk_entry_new (); - gtk_widget_set_name (tx_downpluginconfig, "tx_downpluginconfig"); - gtk_widget_ref (tx_downpluginconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "tx_downpluginconfig", tx_downpluginconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_downpluginconfig); - gtk_fixed_put (GTK_FIXED (fixed3), tx_downpluginconfig, 104, 40); - gtk_widget_set_uposition (tx_downpluginconfig, 104, 40); - gtk_widget_set_usize (tx_downpluginconfig, 160, 24); - - tx_uppluginconfig = gtk_entry_new (); - gtk_widget_set_name (tx_uppluginconfig, "tx_uppluginconfig"); - gtk_widget_ref (tx_uppluginconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "tx_uppluginconfig", tx_uppluginconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_uppluginconfig); - gtk_fixed_put (GTK_FIXED (fixed3), tx_uppluginconfig, 104, 112); - gtk_widget_set_uposition (tx_uppluginconfig, 104, 112); - gtk_widget_set_usize (tx_uppluginconfig, 160, 24); - - tx_beaconpluginconfig = gtk_entry_new (); - gtk_widget_set_name (tx_beaconpluginconfig, "tx_beaconpluginconfig"); - gtk_widget_ref (tx_beaconpluginconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "tx_beaconpluginconfig", tx_beaconpluginconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_beaconpluginconfig); - gtk_fixed_put (GTK_FIXED (fixed3), tx_beaconpluginconfig, 104, 184); - gtk_widget_set_uposition (tx_beaconpluginconfig, 104, 184); - gtk_widget_set_usize (tx_beaconpluginconfig, 160, 24); - - lb_prefs_upconfig = gtk_label_new (_("Plugin Config")); - gtk_widget_set_name (lb_prefs_upconfig, "lb_prefs_upconfig"); - gtk_widget_ref (lb_prefs_upconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_upconfig", lb_prefs_upconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_upconfig); - gtk_fixed_put (GTK_FIXED (fixed3), lb_prefs_upconfig, 0, 112); - gtk_widget_set_uposition (lb_prefs_upconfig, 0, 112); - gtk_widget_set_usize (lb_prefs_upconfig, 96, 24); - - lb_prefs_beacon = gtk_label_new (_("Beacon plugin")); - gtk_widget_set_name (lb_prefs_beacon, "lb_prefs_beacon"); - gtk_widget_ref (lb_prefs_beacon); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_beacon", lb_prefs_beacon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_beacon); - gtk_fixed_put (GTK_FIXED (fixed3), lb_prefs_beacon, 0, 152); - gtk_widget_set_uposition (lb_prefs_beacon, 0, 152); - gtk_widget_set_usize (lb_prefs_beacon, 96, 24); - - lb_prefs_beaconconfig = gtk_label_new (_("Plugin Config")); - gtk_widget_set_name (lb_prefs_beaconconfig, "lb_prefs_beaconconfig"); - gtk_widget_ref (lb_prefs_beaconconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_beaconconfig", lb_prefs_beaconconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_beaconconfig); - gtk_fixed_put (GTK_FIXED (fixed3), lb_prefs_beaconconfig, 0, 184); - gtk_widget_set_uposition (lb_prefs_beaconconfig, 0, 184); - gtk_widget_set_usize (lb_prefs_beaconconfig, 96, 24); - - combo_downplugin = gtk_combo_new (); - gtk_widget_set_name (combo_downplugin, "combo_downplugin"); - gtk_widget_ref (combo_downplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "combo_downplugin", combo_downplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo_downplugin); - gtk_fixed_put (GTK_FIXED (fixed3), combo_downplugin, 104, 8); - gtk_widget_set_uposition (combo_downplugin, 104, 8); - gtk_widget_set_usize (combo_downplugin, 160, 24); - - entry_downplugin = GTK_COMBO (combo_downplugin)->entry; - gtk_widget_set_name (entry_downplugin, "entry_downplugin"); - gtk_widget_ref (entry_downplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "entry_downplugin", entry_downplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (entry_downplugin); - gtk_entry_set_editable (GTK_ENTRY (entry_downplugin), FALSE); - - combo_beaconplugin = gtk_combo_new (); - gtk_widget_set_name (combo_beaconplugin, "combo_beaconplugin"); - gtk_widget_ref (combo_beaconplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "combo_beaconplugin", combo_beaconplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo_beaconplugin); - gtk_fixed_put (GTK_FIXED (fixed3), combo_beaconplugin, 104, 152); - gtk_widget_set_uposition (combo_beaconplugin, 104, 152); - gtk_widget_set_usize (combo_beaconplugin, 160, 24); - - entry_beaconplugin = GTK_COMBO (combo_beaconplugin)->entry; - gtk_widget_set_name (entry_beaconplugin, "entry_beaconplugin"); - gtk_widget_ref (entry_beaconplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "entry_beaconplugin", entry_beaconplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (entry_beaconplugin); - gtk_entry_set_editable (GTK_ENTRY (entry_beaconplugin), FALSE); - - lb_prefs_downlink = gtk_label_new (_("Downlink plugin")); - gtk_widget_set_name (lb_prefs_downlink, "lb_prefs_downlink"); - gtk_widget_ref (lb_prefs_downlink); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_downlink", lb_prefs_downlink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_downlink); - gtk_fixed_put (GTK_FIXED (fixed3), lb_prefs_downlink, 0, 8); - gtk_widget_set_uposition (lb_prefs_downlink, 0, 8); - gtk_widget_set_usize (lb_prefs_downlink, 96, 24); - - lb_prefs_downconfig = gtk_label_new (_("Plugin Config")); - gtk_widget_set_name (lb_prefs_downconfig, "lb_prefs_downconfig"); - gtk_widget_ref (lb_prefs_downconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_downconfig", lb_prefs_downconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_downconfig); - gtk_fixed_put (GTK_FIXED (fixed3), lb_prefs_downconfig, 0, 40); - gtk_widget_set_uposition (lb_prefs_downconfig, 0, 40); - gtk_widget_set_usize (lb_prefs_downconfig, 96, 24); - - lb_prefs_uplink = gtk_label_new (_("Uplink plugin")); - gtk_widget_set_name (lb_prefs_uplink, "lb_prefs_uplink"); - gtk_widget_ref (lb_prefs_uplink); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_uplink", lb_prefs_uplink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_uplink); - gtk_fixed_put (GTK_FIXED (fixed3), lb_prefs_uplink, 0, 80); - gtk_widget_set_uposition (lb_prefs_uplink, 0, 80); - gtk_widget_set_usize (lb_prefs_uplink, 96, 24); - - combo_upplugin = gtk_combo_new (); - gtk_widget_set_name (combo_upplugin, "combo_upplugin"); - gtk_widget_ref (combo_upplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "combo_upplugin", combo_upplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo_upplugin); - gtk_fixed_put (GTK_FIXED (fixed3), combo_upplugin, 104, 80); - gtk_widget_set_uposition (combo_upplugin, 104, 80); - gtk_widget_set_usize (combo_upplugin, 160, 24); - - entry_upplugin = GTK_COMBO (combo_upplugin)->entry; - gtk_widget_set_name (entry_upplugin, "entry_upplugin"); - gtk_widget_ref (entry_upplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "entry_upplugin", entry_upplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (entry_upplugin); - gtk_entry_set_editable (GTK_ENTRY (entry_upplugin), FALSE); - - fr_rotorcontrol = gtk_frame_new (_("Rotor Control")); - gtk_widget_set_name (fr_rotorcontrol, "fr_rotorcontrol"); - gtk_widget_ref (fr_rotorcontrol); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "fr_rotorcontrol", fr_rotorcontrol, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fr_rotorcontrol); - gtk_fixed_put (GTK_FIXED (fixed1), fr_rotorcontrol, 302, 250); - gtk_widget_set_uposition (fr_rotorcontrol, 302, 250); - gtk_widget_set_usize (fr_rotorcontrol, 288, 94); - gtk_container_set_border_width (GTK_CONTAINER (fr_rotorcontrol), 2); - - fixed8 = gtk_fixed_new (); - gtk_widget_set_name (fixed8, "fixed8"); - gtk_widget_ref (fixed8); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "fixed8", fixed8, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed8); - gtk_container_add (GTK_CONTAINER (fr_rotorcontrol), fixed8); - - tx_rotorpluginconfig = gtk_entry_new (); - gtk_widget_set_name (tx_rotorpluginconfig, "tx_rotorpluginconfig"); - gtk_widget_ref (tx_rotorpluginconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "tx_rotorpluginconfig", tx_rotorpluginconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_rotorpluginconfig); - gtk_fixed_put (GTK_FIXED (fixed8), tx_rotorpluginconfig, 96, 40); - gtk_widget_set_uposition (tx_rotorpluginconfig, 96, 40); - gtk_widget_set_usize (tx_rotorpluginconfig, 160, 24); - - lb_prefs_rotor = gtk_label_new (_("Rotor plugin")); - gtk_widget_set_name (lb_prefs_rotor, "lb_prefs_rotor"); - gtk_widget_ref (lb_prefs_rotor); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_rotor", lb_prefs_rotor, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_rotor); - gtk_fixed_put (GTK_FIXED (fixed8), lb_prefs_rotor, 0, 8); - gtk_widget_set_uposition (lb_prefs_rotor, 0, 8); - gtk_widget_set_usize (lb_prefs_rotor, 96, 24); - - lb_prefs_rotorpluginconfig = gtk_label_new (_("Plugin Config")); - gtk_widget_set_name (lb_prefs_rotorpluginconfig, "lb_prefs_rotorpluginconfig"); - gtk_widget_ref (lb_prefs_rotorpluginconfig); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_rotorpluginconfig", lb_prefs_rotorpluginconfig, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_rotorpluginconfig); - gtk_fixed_put (GTK_FIXED (fixed8), lb_prefs_rotorpluginconfig, 0, 40); - gtk_widget_set_uposition (lb_prefs_rotorpluginconfig, 0, 40); - gtk_widget_set_usize (lb_prefs_rotorpluginconfig, 96, 24); - - combo_rotorplugin = gtk_combo_new (); - gtk_widget_set_name (combo_rotorplugin, "combo_rotorplugin"); - gtk_widget_ref (combo_rotorplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "combo_rotorplugin", combo_rotorplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (combo_rotorplugin); - gtk_fixed_put (GTK_FIXED (fixed8), combo_rotorplugin, 96, 8); - gtk_widget_set_uposition (combo_rotorplugin, 96, 8); - gtk_widget_set_usize (combo_rotorplugin, 160, 24); - - entry_rotorplugin = GTK_COMBO (combo_rotorplugin)->entry; - gtk_widget_set_name (entry_rotorplugin, "entry_rotorplugin"); - gtk_widget_ref (entry_rotorplugin); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "entry_rotorplugin", entry_rotorplugin, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (entry_rotorplugin); - gtk_entry_set_editable (GTK_ENTRY (entry_rotorplugin), FALSE); - - fr_options = gtk_frame_new (_("Program Options")); - gtk_widget_set_name (fr_options, "fr_options"); - gtk_widget_ref (fr_options); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "fr_options", fr_options, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fr_options); - gtk_fixed_put (GTK_FIXED (fixed1), fr_options, 8, 8); - gtk_widget_set_uposition (fr_options, 8, 8); - gtk_widget_set_usize (fr_options, 288, 336); - gtk_container_set_border_width (GTK_CONTAINER (fr_options), 2); - - fixed2 = gtk_fixed_new (); - gtk_widget_set_name (fixed2, "fixed2"); - gtk_widget_ref (fixed2); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "fixed2", fixed2, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed2); - gtk_container_add (GTK_CONTAINER (fr_options), fixed2); - - tx_aoscommand = gtk_entry_new (); - gtk_widget_set_name (tx_aoscommand, "tx_aoscommand"); - gtk_widget_ref (tx_aoscommand); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "tx_aoscommand", tx_aoscommand, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_aoscommand); - gtk_fixed_put (GTK_FIXED (fixed2), tx_aoscommand, 104, 216); - gtk_widget_set_uposition (tx_aoscommand, 104, 216); - gtk_widget_set_usize (tx_aoscommand, 160, 24); - - tx_loscommand = gtk_entry_new (); - gtk_widget_set_name (tx_loscommand, "tx_loscommand"); - gtk_widget_ref (tx_loscommand); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "tx_loscommand", tx_loscommand, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_loscommand); - gtk_fixed_put (GTK_FIXED (fixed2), tx_loscommand, 104, 264); - gtk_widget_set_uposition (tx_loscommand, 104, 264); - gtk_widget_set_usize (tx_loscommand, 160, 24); - - lb_prefs_time = gtk_label_new (_("Time format")); - gtk_widget_set_name (lb_prefs_time, "lb_prefs_time"); - gtk_widget_ref (lb_prefs_time); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_time", lb_prefs_time, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_time); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_time, 8, 48); - gtk_widget_set_uposition (lb_prefs_time, 8, 48); - gtk_widget_set_usize (lb_prefs_time, 88, 24); - - rd_prefs_local = gtk_radio_button_new_with_label (timeprefs_group, _("Local time")); - timeprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_local)); - gtk_widget_set_name (rd_prefs_local, "rd_prefs_local"); - gtk_widget_ref (rd_prefs_local); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_local", rd_prefs_local, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_local); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_local, 104, 48); - gtk_widget_set_uposition (rd_prefs_local, 104, 48); - gtk_widget_set_usize (rd_prefs_local, 64, 24); - - rd_prefs_utc = gtk_radio_button_new_with_label (timeprefs_group, _("UTC time")); - timeprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_utc)); - gtk_widget_set_name (rd_prefs_utc, "rd_prefs_utc"); - gtk_widget_ref (rd_prefs_utc); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_utc", rd_prefs_utc, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_utc); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_utc, 176, 48); - gtk_widget_set_uposition (rd_prefs_utc, 176, 48); - gtk_widget_set_usize (rd_prefs_utc, 64, 24); - - lb_prefs_grid = gtk_label_new (_("Map grid")); - gtk_widget_set_name (lb_prefs_grid, "lb_prefs_grid"); - gtk_widget_ref (lb_prefs_grid); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_grid", lb_prefs_grid, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_grid); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_grid, 8, 16); - gtk_widget_set_uposition (lb_prefs_grid, 8, 16); - gtk_widget_set_usize (lb_prefs_grid, 88, 24); - - rd_prefs_gridon = gtk_radio_button_new_with_label (gridprefs_group, _("On")); - gridprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_gridon)); - gtk_widget_set_name (rd_prefs_gridon, "rd_prefs_gridon"); - gtk_widget_ref (rd_prefs_gridon); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_gridon", rd_prefs_gridon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_gridon); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_gridon, 104, 16); - gtk_widget_set_uposition (rd_prefs_gridon, 104, 16); - gtk_widget_set_usize (rd_prefs_gridon, 48, 24); - - rd_prefs_gridoff = gtk_radio_button_new_with_label (gridprefs_group, _("Off")); - gridprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_gridoff)); - gtk_widget_set_name (rd_prefs_gridoff, "rd_prefs_gridoff"); - gtk_widget_ref (rd_prefs_gridoff); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_gridoff", rd_prefs_gridoff, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_gridoff); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_gridoff, 152, 16); - gtk_widget_set_uposition (rd_prefs_gridoff, 152, 16); - gtk_widget_set_usize (rd_prefs_gridoff, 48, 24); - - lb_prefs_fpsat = gtk_label_new (_("Satellite footprint")); - gtk_widget_set_name (lb_prefs_fpsat, "lb_prefs_fpsat"); - gtk_widget_ref (lb_prefs_fpsat); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_fpsat", lb_prefs_fpsat, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_fpsat); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_fpsat, 8, 80); - gtk_widget_set_uposition (lb_prefs_fpsat, 8, 80); - gtk_widget_set_usize (lb_prefs_fpsat, 88, 24); - - rd_prefs_fpsaton = gtk_radio_button_new_with_label (fpsatprefs_group, _("On")); - fpsatprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_fpsaton)); - gtk_widget_set_name (rd_prefs_fpsaton, "rd_prefs_fpsaton"); - gtk_widget_ref (rd_prefs_fpsaton); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_fpsaton", rd_prefs_fpsaton, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_fpsaton); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_fpsaton, 104, 80); - gtk_widget_set_uposition (rd_prefs_fpsaton, 104, 80); - gtk_widget_set_usize (rd_prefs_fpsaton, 48, 24); - - rd_prefs_fpsatoff = gtk_radio_button_new_with_label (fpsatprefs_group, _("Off")); - fpsatprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_fpsatoff)); - gtk_widget_set_name (rd_prefs_fpsatoff, "rd_prefs_fpsatoff"); - gtk_widget_ref (rd_prefs_fpsatoff); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_fpsatoff", rd_prefs_fpsatoff, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_fpsatoff); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_fpsatoff, 152, 80); - gtk_widget_set_uposition (rd_prefs_fpsatoff, 152, 80); - gtk_widget_set_usize (rd_prefs_fpsatoff, 48, 24); - - lb_prefs_fpqth = gtk_label_new (_("Station footprint")); - gtk_widget_set_name (lb_prefs_fpqth, "lb_prefs_fpqth"); - gtk_widget_ref (lb_prefs_fpqth); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_fpqth", lb_prefs_fpqth, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_fpqth); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_fpqth, 8, 112); - gtk_widget_set_uposition (lb_prefs_fpqth, 8, 112); - gtk_widget_set_usize (lb_prefs_fpqth, 88, 24); - - rd_prefs_fpqthon = gtk_radio_button_new_with_label (fpqthprefs_group, _("On")); - fpqthprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_fpqthon)); - gtk_widget_set_name (rd_prefs_fpqthon, "rd_prefs_fpqthon"); - gtk_widget_ref (rd_prefs_fpqthon); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_fpqthon", rd_prefs_fpqthon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_fpqthon); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_fpqthon, 104, 112); - gtk_widget_set_uposition (rd_prefs_fpqthon, 104, 112); - gtk_widget_set_usize (rd_prefs_fpqthon, 48, 24); - - rd_prefs_fpqthoff = gtk_radio_button_new_with_label (fpqthprefs_group, _("Off")); - fpqthprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_fpqthoff)); - gtk_widget_set_name (rd_prefs_fpqthoff, "rd_prefs_fpqthoff"); - gtk_widget_ref (rd_prefs_fpqthoff); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_fpqthoff", rd_prefs_fpqthoff, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_fpqthoff); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_fpqthoff, 152, 112); - gtk_widget_set_uposition (rd_prefs_fpqthoff, 152, 112); - gtk_widget_set_usize (rd_prefs_fpqthoff, 48, 24); - - lb_prefs_track = gtk_label_new (_("Ground Track")); - gtk_widget_set_name (lb_prefs_track, "lb_prefs_track"); - gtk_widget_ref (lb_prefs_track); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_track", lb_prefs_track, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_track); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_track, 8, 144); - gtk_widget_set_uposition (lb_prefs_track, 8, 144); - gtk_widget_set_usize (lb_prefs_track, 88, 24); - - rd_prefs_trackon = gtk_radio_button_new_with_label (trackprefs_group, _("On")); - trackprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_trackon)); - gtk_widget_set_name (rd_prefs_trackon, "rd_prefs_trackon"); - gtk_widget_ref (rd_prefs_trackon); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_trackon", rd_prefs_trackon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_trackon); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_trackon, 104, 144); - gtk_widget_set_uposition (rd_prefs_trackon, 104, 144); - gtk_widget_set_usize (rd_prefs_trackon, 48, 24); - - rd_prefs_trackoff = gtk_radio_button_new_with_label (trackprefs_group, _("Off")); - trackprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_trackoff)); - gtk_widget_set_name (rd_prefs_trackoff, "rd_prefs_trackoff"); - gtk_widget_ref (rd_prefs_trackoff); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_trackoff", rd_prefs_trackoff, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_trackoff); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_trackoff, 152, 144); - gtk_widget_set_uposition (rd_prefs_trackoff, 152, 144); - gtk_widget_set_usize (rd_prefs_trackoff, 48, 24); - - lb_prefs_autofreq = gtk_label_new (_("Auto Frequency")); - gtk_widget_set_name (lb_prefs_autofreq, "lb_prefs_autofreq"); - gtk_widget_ref (lb_prefs_autofreq); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_autofreq", lb_prefs_autofreq, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_autofreq); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_autofreq, 8, 176); - gtk_widget_set_uposition (lb_prefs_autofreq, 8, 176); - gtk_widget_set_usize (lb_prefs_autofreq, 88, 24); - - rd_prefs_autofreqon = gtk_radio_button_new_with_label (autofreqprefs_group, _("On")); - autofreqprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_autofreqon)); - gtk_widget_set_name (rd_prefs_autofreqon, "rd_prefs_autofreqon"); - gtk_widget_ref (rd_prefs_autofreqon); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_autofreqon", rd_prefs_autofreqon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_autofreqon); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_autofreqon, 104, 176); - gtk_widget_set_uposition (rd_prefs_autofreqon, 104, 176); - gtk_widget_set_usize (rd_prefs_autofreqon, 48, 24); - - rd_prefs_autofreqoff = gtk_radio_button_new_with_label (autofreqprefs_group, _("Off")); - autofreqprefs_group = gtk_radio_button_group (GTK_RADIO_BUTTON (rd_prefs_autofreqoff)); - gtk_widget_set_name (rd_prefs_autofreqoff, "rd_prefs_autofreqoff"); - gtk_widget_ref (rd_prefs_autofreqoff); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "rd_prefs_autofreqoff", rd_prefs_autofreqoff, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (rd_prefs_autofreqoff); - gtk_fixed_put (GTK_FIXED (fixed2), rd_prefs_autofreqoff, 152, 176); - gtk_widget_set_uposition (rd_prefs_autofreqoff, 152, 176); - gtk_widget_set_usize (rd_prefs_autofreqoff, 48, 24); - - lb_prefs_aoscommand = gtk_label_new (_("AOS command")); - gtk_widget_set_name (lb_prefs_aoscommand, "lb_prefs_aoscommand"); - gtk_widget_ref (lb_prefs_aoscommand); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_aoscommand", lb_prefs_aoscommand, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_aoscommand); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_aoscommand, 8, 216); - gtk_widget_set_uposition (lb_prefs_aoscommand, 8, 216); - gtk_widget_set_usize (lb_prefs_aoscommand, 96, 24); - - lb_prefs_loscommand = gtk_label_new (_("LOS command")); - gtk_widget_set_name (lb_prefs_loscommand, "lb_prefs_loscommand"); - gtk_widget_ref (lb_prefs_loscommand); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "lb_prefs_loscommand", lb_prefs_loscommand, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_prefs_loscommand); - gtk_fixed_put (GTK_FIXED (fixed2), lb_prefs_loscommand, 8, 264); - gtk_widget_set_uposition (lb_prefs_loscommand, 8, 264); - gtk_widget_set_usize (lb_prefs_loscommand, 96, 24); - - dialog_action_area1 = GTK_DIALOG (dialog_preferences)->action_area; - gtk_widget_set_name (dialog_action_area1, "dialog_action_area1"); - gtk_object_set_data (GTK_OBJECT (dialog_preferences), "dialog_action_area1", dialog_action_area1); - gtk_widget_show (dialog_action_area1); - gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area1), 10); - - bt_prefs_apply = gtk_button_new_with_label (_("Apply")); - gtk_widget_set_name (bt_prefs_apply, "bt_prefs_apply"); - gtk_widget_ref (bt_prefs_apply); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "bt_prefs_apply", bt_prefs_apply, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_prefs_apply); - gtk_box_pack_start (GTK_BOX (dialog_action_area1), bt_prefs_apply, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (bt_prefs_apply), 4); - gtk_widget_add_accelerator (bt_prefs_apply, "clicked", accel_group, - GDK_Return, 0, - GTK_ACCEL_VISIBLE); - - bt_prefs_save = gtk_button_new_with_label (_("Save")); - gtk_widget_set_name (bt_prefs_save, "bt_prefs_save"); - gtk_widget_ref (bt_prefs_save); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "bt_prefs_save", bt_prefs_save, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_prefs_save); - gtk_box_pack_start (GTK_BOX (dialog_action_area1), bt_prefs_save, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (bt_prefs_save), 4); - gtk_widget_add_accelerator (bt_prefs_save, "clicked", accel_group, - GDK_Return, 0, - GTK_ACCEL_VISIBLE); - - bt_prefs_cancel = gtk_button_new_with_label (_("Cancel")); - gtk_widget_set_name (bt_prefs_cancel, "bt_prefs_cancel"); - gtk_widget_ref (bt_prefs_cancel); - gtk_object_set_data_full (GTK_OBJECT (dialog_preferences), "bt_prefs_cancel", bt_prefs_cancel, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_prefs_cancel); - gtk_box_pack_start (GTK_BOX (dialog_action_area1), bt_prefs_cancel, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (bt_prefs_cancel), 4); - GTK_WIDGET_SET_FLAGS (bt_prefs_cancel, GTK_CAN_DEFAULT); - gtk_widget_add_accelerator (bt_prefs_cancel, "clicked", accel_group, - GDK_Escape, 0, - GTK_ACCEL_VISIBLE); - - gtk_signal_connect (GTK_OBJECT (dialog_preferences), "delete_event", - GTK_SIGNAL_FUNC (on_dialog_preferences_delete_event), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_prefs_apply), "clicked", - GTK_SIGNAL_FUNC (on_bt_prefs_apply_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_prefs_save), "clicked", - GTK_SIGNAL_FUNC (on_bt_prefs_save_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_prefs_cancel), "clicked", - GTK_SIGNAL_FUNC (on_bt_prefs_cancel_clicked), - NULL); - - gtk_widget_grab_default (bt_prefs_cancel); - gtk_window_add_accel_group (GTK_WINDOW (dialog_preferences), accel_group); - - return dialog_preferences; -} - -GtkWidget* -create_dialog_connect (void) -{ - GtkWidget *dialog_connect; - GtkWidget *dialog_vbox2; - GtkWidget *frame3; - GtkWidget *fixed4; - GtkWidget *tx_con_server; - GtkWidget *tx_con_port; - GtkWidget *lb_con_port; - GtkWidget *lb_con_server; - GtkWidget *lb_con_text; - GtkWidget *dialog_action_area2; - GtkWidget *bt_con_connect; - GtkWidget *bt_con_cancel; - GtkAccelGroup *accel_group; - - accel_group = gtk_accel_group_new (); - - dialog_connect = gtk_dialog_new (); - gtk_widget_set_name (dialog_connect, "dialog_connect"); - gtk_object_set_data (GTK_OBJECT (dialog_connect), "dialog_connect", dialog_connect); - gtk_window_set_title (GTK_WINDOW (dialog_connect), _("gsat - Connect")); - gtk_window_set_policy (GTK_WINDOW (dialog_connect), FALSE, FALSE, FALSE); - - dialog_vbox2 = GTK_DIALOG (dialog_connect)->vbox; - gtk_widget_set_name (dialog_vbox2, "dialog_vbox2"); - gtk_object_set_data (GTK_OBJECT (dialog_connect), "dialog_vbox2", dialog_vbox2); - gtk_widget_show (dialog_vbox2); - - frame3 = gtk_frame_new (NULL); - gtk_widget_set_name (frame3, "frame3"); - gtk_widget_ref (frame3); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "frame3", frame3, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (frame3); - gtk_box_pack_start (GTK_BOX (dialog_vbox2), frame3, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame3), 3); - - fixed4 = gtk_fixed_new (); - gtk_widget_set_name (fixed4, "fixed4"); - gtk_widget_ref (fixed4); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "fixed4", fixed4, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed4); - gtk_container_add (GTK_CONTAINER (frame3), fixed4); - - tx_con_server = gtk_entry_new_with_max_length (250); - gtk_widget_set_name (tx_con_server, "tx_con_server"); - gtk_widget_ref (tx_con_server); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "tx_con_server", tx_con_server, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_con_server); - gtk_fixed_put (GTK_FIXED (fixed4), tx_con_server, 88, 48); - gtk_widget_set_uposition (tx_con_server, 88, 48); - gtk_widget_set_usize (tx_con_server, 158, 20); - gtk_entry_set_text (GTK_ENTRY (tx_con_server), _("localhost")); - - tx_con_port = gtk_entry_new (); - gtk_widget_set_name (tx_con_port, "tx_con_port"); - gtk_widget_ref (tx_con_port); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "tx_con_port", tx_con_port, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_con_port); - gtk_fixed_put (GTK_FIXED (fixed4), tx_con_port, 88, 80); - gtk_widget_set_uposition (tx_con_port, 88, 80); - gtk_widget_set_usize (tx_con_port, 158, 20); - gtk_entry_set_text (GTK_ENTRY (tx_con_port), _("1210")); - - lb_con_port = gtk_label_new (_("Port")); - gtk_widget_set_name (lb_con_port, "lb_con_port"); - gtk_widget_ref (lb_con_port); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "lb_con_port", lb_con_port, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_con_port); - gtk_fixed_put (GTK_FIXED (fixed4), lb_con_port, 24, 80); - gtk_widget_set_uposition (lb_con_port, 24, 80); - gtk_widget_set_usize (lb_con_port, 56, 24); - - lb_con_server = gtk_label_new (_("Server")); - gtk_widget_set_name (lb_con_server, "lb_con_server"); - gtk_widget_ref (lb_con_server); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "lb_con_server", lb_con_server, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_con_server); - gtk_fixed_put (GTK_FIXED (fixed4), lb_con_server, 24, 48); - gtk_widget_set_uposition (lb_con_server, 24, 48); - gtk_widget_set_usize (lb_con_server, 56, 24); - - lb_con_text = gtk_label_new (_("Enter predict server and port")); - gtk_widget_set_name (lb_con_text, "lb_con_text"); - gtk_widget_ref (lb_con_text); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "lb_con_text", lb_con_text, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_con_text); - gtk_fixed_put (GTK_FIXED (fixed4), lb_con_text, 8, 8); - gtk_widget_set_uposition (lb_con_text, 8, 8); - gtk_widget_set_usize (lb_con_text, 272, 32); - - dialog_action_area2 = GTK_DIALOG (dialog_connect)->action_area; - gtk_widget_set_name (dialog_action_area2, "dialog_action_area2"); - gtk_object_set_data (GTK_OBJECT (dialog_connect), "dialog_action_area2", dialog_action_area2); - gtk_widget_show (dialog_action_area2); - gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area2), 10); - - bt_con_connect = gtk_button_new_with_label (_("Connect")); - gtk_widget_set_name (bt_con_connect, "bt_con_connect"); - gtk_widget_ref (bt_con_connect); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "bt_con_connect", bt_con_connect, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_con_connect); - gtk_box_pack_start (GTK_BOX (dialog_action_area2), bt_con_connect, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (bt_con_connect), 4); - GTK_WIDGET_SET_FLAGS (bt_con_connect, GTK_CAN_DEFAULT); - gtk_widget_add_accelerator (bt_con_connect, "clicked", accel_group, - GDK_Return, 0, - GTK_ACCEL_VISIBLE); - - bt_con_cancel = gtk_button_new_with_label (_("Cancel")); - gtk_widget_set_name (bt_con_cancel, "bt_con_cancel"); - gtk_widget_ref (bt_con_cancel); - gtk_object_set_data_full (GTK_OBJECT (dialog_connect), "bt_con_cancel", bt_con_cancel, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_con_cancel); - gtk_box_pack_start (GTK_BOX (dialog_action_area2), bt_con_cancel, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (bt_con_cancel), 4); - gtk_widget_add_accelerator (bt_con_cancel, "clicked", accel_group, - GDK_Escape, 0, - GTK_ACCEL_VISIBLE); - - gtk_signal_connect (GTK_OBJECT (dialog_connect), "delete_event", - GTK_SIGNAL_FUNC (on_dialog_connect_delete_event), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_con_connect), "clicked", - GTK_SIGNAL_FUNC (on_bt_con_connect_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_con_cancel), "clicked", - GTK_SIGNAL_FUNC (on_bt_con_cancel_clicked), - NULL); - - gtk_widget_grab_default (bt_con_connect); - gtk_window_add_accel_group (GTK_WINDOW (dialog_connect), accel_group); - - return dialog_connect; -} - -GtkWidget* -create_dialog_azel_graph (void) -{ - GtkWidget *dialog_azel_graph; - GtkWidget *vbox1; - GtkWidget *fixed6; - GtkWidget *frame5; - GtkWidget *azelgraph; - GtkWidget *frame6; - GtkWidget *fixed7; - GtkWidget *tx_azel_sat; - GtkWidget *tx_azel_azimuth; - GtkWidget *tx_azel_elevation; - GtkWidget *lb_azel_sat; - GtkWidget *lb_azel_elevation; - GtkWidget *lb_azel_azimuth; - - dialog_azel_graph = gtk_window_new (GTK_WINDOW_DIALOG); - gtk_widget_set_name (dialog_azel_graph, "dialog_azel_graph"); - gtk_object_set_data (GTK_OBJECT (dialog_azel_graph), "dialog_azel_graph", dialog_azel_graph); - gtk_window_set_title (GTK_WINDOW (dialog_azel_graph), _("gsat - AZ/EL tracking")); - gtk_window_set_policy (GTK_WINDOW (dialog_azel_graph), FALSE, FALSE, FALSE); - - vbox1 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox1, "vbox1"); - gtk_widget_ref (vbox1); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "vbox1", vbox1, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (vbox1); - gtk_container_add (GTK_CONTAINER (dialog_azel_graph), vbox1); - - fixed6 = gtk_fixed_new (); - gtk_widget_set_name (fixed6, "fixed6"); - gtk_widget_ref (fixed6); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "fixed6", fixed6, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed6); - gtk_box_pack_start (GTK_BOX (vbox1), fixed6, TRUE, TRUE, 0); - - frame5 = gtk_frame_new (NULL); - gtk_widget_set_name (frame5, "frame5"); - gtk_widget_ref (frame5); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "frame5", frame5, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (frame5); - gtk_fixed_put (GTK_FIXED (fixed6), frame5, 0, 8); - gtk_widget_set_uposition (frame5, 0, 8); - gtk_widget_set_usize (frame5, 256, 256); - - azelgraph = gtk_drawing_area_new (); - gtk_widget_set_name (azelgraph, "azelgraph"); - gtk_widget_ref (azelgraph); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "azelgraph", azelgraph, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (azelgraph); - gtk_container_add (GTK_CONTAINER (frame5), azelgraph); - gtk_widget_set_usize (azelgraph, 256, 256); - - frame6 = gtk_frame_new (NULL); - gtk_widget_set_name (frame6, "frame6"); - gtk_widget_ref (frame6); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "frame6", frame6, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (frame6); - gtk_fixed_put (GTK_FIXED (fixed6), frame6, 0, 272); - gtk_widget_set_uposition (frame6, 0, 272); - gtk_widget_set_usize (frame6, 256, 64); - - fixed7 = gtk_fixed_new (); - gtk_widget_set_name (fixed7, "fixed7"); - gtk_widget_ref (fixed7); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "fixed7", fixed7, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed7); - gtk_container_add (GTK_CONTAINER (frame6), fixed7); - - tx_azel_sat = gtk_entry_new (); - gtk_widget_set_name (tx_azel_sat, "tx_azel_sat"); - gtk_widget_ref (tx_azel_sat); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "tx_azel_sat", tx_azel_sat, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_azel_sat); - gtk_fixed_put (GTK_FIXED (fixed7), tx_azel_sat, 96, 8); - gtk_widget_set_uposition (tx_azel_sat, 96, 8); - gtk_widget_set_usize (tx_azel_sat, 80, 16); - gtk_entry_set_editable (GTK_ENTRY (tx_azel_sat), FALSE); - - tx_azel_azimuth = gtk_entry_new (); - gtk_widget_set_name (tx_azel_azimuth, "tx_azel_azimuth"); - gtk_widget_ref (tx_azel_azimuth); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "tx_azel_azimuth", tx_azel_azimuth, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_azel_azimuth); - gtk_fixed_put (GTK_FIXED (fixed7), tx_azel_azimuth, 64, 32); - gtk_widget_set_uposition (tx_azel_azimuth, 64, 32); - gtk_widget_set_usize (tx_azel_azimuth, 48, 16); - GTK_WIDGET_UNSET_FLAGS (tx_azel_azimuth, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_azel_azimuth), FALSE); - - tx_azel_elevation = gtk_entry_new (); - gtk_widget_set_name (tx_azel_elevation, "tx_azel_elevation"); - gtk_widget_ref (tx_azel_elevation); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "tx_azel_elevation", tx_azel_elevation, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_azel_elevation); - gtk_fixed_put (GTK_FIXED (fixed7), tx_azel_elevation, 184, 32); - gtk_widget_set_uposition (tx_azel_elevation, 184, 32); - gtk_widget_set_usize (tx_azel_elevation, 48, 16); - GTK_WIDGET_UNSET_FLAGS (tx_azel_elevation, GTK_CAN_FOCUS); - gtk_entry_set_editable (GTK_ENTRY (tx_azel_elevation), FALSE); - - lb_azel_sat = gtk_label_new (_("Satellite")); - gtk_widget_set_name (lb_azel_sat, "lb_azel_sat"); - gtk_widget_ref (lb_azel_sat); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "lb_azel_sat", lb_azel_sat, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_azel_sat); - gtk_fixed_put (GTK_FIXED (fixed7), lb_azel_sat, 48, 8); - gtk_widget_set_uposition (lb_azel_sat, 48, 8); - gtk_widget_set_usize (lb_azel_sat, 48, 16); - - lb_azel_elevation = gtk_label_new (_("Elevation")); - gtk_widget_set_name (lb_azel_elevation, "lb_azel_elevation"); - gtk_widget_ref (lb_azel_elevation); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "lb_azel_elevation", lb_azel_elevation, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_azel_elevation); - gtk_fixed_put (GTK_FIXED (fixed7), lb_azel_elevation, 128, 32); - gtk_widget_set_uposition (lb_azel_elevation, 128, 32); - gtk_widget_set_usize (lb_azel_elevation, 48, 16); - - lb_azel_azimuth = gtk_label_new (_("Azimuth")); - gtk_widget_set_name (lb_azel_azimuth, "lb_azel_azimuth"); - gtk_widget_ref (lb_azel_azimuth); - gtk_object_set_data_full (GTK_OBJECT (dialog_azel_graph), "lb_azel_azimuth", lb_azel_azimuth, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_azel_azimuth); - gtk_fixed_put (GTK_FIXED (fixed7), lb_azel_azimuth, 16, 32); - gtk_widget_set_uposition (lb_azel_azimuth, 16, 32); - gtk_widget_set_usize (lb_azel_azimuth, 40, 16); - - gtk_signal_connect (GTK_OBJECT (dialog_azel_graph), "delete_event", - GTK_SIGNAL_FUNC (on_dialog_azel_graph_delete_event), - NULL); - gtk_signal_connect (GTK_OBJECT (azelgraph), "expose_event", - GTK_SIGNAL_FUNC (on_azelgraph_expose_event), - NULL); - - return dialog_azel_graph; -} - -GtkWidget* -create_dialog_dbedit (void) -{ - GtkWidget *dialog_dbedit; - GtkWidget *fixed9; - GtkWidget *clist_satdb; - GtkWidget *lb_sat; - GtkWidget *lb_mode; - GtkWidget *lb_uplink; - GtkWidget *lb_downlink; - GtkWidget *lb_beacon; - GtkWidget *vscrollbar_satdb; - GtkWidget *frame7; - GtkWidget *fixed10; - GtkWidget *tx_dbsat; - GtkWidget *tx_dbuplink; - GtkWidget *tx_dbdownlink; - GtkWidget *tx_dbbeacon; - GtkWidget *bt_dbadd; - GtkWidget *bt_dbupdate; - GtkWidget *bt_dbdelete; - GtkWidget *lb_dbsat; - GtkWidget *lb_dbmode; - GtkWidget *tx_dbmode; - GtkWidget *lb_dbuplink; - GtkWidget *lb_dbdownlink; - GtkWidget *lb_dbbeacon; - - dialog_dbedit = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_widget_set_name (dialog_dbedit, "dialog_dbedit"); - gtk_object_set_data (GTK_OBJECT (dialog_dbedit), "dialog_dbedit", dialog_dbedit); - gtk_window_set_title (GTK_WINDOW (dialog_dbedit), _("gsat - Satellite DB")); - gtk_window_set_policy (GTK_WINDOW (dialog_dbedit), FALSE, FALSE, FALSE); - - fixed9 = gtk_fixed_new (); - gtk_widget_set_name (fixed9, "fixed9"); - gtk_widget_ref (fixed9); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "fixed9", fixed9, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed9); - gtk_container_add (GTK_CONTAINER (dialog_dbedit), fixed9); - - clist_satdb = gtk_clist_new (5); - gtk_widget_set_name (clist_satdb, "clist_satdb"); - gtk_widget_ref (clist_satdb); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "clist_satdb", clist_satdb, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (clist_satdb); - gtk_fixed_put (GTK_FIXED (fixed9), clist_satdb, 0, 8); - gtk_widget_set_uposition (clist_satdb, 0, 8); - gtk_widget_set_usize (clist_satdb, 382, 328); - gtk_container_set_border_width (GTK_CONTAINER (clist_satdb), 2); - gtk_clist_set_column_width (GTK_CLIST (clist_satdb), 0, 59); - gtk_clist_set_column_width (GTK_CLIST (clist_satdb), 1, 44); - gtk_clist_set_column_width (GTK_CLIST (clist_satdb), 2, 77); - gtk_clist_set_column_width (GTK_CLIST (clist_satdb), 3, 86); - gtk_clist_set_column_width (GTK_CLIST (clist_satdb), 4, 73); - gtk_clist_column_titles_show (GTK_CLIST (clist_satdb)); - - lb_sat = gtk_label_new (_("Satellite")); - gtk_widget_set_name (lb_sat, "lb_sat"); - gtk_widget_ref (lb_sat); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_sat", lb_sat, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_sat); - gtk_clist_set_column_widget (GTK_CLIST (clist_satdb), 0, lb_sat); - - lb_mode = gtk_label_new (_("Mode")); - gtk_widget_set_name (lb_mode, "lb_mode"); - gtk_widget_ref (lb_mode); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_mode", lb_mode, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_mode); - gtk_clist_set_column_widget (GTK_CLIST (clist_satdb), 1, lb_mode); - - lb_uplink = gtk_label_new (_("Uplink")); - gtk_widget_set_name (lb_uplink, "lb_uplink"); - gtk_widget_ref (lb_uplink); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_uplink", lb_uplink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_uplink); - gtk_clist_set_column_widget (GTK_CLIST (clist_satdb), 2, lb_uplink); - - lb_downlink = gtk_label_new (_("Downlink")); - gtk_widget_set_name (lb_downlink, "lb_downlink"); - gtk_widget_ref (lb_downlink); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_downlink", lb_downlink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_downlink); - gtk_clist_set_column_widget (GTK_CLIST (clist_satdb), 3, lb_downlink); - - lb_beacon = gtk_label_new (_("Beacon")); - gtk_widget_set_name (lb_beacon, "lb_beacon"); - gtk_widget_ref (lb_beacon); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_beacon", lb_beacon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_beacon); - gtk_clist_set_column_widget (GTK_CLIST (clist_satdb), 4, lb_beacon); - - vscrollbar_satdb = gtk_vscrollbar_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 0, 0, 0, 0))); - gtk_widget_set_name (vscrollbar_satdb, "vscrollbar_satdb"); - gtk_widget_ref (vscrollbar_satdb); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "vscrollbar_satdb", vscrollbar_satdb, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (vscrollbar_satdb); - gtk_fixed_put (GTK_FIXED (fixed9), vscrollbar_satdb, 382, 32); - gtk_widget_set_uposition (vscrollbar_satdb, 382, 32); - gtk_widget_set_usize (vscrollbar_satdb, 16, 302); - - frame7 = gtk_frame_new (NULL); - gtk_widget_set_name (frame7, "frame7"); - gtk_widget_ref (frame7); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "frame7", frame7, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (frame7); - gtk_fixed_put (GTK_FIXED (fixed9), frame7, 0, 336); - gtk_widget_set_uposition (frame7, 0, 336); - gtk_widget_set_usize (frame7, 400, 92); - - fixed10 = gtk_fixed_new (); - gtk_widget_set_name (fixed10, "fixed10"); - gtk_widget_ref (fixed10); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "fixed10", fixed10, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (fixed10); - gtk_container_add (GTK_CONTAINER (frame7), fixed10); - - tx_dbsat = gtk_entry_new (); - gtk_widget_set_name (tx_dbsat, "tx_dbsat"); - gtk_widget_ref (tx_dbsat); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "tx_dbsat", tx_dbsat, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_dbsat); - gtk_fixed_put (GTK_FIXED (fixed10), tx_dbsat, 8, 24); - gtk_widget_set_uposition (tx_dbsat, 8, 24); - gtk_widget_set_usize (tx_dbsat, 80, 20); - - tx_dbuplink = gtk_entry_new (); - gtk_widget_set_name (tx_dbuplink, "tx_dbuplink"); - gtk_widget_ref (tx_dbuplink); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "tx_dbuplink", tx_dbuplink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_dbuplink); - gtk_fixed_put (GTK_FIXED (fixed10), tx_dbuplink, 144, 24); - gtk_widget_set_uposition (tx_dbuplink, 144, 24); - gtk_widget_set_usize (tx_dbuplink, 76, 20); - - tx_dbdownlink = gtk_entry_new (); - gtk_widget_set_name (tx_dbdownlink, "tx_dbdownlink"); - gtk_widget_ref (tx_dbdownlink); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "tx_dbdownlink", tx_dbdownlink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_dbdownlink); - gtk_fixed_put (GTK_FIXED (fixed10), tx_dbdownlink, 228, 24); - gtk_widget_set_uposition (tx_dbdownlink, 228, 24); - gtk_widget_set_usize (tx_dbdownlink, 76, 20); - - tx_dbbeacon = gtk_entry_new (); - gtk_widget_set_name (tx_dbbeacon, "tx_dbbeacon"); - gtk_widget_ref (tx_dbbeacon); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "tx_dbbeacon", tx_dbbeacon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_dbbeacon); - gtk_fixed_put (GTK_FIXED (fixed10), tx_dbbeacon, 312, 24); - gtk_widget_set_uposition (tx_dbbeacon, 312, 24); - gtk_widget_set_usize (tx_dbbeacon, 76, 20); - - bt_dbadd = gtk_button_new_with_label (_("Add")); - gtk_widget_set_name (bt_dbadd, "bt_dbadd"); - gtk_widget_ref (bt_dbadd); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "bt_dbadd", bt_dbadd, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_dbadd); - gtk_fixed_put (GTK_FIXED (fixed10), bt_dbadd, 16, 56); - gtk_widget_set_uposition (bt_dbadd, 16, 56); - gtk_widget_set_usize (bt_dbadd, 64, 24); - - bt_dbupdate = gtk_button_new_with_label (_("Update")); - gtk_widget_set_name (bt_dbupdate, "bt_dbupdate"); - gtk_widget_ref (bt_dbupdate); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "bt_dbupdate", bt_dbupdate, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_dbupdate); - gtk_fixed_put (GTK_FIXED (fixed10), bt_dbupdate, 167, 56); - gtk_widget_set_uposition (bt_dbupdate, 167, 56); - gtk_widget_set_usize (bt_dbupdate, 64, 24); - - bt_dbdelete = gtk_button_new_with_label (_("Delete")); - gtk_widget_set_name (bt_dbdelete, "bt_dbdelete"); - gtk_widget_ref (bt_dbdelete); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "bt_dbdelete", bt_dbdelete, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_dbdelete); - gtk_fixed_put (GTK_FIXED (fixed10), bt_dbdelete, 317, 56); - gtk_widget_set_uposition (bt_dbdelete, 317, 56); - gtk_widget_set_usize (bt_dbdelete, 64, 24); - - lb_dbsat = gtk_label_new (_("Satellite")); - gtk_widget_set_name (lb_dbsat, "lb_dbsat"); - gtk_widget_ref (lb_dbsat); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_dbsat", lb_dbsat, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_dbsat); - gtk_fixed_put (GTK_FIXED (fixed10), lb_dbsat, 8, 6); - gtk_widget_set_uposition (lb_dbsat, 8, 6); - gtk_widget_set_usize (lb_dbsat, 80, 16); - - lb_dbmode = gtk_label_new (_("Mode")); - gtk_widget_set_name (lb_dbmode, "lb_dbmode"); - gtk_widget_ref (lb_dbmode); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_dbmode", lb_dbmode, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_dbmode); - gtk_fixed_put (GTK_FIXED (fixed10), lb_dbmode, 96, 6); - gtk_widget_set_uposition (lb_dbmode, 96, 6); - gtk_widget_set_usize (lb_dbmode, 40, 16); - - tx_dbmode = gtk_entry_new (); - gtk_widget_set_name (tx_dbmode, "tx_dbmode"); - gtk_widget_ref (tx_dbmode); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "tx_dbmode", tx_dbmode, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (tx_dbmode); - gtk_fixed_put (GTK_FIXED (fixed10), tx_dbmode, 96, 24); - gtk_widget_set_uposition (tx_dbmode, 96, 24); - gtk_widget_set_usize (tx_dbmode, 40, 20); - - lb_dbuplink = gtk_label_new (_("Uplink")); - gtk_widget_set_name (lb_dbuplink, "lb_dbuplink"); - gtk_widget_ref (lb_dbuplink); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_dbuplink", lb_dbuplink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_dbuplink); - gtk_fixed_put (GTK_FIXED (fixed10), lb_dbuplink, 144, 6); - gtk_widget_set_uposition (lb_dbuplink, 144, 6); - gtk_widget_set_usize (lb_dbuplink, 76, 16); - - lb_dbdownlink = gtk_label_new (_("Downlink")); - gtk_widget_set_name (lb_dbdownlink, "lb_dbdownlink"); - gtk_widget_ref (lb_dbdownlink); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_dbdownlink", lb_dbdownlink, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_dbdownlink); - gtk_fixed_put (GTK_FIXED (fixed10), lb_dbdownlink, 228, 6); - gtk_widget_set_uposition (lb_dbdownlink, 228, 6); - gtk_widget_set_usize (lb_dbdownlink, 76, 16); - - lb_dbbeacon = gtk_label_new (_("Beacon")); - gtk_widget_set_name (lb_dbbeacon, "lb_dbbeacon"); - gtk_widget_ref (lb_dbbeacon); - gtk_object_set_data_full (GTK_OBJECT (dialog_dbedit), "lb_dbbeacon", lb_dbbeacon, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_dbbeacon); - gtk_fixed_put (GTK_FIXED (fixed10), lb_dbbeacon, 312, 6); - gtk_widget_set_uposition (lb_dbbeacon, 312, 6); - gtk_widget_set_usize (lb_dbbeacon, 76, 16); - - gtk_signal_connect (GTK_OBJECT (dialog_dbedit), "delete_event", - GTK_SIGNAL_FUNC (on_dialog_dbedit_delete_event), - NULL); - gtk_signal_connect (GTK_OBJECT (clist_satdb), "select_row", - GTK_SIGNAL_FUNC (on_clist_satdb_select_row), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_dbadd), "clicked", - GTK_SIGNAL_FUNC (on_bt_dbadd_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_dbupdate), "clicked", - GTK_SIGNAL_FUNC (on_bt_dbupdate_clicked), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_dbdelete), "clicked", - GTK_SIGNAL_FUNC (on_bt_dbdelete_clicked), - NULL); - - return dialog_dbedit; -} - -GtkWidget* -create_dialog_about (void) -{ - GtkWidget *dialog_about; - GtkWidget *dialog_vbox3; - GtkWidget *hbox1; - GtkWidget *vbox2; - GtkWidget *frame_satpix; - GtkWidget *about_pixmap; - GtkWidget *vbox_about; - GtkWidget *lb_about_title; - GtkWidget *lb_about_desc; - GtkWidget *lb_about_version; - GtkWidget *lb_about_by; - GtkWidget *lb_about_author; - GtkWidget *lb_about_email; - GtkWidget *lb_about_web; - GtkWidget *dialog_action_area3; - GtkWidget *bt_about_ok; - - dialog_about = gtk_dialog_new (); - gtk_widget_set_name (dialog_about, "dialog_about"); - gtk_object_set_data (GTK_OBJECT (dialog_about), "dialog_about", dialog_about); - gtk_window_set_title (GTK_WINDOW (dialog_about), _("About gsat")); - gtk_window_set_policy (GTK_WINDOW (dialog_about), TRUE, TRUE, FALSE); - - dialog_vbox3 = GTK_DIALOG (dialog_about)->vbox; - gtk_widget_set_name (dialog_vbox3, "dialog_vbox3"); - gtk_object_set_data (GTK_OBJECT (dialog_about), "dialog_vbox3", dialog_vbox3); - gtk_widget_show (dialog_vbox3); - - hbox1 = gtk_hbox_new (FALSE, 0); - gtk_widget_set_name (hbox1, "hbox1"); - gtk_widget_ref (hbox1); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "hbox1", hbox1, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (hbox1); - gtk_box_pack_start (GTK_BOX (dialog_vbox3), hbox1, TRUE, TRUE, 0); - - vbox2 = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox2, "vbox2"); - gtk_widget_ref (vbox2); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "vbox2", vbox2, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (vbox2); - gtk_box_pack_start (GTK_BOX (hbox1), vbox2, TRUE, TRUE, 8); - - frame_satpix = gtk_frame_new (NULL); - gtk_widget_set_name (frame_satpix, "frame_satpix"); - gtk_widget_ref (frame_satpix); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "frame_satpix", frame_satpix, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (frame_satpix); - gtk_box_pack_start (GTK_BOX (vbox2), frame_satpix, FALSE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (frame_satpix), 2); - - about_pixmap = create_pixmap (dialog_about, NULL); - gtk_widget_set_name (about_pixmap, "about_pixmap"); - gtk_widget_ref (about_pixmap); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "about_pixmap", about_pixmap, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (about_pixmap); - gtk_container_add (GTK_CONTAINER (frame_satpix), about_pixmap); - gtk_misc_set_padding (GTK_MISC (about_pixmap), 3, 2); - - vbox_about = gtk_vbox_new (FALSE, 0); - gtk_widget_set_name (vbox_about, "vbox_about"); - gtk_widget_ref (vbox_about); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "vbox_about", vbox_about, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (vbox_about); - gtk_box_pack_start (GTK_BOX (hbox1), vbox_about, TRUE, TRUE, 0); - gtk_container_set_border_width (GTK_CONTAINER (vbox_about), 8); - - lb_about_title = gtk_label_new (_("G S A T")); - gtk_widget_set_name (lb_about_title, "lb_about_title"); - gtk_widget_ref (lb_about_title); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "lb_about_title", lb_about_title, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_about_title); - gtk_box_pack_start (GTK_BOX (vbox_about), lb_about_title, FALSE, FALSE, 0); - - lb_about_desc = gtk_label_new (_("A realtime satellite tracking client\nprogram to KD2BD's predict.")); - gtk_widget_set_name (lb_about_desc, "lb_about_desc"); - gtk_widget_ref (lb_about_desc); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "lb_about_desc", lb_about_desc, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_about_desc); - gtk_box_pack_start (GTK_BOX (vbox_about), lb_about_desc, FALSE, FALSE, 0); - - lb_about_version = gtk_label_new (_("Version 1.1.0")); - gtk_widget_set_name (lb_about_version, "lb_about_version"); - gtk_widget_ref (lb_about_version); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "lb_about_version", lb_about_version, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_about_version); - gtk_box_pack_start (GTK_BOX (vbox_about), lb_about_version, FALSE, FALSE, 0); - - lb_about_by = gtk_label_new (_("by")); - gtk_widget_set_name (lb_about_by, "lb_about_by"); - gtk_widget_ref (lb_about_by); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "lb_about_by", lb_about_by, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_about_by); - gtk_box_pack_start (GTK_BOX (vbox_about), lb_about_by, FALSE, FALSE, 0); - - lb_about_author = gtk_label_new (_("Xavier Crehueras EB3CZS")); - gtk_widget_set_name (lb_about_author, "lb_about_author"); - gtk_widget_ref (lb_about_author); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "lb_about_author", lb_about_author, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_about_author); - gtk_box_pack_start (GTK_BOX (vbox_about), lb_about_author, FALSE, FALSE, 0); - - lb_about_email = gtk_label_new (_("Email: eb3czs@qsl.net")); - gtk_widget_set_name (lb_about_email, "lb_about_email"); - gtk_widget_ref (lb_about_email); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "lb_about_email", lb_about_email, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_about_email); - gtk_box_pack_start (GTK_BOX (vbox_about), lb_about_email, FALSE, FALSE, 0); - - lb_about_web = gtk_label_new (""); - gtk_widget_set_name (lb_about_web, "lb_about_web"); - gtk_widget_ref (lb_about_web); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "lb_about_web", lb_about_web, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (lb_about_web); - gtk_box_pack_start (GTK_BOX (vbox_about), lb_about_web, FALSE, FALSE, 0); - - dialog_action_area3 = GTK_DIALOG (dialog_about)->action_area; - gtk_widget_set_name (dialog_action_area3, "dialog_action_area3"); - gtk_object_set_data (GTK_OBJECT (dialog_about), "dialog_action_area3", dialog_action_area3); - gtk_widget_show (dialog_action_area3); - gtk_container_set_border_width (GTK_CONTAINER (dialog_action_area3), 10); - - bt_about_ok = gtk_button_new_with_label (_("OK")); - gtk_widget_set_name (bt_about_ok, "bt_about_ok"); - gtk_widget_ref (bt_about_ok); - gtk_object_set_data_full (GTK_OBJECT (dialog_about), "bt_about_ok", bt_about_ok, - (GtkDestroyNotify) gtk_widget_unref); - gtk_widget_show (bt_about_ok); - gtk_box_pack_start (GTK_BOX (dialog_action_area3), bt_about_ok, TRUE, FALSE, 0); - - gtk_signal_connect (GTK_OBJECT (dialog_about), "delete_event", - GTK_SIGNAL_FUNC (on_dialog_about_delete_event), - NULL); - gtk_signal_connect (GTK_OBJECT (bt_about_ok), "clicked", - GTK_SIGNAL_FUNC (on_bt_about_ok_clicked), - NULL); - - return dialog_about; -} - diff --git a/clients/gsat-1.1.0/src/interface.h b/clients/gsat-1.1.0/src/interface.h deleted file mode 100644 index 8144b47..0000000 --- a/clients/gsat-1.1.0/src/interface.h +++ /dev/null @@ -1,10 +0,0 @@ -/* - * DO NOT EDIT THIS FILE - it is generated by Glade. - */ - -GtkWidget* create_mainwindow (void); -GtkWidget* create_dialog_preferences (void); -GtkWidget* create_dialog_connect (void); -GtkWidget* create_dialog_azel_graph (void); -GtkWidget* create_dialog_dbedit (void); -GtkWidget* create_dialog_about (void); diff --git a/clients/gsat-1.1.0/src/main.c b/clients/gsat-1.1.0/src/main.c deleted file mode 100644 index 7220292..0000000 --- a/clients/gsat-1.1.0/src/main.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include -#include - -#include "interface.h" -#include "support.h" - -#include "comms.h" -#include "graphics.h" -#include "prefs.h" -#include "plugins.h" - -#include "globals.h" - -int -main (int argc, char *argv[]) -{ - GtkWidget *maparea; - GtkWidget *widget; - GtkAdjustment *vadjust; - char servername[256]; - int optn; - gpointer *satname; - GdkPixmap *ao27pixmap; - -#ifdef ENABLE_NLS - bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); - textdomain (PACKAGE); -#endif - -/* gtk_set_locale (); */ - gtk_init (&argc, &argv); - - /* Set a small font size */ - gtk_rc_parse_string("style \"customfonts\" \n{\n font = \"-adobe-helvetica-medium-r-normal-*-10-*-*-*-p-*-iso8859-1\"\n }\n widget_class \"*GtkLabel\" style \"customfonts\"\n widget_class \"*GtkEntry\" style \"customfonts\"\n"); - - /* default time mode = localtime */ - timeUTC=FALSE; - drawgrid=FALSE; - - /* Get hostname of the predict server from ENV variable */ - if( getenv("PREDICTHOST")!=NULL ) { - strncpy( servername, getenv("PREDICTHOST"),255 ); - servername[255]='\0'; - predicthost=servername; - } - else { - strcpy( servername, "localhost" ); - predicthost=servername; - } - - /* Get plugins directory from ENV variable */ - if( getenv("GSATPLUGINSDIR")!=NULL ) { - strncpy( pluginsdir, getenv("GSATPLUGINSDIR"),255 ); - pluginsdir[255]='\0'; - } - else { - strcpy( pluginsdir, DEFAULTPLUGINSDIR ); - } - - /* Parse command line options */ - optn = 1; - if( argc > 1 ) - while( optn < argc ) { - if( argv[optn][0] == '-' ) - switch (argv[optn][1]) { - case 'u': - timeUTC = TRUE; - break; - case 'l': - timeUTC = FALSE; - break; - case 's': - if( argc > optn+1 ) { - strncpy( servername, argv[optn+1],255 ); - servername[255]='\0'; - predicthost=servername; - optn++; - } - else { - fprintf( stderr, "ERROR: you must specify a predict host name.\n"); - exit( 1 ); - } - break; - case 'g': - drawgrid=TRUE; - break; - case 'h': - default: - printf("Usage: gsat [-u] [-l] [-g] [-h] [-s predictservername]\n"); - exit( 1 ); - } - optn++; - } - - add_pixmap_directory (PACKAGE_DATA_DIR "/pixmaps"); - add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); - - /* Load drawing font */ - drawfont=gdk_font_load("-adobe-helvetica-medium-r-normal-*-8-*-*-*-p-*-iso8859-1"); - - /* - * Main window creation and graphics initialization - * - */ - - mainwindow = create_mainwindow(); - dialog_connect = create_dialog_connect(); - dialog_preferences = create_dialog_preferences(); - dialog_azel_graph = create_dialog_azel_graph(); - dialog_dbedit = create_dialog_dbedit(); - dialog_about = create_dialog_about(); - - /* Set program version in main window title and about dialog */ - gtk_window_set_title( GTK_WINDOW(mainwindow), - "gsat "GSATVERSION": Real-Time Satellite Tracking Display"); - widget=lookup_widget( dialog_about, "lb_about_version" ); - gtk_label_set_text(GTK_LABEL(widget),"Version "GSATVERSION); - - /* Set initial status of control buttons */ - widget=lookup_widget( mainwindow, "cb_connect" ); - gtk_widget_set_sensitive( widget, TRUE ); - widget=lookup_widget( mainwindow, "cb_disconnect" ); - gtk_widget_set_sensitive( widget, FALSE ); - widget=lookup_widget( mainwindow, "tb_footpsat" ); - gtk_widget_set_sensitive( widget, FALSE ); - widget=lookup_widget( mainwindow, "tb_footpqth" ); - gtk_widget_set_sensitive( widget, FALSE ); - widget=lookup_widget( mainwindow, "tb_track" ); - gtk_widget_set_sensitive( widget, FALSE ); - widget=lookup_widget( mainwindow, "tb_autofreq" ); - gtk_widget_set_sensitive( widget, FALSE ); - widget=lookup_widget( mainwindow, "bt_azelgraph" ); - gtk_widget_set_sensitive( widget, FALSE ); - widget=lookup_widget( mainwindow, "bt_dbedit" ); - gtk_widget_set_sensitive( widget, TRUE ); - - /* Now we are ready to show the main window */ - gtk_widget_show(mainwindow); - - /* Setup status bar */ - show_status("Not connected"); - - /* Satellite DB edit window setup */ - widget=lookup_widget( dialog_dbedit, "vscrollbar_satdb" ); - vadjust=gtk_range_get_adjustment(GTK_RANGE(widget)); - widget=lookup_widget( dialog_dbedit, "clist_satdb" ); - gtk_clist_set_vadjustment(GTK_CLIST(widget), vadjust); - gtk_clist_column_titles_passive(GTK_CLIST(widget)); - selectedrow=-1; - - /* Init graphic buffers */ - /* Create Source map */ - maparea=lookup_widget( mainwindow, "maparea" ); - sourcemap = gdk_pixmap_create_from_xpm_d( maparea->window, NULL, NULL, worldmap ); - - /* Create the draw map */ - drawmap = gdk_pixmap_new( maparea->window, MAPSIZEX, MAPSIZEY, -1 ); - - /* Create the az/el draw area */ - sourceazel = gdk_pixmap_new( maparea->window, AZELSIZEX, AZELSIZEY, -1 ); - drawazel = gdk_pixmap_new( maparea->window, AZELSIZEX, AZELSIZEY, -1 ); - - widget=lookup_widget( dialog_about, "about_pixmap" ); - ao27pixmap = gdk_pixmap_create_from_xpm_d(mainwindow->window, NULL, NULL, (gchar **)&ao27_small_xpm ); - gtk_pixmap_set( GTK_PIXMAP(widget), ao27pixmap, NULL ); - - /* setup some graphics contexts to draw to drawmap */ - yellowclr.red=0xffff; - yellowclr.green=0xffff; - yellowclr.blue=0x0000; - gdk_color_alloc(gdk_colormap_get_system (), &yellowclr); - yellow_gc = gdk_gc_new( drawmap ); - gdk_gc_set_foreground( yellow_gc, &yellowclr ); - redclr.red=0xaaaa; - redclr.green=0x0000; - redclr.blue=0x0000; - gdk_color_alloc(gdk_colormap_get_system (), &redclr); - red_gc = gdk_gc_new( drawmap ); - gdk_gc_set_foreground( red_gc, &redclr ); - purpleclr.red=0xffff; - purpleclr.green=0x0000; - purpleclr.blue=0xffff; - gdk_color_alloc(gdk_colormap_get_system (), &purpleclr); - purple_gc = gdk_gc_new( drawmap ); - gdk_gc_set_foreground( purple_gc, &purpleclr ); - cyanclr.red=0x0000; - cyanclr.green=0xffff; - cyanclr.blue=0xffff; - gdk_color_alloc(gdk_colormap_get_system (), &cyanclr); - cyan_gc = gdk_gc_new( drawmap ); - gdk_gc_set_foreground( cyan_gc, &cyanclr ); - blueclr.red=0x0000; - blueclr.green=0x8888; - blueclr.blue=0xffff; - gdk_color_alloc(gdk_colormap_get_system (), &blueclr); - blue_gc = gdk_gc_new( drawmap ); - gdk_gc_set_foreground( blue_gc, &blueclr ); - - /* Draw initial AZ/EL graphic */ - gdk_draw_rectangle( sourceazel, mainwindow->style->white_gc, TRUE, 0, 0, AZELSIZEX, AZELSIZEY ); - gdk_draw_arc( sourceazel, mainwindow->style->black_gc, FALSE, 0, 0, - AZELSIZEX-1, AZELSIZEY-1, 0, 23040); - gdk_draw_arc( sourceazel, mainwindow->style->black_gc, FALSE, - AZELSIZEX/2/3, AZELSIZEY/2/3, - AZELSIZEX*2/3, AZELSIZEY*2/3, 0, 23040); - gdk_draw_arc( sourceazel, mainwindow->style->black_gc, FALSE, - AZELSIZEX/3, AZELSIZEY/3, - AZELSIZEX/3, AZELSIZEY/3, 0, 23040); - gdk_draw_line( sourceazel, red_gc, 0, AZELSIZEY/2, AZELSIZEX, AZELSIZEY/2 ); - gdk_draw_line( sourceazel, red_gc, AZELSIZEX/2, 0, AZELSIZEX/2, AZELSIZEY ); - gdk_draw_string( sourceazel, drawfont, mainwindow->style->black_gc, AZELSIZEX/2+2, 8, "N" ); - gdk_draw_string( sourceazel, drawfont, mainwindow->style->black_gc, AZELSIZEX/2+2, AZELSIZEY-4, "S" ); - gdk_draw_string( sourceazel, drawfont, mainwindow->style->black_gc, 2, AZELSIZEY/2-4, "W" ); - gdk_draw_string( sourceazel, drawfont, mainwindow->style->black_gc, AZELSIZEX-10, AZELSIZEY/2-4, "E" ); - azelgraph=FALSE; - - /* copy original map to draw map */ - gdk_draw_pixmap( drawmap, yellow_gc, sourcemap, 0, 0, 0, 0, MAPSIZEX, MAPSIZEY ); - - /* Initialize plugins */ - search_radio_plugins(); - search_rotor_plugins(); - - /* Open preferences */ - open_preferences(); - - /* enable processing */ - gtk_timeout_add( 500, timeout_callback, mainwindow ); - - /* go into main loop */ - gtk_main (); - - /* don't leave plugins open */ - close_uplink_plugin(); - close_downlink_plugin(); - - /* if we are connected, close network socket */ - if( connected == TRUE ) { - /* Empty the satellite list and free memory */ - satlist=g_list_first( satlist ); - while( g_list_length( satlist ) > 0 ) { - satname=satlist->data; - satlist=g_list_remove( satlist, satname ); - g_free( satname ); - } - close(netsocket); - } - - return 0; -} diff --git a/clients/gsat-1.1.0/src/plugins.c b/clients/gsat-1.1.0/src/plugins.c deleted file mode 100644 index d4b129c..0000000 --- a/clients/gsat-1.1.0/src/plugins.c +++ /dev/null @@ -1,451 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -/* Plugin functions */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "support.h" -#include "comms.h" - -#include "globals.h" - -void close_uplink_plugin( void ) -{ - if(uppluginenable==FALSE) - return; - - /* close rig if it was open before closing plugin */ - if( enableupdoppler==TRUE ) { - (*plugin_close_rig_uplink)(); - enableupdoppler=FALSE; - } - - dlclose(upplugin_handle); - - uppluginenable=FALSE; -} - -int open_uplink_plugin( char * plugin ) -{ - char * error; - - /* if it's already open, close it first */ - if( uppluginenable==TRUE ) - close_uplink_plugin(); - - upplugin_handle=dlopen( plugin, RTLD_NOW ); - if( upplugin_handle==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error opening uplink plugin: %s\n",error); - return FALSE; - } - - plugin_info_uplink=dlsym(upplugin_handle,"plugin_info"); - if( plugin_info_uplink==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_info_uplink: %s\n",error); - return FALSE; - } - - plugin_open_rig_uplink=dlsym(upplugin_handle,"plugin_open_rig"); - if( plugin_open_rig_uplink==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_open_rig_uplink: %s\n",error); - return FALSE; - } - - plugin_close_rig_uplink=dlsym(upplugin_handle,"plugin_close_rig"); - if( plugin_close_rig_uplink==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_close_rig_uplink: %s\n",error); - return FALSE; - } - - plugin_set_uplink_frequency=dlsym(upplugin_handle,"plugin_set_uplink_frequency"); - if( plugin_set_uplink_frequency==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_set_uplink_frequency: %s\n",error); - return FALSE; - } - - uppluginenable=TRUE; - - return TRUE; -} - -void close_downlink_plugin( void ) -{ - if(downpluginenable==FALSE) - return; - - /* close rig if it was open before closing plugin */ - if( enabledowndoppler==TRUE ) { - (*plugin_close_rig_downlink)(); - enabledowndoppler=FALSE; - } - - dlclose(downplugin_handle); - - downpluginenable=FALSE; -} - -int open_downlink_plugin( char * plugin ) -{ - char * error; - - /* if it's already open, close it first */ - if( downpluginenable==TRUE ) - close_downlink_plugin(); - - downplugin_handle=dlopen( plugin, RTLD_NOW ); - if( downplugin_handle==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error opening downlink plugin: %s\n",error); - return FALSE; - } - - plugin_info_downlink=dlsym(downplugin_handle,"plugin_info"); - if( plugin_info_downlink==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_info_downlink: %s\n",error); - return FALSE; - } - plugin_open_rig_downlink=dlsym(downplugin_handle,"plugin_open_rig"); - if( plugin_open_rig_downlink==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_open_rig_downlink: %s\n",error); - return FALSE; - } - plugin_close_rig_downlink=dlsym(downplugin_handle,"plugin_close_rig"); - if( plugin_close_rig_downlink==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_close_rig_downlink: %s\n",error); - return FALSE; - } - plugin_set_downlink_frequency=dlsym(downplugin_handle,"plugin_set_downlink_frequency"); - if( plugin_set_downlink_frequency==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_set_downlink_frequency: %s\n",error); - return FALSE; - } - - downpluginenable=TRUE; - - return TRUE; -} - -void close_beacon_plugin( void ) -{ - if(beaconpluginenable==FALSE) - return; - - /* close rig if it was open before closing plugin */ - if( enablebeacondoppler==TRUE ) { - (*plugin_close_rig_beacon)(); - enablebeacondoppler=FALSE; - } - - dlclose(beaconplugin_handle); - - beaconpluginenable=FALSE; -} - -int open_beacon_plugin( char * plugin ) -{ - char * error; - - /* if it's already open, close it first */ - if( beaconpluginenable==TRUE ) - close_beacon_plugin(); - - beaconplugin_handle=dlopen( plugin, RTLD_NOW ); - if( beaconplugin_handle==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error opening beacon plugin: %s\n",error); - return FALSE; - } - - plugin_info_beacon=dlsym(beaconplugin_handle,"plugin_info"); - if( plugin_info_beacon==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_info_beacon: %s\n",error); - return FALSE; - } - plugin_open_rig_beacon=dlsym(beaconplugin_handle,"plugin_open_rig"); - if( plugin_open_rig_beacon==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_open_rig_beacon: %s\n",error); - return FALSE; - } - plugin_close_rig_beacon=dlsym(beaconplugin_handle,"plugin_close_rig"); - if( plugin_close_rig_beacon==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_close_rig_beacon: %s\n",error); - return FALSE; - } - plugin_set_beacon_frequency=dlsym(beaconplugin_handle,"plugin_set_downlink_frequency"); - if( plugin_set_beacon_frequency==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_set_beacon_frequency: %s\n",error); - return FALSE; - } - - beaconpluginenable=TRUE; - - return TRUE; -} - -int check_radio_plugin_file( const struct dirent * plugdir ) -{ - return ! strncmp(plugdir->d_name,"radio_",6); -} - -void search_radio_plugins( void ) -{ - struct dirent **namelist; - int n, i; - GtkWidget * widget; - char filename[256]; - DIR * dir; - - /* empty plugin list if it was created */ - n = g_list_length(pluginlist); - if( n > 0 ) { - pluginlist=g_list_first( pluginlist ); - for( i=0; idata ); - for( i=0; id_name); - if(open_downlink_plugin(filename)==TRUE) { - strncpy( pluginfiles[i+1], namelist[i]->d_name, 29); - strncpy( plugindescriptions[i+1], (*plugin_info_downlink)(), 29); - pluginlist=g_list_append( pluginlist, plugindescriptions[i+1] ); - close_downlink_plugin(); - } - } - - /* Attach plugin list */ - widget=lookup_widget( dialog_preferences, "combo_upplugin" ); - gtk_combo_set_popdown_strings( GTK_COMBO(widget), pluginlist); - widget=lookup_widget( dialog_preferences, "combo_downplugin" ); - gtk_combo_set_popdown_strings( GTK_COMBO(widget), pluginlist); - widget=lookup_widget( dialog_preferences, "combo_beaconplugin" ); - gtk_combo_set_popdown_strings( GTK_COMBO(widget), pluginlist); -} - -void close_rotor_plugin( void ) -{ - if(rotorpluginenable==FALSE) - return; - - /* close rotor if it was open before closing plugin */ - if( enablerotor==TRUE ) { - (*plugin_close_rotor)(); - enablerotor=FALSE; - } - - dlclose(rotorplugin_handle); - - rotorpluginenable=FALSE; -} - -int open_rotor_plugin( char * plugin ) -{ - char * error; - - /* if it's already open, close it first */ - if( rotorpluginenable==TRUE ) - close_rotor_plugin(); - - rotorplugin_handle=dlopen( plugin, RTLD_NOW ); - if( rotorplugin_handle==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error opening rotor plugin: %s\n",error); - return FALSE; - } - - plugin_info_rotor=dlsym(rotorplugin_handle,"plugin_info"); - if( plugin_info_rotor==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_info_rotor: %s\n",error); - return FALSE; - } - plugin_open_rotor=dlsym(rotorplugin_handle,"plugin_open_rotor"); - if( plugin_open_rotor==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_open_rotor: %s\n",error); - return FALSE; - } - plugin_close_rotor=dlsym(rotorplugin_handle,"plugin_close_rotor"); - if( plugin_close_rotor==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_close_rotor: %s\n",error); - return FALSE; - } - plugin_set_rotor=dlsym(rotorplugin_handle,"plugin_set_rotor"); - if( plugin_set_rotor==NULL ) - if( (error=dlerror()) != NULL ) { - fprintf(stderr,"Error: plugin_set_rotor: %s\n",error); - return FALSE; - } - - rotorpluginenable=TRUE; - - return TRUE; -} - -int check_rotor_plugin_file( const struct dirent * plugdir ) -{ - return ! strncmp(plugdir->d_name,"rotor_",6); -} - -void search_rotor_plugins( void ) -{ - struct dirent **namelist; - int n, i; - GtkWidget * widget; - char filename[256]; - DIR * dir; - - /* empty plugin list if it was created */ - n = g_list_length(rotorpluginlist); - if( n > 0 ) { - rotorpluginlist=g_list_first( rotorpluginlist ); - for( i=0; idata ); - for( i=0; id_name); - if(open_rotor_plugin(filename)==TRUE) { - strncpy( rotorpluginfiles[i+1], namelist[i]->d_name, 29); - strncpy( rotorplugindescriptions[i+1], (*plugin_info_rotor)(), 29); - rotorpluginlist=g_list_append(rotorpluginlist, rotorplugindescriptions[i+1]); - close_rotor_plugin(); - } - } - - /* Attach plugin list */ - widget=lookup_widget( dialog_preferences, "combo_rotorplugin" ); - gtk_combo_set_popdown_strings( GTK_COMBO(widget), rotorpluginlist); -} diff --git a/clients/gsat-1.1.0/src/plugins.h b/clients/gsat-1.1.0/src/plugins.h deleted file mode 100644 index 2d934d6..0000000 --- a/clients/gsat-1.1.0/src/plugins.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -/* Plugin functions */ - -void close_uplink_plugin( void ); -int open_uplink_plugin( char * plugin ); -void close_downlink_plugin( void ); -int open_downlink_plugin( char * plugin ); -void close_beacon_plugin( void ); -int open_beacon_plugin( char * plugin ); -int check_radio_plugin_file( const void * plugdir ); -void search_radio_plugins( void ); -void close_rotor_plugin( void ); -int open_rotor_plugin( char * plugin ); -int check_rotor_plugin_file( const void * plugdir ); -void search_rotor_plugins( void ); diff --git a/clients/gsat-1.1.0/src/prefs.c b/clients/gsat-1.1.0/src/prefs.c deleted file mode 100644 index 1181f17..0000000 --- a/clients/gsat-1.1.0/src/prefs.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * gsat - a realtime satellite tracking graphical frontend to predict - * - * Copyright (C) 2001 by Xavier Crehueras, EB3CZS - * - * 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. - * - * Look at the README for more information on the program. - */ - -/* User preferences functions */ - -#include -#include -#include -#include -#include - -#include "support.h" -#include "plugins.h" - -#include "globals.h" - -void open_preferences( void ) -{ - char filename[256]; - FILE * fd; - int n, state; - GtkWidget *widget; - - strncpy(filename,getenv("HOME"),256); - strcat(filename,"/.gsat.prefs"); - - if((fd=fopen( filename, "r" ))==NULL) { - strncpy(filename,GSATLIBDIR"/gsat.prefs",256); - if((fd=fopen( filename, "r" ))==NULL) - return; - } - - prefs_grid[0]=fgetc(fd); - prefs_utctime[0]=fgetc(fd); - prefs_satfootprint[0]=fgetc(fd); - prefs_qthfootprint[0]=fgetc(fd); - prefs_track[0]=fgetc(fd); - prefs_autofreq[0]=fgetc(fd); - fgetc(fd); - fgets(prefs_aos_command, 1024, fd); - prefs_aos_command[strlen(prefs_aos_command)-1]='\0'; - fgets(prefs_los_command, 1024, fd); - prefs_los_command[strlen(prefs_los_command)-1]='\0'; - fgets(prefs_down_plugin, 256, fd); - prefs_down_plugin[strlen(prefs_down_plugin)-1]='\0'; - fgets(prefs_down_plugin_config, 256, fd); - prefs_down_plugin_config[strlen(prefs_down_plugin_config)-1]='\0'; - fgets(prefs_up_plugin, 256, fd); - prefs_up_plugin[strlen(prefs_up_plugin)-1]='\0'; - fgets(prefs_up_plugin_config, 256, fd); - prefs_up_plugin_config[strlen(prefs_up_plugin_config)-1]='\0'; - fgets(prefs_beacon_plugin, 256, fd); - prefs_beacon_plugin[strlen(prefs_beacon_plugin)-1]='\0'; - fgets(prefs_beacon_plugin_config, 256, fd); - prefs_beacon_plugin_config[strlen(prefs_beacon_plugin_config)-1]='\0'; - fgets(prefs_rotor_plugin, 256, fd); - prefs_rotor_plugin[strlen(prefs_rotor_plugin)-1]='\0'; - fgets(prefs_rotor_plugin_config, 256, fd); - prefs_rotor_plugin_config[strlen(prefs_rotor_plugin_config)-1]='\0'; - fclose( fd ); - - if(strcmp(prefs_down_plugin, "None")!=0) - for(n=0; n -#endif - -#include -#include -#include -#include - -#include - -#include "support.h" - -/* This is an internally used function to check if a pixmap file exists. */ -static gchar* check_file_exists (const gchar *directory, - const gchar *filename); - -/* This is an internally used function to create pixmaps. */ -static GtkWidget* create_dummy_pixmap (GtkWidget *widget); - -GtkWidget* -lookup_widget (GtkWidget *widget, - const gchar *widget_name) -{ - GtkWidget *parent, *found_widget; - - for (;;) - { - if (GTK_IS_MENU (widget)) - parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); - else - parent = widget->parent; - if (parent == NULL) - break; - widget = parent; - } - - found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget), - widget_name); - if (!found_widget) - g_warning ("Widget not found: %s", widget_name); - return found_widget; -} - -/* This is a dummy pixmap we use when a pixmap can't be found. */ -static char *dummy_pixmap_xpm[] = { -/* columns rows colors chars-per-pixel */ -"1 1 1 1", -" c None", -/* pixels */ -" " -}; - -/* This is an internally used function to create pixmaps. */ -static GtkWidget* -create_dummy_pixmap (GtkWidget *widget) -{ - GdkColormap *colormap; - GdkPixmap *gdkpixmap; - GdkBitmap *mask; - GtkWidget *pixmap; - - colormap = gtk_widget_get_colormap (widget); - gdkpixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &mask, - NULL, dummy_pixmap_xpm); - if (gdkpixmap == NULL) - g_error ("Couldn't create replacement pixmap."); - pixmap = gtk_pixmap_new (gdkpixmap, mask); - gdk_pixmap_unref (gdkpixmap); - gdk_bitmap_unref (mask); - return pixmap; -} - -static GList *pixmaps_directories = NULL; - -/* Use this function to set the directory containing installed pixmaps. */ -void -add_pixmap_directory (const gchar *directory) -{ - pixmaps_directories = g_list_prepend (pixmaps_directories, - g_strdup (directory)); -} - -/* This is an internally used function to create pixmaps. */ -GtkWidget* -create_pixmap (GtkWidget *widget, - const gchar *filename) -{ - gchar *found_filename = NULL; - GdkColormap *colormap; - GdkPixmap *gdkpixmap; - GdkBitmap *mask; - GtkWidget *pixmap; - GList *elem; - - if (!filename || !filename[0]) - return create_dummy_pixmap (widget); - - /* We first try any pixmaps directories set by the application. */ - elem = pixmaps_directories; - while (elem) - { - found_filename = check_file_exists ((gchar*)elem->data, filename); - if (found_filename) - break; - elem = elem->next; - } - - /* If we haven't found the pixmap, try the source directory. */ - if (!found_filename) - { - found_filename = check_file_exists ("../pixmaps", filename); - } - - if (!found_filename) - { - g_warning (_("Couldn't find pixmap file: %s"), filename); - return create_dummy_pixmap (widget); - } - - colormap = gtk_widget_get_colormap (widget); - gdkpixmap = gdk_pixmap_colormap_create_from_xpm (NULL, colormap, &mask, - NULL, found_filename); - if (gdkpixmap == NULL) - { - g_warning (_("Error loading pixmap file: %s"), found_filename); - g_free (found_filename); - return create_dummy_pixmap (widget); - } - g_free (found_filename); - pixmap = gtk_pixmap_new (gdkpixmap, mask); - gdk_pixmap_unref (gdkpixmap); - gdk_bitmap_unref (mask); - return pixmap; -} - -/* This is an internally used function to check if a pixmap file exists. */ -static gchar* -check_file_exists (const gchar *directory, - const gchar *filename) -{ - gchar *full_filename; - struct stat s; - gint status; - - full_filename = (gchar*) g_malloc (strlen (directory) + 1 - + strlen (filename) + 1); - strcpy (full_filename, directory); - strcat (full_filename, G_DIR_SEPARATOR_S); - strcat (full_filename, filename); - - status = stat (full_filename, &s); - if (status == 0 && S_ISREG (s.st_mode)) - return full_filename; - g_free (full_filename); - return NULL; -} - diff --git a/clients/gsat-1.1.0/src/support.h b/clients/gsat-1.1.0/src/support.h deleted file mode 100644 index 931bc5a..0000000 --- a/clients/gsat-1.1.0/src/support.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * DO NOT EDIT THIS FILE - it is generated by Glade. - */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -/* - * Standard gettext macros. - */ -#ifdef ENABLE_NLS -# include -# undef _ -# define _(String) dgettext (PACKAGE, String) -# ifdef gettext_noop -# define N_(String) gettext_noop (String) -# else -# define N_(String) (String) -# endif -#else -# define textdomain(String) (String) -# define gettext(String) (String) -# define dgettext(Domain,Message) (Message) -# define dcgettext(Domain,Message,Type) (Message) -# define bindtextdomain(Domain,Directory) (Domain) -# define _(String) (String) -# define N_(String) (String) -#endif - - -/* - * Public Functions. - */ - -/* - * This function returns a widget in a component created by Glade. - * Call it with the toplevel widget in the component (i.e. a window/dialog), - * or alternatively any widget in the component, and the name of the widget - * you want returned. - */ -GtkWidget* lookup_widget (GtkWidget *widget, - const gchar *widget_name); - -/* get_widget() is deprecated. Use lookup_widget instead. */ -#define get_widget lookup_widget - -/* Use this function to set the directory containing installed pixmaps. */ -void add_pixmap_directory (const gchar *directory); - - -/* - * Private Functions. - */ - -/* This is used to create the pixmaps in the interface. */ -GtkWidget* create_pixmap (GtkWidget *widget, - const gchar *filename); - diff --git a/clients/gsat-1.1.0/stamp-h b/clients/gsat-1.1.0/stamp-h deleted file mode 100644 index 9788f70..0000000 --- a/clients/gsat-1.1.0/stamp-h +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/clients/gsat-1.1.0/stamp-h.in b/clients/gsat-1.1.0/stamp-h.in deleted file mode 100644 index 9788f70..0000000 --- a/clients/gsat-1.1.0/stamp-h.in +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/clients/kep_reload/INSTALL b/clients/kep_reload/INSTALL deleted file mode 100644 index dae6996..0000000 --- a/clients/kep_reload/INSTALL +++ /dev/null @@ -1,40 +0,0 @@ -Building and Installating "kep_reload" -====================================== - -To build "kep_reload", simply invoke the "build" script as follows: - - ./build - -You do not need to be root to build "kep_reload". - -To run "kep_reload" globally on a multiuser system, it must be -installed in a publically accessible directory within the $PATH -of your users. To so this, simply invoke the "install" script -from this directory as follows: - - ./install - -This must be done as root. - -Once the program has been installed, it may be modified and rebuilt -at any time by invoking the "build" script once again. It is not -necessary to re-run "install" script or su to root every time -the program is modified. HOWEVER, you may wish to protect -the installation directory used by this program to prevent -unauthorized modification and compilation of the source -code when installed on a multiuser system. - -If you are root, and are installing "kep_reload" for the first time, -you may build and install this application with just one command by -involking the "install" script as follows: - - ./install - -See the README file for more information on the use and capabilities -of this program. - - -Happy Tracking! - -73, de John, KD2BD - diff --git a/clients/kep_reload/README b/clients/kep_reload/README deleted file mode 100644 index 5ff4b9d..0000000 --- a/clients/kep_reload/README +++ /dev/null @@ -1,24 +0,0 @@ -"kep_reload" is a simple utility that forces an immediate reload -of PREDICT's Keplerian database through a socket connection while -PREDICT is running in server mode. It is especially useful in -environments where PREDICT runs continuously, and periodic Keplerian -element updates are made outside of PREDICT, such as through scripts -run through a crontab. - -The "kepupdate" script found in this directory is an example of a -Keplerian element update script that can be run on an automated -basis through a crontab. It is designed to be placed in your -home directory under a subdirectory called "cronjobs". It downloads -Keplerian orbital data from www.celestrak.com using the HTTP protocol. -(The "wget" utility, available from the Free Software Foundation, is -required, and is included in many Linux distrubutions.) - -Type crontab -e to edit your crontab. Simply add the following entry: - - 0 8 * * * kepupdate - -and your orbital database will update each morning at 8:00 AM -(provided you have a network connection at that time). - -See the crontab man page for more information on editing your crontab. - diff --git a/clients/kep_reload/build b/clients/kep_reload/build deleted file mode 100755 index 3d30e0d..0000000 --- a/clients/kep_reload/build +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Script to compile kep_reload -# -echo -n "Compiling kep_reload... " -cc -Wall -O3 -s -fomit-frame-pointer kep_reload.c -o kep_reload -echo "Done!" - diff --git a/clients/kep_reload/install b/clients/kep_reload/install deleted file mode 100755 index 7cada7b..0000000 --- a/clients/kep_reload/install +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Script to install kep_reload -# -if [ ! -x $PWD/kep_reload ]; then - $PWD/build -fi - -whoami=`whoami` - -if [ $whoami != "root" ]; then - echo "Sorry, $whoami. You need to be 'root' to install this program. :-(" - echo "Please su to root and re-run the 'install' script again." -else - rm -f /usr/local/bin/kep_reload - ln -s $PWD/kep_reload /usr/local/bin/kep_reload -fi - diff --git a/clients/kep_reload/kep_reload.c b/clients/kep_reload/kep_reload.c deleted file mode 100644 index ccd4b89..0000000 --- a/clients/kep_reload/kep_reload.c +++ /dev/null @@ -1,171 +0,0 @@ -/**************************************************************************** -* * -* kep_reload.c: Simple socket-based utility to * -* force a reload of PREDICT's TLE database * -* * -* Syntax: kep_reload name_of_server (default is "localhost") * -* Written by: John A. Magliacane, KD2BD on Friday 06-Apr-2001 * -* Original socket code by Ivan Galysh, KD4HBO * -* Last modified on: 10-Sep-2005 * -* * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -*****************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char string[625]; - -int connectsock(char *host, char *service, char *protocol) -{ - /* This function is used to connect to the server. "host" is the - name of the computer on which PREDICT is running in server mode. - "service" is the name of the socket port. "protocol" is the - socket protocol. It should be set to UDP. */ - - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - memset((char *)&sin, 0, sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=pse->s_port; - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - printf("Can't get services\n"); - return -1; - } - - if ((phe=gethostbyname(host))) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE) - { - printf("Can't get host: %c%s%c.\n",34,host,34); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) - { - printf("Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) - { - printf("Can't connect to socket.\n"); - return -1; - } - - return s; -} - -void get_response(int sock, char *buf) -{ - /* This function gets a response from the - server in the form of a character string. */ - - int n; - - n=read(sock,buf,625); - - if (n<0) - { - if (errno==EINTR) - return; - - if (errno==ECONNREFUSED) - { - fprintf(stderr, "Connection refused - server not running\n"); - exit(1); - } - } - - buf[n]='\0'; -} - -char *send_command(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and returns the result of the command - as a pointer to a character string. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - exit(-1); - - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Get the response */ - get_response(sk,string); - - /* Close the connection */ - close(sk); - - return string; -} - -int main(argc,argv) -int argc; -char *argv[]; -{ - int x; - - if (argc==1) - send_command("localhost", "RELOAD_TLE"); - else - for (x=1; x - 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/clients/map/README b/clients/map/README deleted file mode 100644 index 9dc3d5c..0000000 --- a/clients/map/README +++ /dev/null @@ -1,8 +0,0 @@ -"map" is a graphical satellite tracking application written by Ivan Galysh, -KD4HBO , that makes use of the socket-based -interface in PREDICT to obtain real-time satellite tracking data. "map" -requires the XForms libraries to compile and run. The entire XForms -distribution plus the latest XForms news and information is available at: - - http://world.std.com/~xforms - diff --git a/clients/map/build b/clients/map/build deleted file mode 100755 index a16d35a..0000000 --- a/clients/map/build +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# Script to compile and install 'map' -# -echo "Compiling 'map'. If a compilation error occurs, please" -echo "edit the 'build' script according to the location of your" -echo "X11 and xforms libraries." -echo -# -# Select one of the following lines depending on your specific directory -# and include file paths. The first line works fine under Slackware. -# -cc -Wall -O3 -s -o map map.c map_cb.c map_main.c -L/usr/X11R6/lib -lforms -lX11 -lm -#cc -Wall -O3 -s -o map map.c map_cb.c map_main.c -lforms -lX11 -lm -echo "Done!" -whoami=`whoami` -if [ ! -x /usr/local/bin/map ]; then - if [ $whoami != "root" ]; then - echo "Sorry, $whoami. You need to be 'root' to install this program. :-(" - echo "Please su to root and re-run this script again." - else - ln -s $PWD/map /usr/local/bin/map - fi -fi - diff --git a/clients/map/map.c b/clients/map/map.c deleted file mode 100644 index a98b227..0000000 --- a/clients/map/map.c +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -* MAP: A satellite tracking/orbital display program * -* Copyright Ivan J. Galysh, KD4HBO 2000 * -* Project started: 18-Dec-99 * -* Last update: 05-Jan-01 (KD2BD) * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will 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. * -* * -*****************************************************************************/ -/* Form definition file generated with fdesign. */ - -#include "forms.h" -#include -#include "map.h" -#include "world_fill.h" - -static FL_PUP_ENTRY __[] = -{ - /* itemtext callback shortcut mode */ - { "OSCAR-10", 0, "", FL_PUP_NONE}, - { "OSCAR-11", 0, "", FL_PUP_NONE}, - { "PACSAT", 0, "", FL_PUP_NONE}, - { "WEBERSAT", 0, "", FL_PUP_NONE}, - { "LUSAT", 0, "", FL_PUP_NONE}, - { "OSCAR-20", 0, "", FL_PUP_NONE}, - { "OSCAR-22", 0, "", FL_PUP_NONE}, - { "OSCAR-23", 0, "", FL_PUP_NONE}, - { "OSCAR-25", 0, "", FL_PUP_NONE}, - { "ITAMSAT", 0, "", FL_PUP_NONE}, - { "OSCAR-27", 0, "", FL_PUP_NONE}, - { "OSCAR-29", 0, "", FL_PUP_NONE}, - { "OSCAR-36", 0, "", FL_PUP_NONE}, - { "TECHSAT", 0, "", FL_PUP_NONE}, - { "TMSAT", 0, "", FL_PUP_NONE}, - { "SEDSAT-1", 0, "", FL_PUP_NONE}, - { "RS-12/13", 0, "", FL_PUP_NONE}, - { "ASUSAT-1", 0, "", FL_PUP_NONE}, - { "SUNSAT", 0, "", FL_PUP_NONE}, - { "MIR", 0, "", FL_PUP_NONE}, - { "OPAL", 0, "", FL_PUP_NONE}, - { "ISS", 0, "", FL_PUP_NONE}, - { "Stensat", 0, "", FL_PUP_NONE}, - { "OCS", 0, "", FL_PUP_NONE}, - {0} -}; - -FD_map *create_form_map(void) -{ - FL_OBJECT *obj; - - FD_map *fdui = (FD_map *) fl_calloc(1, sizeof(*fdui)); - - fdui->map = fl_bgn_form(FL_NO_BOX, 540, 450); - obj = fl_add_box(FL_UP_BOX,0,0,540,450,""); - fdui->t = obj = fl_add_bitmap(FL_NORMAL_BITMAP,20,20,500,250,""); - fl_set_bitmap_data(obj, 500,250,world_bits); - fl_set_object_color(obj,FL_BLUE,FL_GREEN); - fl_set_object_lcol(obj,FL_PALEGREEN); - fdui->g = obj = fl_add_timer(FL_NORMAL_TIMER,470,290,60,30,"timer"); - fl_set_object_callback(obj,j,0); - fl_set_timer(obj,1); - obj = fl_add_clock(FL_DIGITAL_CLOCK,10,290,90,30,""); - fl_set_object_color(obj,FL_LIGHTER_COL1,FL_BLACK); - fl_set_clock_adjustment(obj,(60*time_offset)); - fl_set_object_lcolor(obj,36); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - fdui->a = obj = fl_add_text(FL_NORMAL_TEXT,20,340,30,30,"AZ"); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - fdui->b = obj = fl_add_text(FL_NORMAL_TEXT,50,340,70,30,""); - fl_set_object_boxtype(obj,FL_DOWN_BOX); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - obj = fl_add_text(FL_NORMAL_TEXT,130,340,30,30,"EL"); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - fdui->c = obj = fl_add_text(FL_NORMAL_TEXT,160,340,70,30,""); - fl_set_object_boxtype(obj,FL_DOWN_BOX); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - obj = fl_add_text(FL_NORMAL_TEXT,140,290,100,30,"Satellite"); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - obj = fl_add_text(FL_NORMAL_TEXT,235,340,50,30,"Long"); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - fdui->f = obj = fl_add_text(FL_NORMAL_TEXT,280,340,80,30,""); - fl_set_object_boxtype(obj,FL_DOWN_BOX); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - obj = fl_add_text(FL_NORMAL_TEXT,370,340,30,30,"Lat"); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - fdui->h = obj = fl_add_text(FL_NORMAL_TEXT,400,340,80,30,""); - fl_set_object_boxtype(obj,FL_DOWN_BOX); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - fdui->k = obj = fl_add_choice(FL_NORMAL_CHOICE2,230,290,120,30,""); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - fl_set_object_callback(obj,l,0); - fl_set_choice_entries(obj, __); - obj = fl_add_text(FL_NORMAL_TEXT,100,390,100,30,"Next Event"); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - fl_set_object_lstyle(obj,FL_BOLD_STYLE); - fdui->s = obj = fl_add_text(FL_NORMAL_TEXT,190,390,190,30,""); - fl_set_object_boxtype(obj,FL_DOWN_BOX); - fl_set_object_lsize(obj,FL_MEDIUM_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - fl_end_form(); - - fdui->map->fdui = fdui; - - return fdui; -} -/*---------------------------------------*/ - diff --git a/clients/map/map.h b/clients/map/map.h deleted file mode 100644 index 67f897b..0000000 --- a/clients/map/map.h +++ /dev/null @@ -1,35 +0,0 @@ -/** Header file generated with fdesign on Mon Jan 31 23:02:21 2000.**/ - -#ifndef FD_map_h_ -#define FD_map_h_ - -/** Callbacks, globals and object handlers **/ -extern void j(FL_OBJECT *, long); -extern void l(FL_OBJECT *, long); - - -/**** Forms and Objects ****/ -typedef struct { - FL_FORM *map; - void *vdata; - char *cdata; - long ldata; - FL_OBJECT *t; - FL_OBJECT *g; - FL_OBJECT *a; - FL_OBJECT *b; - FL_OBJECT *c; - FL_OBJECT *f; - FL_OBJECT *h; - FL_OBJECT *k; - FL_OBJECT *s; -} FD_map; - -extern FD_map * create_form_map(void); -FD_map *fdmap; -char servername[32]; -char satnum[32]; -int oldx,oldy; -long time_offset; -FL_POINT xa[360]; -#endif /* FD_map_h_ */ diff --git a/clients/map/map_cb.c b/clients/map/map_cb.c deleted file mode 100644 index b55f1f6..0000000 --- a/clients/map/map_cb.c +++ /dev/null @@ -1,317 +0,0 @@ -/**************************************************************************** -* MAP: A satellite tracking/orbital display program * -* Copyright Ivan J. Galysh, KD4HBO 2000 * -* Project started: 18-Dec-1999 * -* Last update: 05-Nov-2001 * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -*****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "forms.h" -#include "map.h" - -#ifndef PI -#define PI 3.141592653589793 -#endif - -double arccos(x,y) -double x, y; -{ - /* This function implements the arccosine function, - returning a value between 0 and two pi. */ - - double result, fraction; - - fraction=x/y; - - if ((x>0.0) && (y>0.0)) - result=acos(fraction); - - if ((x<0.0) && (y>0.0)) - result=acos(fraction); - - if ((x<0.0) && (y<0.0)) - result=PI+acos(fraction); - - if ((x>0.0) && (y<0.0)) - result=PI+acos(fraction); - - return result; -} - - -void handler() -{ - signal(SIGALRM,handler); -} - -int connectsock(char *host, char *service, char *protocol) -{ - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - bzero((char *)&sin,sizeof(struct sockaddr_in)); - sin.sin_family = AF_INET; - - if (pse=getservbyname(service,protocol)) - sin.sin_port=pse->s_port; - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - printf("Can't get services\n"); - return -1; - } - - if (phe=gethostbyname(host)) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr = inet_addr(host))==INADDR_NONE) - { - printf("Can't get host.\n"); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) - { - printf("Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) - { - printf("Can't connect to socket.\n"); - return -1; - } - - return s; -} - -void get_response(int sock, char *buf) -{ - int n; - - alarm(10); - n=read(sock,buf,625); - - if (errno==EINTR) - { - buf[0] = '\0'; - return; - } - - if (n<0) - { - alarm(0); - return; - } - - buf[n]='\0'; - alarm(0); -} - - -/* callbacks and freeobj handles for form map */ -void j(FL_OBJECT *ob, long data) -{ - float latitude, longitude, az, el, footprint; - char lats[32], longs[32], azs[32], els[32], s_aos[32], - buf[64], timebuf[30], satname[32], timestr[26]; - long aos, *ptr_aos; - int x, y, xx, yy, sk, azi; - struct tm gmt, *ptr_gmt; - - double rangelat, rangelong, azimuth, ssplat, ssplong, TWOPI, - HALFPI, deg2rad=1.74532925199e-02, R0=6378.16, beta, num, dem; - - TWOPI=2.0*PI; - HALFPI=PI/2.0; - - sk=connectsock(servername,"predict","udp"); - - if (sk<0) - return; - - sprintf(buf,"GET_SAT %s\n",satnum); - write(sk,buf,strlen(buf)); - get_response(sk,buf); - close(sk); - ptr_aos=&aos; - ptr_gmt=&gmt; - - /* Parse the response. The first element is the satellite name. - It is ended with a '\n' character and many contain spaces. */ - - for (x=0; buf[x]!='\n' && buf[x]!=0; x++) - satname[x]=buf[x]; - - satname[x]=0; - x++; - - /* The rest of the data can be parsed using the sscanf() - function. First, the satellite name is removed from - "buf", and then "buf" is parsed for numerical data - using an sscanf(). */ - - for (y=0; buf[x+y]!=0; y++) - buf[y]=buf[x+y]; - - buf[y]=0; - - sscanf(buf,"%f %f %f %f %ld %f",&longitude,&latitude,&az,&el,&aos,&footprint); - sscanf(buf,"%s %s %s %s %s",longs,lats,azs,els,s_aos); - - ptr_gmt=gmtime(ptr_aos); - fl_set_object_label(fdmap->b,azs); - fl_set_object_label(fdmap->c,els); - fl_set_object_label(fdmap->f,longs); - fl_set_object_label(fdmap->h,lats); - - strncpy(timebuf,asctime(ptr_gmt),29); - - if (timebuf[8]==' ') - timebuf[8]='0'; - - if (el>=0.0) - timestr[0]='L'; - else - timestr[0]='A'; - - timestr[1]='O'; - timestr[2]='S'; - timestr[3]=':'; - timestr[4]=' '; - - for (x=0; x<=3; timestr[x+5]=timebuf[x], x++); - - timestr[9]=timebuf[8]; - timestr[10]=timebuf[9]; - timestr[11]=timebuf[4]; - timestr[12]=timebuf[5]; - timestr[13]=timebuf[6]; - timestr[14]=timebuf[22]; - timestr[15]=timebuf[23]; - timestr[16]=' '; - - for (x=12; x<=19; timestr[x+5]=timebuf[x-1], x++); - - timestr[25]=0; - - fl_set_object_label(fdmap->s,timestr); - - /* Range Circle Calculations by KD2BD */ - - ssplat=latitude*deg2rad; - ssplong=longitude*deg2rad; - beta=(0.5*footprint)/R0; - - fl_drawmode(GXxor); - fl_points(xa,360,FL_WHITE); - - for (azi=0; azi<360; azi++) - { - azimuth=deg2rad*(double)azi; - rangelat=asin(sin(ssplat)*cos(beta)+cos(azimuth)*sin(beta)*cos(ssplat)); - num=cos(beta)-(sin(ssplat)*sin(rangelat)); - dem=cos(ssplat)*cos(rangelat); - - if (azi==0 && (beta > HALFPI-ssplat)) - rangelong=ssplong+PI; - - else if (azi==180 && (beta > HALFPI+ssplat)) - rangelong=ssplong+PI; - - else if (fabs(num/dem)>1.0) - rangelong=ssplong; - - else - { - if ((180-azi)>=0) - rangelong=ssplong-arccos(num,dem); - else - rangelong=ssplong+arccos(num,dem); - } - - while (rangelong<0.0) - rangelong+=TWOPI; - - while (rangelong>(2.0*PI)) - rangelong-=TWOPI; - - rangelat=rangelat/deg2rad; - rangelong=rangelong/deg2rad; - - /* Convert range circle data to map-based coordinates */ - - if (rangelong<=180.0) - xx=(int)(270.0-(500.0*(rangelong/360.0))); - else - { - rangelong=rangelong-180.0; - xx=(int)(520.0-(500.0*(rangelong/360.0))); - } - - yy=(int)(145.0-(125.0*(rangelat/90.0))); - xa[azi].x=xx; - xa[azi].y=yy; - } - - fl_drawmode(GXxor); - fl_points(xa,360,FL_WHITE); - - if (longitude<=180.0) - x=(int)(270.0-(500.0*(longitude/360.0))); - else - { - longitude=longitude-180.0; - x=(int)(520.0-(500.0*(longitude/360.0))); - } - - y=(int)(145.0-(125.0*(latitude/90.0))); - - fl_drawmode(GXcopy); - fl_ovalf(x,y,2,2,FL_RED); - oldx=x; - oldy=y; - fl_set_timer(ob,1); -} - -void l(FL_OBJECT *obj, long data) -{ - const char *sat; - sat=fl_get_choice_text(obj); - strcpy(satnum,sat); -} - diff --git a/clients/map/map_main.c b/clients/map/map_main.c deleted file mode 100644 index 8e4b6c3..0000000 --- a/clients/map/map_main.c +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -* MAP: A satellite tracking/orbital display program * -* Copyright Ivan J. Galysh, KD4HBO 2000 * -* Project started: 18-Dec-99 * -* Last update: 02-Jan-01 * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -*****************************************************************************/ -#include "forms.h" -#include "map.h" -#include - -extern int connectsock(); -extern void handler(); -extern void get_response(); - -char pathname[128]; - -int main(int argc, char *argv[]) -{ - int i, skt, x, y, z; - char cmd[16], bufr[625], satnamelist[26][26]; - const char *ptrsat; - FD_map *fd_map; - struct timeb tptr; - - if (argc==1) - { - printf("\n%c*** ERROR! System name missing! (map system_name)\n\n",7); - exit(-1); - } - - for (i=0; i<360; i++) - { - xa[i].x=0; - xa[i].y=0; - } - - x=ftime(&tptr); - time_offset=tptr.timezone; - - fl_initialize(&argc, argv, 0, 0, 0); - fd_map=create_form_map(); - strcpy(servername,argv[1]); - skt=connectsock(servername,"predict","udp"); - - if (skt<0) - exit(-1); - - write(skt,"GET_LIST",9); - get_response(skt,bufr); - close(skt); - - /* Parse response */ - - for (x=0, y=0, z=0; yk,i,satnamelist[i-1]); - - ptrsat=fl_get_choice_item_text(fd_map->k,1); - strcpy(satnum,ptrsat); - - /* fill-in form initialization code */ - fdmap=fd_map; - - /* show the first form */ - fl_show_form(fd_map->map,FL_PLACE_CENTERFREE,FL_FULLBORDER,"map: Real-Time Satellite Tracking Display"); - fl_do_forms(); - - return 0; -} diff --git a/clients/map/world_fill.h b/clients/map/world_fill.h deleted file mode 100644 index c5e1f36..0000000 --- a/clients/map/world_fill.h +++ /dev/null @@ -1,1057 +0,0 @@ -#define world_width 500 -#define world_height 250 -#define world_widthd 360.0 -#define world_heightd 180.0 -#define world_type 1 -static unsigned char world_bits[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff, - 0x9b,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x3c,0xc3,0xef,0x1f,0x00,0x00,0x00,0x00,0xf0,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0xff,0xff,0xff,0xff,0xe7,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x70,0xfe,0xff, - 0x00,0x00,0x00,0xf0,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7f,0x00,0xfe,0xf7,0xff, - 0x07,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, - 0xfc,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, - 0x9f,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xfe,0x1d, - 0xff,0xfb,0xff,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, - 0x00,0x00,0x00,0xfc,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, - 0x07,0x80,0xff,0x07,0xff,0xff,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0x00,0x00,0x00,0x00,0xc0,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0x01,0x00,0x06,0xe0,0x81,0xff,0x3f,0x00,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xc0,0x07,0x02,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x80,0xff,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0x03,0x0c,0xe6,0xe1,0xef,0xff,0x7f,0x00,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00,0x00,0xf0,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x6f,0xff,0xfe,0xfd,0x07,0xfe,0xf9,0x07, - 0x00,0x60,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,0x00,0x00,0x00,0xfe, - 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xc6,0xf3, - 0xf9,0xff,0x1f,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00, - 0x00,0xf8,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xc7,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x60, - 0x00,0x00,0x0c,0x1f,0x1c,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0f, - 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xe7,0x01,0x00,0x00,0x00,0x60,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0x03,0xc0,0xe1,0x9f,0x1f,0xfc,0xfb,0x00,0x00,0x00,0xf8,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xfb,0x1d,0xe0,0x01, - 0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xff,0x9f,0xef,0xf3,0x9f,0x8f,0xff,0xfb,0x01,0x00,0x00, - 0xe0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x78,0x04,0xf8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x00,0xc0,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xe1,0x9f,0xe1,0xff,0xff, - 0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xfc,0xec,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0x00,0x00, - 0x1f,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x80,0xcf,0xff,0xff,0x03,0xe0, - 0x81,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xc0, - 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0xf8,0x00,0x80,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x07,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x80,0x81,0xff, - 0xff,0x03,0xe0,0x87,0xff,0xff,0xff,0x07,0x00,0x80,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,0x0e,0x00,0x00,0x00,0xf0,0x0f, - 0x80,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0xff,0xff,0xff,0x1f,0x00,0x70, - 0x07,0x00,0xff,0xff,0x7f,0xe0,0x0f,0xf8,0xff,0xff,0x1f,0x00,0x80,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x8f,0x00,0x00, - 0x00,0x00,0xd0,0x80,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x90,0x0f,0x00,0x03,0x00,0x80,0xff,0xff,0xff, - 0xff,0xcf,0xff,0xff,0x7f,0xfc,0x7f,0x3f,0x9e,0x9f,0xf8,0x03,0xfe,0x7f,0x00, - 0x80,0xf1,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, - 0xff,0x3f,0x00,0xc0,0x01,0xc0,0x3f,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0x0f,0x07,0x00,0xf0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xdf,0x1f,0xff,0xff,0xf9,0x03, - 0xfe,0x1f,0x00,0x00,0xf0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0x7f,0xc0,0xc0,0x30,0xf8,0xff,0xfd,0xfd,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x7f,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0xf7,0x1f,0xfe, - 0xff,0xf9,0x01,0xf7,0xff,0x01,0x00,0xfe,0xff,0xff,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0xb0,0xff,0xff,0xff,0xff,0x07,0x8f,0xff,0xff,0xff,0xff,0xf9, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0f,0xff,0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x03,0xc3,0xff,0x1f,0x80,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x9f,0xe3,0xff,0xff, - 0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0x3f,0xf0,0xfe,0xff,0xff,0xff,0xff,0xff, - 0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0x77,0x00,0xf8,0xff,0x3f,0x00,0xfe,0xff, - 0xff,0x07,0x00,0x1e,0x3a,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xfb,0xe7, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xff,0xf8,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x96,0xff,0xff,0xff,0xff,0xff,0x17,0x00,0xf0,0x9f,0x1f, - 0x00,0xfe,0xff,0xff,0x03,0x00,0xde,0x7f,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, - 0xff,0x87,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xc3,0x0f,0xf8, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0, - 0xff,0x7f,0x07,0x00,0xfc,0xff,0x0f,0x00,0x00,0xf8,0xff,0x00,0x00,0x00,0x00, - 0xf8,0xff,0xc1,0xff,0xc7,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x00,0x0f,0x30,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xf9,0xc3,0xff,0xff,0x01,0x00,0xfc,0xff,0x07,0x00,0x00,0xf0,0x7f,0x00, - 0x00,0x00,0x00,0xfc,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xf8,0x07,0xe0,0xff,0x01,0x00,0xf8,0xff,0x07,0x00,0x00, - 0xf8,0x0f,0x00,0x00,0x00,0x80,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xc0,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x18,0x00,0x80,0xff,0x03,0x00,0xf0,0xff, - 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xf0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xc0,0xd9,0x3f,0x78,0x00, - 0x00,0xe0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xfc,0xff,0x07,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0x0c,0x00,0x00,0xf0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0x01,0x00,0x98, - 0xff,0x00,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0xff,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xcf,0xff,0x0f,0x00, - 0x00,0x00,0xf0,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0x00,0xc0,0xff,0x07,0x00,0x00,0x80,0xff,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfe,0xff,0x07,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xe7, - 0xff,0x03,0x00,0x00,0x00,0xdc,0xff,0x7f,0x3f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x00,0x00,0x80,0xff,0x07,0x03,0x00,0x00,0x70,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x01,0xfe,0xff,0x1f,0x7c,0xc8,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0xf8,0xc7,0x00,0x00,0x00,0x00,0x00,0xfe,0xbf,0x03,0x00,0xff,0xff, - 0xff,0xff,0xff,0xf3,0xff,0x7f,0x00,0x00,0xc0,0xff,0x07,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0xfc,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xf3,0x03,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0x00, - 0x00,0xf8,0xff,0xff,0xff,0xff,0xfd,0xff,0x7f,0x01,0x00,0xe0,0xff,0x8f,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xfc,0xff,0x07,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x70,0x01,0xdf,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xdf,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x80, - 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x70, - 0xfc,0x23,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0x1f,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0x3b,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfe,0x00,0xc0,0xfb,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xf0,0x1f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x01,0x18,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfc,0x00,0xc0,0xf3,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, - 0x00,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x18,0xff,0xff,0x7f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xc0,0xff,0x03,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00, - 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff, - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf3,0x01,0xc0,0x1f,0x00,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x06,0x00,0x00,0xfc,0x07,0x01,0x00,0x00,0x00,0x00,0x60, - 0x00,0x00,0x00,0x00,0x00,0xc4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9, - 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xef,0x03,0xc0, - 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0x1b,0x01,0x00,0xfc,0x07,0x00,0x00,0x00, - 0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0xcc,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xe1,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, - 0xc3,0x0f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xff,0x7f,0x03,0x00,0xf8,0x01, - 0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0xdc,0xff,0xff,0xff, - 0xff,0xff,0xf9,0xff,0xff,0xe7,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xe0,0xf3,0x0f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0x03, - 0x00,0xf8,0x01,0x00,0x04,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x18, - 0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xe3,0xff,0xff,0xff,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf0,0xe3,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x03,0x00,0x78,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xf0,0x0f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0x03,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x03,0x00,0x38,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x3c,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x07,0x00,0x04,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x1d,0xfc,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xa0,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0x03,0xfe,0x01,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x3f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xfe,0xff,0xff,0xff,0xff,0x7f,0xf8,0xff,0xff,0xff,0x01, - 0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x9f,0xe1,0xff, - 0xff,0xff,0x01,0xe0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x5f,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xe0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x87,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x01,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xbf,0x0f,0xff,0x7f,0xe0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x03, - 0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x7b,0xfa,0xff,0xff,0x7f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xef,0xff,0xff,0x0f,0xfb,0xff, - 0x0f,0xfc,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x81,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x7b,0xfe,0xff,0x9f,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x8f,0xff,0xff, - 0x07,0x87,0xff,0x1f,0xff,0x8f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x80,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0x3f, - 0xfe,0x87,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xef,0xff,0x3f, - 0x3f,0xff,0xff,0x07,0x00,0xfc,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xf9,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xff,0x0f,0x3f,0xfc,0xff,0x03,0x00,0xfc,0x1f,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xe0,0x1f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0xff,0xff,0xff,0xf9,0xfb,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xc0,0x7c,0xf8,0xff,0x01,0x00,0xf0,0x3f,0xf0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xe0,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x7f,0xc0,0xf0,0xc1,0xff,0x83,0x3f,0xf8, - 0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x3f,0x80,0xf0,0xc3,0xff, - 0xff,0xff,0xff,0xff,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x0f,0xc0, - 0x80,0xff,0x8f,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xf7,0x3f,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xe3,0xc0,0x00,0xc3,0x83,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe9,0x0f,0x00,0xe0,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, - 0x00,0x00,0xc0,0xff,0x0f,0x40,0x00,0x03,0x8f,0xff,0xff,0xff,0x7f,0xe0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x08,0x1f,0x00,0xe0,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x05,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0xb0,0x03,0x9f,0xff,0xff,0xff, - 0xff,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x80,0x3f, - 0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x01,0x00,0xf0,0x00,0x0f, - 0xff,0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x1f,0x78,0x00,0x7a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff, - 0xc3,0x00,0x0f,0xfe,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x0f,0x7e,0x80,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x0c,0xfe,0xff,0x03,0x00,0x00,0x02,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x78,0xf0,0x7f,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x3c,0xff,0xff,0x03,0x00,0xfc,0x00,0xf3,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x7e,0xf8,0x3f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x03,0x00,0x00,0x00,0xf3,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x08, - 0xdb,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x07,0x80,0xb3,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, - 0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x07,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xff,0xff,0xff,0x00,0x0f,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x80,0x03,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, - 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xc1,0xff,0x40,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x80,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xee,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xce,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0xff,0xff,0xff,0x7f,0x98,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xff,0xff,0x7f, - 0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0xf9, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70, - 0xff,0xff,0x1f,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x40,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf8,0xfe,0xff,0x0f,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff, - 0xff,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf0,0xfc,0xff,0x0f,0x00,0x00,0xe6,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xf3,0xff,0xff,0xe1,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf8,0xff,0x0f,0x00,0x00,0x86, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xc7,0xff,0xff,0x07,0xfd,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xf9,0xff,0x0f, - 0x00,0x00,0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0x07,0xf1,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf1,0xff,0x0f,0x00,0x00,0x62,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xc7,0x01, - 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x18,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc7,0xff,0x07,0x00,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff, - 0xff,0xff,0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x0e,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xff,0x07,0x00,0x00,0x02,0x04,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x0f,0xff,0xff,0xff,0x0f,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0x00,0xe0,0x3f, - 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0xfe,0xff,0xff,0x3f,0x00,0xf0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x07,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xb0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f, - 0x00,0xb1,0xf9,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfe,0xff,0xff,0x3f,0x00,0xfc,0xff, - 0xff,0xff,0xfd,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0x0f,0xe0,0x07,0xe0,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfe,0xff,0xff,0x0f, - 0x00,0xb0,0xff,0xff,0x07,0xfc,0xff,0x7f,0x18,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0x1f,0xe0,0x03,0xc0,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc, - 0xff,0xff,0x0f,0x00,0x80,0xff,0xff,0x07,0xf8,0xff,0x7f,0x18,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,0xf0,0x03,0x80,0xe7,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xf8,0xff,0xff,0x0f,0x00,0x80,0xff,0xff,0x07,0xe0,0xff,0x3f,0x1c, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x03,0x00, - 0xe0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xf0,0xff,0xff,0x07,0x00,0x80,0xff,0xff,0x01,0xe0, - 0xff,0x3f,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, - 0xff,0x01,0xe0,0xf1,0x69,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0x03,0x00,0x00,0xff, - 0x7f,0x00,0xe0,0xff,0x7f,0x00,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0xff,0x01,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0x00, - 0x00,0x00,0xff,0x7f,0x00,0xe0,0xff,0x7f,0x00,0x00,0x1e,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3, - 0xff,0xbf,0x00,0x00,0x00,0xff,0x1f,0x00,0xe0,0xff,0xff,0x00,0x00,0x1e,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x3a,0x00,0x00,0x00,0x20, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xc3,0xff,0x0f,0x00,0x00,0x00,0xff,0x07,0x00,0xe0,0xf8,0xff,0x03, - 0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0x0f,0x00,0x00,0x00,0xfe,0x07,0x00,0x00, - 0xf8,0xff,0x03,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf8,0x7f,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0x00,0x00,0x00,0x00,0xfc, - 0x07,0x00,0x00,0xf8,0xff,0x07,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf0,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0xfc,0x07,0x00,0x00,0xf8,0xff,0x07,0x00,0x78,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff, - 0x03,0x00,0x00,0x00,0x00,0xf8,0x07,0x00,0x08,0x98,0xff,0x07,0x00,0xe8,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x80,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x01,0x70,0x00,0x00,0x00,0xf8,0x07,0x00,0x08,0x98,0xff,0x07, - 0x00,0x88,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00, - 0xe0,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x03,0x00,0x00,0x00,0xf8,0x03,0x00,0x08, - 0x18,0xfe,0x07,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x78,0x00,0xfc,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0x00,0x00,0x00,0xf0, - 0x03,0x00,0x00,0x18,0xfc,0x01,0x00,0xf1,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x78,0x00,0xfe,0x7f,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, - 0x00,0x00,0xf0,0x03,0x00,0x00,0x18,0xf8,0x00,0x00,0xf1,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x19,0x7e,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x18,0x70,0x00,0x80,0xe0,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x7f,0xfe,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x60,0x06,0x00,0x00,0x18,0x30,0x00, - 0x60,0x60,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa6, - 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x40,0x0e,0x00,0x00, - 0x78,0x00,0x00,0x00,0x90,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xde,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, - 0x1e,0x00,0x00,0x70,0x00,0x00,0x00,0x90,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, - 0x00,0x00,0x00,0x1e,0x00,0x00,0xe0,0x00,0x00,0x20,0x90,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0xe0,0x01,0x00,0x70,0x80,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, - 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x03,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xe1,0x07,0x00, - 0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x03,0x00,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0x87,0x07,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x9e,0x07,0x80,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x40,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x9e,0x07,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, - 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf9,0x07,0xe0,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, - 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, - 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x07,0xf8, - 0x7f,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, - 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, - 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf6,0x07,0xfc,0xff,0xf9,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x18,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xe0,0x07,0xfc,0x3f,0x06,0x98,0x06,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x18,0x00,0xf8,0xff,0xff,0xff,0xff,0xef,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xfc,0x3f,0x66,0x10,0x5d,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0xfc,0x1f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x98,0x6f,0xf8,0x1f,0x07,0x08, - 0x3f,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, - 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, - 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7f,0xf8, - 0x1f,0x1f,0x00,0xbc,0x3f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, - 0xff,0xff,0xff,0xff,0xff,0xff,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x80,0x3f,0xfb,0x9f,0x1f,0x70,0xbc,0xff,0x00,0x10,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x3f,0x40,0x1e,0x1f,0xee,0xd1,0xff,0x07,0x40,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x1e,0x00,0xc0,0xff,0x1f, - 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x77,0x00, - 0x00,0xfe,0x1f,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00, - 0x00,0x06,0x00,0x20,0xfc,0x3f,0x3f,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0x23,0x00,0x00,0x00,0x30,0xf8,0xff,0x1d,0x08,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc0,0x7f,0x00,0x00,0x00,0x02,0xfc,0xff,0x00,0x20,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,0x00,0x06,0x03,0xfc,0xff, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x03, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf6,0xff,0x0f, - 0x00,0xe6,0xe3,0x01,0x40,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x81,0x00,0x00,0x00,0xc0,0x03,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe6,0x00,0x00,0x00,0x80,0x1f,0x00,0x08,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x08, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x01, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xfb,0x07, - 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xff,0x81,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0xff,0x07,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0xff,0x81,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfe,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf0,0xff,0xff,0xff,0xff,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x81,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x07,0xf0,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9e,0xff,0x81,0x0f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x0f,0xf0,0x01,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x7f,0x80,0x1f, - 0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, - 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x07, - 0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff, - 0xff,0x81,0x1f,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, - 0xff,0xff,0x03,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0xff,0x87,0x1f,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfc,0xff,0xff,0xff,0xff,0x83,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xdf,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x3f,0x80,0xff,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x3f,0x00,0xff,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x3f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x0f,0x00, - 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, - 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, - 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, - 0xff,0x0f,0x00,0x7f,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xe0,0xff,0xff,0xff,0x07,0x80,0x7f,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x0f,0x80,0x3f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, - 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x0f,0xc0,0x3f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, - 0x07,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x0f,0xc0, - 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, - 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, - 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0x0f,0x80,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfe,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0xff,0x0f,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x07,0x00,0x0f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x03,0x00,0x0f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, - 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, - 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, - 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, - 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, - 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, - 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x1f,0xfc,0xff,0xff,0x7f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x01,0xe0,0xff,0xff, - 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x03,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x7f,0x00, - 0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, - 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfc,0x07,0x00,0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xff,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xfe,0xff,0x1f,0x00,0x00,0x00,0x08,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00, - 0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe2,0xff, - 0x0f,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x1f,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xe0,0xff,0x07,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xe0,0xff,0x03,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x01,0x00,0x00,0x00,0xf0,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00, - 0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x1f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x10,0x01,0x00,0x00,0x00,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf0,0xff,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x3f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00, - 0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, - 0x01,0x00,0x00,0xc0,0x07,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0xff,0x01,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf8,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfc,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfa,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x0f,0xc0, - 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf8,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x70,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x1f,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x01,0x00,0x00,0x00, - 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0xe0, - 0x03,0x00,0x80,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x98,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x0c,0x00, - 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xf8,0xff,0xff,0xff, - 0xff,0x0f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xdf,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe1,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xfc, - 0xff,0xff,0xff,0xff,0x1f,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xff,0x1f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x1e,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x83,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xfe,0xef,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf4, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0x19,0x00,0x00,0x00,0xfe,0xef,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x30,0xfe,0x0f,0x00,0xc0,0xe1,0xe7,0x7f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc0,0x13,0x00,0x00,0xe0,0xef,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xc3,0x0c,0xe0,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,0xf0,0xff,0xc0,0x0d,0xfe,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xff,0x3f,0xfc,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, - 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, - 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc0,0xff,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7e,0x00,0x00, - 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x80,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x03,0x00,0x00,0x00,0x00,0x80,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0xc0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0xf0, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x03,0x00,0x00,0x00,0xc0,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xff,0x01, - 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f - }; diff --git a/clients/samples/README b/clients/samples/README deleted file mode 100644 index f71ddf3..0000000 --- a/clients/samples/README +++ /dev/null @@ -1,452 +0,0 @@ - ========================= - PREDICT's Socket Commands - ========================= - -The network sockets feature of PREDICT allows the program to operate -as a server providing tracking data to client applications using the -UDP protocol. It is even possible to have the PREDICT server and -client applications running on separate machines provided the -clients are connected to the server through a network. - - -System Configuration -==================== -For the socket-based server features of PREDICT to function, the -following line needs to be added to the end your /etc/services file: - - predict 1210/udp - -The port number (1210) can be changed if desired. There is no need -to recompile the program if it is changed. As of PREDICT version -2.1.5, an alternate port may be specified for use by PREDICT via -the -n command-line switch. - - -Program Operations -================== -Start PREDICT with the -s switch (predict -s) to start the program as a -socket-based server. The program will start and automatically go into the -multi-satellite tracking mode. Clients may poll PREDICT for tracking data -when the program is running in either the multi-satellite or single-satellite -tracking mode. When in multi-tracking mode, tracking data for any of the -24 satellites in the program's database may be accessed by client programs. -When in single-tracking mode, only live tracking data for the single satellite -being tracked may be accessed. Either tracking mode may be ended at any -time. When this is done, the socket code will return the last calculated -satellite tracking data until the program is again put into a real-time -tracking mode. This allows the user to return to the main menu, and use -other features of the program without sending potentially harmful data -to client programs. - - -Client Program Interface -======================== -The best way to write a client program is to use the demonstration program -(demo.c) included in this distribution of PREDICT as a guide. The sample -program has comments to explain how each component operates. It is useful -to pipe the output of this program through "less" to easily browse through -the data returned (demo | less). - -An interactive program is also included (demo-i.c) to allow socket -commands to be sent to the PREDICT server via the keyboard, and their -output displayed to the screen. - -In operation, a character array is filled with the command and arguments -to be sent to PREDICT. A socket connection is then opened, the request -is sent, a response is received, and the socket connection is closed. -The command and arguments are in ASCII text format. - -A sample client application written in Perl is included under the perl -subdirectory. - - -Error Handling -============== -New error handling routines were added to PREDICT version 2.2.3. -Sending an invalid socket command to a PREDICT server now results -in the server returning the string: - -Huh?\n - -In earlier versions, nothing would be returned, leaving the client -waiting forever for a response. (Not that a client would ever send -an invalid command to PREDICT anyway...) - -The exceptions to this are the "PREDICT" and "GET_SAT_POS" socket -commands, whose output EOFs are marked by a CONTROL-Z character. -Invalid syntax used in conjunction with these commands return -nothing but the ending CONTROL-Z character, as in earlier versions. - - -PREDICT Socket Command Summary -============================== -The following are the socket commands interpreted by PREDICT when the -program is running in either the single satellite or multi-satellite -tracking mode: - -Command: GET_SAT -Argument: satellite name or object number -Purpose: To poll PREDICT for live tracking data. -Return value: Newline ('\n') delimited string of tracking data. -Example: GET_SAT ECHO -Data returned: - -ECHO -151.79 --70.04 -203.75 --60.01 -1126395990 -5988.49 -11881.33 -773.71 -7.47 -6292 -D -279.37 --32.42 -360.00 - -Description: The values are identified by the order in which they are -returned. Referring to the example above, - -Name: ECHO -Long: 151.79 (degrees West) -Lat: -70.04 (degrees North) -Az: 203.75 (degrees) -El: -60.01 (degrees) -Next AOS/LOS: 1126395990 (seconds since 01-Jan-1970)=Sat Sep 10 23:46:30 2005 -Footprint: 5988.49 (kilometers) -Range: 11881.33 (kilometers) -Altitude: 773.71 (kilometers) -Velocity: 7.47 (kilometers/hour) -Orbit Number: 6292 (revolutions) -Visibility: D (see below) -Orbital Phase: 279.37 (degrees) -Eclipse Depth: -32.42 (degrees) -Squint: 360.00 (degrees, or 360.0 if squint is not applicable) - -If the satellite is in either a geostationary orbit or an orbit that -does not permit AOS to occur at the groundstation, a zero (0) is returned -for the next AOS/LOS time. Otherwise, the next AOS time is provided for -satellites not currently in range of the ground station. If the satellite -is in range, then the LOS time is provided. - -The name provided as an argument to GET_SAT must match the full length -name contained in PREDICT's orbital database, and may contain spaces. -The command string passed to PREDICT must end with an end of line ('\n') -character. The satellite's object number may be used in lieu of the -satellite name. - -The visibility codes returned are the same as those displayed in PREDICT's -multi-satellite tracking mode. An 'N' indicates the satellite is not in -sunlight, nor is it optically visible at the ground station. A 'D' -indicates that the satellite is in sunlight, but not optically visible -at the ground station. A 'V' indicates the satellite is in sunlight, -while the ground station is in darkness, meaning the satellite may be -optically visible at the ground station. - -If the satellite has decayed, the Next AOS/LOS time will be reported -as 0. All other values will also be set to zero. The visibility code -will be set to 'N'. - ------------------------------------------------------------------------------ - -Command: GET_DOPPLER -Argument: satellite name or object number -Purpose: To poll PREDICT for normalized Doppler shift information. -Return value: Doppler shift information. -Example: GET_DOPPLER OSCAR-27 -Data returned: - -961.742249 - -Description: The Doppler shift returned by PREDICT is a normalized to a -100 MHz downlink from the satellite, and must be scaled by the client to -the operating frequency of interest. For example, to determine the amount -of Doppler shift experienced on a 435 MHz downlink, simply multiply the -value returned by 4.35. To calculate the Doppler shift on a 146 MHz -uplink, multiply the amount by -1.46. - -As of version 2.2.3, GET_DOPPLER now returns data even if the satellite -is below the horizon. Clients can use this information to correctly -tune transmitters and receivers in prior to the time of AOS. - ------------------------------------------------------------------------------ - -Command: GET_SUN -Argument: none -Purpose: To poll PREDICT for the Sun's current position. -Return value: The Sun's positional data. -Example: GET_SUN -Data returned: - -283.48 --23.71 --5.51 -190.61 -347.15 - -Description: Current azimuth is returned first, followed by elevation, -declination, Greenwich hour angle, and right ascension, all in degrees. - ------------------------------------------------------------------------------ - -Command: GET_MOON -Argument: none -Purpose: To poll PREDICT for the Moon's current position. -Return value: The Moon's positional data. -Example: GET_MOON -Data returned: - -267.22 -+16.98 -8.79 -149.22 -28.55 - -Description: Current azimuth is returned first, followed by elevation, -declination, Greenwich hour angle, and right ascension, all in degrees. - ------------------------------------------------------------------------------ - -Command: GET_LIST -Argument: none -Purpose: To poll PREDICT for the satellite names in the current database. -Return value: String containing all satellite names in PREDICT's database. -Example: GET_LIST -Data returned: - -OSCAR-7 -OSCAR-11 -PACSAT -LUSAT -OSCAR-20 -ITAMSAT -OSCAR-27 -OSCAR-29 -OSCAR-32 -OSCAR-41 -OSCAR-46 -OSCAR-50 -CUTE-1 -RS-15 -RS-20 -PCSAT -ECHO -HAMSAT -NOAA-14 -NOAA-15 -NOAA-17 -UARS -HUBBLE -ISS - -Description: Names are returned as a string that must be parsed by the -client to pull out individual names. NOTE!!! Versions of PREDICT prior -to 2.1.3 returned ONLY ONE name at a time, and had to be invoked 24 times -to download the entire list. This has since changed! Since satellite -names returned by PREDICT are no longer abbreviated (as they were in -earlier versions), a 625 byte buffer is now required to store the -results of this command. - ------------------------------------------------------------------------------ - -Command: RELOAD_TLE -Argument: none -Purpose: To force a re-read of PREDICT's orbital database file. -Return value: NULL -Example: RELOAD_TLE -Data returned: -Description: Forces PREDICT to re-read the orbital database file. Useful -after the database has been updated by something other than the running -version of the program (i.e. predict -u filename), and eliminates the -need to re-start PREDICT under these conditions to force a re-read of -the database. - ------------------------------------------------------------------------------ - -Command: GET_VERSION -Argument: none -Purpose: To determine what version of PREDICT is running as a server. -Return value: String containing the version number. -Example: GET_VERSION -Data returned: 2.2.3\n -Description: Allows clients to determine what version of PREDICT they're -talking to. This command can also be used as a "ping" command to test -the connectivity to the PREDICT server prior to sending more important -queries to the server. - ------------------------------------------------------------------------------ - -Command: GET_QTH -Argument: none -Purpose: To determine the groundstation location (QTH) information. -Return value: String containing the info stored in the user's predict.qth file. -Example: GET_QTH -Data returned: - -W1AW -41.716905 -72.727083 -25 - -Description: The groundstation callsign, latitude, longitude, and altitude -above sea level are returned. Useful for plotting the user's location on -a map. - ------------------------------------------------------------------------------ - -Command: GET_TLE -Argument: satellite name or catalog number -Purpose: To read the Keplerian elements for a particular satellite. -Return value: String containing NASA Two-Line Keplerian orbital data. -Example: GET_TLE OSCAR-27 -Data returned: - -OSCAR-27 -1 22825U 93061C 03 59.55562140 .00000055 00000-0 38039-4 0 4973 -2 22825 98.2745 88.7439 0007588 226.4709 133.5846 14.28945788491306 - -Description: The satellite's Keplerian orbital data in the standard -NASA Two-Line element format. - ------------------------------------------------------------------------------ - -Command: GET_TIME -Argument: none -Purpose: To read the system date/time from the PREDICT server. -Return value: Number of seconds since midnight UTC on January 1, 1970. -Example: GET_TIME -Data returned: - -1126375569 - -Description: Unix Time is returned by the server. This command allows -clients to display clock/calendar information or sync their system -clocks with that of the server. - ------------------------------------------------------------------------------ - -Command: GET_TIME$ -Argument: none -Purpose: To read the system date/time from the PREDICT server. -Return value: UTC Date/Time as an ASCII string. -Example: GET_TIME$ -Data returned: - -Sat Sep 10 18:06:09 2005 - -Description: Returns an ASCII representation of the current date/time -in UTC. Useful for displaying the current date/time in client applications -if the local system clock cannot be synced using the GET_TIME command. - ------------------------------------------------------------------------------ - -Command: GET_SAT_POS -Argument: satellite name or object number, starting date/time, ending -date/time (optional). -Purpose: To obtain the location of a satellite at a specified date/time. -Return value: Sub-satellite point and local azimuth and elevation headings. -Example: GET_SAT_POS "OSCAR-7" 1046998422 +10m -Data returned: - -1046998422 Fri 07Mar03 00:53:42 -50 165 175 -64 39 11488 29525 * -1046998482 Fri 07Mar03 00:54:42 -48 165 177 -61 42 11253 29525 * -1046998542 Fri 07Mar03 00:55:42 -46 165 180 -58 45 11011 29525 * -1046998602 Fri 07Mar03 00:56:42 -44 165 182 -55 47 10760 29525 * -1046998662 Fri 07Mar03 00:57:42 -42 165 184 -53 49 10501 29525 * -1046998722 Fri 07Mar03 00:58:42 -40 165 186 -50 51 10234 29525 * -1046998782 Fri 07Mar03 00:59:42 -38 166 189 -47 53 9959 29525 * -1046998842 Fri 07Mar03 01:00:42 -36 166 191 -44 54 9678 29525 * -1046998902 Fri 07Mar03 01:01:42 -34 166 193 -41 56 9389 29525 * -1046998962 Fri 07Mar03 01:02:42 -32 166 195 -38 57 9094 29525 * -1046999022 Fri 07Mar03 01:03:42 -30 167 197 -35 58 8792 29525 * - -Description: The date/time in Unix format (the number of seconds since -midnight UTC on January 1, 1970), the date/time in ASCII (UTC), the -elevation of the satellite in degrees, the azimuth heading of the -satellite, the orbital phase (modulo 256), the latitude (N) and -longitude (W) of the satellite's sub-satellite point at the time -specified, the slant range to the satellite in kilometers with -respect to the ground station's location, and the spacecraft's -sunlight visibility information. - -If the ending time is omitted, only a single line of data is returned. -If the starting time is omitted, the current date/time is assumed. If -the starting date/time is replaced by a number (n) preceded by a '+' -symbol (ie. +10), output is produced starting at the current date/time, -and ending the current date/time plus 'n' seconds. If an 'm' is -appended to the ending time (+10m or 1003537367m as shown above), -then the data produced corresponds to the position of the satellite -every minute for 'n' minutes. - -When multiple lines of data are generated, they are returned a line -at a time rather than as a single string containing the entire output -(as is the case with most other socket commands). As a result, the -socket connection must remain open, and data must be read a line at -a time until an end-of-data condition is reached, even when there is -only a single line of data. An end-of-data condition is identified -upon receipt of a control-Z character by the client. - ------------------------------------------------------------------------------ - -Command: PREDICT -Argument: satellite name or object number, starting date/time (optional). -Purpose: To obtain orbital predictions for a single pass starting at the -specified date/time, or earlier if the satellite is already in range. -Return value: Satellite orbital prediction information. -Example: PREDICT ISS 1126375569: -Data returned: - -1126378996 Sat 10Sep05 19:03:16 0 183 240 22 75 2135 38914 * -1126379060 Sat 10Sep05 19:04:21 3 174 243 25 72 1794 38914 * -1126379125 Sat 10Sep05 19:05:26 7 160 246 28 69 1517 38914 * -1126379189 Sat 10Sep05 19:06:30 9 142 249 31 66 1346 38914 * -1126379253 Sat 10Sep05 19:07:34 10 122 252 34 63 1324 38914 * -1126379318 Sat 10Sep05 19:08:38 8 103 255 36 59 1454 38914 * -1126379382 Sat 10Sep05 19:09:42 5 88 2 39 55 1705 38915 * -1126379447 Sat 10Sep05 19:10:47 1 78 5 42 51 2032 38915 * -1126379469 Sat 10Sep05 19:11:10 0 75 6 42 49 2157 38915 * - -Description: The date/time in Unix format (the number of seconds since -midnight UTC on January 1, 1970), the date/time in ASCII (UTC), the -elevation of the satellite in degrees, the azimuth heading of the -satellite, the orbital phase (modulo 256), the latitude (N) and -longitude (W) of the satellite's sub-satellite point at the time -specified, the slant range to the satellite in kilometers with -respect to the ground station's location, and the spacecraft's -sunlight visibility information. - -If the starting time is omitted, the current date/time is assumed. -If a pass is already in progress at the starting date/time specified, -orbital calculations are moved back to the beginning of AOS of the -current pass, and data for the entire pass from AOS to LOS is -provided. - -As in the case of the GET_SAT_POS command, prediction information is -returned a line at a time, not as as a single string containing the -entire output of the command. As a result, the socket connection must -remain open between server and client, and data must be read a line -at a time until an end-of-data condition is reached. An end-of-data -condition is identified upon reception of a CONTROL-Z character -by the client. - ------------------------------------------------------------------------------ - -Command: GET_MODE -Argument: none -Purpose: To determine PREDICT's current tracking mode. -Return value: String containing program mode information. -Example: GET_MODE -Data returned: - -OSCAR-11\n - -Description: GET_MODE returns the string "MULTI\n" if PREDICT is currently -operating in Multi-Satellite tracking mode. A list of available satellites -can then be obtained through use of the GET_LIST command. If PREDICT -is operating in Single Satellite tracking mode, then the name of the -satellite currently being tracked is returned followed by a '\n' character. -If PREDICT is not currently tracking satellites, then "NONE\n" is returned. - diff --git a/clients/samples/build b/clients/samples/build deleted file mode 100755 index 08e39f3..0000000 --- a/clients/samples/build +++ /dev/null @@ -1,3 +0,0 @@ -cc -Wall -O3 -s demo.c -o demo -cc -Wall -O3 -s demo-i.c -o demo-i - diff --git a/clients/samples/demo-i b/clients/samples/demo-i deleted file mode 100755 index f86d082..0000000 Binary files a/clients/samples/demo-i and /dev/null differ diff --git a/clients/samples/demo-i.c b/clients/samples/demo-i.c deleted file mode 100644 index 297f949..0000000 --- a/clients/samples/demo-i.c +++ /dev/null @@ -1,242 +0,0 @@ -/**************************************************************************** -* * -* This program allows socket commands to be interactively sent to PREDICT * -* for testing or educational purposes. It was derived from the "demo.c" * -* program also located in this directory. * -* * -* This program defaults to "localhost" as the name of machine on which * -* PREDICT is running in server mode. * -* * -***************************************************************************** -* * -* Last modified on 10-September-2005 * -* * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -*****************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char string[625]; - -void handler() -{ - /* This is a function that is called when the response function - times out. This is in case the server fails to respond. */ - - signal(SIGALRM,handler); -} - -int connectsock(char *host, char *service, char *protocol) -{ - /* This function is used to connect to the server. "host" is the - name of the computer on which PREDICT is running in server mode. - "service" is the name of the socket port. "protocol" is the - socket protocol. It should be set to UDP. */ - - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - bzero((char *)&sin,sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=pse->s_port; - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - printf("Can't get services\n"); - return -1; - } - - if ((phe=gethostbyname(host))) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE) - { - printf("Can't get host: \"%s\".\n",host); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) - { - printf("Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) - { - printf("Can't connect to socket.\n"); - return -1; - } - - return s; -} - -void get_response(int sock, char *buf) -{ - /* This function gets a response from the - server in the form of a character string. */ - - int n; - - n=read(sock,buf,625); - - if (n<0) - { - if (errno==EINTR) - return; - - if (errno==ECONNREFUSED) - { - fprintf(stderr, "Connection refused - PREDICT server not running\n"); - exit (1); - } - } - - buf[n]='\0'; -} - -char *send_command(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and returns the result of the command - as a pointer to a character string. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - exit(-1); - - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Get the response */ - get_response(sk,string); - - /* Close the connection */ - close(sk); - - return string; -} - -void send_command2(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and displays the result of the command - on the screen as text. It reads the data sent back - from PREDICT until an EOF marker (^Z) is received. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - exit(-1); - - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Read and display the response until a ^Z is received */ - get_response(sk,string); - - while (string[0]!=26) /* Control Z */ - { - printf("%s",string); - string[0]=0; - get_response(sk,string); - } - - printf("\n"); - - /* Close the connection */ - close(sk); -} - -int main() -{ - char command[128]; - - /* The following command is used to initially "ping" - the PREDICT server to see if connectivity exists. - If this test fails, the program will exit with an - error message. */ - - send_command("localhost", "GET_VERSION"); - - printf("\nEnter the command you wish to send PREDICT.\n\n"); - - printf("Enter command, or QUIT to exit >> "); - - fgets(command, 80, stdin); - - while (strncmp(command, "QUIT", 4) && strncmp(command, "quit", 4) && strncmp(command, "EXIT", 4) && strncmp(command, "exit", 4)) - { - command[strlen(command)-1]=0; - - if (strncmp(command, "PREDICT",7)==0 || strncmp(command, "GET_SAT_POS",11)==0) - send_command2("localhost", command); - else if (command[0]) - printf("%s\n",send_command("localhost", command)); - - printf("Enter command, or QUIT to exit >> "); - - fgets(command, 80, stdin); - } - - exit(0); -} - diff --git a/clients/samples/demo.c b/clients/samples/demo.c deleted file mode 100644 index 57c039e..0000000 --- a/clients/samples/demo.c +++ /dev/null @@ -1,338 +0,0 @@ -/**************************************************************************** -* * -* This program is a template that can used for building client programs * -* for PREDICT. This program functions by sending a data request to the * -* server (the machine on which PREDICT is running in server mode), and * -* retrieves the response from the server. Some parsing is required to * -* extract information from PREDICT's response and fill variables as * -* needed. Examples of how this is done are shown in this sample program. * -* * -* This program defaults to "localhost" as the name of machine on which * -* PREDICT is running in server mode. * -* * -***************************************************************************** -* * -* This program was originally written by Ivan Galysh, KD4HBO, 24-Jan-2000 * -* and has been modified extensively since. Most recently, Bent Bagger, * -* OZ6BL, provided a patch to detect the absence of a PREDICT server, * -* and print an error message to that effect. * -* * -* Last modified on 30-March-2003 * -* * -***************************************************************************** -* * -* 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 any later * -* version. * -* * -* This program is distributed in the hope that it will useful, but WITHOUT * -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * -* for more details. * -* * -*****************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char string[625]; - -void handler() -{ - /* This is a function that is called when the response function - times out. This is in case the server fails to respond. */ - - signal(SIGALRM,handler); -} - -int connectsock(char *host, char *service, char *protocol) -{ - /* This function is used to connect to the server. "host" is the - name of the computer on which PREDICT is running in server mode. - "service" is the name of the socket port. "protocol" is the - socket protocol. It should be set to UDP. */ - - struct hostent *phe; - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - - int s, type; - - bzero((char *)&sin,sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=pse->s_port; - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - printf("Can't get services\n"); - return -1; - } - - if ((phe=gethostbyname(host))) - bcopy(phe->h_addr,(char *)&sin.sin_addr,phe->h_length); - - else if ((sin.sin_addr.s_addr=inet_addr(host))==INADDR_NONE) - { - printf("Can't get host: \"%s\".\n",host); - return -1; - } - - if ((ppe=getprotobyname(protocol))==0) - return -1; - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - s=socket(PF_INET,type,ppe->p_proto); - - if (s<0) - { - printf("Can't get socket.\n"); - return -1; - } - - if (connect(s,(struct sockaddr *)&sin,sizeof(sin))<0) - { - printf("Can't connect to socket.\n"); - return -1; - } - - return s; -} - -void get_response(int sock, char *buf) -{ - /* This function gets a response from the - server in the form of a character string. */ - - int n; - - n=read(sock,buf,625); - - if (n<0) - { - if (errno==EINTR) - return; - - if (errno==ECONNREFUSED) - { - fprintf(stderr, "Connection refused - PREDICT server not running\n"); - exit (1); - } - } - - buf[n]='\0'; -} - -char *send_command(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and returns the result of the command - as a pointer to a character string. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - exit(-1); - - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Get the response */ - get_response(sk,string); - - /* Close the connection */ - close(sk); - - return string; -} - -void send_command2(host, command) -char *host, *command; -{ - int sk; - - /* This function sends "command" to PREDICT running on - machine "host", and displays the result of the command - on the screen as text. It reads the data sent back - from PREDICT until an EOF marker (^Z) is received. */ - - /* Open a network socket */ - sk=connectsock(host,"predict","udp"); - - if (sk<0) - exit(-1); - - /* Build a command buffer */ - sprintf(string,"%s\n",command); - - /* Send the command to the server */ - write(sk,command,strlen(string)); - - /* clear string[] so it can be re-used for the response */ - string[0]=0; - - /* Read and display the response until a ^Z is received */ - get_response(sk,string); - - while (string[0]!=26) /* Control Z */ - { - printf("%s",string); - string[0]=0; - get_response(sk,string); - } - - printf("\n"); - - /* Close the connection */ - close(sk); -} - -int main() -{ - int x, y, z, satnum; - char buf[128], command[128], satlist[625], satname[26], - visibility, satnamelist[26][26], event[15], squint_string[15]; - long aostime, orbitnum, start; - float az, el, slong, slat, footprint, range, altitude, - velocity, phase, eclipse_depth, squint; - time_t t; - - /* Get the list of satellite names from PREDICT */ - - strcpy(satlist, send_command("localhost","GET_LIST")); - - printf("\nPREDICT returned the following string in response to GET_LIST:\n%s\n",satlist); - - /* Parse the response and place each name - in the character array satnamelist[]. */ - - for (x=0, y=0, z=0; y0.0) - strcpy(event,"LOS at"); - - else - strcpy(event,"Next AOS at"); - - if (squint==360.0) - sprintf(squint_string,"N/A"); - else - sprintf(squint_string,"%.2f degrees",squint); - - printf("Values are as follows:\nName: %s\nLong: %.2f degrees\nLat: %.2f degrees\nAz: %.2f degrees\nEl: %+-6.2f degrees\n%s: %ld = %sFootprint: %.2f km\nRange: %.2f km\nAltitude: %.2f km\nVelocity: %.2f km/hr\nEclipse Depth: %.2f\nPhase: %.2f\nSquint: %s\nOrbit #: %ld\n\n",satname,slong,slat,az,el,event,aostime,asctime(gmtime(&t)),footprint,range,altitude,velocity,eclipse_depth,phase,squint_string,orbitnum); - } - - /* Some other commands... */ - - strcpy(buf, send_command("localhost","GET_MOON")); - printf("\nThe following string was returned in response to GET_MOON:\n%s\n",buf); - - strcpy(buf, send_command("localhost","GET_SUN")); - printf("The following string was returned in response to GET_SUN:\n%s\n",buf); - - strcpy(buf, send_command("localhost","GET_VERSION")); - printf("The following string was returned in response to GET_VERSION:\n%s\n",buf); - - strcpy(buf, send_command("localhost","GET_QTH")); - printf("The following string was returned in response to GET_QTH:\n%s\n",buf); - strcpy(buf, send_command("localhost","GET_MODE")); - printf("The following string was returned in response to the GET_MODE command:\n%s\n",buf); - - sprintf(command,"GET_TLE %s",satnamelist[9]); - strcpy(buf, send_command("localhost",command)); - printf("The following string was returned in response to %s:\n%s\n",command,buf); - - strcpy(buf, send_command("localhost","GET_TIME$")); - printf("The following string was returned in response to GET_TIME$:\n%s\n",buf); - - strcpy(buf, send_command("localhost","GET_TIME")); - printf("The following string was returned in response to GET_TIME:\n%s\n",buf); - - sscanf(buf,"%ld",&start); - sprintf(command,"GET_SAT_POS \"%s\" %ld +10m",satnamelist[0],start); - printf("The following string was returned in response to:\n\n\t%s:\n\n",command); - send_command2("localhost",command); - - sprintf(command,"PREDICT \"%s\" %ld",satnamelist[23],start); - printf("The following string was returned in response to:\n\n\t%s:\n\n",command); - send_command2("localhost",command); - - printf("If that flew by too fast, consider piping the output of\n"); - printf("this demo program through 'less'. (ie: demo | less) :-)\n\n"); - - exit(0); -} diff --git a/clients/samples/perl/README b/clients/samples/perl/README deleted file mode 100644 index 5a42a29..0000000 --- a/clients/samples/perl/README +++ /dev/null @@ -1,9 +0,0 @@ -"demo.pl" is a Perl script written by Rich Parry, W9IF. Although written -to be compliant with earlier versions of PREDICT, it still extracts -useful tracking data from PREDICT, and can serve as a template for -writing your own PREDICT clients in Perl. - -"kenwood_d700.pl" is a Perl script written by Andrew Rich, VK4TEC -in August 2005, that tunes a Kenwood D700 transceiver attached to -/dev/ttyS0 in compensation for Doppler shift. - diff --git a/clients/samples/perl/demo.pl b/clients/samples/perl/demo.pl deleted file mode 100755 index 44627a4..0000000 --- a/clients/samples/perl/demo.pl +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/perl -w - -############################################################################# -# # -# This program is a template that can used for building client programs # -# for PREDICT. This program works by sending a data request to the server # -# (the machine on which PREDICT is running in server mode), and retrieves # -# the response from the server. # -# # -# This program takes two arguments. If none are supplied, a default host # -# and satellite are assigned. The first argument is the hostname of # -# the server, and the second is the satellite name. For example: # -# # -# demo localhost OSCAR-10 # -# # -# If the satellite name contains spaces, enclose the name in "quotes". # -# # -############################################################################# -# # -# This program was written by Rich Parry, W9IF on September 18, 2000. # -# 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 any later # -# version. # -# # -# This program is distributed in the hope that it will 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. # -# # -############################################################################# - -use strict; -use Socket; - -my $port = 1210; -my ($predict_server, $satellite); - -# Use defaults if no command line arguments given -if ($#ARGV eq 1) { - $predict_server = $ARGV[0]; - $satellite = $ARGV[1]; -} -else { - print "WARNING: Use syntax \"demo.pl hostname satellite\" (i.e., demo.pl localhost FO-20)\n"; - print "Substituting default arguments\n"; - $predict_server = "localhost"; - $satellite = "OSCAR-10"; -} - -# Setup for UDP socket commumnication -my ($d1, $d2, $d3, $d4, $rawserver) = gethostbyname($predict_server); -my $serveraddr = pack("Sna4x8", 2, $port, $rawserver); -my $prototype = getprotobyname('udp'); -socket(SOCKET,2,SOCK_DGRAM,$prototype) || die("No Socket\n"); -$| = 1; # no buffering - -# Setup timeout routine -$SIG{ALRM} = \&time_out; -alarm(10); # Force exit if no response from server - -# Send request to predict -send(SOCKET, "GET_SAT $satellite\0" , 0 , $serveraddr) or die("UDP send failed $!\n"); - -# Get response from predict -my $server_response = ''; # required by recv function -recv(SOCKET, $server_response, 100, 0) or die "UDP recv failed $!\n"; - -# Extract individual responses -my ($name, $lon, $lat, $az, $el, $aos_seconds, $foot) = split /\n/, $server_response; -my $aos_time_date = gmtime($aos_seconds); - -# Output response -print "\nPREDICT returned the following string in response to GET_SAT $satellite:\n\n$server_response\n"; -print "Values are as follows:\nName: $name\nLong: $lon\nLat: $lat\nAz: $az\nEl: $el\nNext AOS: $aos_seconds = $aos_time_date UTC\nFoorprint: $foot\n\n"; - -close(SOCKET); - - -sub time_out { - die "Server not responding for satellite $satellite\n"; -} diff --git a/clients/samples/perl/kenwood_d700.pl b/clients/samples/perl/kenwood_d700.pl deleted file mode 100755 index b4166b5..0000000 --- a/clients/samples/perl/kenwood_d700.pl +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/perl -# -# Talk to PREDICT satellite tracking and tune Kenwood D700 Radio -# -# Andrew Rich VK4TEC Aug 2005 -# -use Socket; -use Net::Telnet; -use Math::Round; -$frequency = "437975"; -my $port = 1210; -my ($predict_server, $satellite); -if ($#ARGV eq 1) -{ -$predict_server = $ARGV[0]; -$satellite = $ARGV[1]; -} -else -{ -print "WARNING: Use syntax \"kenwood_d700.pl hostname satellite\" -(i.e., kenwood_d700 localhost ISS)\n"; -print "Substituting default arguments\n"; -$predict_server = "localhost"; -$satellite = "ISS"; -} -my ($d1, $d2, $d3, $d4, $rawserver) = gethostbyname($predict_server); -my $serveraddr = pack("Sna4x8", 2, $port, $rawserver); -my $prototype = getprotobyname('udp'); -socket(SOCKET,2,SOCK_DGRAM,$prototype) || die("No Socket\n"); -$| = 1; # no buffering -$SIG{ALRM} = \&time_out; -alarm(10); # Force exit if no response from server -send(SOCKET, "GET_DOPPLER $satellite\0" , 0 , $serveraddr) or die("UDP send -failed $!\n"); -my $server_response = ''; # required by recv function -recv(SOCKET, $server_response, 100, 0) or die "UDP recv failed $!\n"; -$shift = (($server_response * 4.375) / 1000 ); -$newfreq = (int($frequency + $shift)); -$rounded = nearest(5,$newfreq) ; -$date = `date +%d/%m/%y" "%H:%M:%S`; -chop $date; -print "DATE: $date \n"; -print "SATT: $satellite \n"; -print "BASE: $frequency \n"; -print "HOST: $predict_server \n"; -print "PORT: $port \n"; -print "TUNE: $rounded \n"; -print "DOPP: $shift \n\n"; -open (comport, "> /dev/ttyS0"); -print comport "FQ 00".$rounded."000,0\n"; -close(comport); -close(SOCKET); -sub time_out -{ -die "Server not responding for satellite $satellite\n"; -} diff --git a/configure b/configure deleted file mode 100755 index 8ff49a9..0000000 --- a/configure +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash -# -# Script to configure, compile, and install PREDICT. -# Give an argument to this script if you wish to override -# the default installation directory of /usr/local/bin. -# ie: ./configure /usr/bin -# Last updated 25-Nov-2010 - -whoiam=`whoami` - -if [ $whoiam != "root" ]; then - echo "Sorry $whoiam. You need to be 'root' to install PREDICT. :-(" -else - oldterm=$TERM - export TERM=linux - - rm -f gcctest - - echo "int main()" > gcctest.c - echo "{" >> gcctest.c - echo "return 0;" >> gcctest.c - echo "}" >> gcctest.c - - echo -n "Testing compiler... " - - cc gcctest.c -o gcctest - - if [ -a gcctest ]; then - - rm -f gcctest - - echo -ne "\nTesting pthreads library... " - - cc gcctest.c -lpthread -o gcctest - - if [ -a gcctest ]; then - - rm -f gcctest - - echo -ne "\nTesting ncurses library... " - - cc gcctest.c -lncurses -o gcctest - - if [ -a gcctest ]; then - - rm -f gcctest - - echo -ne "\nCompiling Installer... " - - cc -Wall -s installer.c -lncurses -o installer - - if [ -a installer ]; then - if [ $# == "0" ]; then - ./installer - else - ./installer $1 - fi - else - echo -e "\n\n*** Error: Could not build installer. :-(\n" - fi - else - echo -e "\n\n*** Error: Compiler test for ncurses library failed. :-(\n" - fi - else - echo -e "\n\n*** Error: Compiler test for pthreads library failed. :-(\n" - - fi - - else - echo -e "\n\n*** Error: Compiler test failed. :-(\n\nAre you sure you have a functioning C Compiler (cc) installed?\n" - cc --version - fi - - rm -f gcctest.c - - export TERM=$oldterm -fi diff --git a/COPYING b/copying.txt similarity index 98% rename from COPYING rename to copying.txt index 916d1f0..c2c4b28 100644 --- a/COPYING +++ b/copying.txt @@ -1,339 +1,339 @@ - 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 - - Appendix: 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. + 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 + + Appendix: 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/default/predict.qth b/default/predict.qth deleted file mode 100644 index f393d6f..0000000 --- a/default/predict.qth +++ /dev/null @@ -1,4 +0,0 @@ -W1AW - 41.716905 - 72.727083 - 25 diff --git a/default/predict.tle b/default/predict.tle deleted file mode 100644 index 5a336a7..0000000 --- a/default/predict.tle +++ /dev/null @@ -1,72 +0,0 @@ -OSCAR-7 -1 07530U 74089B 18126.90857181 -.00000043 00000-0 11708-4 0 9999 -2 07530 101.6842 94.8539 0012518 56.0919 329.7963 12.53632314989425 -OSCAR-11 -1 14781U 84021B 18126.70744225 .00000075 00000-0 15372-4 0 9999 -2 14781 97.6535 164.6829 0007660 210.1514 149.9260 14.83000484838290 -LUSAT -1 20442U 90005G 18127.08343422 .00000006 00000-0 18427-4 0 9993 -2 20442 98.6077 65.8338 0010597 272.3756 87.6214 14.32894338478000 -ITAMSAT -1 22826U 93061D 18126.89589056 .00000007 00000-0 20280-4 0 9990 -2 22826 98.8537 102.3137 0010049 95.9243 264.3084 14.30360250283852 -OSCAR-27 -1 22825U 93061C 18 47.17540666 -.00000004 00000-0 16420-4 0 9995 -2 22825 98.8481 21.1936 0008153 347.1041 12.9931 14.30021858272275 -OSCAR-29 -1 24278U 96046B 18126.59823651 -.00000016 00000-0 20909-4 0 9997 -2 24278 98.5209 331.0799 0349688 218.7046 138.8562 13.53083313 72615 -OSCAR-32 -1 25397U 98043D 18126.91657235 -.00000005 00000-0 16972-4 0 9991 -2 25397 98.6472 68.0444 0002173 115.1779 244.9625 14.23644709 29636 -OSCAR-50 -1 27607U 02058C 18126.73111907 .00000001 00000-0 20970-4 0 9997 -2 27607 64.5554 216.7510 0060610 337.6913 22.1553 14.75444882826719 -OSCAR-55 -1 27844U 03031E 18127.01020497 .00000053 00000-0 43523-4 0 9993 -2 27844 98.6877 136.2724 0010794 126.7688 233.4482 14.22109989770348 -OSCAR-57 -1 27848U 03031J 18126.95807429 .00000036 00000-0 36084-4 0 9992 -2 27848 98.6964 136.6052 0010551 136.2954 223.9061 14.21714321770179 -OSCAR-58 -1 28895U 05043F 18126.91354814 .00000162 00000-0 39920-4 0 9993 -2 28895 97.9036 280.0544 0016489 195.1916 164.8794 14.63539105667602 -OSCAR-71 -1 37854U 11061E 17325.41356842 .00004804 00000-0 25834-3 0 9998 -2 37854 101.7017 279.0114 0165610 329.4553 29.7093 15.04808912330576 -OSCAR-73 -1 39444U 13066AE 18127.04885128 .00000304 00000-0 44171-4 0 9993 -2 39444 97.5917 159.3493 0056675 285.9069 73.5904 14.81694026239560 -OSCAR-91 -1 43017U 17073E 18126.78260646 .00001206 00000-0 99277-4 0 9997 -2 43017 97.7057 59.6434 0261214 46.6350 315.6302 14.78011472 24992 -CUTE-1 -1 27844U 03031E 17325.96388537 .00000072 00000-0 52365-4 0 9993 -2 27844 98.6892 332.6737 0008788 249.0552 110.9686 14.22076520746702 -RS-15 -1 23439U 94085A 18126.91046955 -.00000052 00000-0 -26461-3 0 9995 -2 23439 64.8188 55.5874 0158491 189.5738 235.3038 11.27566801961918 -RS-22 -1 27939U 03042A 18127.24011010 .00000122 00000-0 30483-4 0 9994 -2 27939 97.9840 267.4469 0011560 279.3064 127.6424 14.66681724780816 -RS-30 -1 32953U 08025A 18127.23367695 .00000010 00000-0 53005-5 0 9996 -2 32953 82.5064 38.1471 0018396 302.1049 57.8245 12.43082940451687 -RS-40 -1 38735U 12041C 17324.89670525 .00000034 00000-0 17773-3 0 9998 -2 38735 82.4783 226.4683 0017801 48.1260 312.1335 12.42575189241132 -PCSAT -1 26931U 01043C 18127.03442347 -.00000038 00000-0 17241-4 0 9996 -2 26931 67.0515 335.5973 0007285 280.1478 79.8801 14.30503499866667 -NOAA-15 -1 25338U 98030A 18126.92967466 .00000034 00000-0 33121-4 0 9999 -2 25338 98.7717 143.3296 0010229 353.8255 6.2797 14.25849705 38888 -NOAA-18 -1 28654U 05018A 18126.94723609 .00000005 00000-0 28180-4 0 9995 -2 28654 99.1490 161.5526 0013398 240.8739 119.1091 14.12374462667861 -HUBBLE -1 20580U 90037B 18126.91559322 .00000554 00000-0 23011-4 0 9993 -2 20580 28.4705 27.9326 0002831 59.6722 37.0310 15.09030287339146 -ISS -1 25544U 98067A 18127.24689882 .00002428 00000-0 43776-4 0 9993 -2 25544 51.6430 222.8005 0003344 51.5857 349.3042 15.54216007112151 diff --git a/docs/man/docmaker b/docs/man/docmaker deleted file mode 100755 index 709b305..0000000 --- a/docs/man/docmaker +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# This script builds the man page, pdf, postscript, html, -# and text documentation from the groff source "predict.man". -echo -n "Creating postscript file... " -groff -T ps -man predict.man > ../postscript/predict.ps -echo -echo -n "Creating man page... " -groff -T ascii -man predict.man > predict.1 -echo -echo -n "Creating text file... " -ul -t dumb predict.1 > ../text/predict.txt -echo -#echo -n "Creating HTML file... " -#groff -T html -man predict.man > ../html/predict.html -#echo -echo -n "Creating pdf file... " -ps2pdf ../postscript/predict.ps ../pdf/predict.pdf -echo -echo "Done!" diff --git a/docs/man/predict.1 b/docs/man/predict.1 deleted file mode 100644 index b98eaf9..0000000 --- a/docs/man/predict.1 +++ /dev/null @@ -1,743 +0,0 @@ -PREDICT(1) KD2BD Software PREDICT(1) - - - -NNAAMMEE - predict - Track and predict passes of satellites in Earth orbit - - -SSYYNNOOPPSSIISS - predict [-u _t_l_e___u_p_d_a_t_e___s_o_u_r_c_e] [-t _t_l_e_f_i_l_e] [-q _q_t_h_f_i_l_e] [-a - _s_e_r_i_a_l___p_o_r_t] [-a1 _s_e_r_i_a_l___p_o_r_t] [-n _n_e_t_w_o_r_k___p_o_r_t] [-f _s_a_t___n_a_m_e _s_t_a_r_t_- - _i_n_g___d_a_t_e_/_t_i_m_e _e_n_d_i_n_g___d_a_t_e_/_t_i_m_e] [-dp _s_a_t___n_a_m_e _s_t_a_r_t_i_n_g___d_a_t_e_/_t_i_m_e _e_n_d_- - _i_n_g___d_a_t_e_/_t_i_m_e] [-p _s_a_t___n_a_m_e _s_t_a_r_t_i_n_g___d_a_t_e_/_t_i_m_e] [-o _o_u_t_p_u_t___f_i_l_e] [-s] - [-east] [-west] [-north] [-south] - - -DDEESSCCRRIIPPTTIIOONN - PPRREEDDIICCTT is a multi-user satellite tracking and orbital prediction pro- - gram written under the Linux operating system by John A. Magliacane, - KD2BD. PPRREEDDIICCTT 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 any - later version. - - PPRREEDDIICCTT is distributed in the hope that 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. - - -FFIIRRSSTT TTIIMMEE UUSSEE - PPRREEDDIICCTT tracks and predicts passes of satellites based on the geograph- - ical location of the ground station, the current date and time as pro- - vided by the computer system's clock, and Keplerian orbital data for - the satellites of interest to the ground station. First time users of - PPRREEDDIICCTT are provided default ground station location and orbital data - information files. These files are managed by the program, and are nor- - mally located in a user's home directory under a hidden subdirectory - named _._p_r_e_d_i_c_t. First time users will be prompted to supply PPRREEDDIICCTT - with their geographical location (the same as selecting option [[GG]] from - the program's main menu) the first time the program is run. Latitude is - normally expressed in degrees north with latitudes south of the equator - expressed in negative degrees. Longitude is normally expressed in - degrees west with eastern longitudes expressed in negative degrees. - This behavior can be modified by passing the _-_e_a_s_t or _-_s_o_u_t_h commmand - line switches to PPRREEDDIICCTT. - - Latitudes and longitudes may be either entered in decimal degrees, or - in degrees, minutes, seconds (DMS) format. Station altitude is entered - as the number of meters the ground station is located above sea level. - This parameter is not very critical. If unsure, make a realistic guess - or simply enter 0. - - Users of PPRREEDDIICCTT need Keplerian orbital data for the satellites they - wish to track that is preferably no older than one month. The default - orbital data supplied with the program is liable to be quite old, and - so must be brought up to date if accurate results are to be expected. - This may be accomplished by selecting option [[EE]] from PPRREEDDIICCTT''ss main - menu and manually entering Keplerian data for each satellite in the - program's database, or by selecting option [[UU]] and specifying a file - containing recent 2-line Keplerian element data sets that correspond to - the satellites in the program's database. Keplerian orbital data is - available from a variety of sources, including - _h_t_t_p_:_/_/_w_w_w_._c_e_l_e_s_t_r_a_k_._c_o_m_/, _h_t_t_p_:_/_/_w_w_w_._s_p_a_c_e_-_t_r_a_c_k_._o_r_g_/, and - _h_t_t_p_:_/_/_w_w_w_._a_m_s_a_t_._o_r_g_/. - - -PPRROOGGRRAAMM OOPPEERRAATTIIOONN - The start-up screen of PPRREEDDIICCTT lists the program's main functions. - Several tracking and orbital prediction modes are available, as well as - several utilities to manage the program's orbital database. - - -PPRREEDDIICCTTIINNGG SSAATTEELLLLIITTEE PPAASSSSEESS - Orbital predictions are useful for determining in advance when a satel- - lite is expected to come within range of a ground station. They can - also be used to look back to previous passes to help to confirm or - identify past observations. - - PPRREEDDIICCTT includes two orbital prediction modes to predict any pass above - a ground station (main menu option [[PP]]), or list only those passes that - might be visible to a ground station through optical means (main menu - option [[VV]]). In either mode, the user is asked to select a satellite of - interest from a menu, and then asked to enter the date and time (in - UTC) at which prediction calculations should start. - - The current date and time may be selected by default by entering noth- - ing and hitting simply the ENTER key when prompted to enter the start- - ing date and time. - - Otherwise, the starting date and time should be entered in the form: - - _D_D_M_o_n_Y_Y _H_H_:_M_M_:_S_S - - Entering the time is optional. If it is omitted, midnight (00:00:00) - is assumed. Once complete, orbital calculations are started and pre- - diction information is displayed on the screen. - - The date and time in UTC, along with the satellite's elevation above - ground, azimuth heading, modulo 256 orbital phase, sub-satellite point - latitude and longitude, slant range between the ground station and the - satellite, and the satellite's orbit number are all displayed. If - spacecraft attitude parameters (ALAT, ALON) are included in PPRREEDDIICCTT''ss - transponder database file, then spacecraft antenna squint angles are - displayed instead of orbit numbers in the orbital prediction output. - - An asterisk (*) displayed to the right of the orbit number or squint - angle means the satellite is in sunlight at the date and time listed on - the line. A plus symbol (+) means the satellite is in sunlight while - the ground station is under the cover of darkness at the time and date - listed. Under good viewing conditions, large satellites such as the - International Space Station (ISS), the US Space Shuttles, and Hubble - Space Telescope, and the Upper Atmosphere Research Satellite (UARS) are - visible to the naked eye. If no symbol appears to the right of each - line, then the satellite is in the Earth's shadow at the time and date - listed, and is not receiving any illumination from the sun. - - Pressing the EENNTTEERR key, the 'YY' key, or the space bar advances the - orbital predictions to a screen listing the next available passes. - Pressing the 'LL' key allows the currently displayed screen plus any - subsequent screens to be logged to a text file in your current working - directory. The name given to this file is the name of the satellite - plus a ".txt" extension. Any slashes or spaces appearing in the satel- - lite name are replaced by the underscore (_) symbol. The logging fea- - ture may be toggled on and off at any time by pressing the 'LL' key. - Exiting the orbital prediction mode by pressing 'NN' or hitting the - EESSCCape key will also close the log file. The log file will be appended - with additional information if additional predictions are conducted for - the same satellite with the logging feature turned on. - - Selecting [[VV]] from PPRREEDDIICCTT''ss main menu will permit a ground station to - only predict passes for satellites that are potentially visible through - optical means. Since all other passes are filtered out in this mode, - and since some satellites may never arrive over a ground station when - optical viewing conditions are possible, the program provides the - option of breaking out of visual orbital prediction mode by pressing - the [[EESSCC]]ape key as calculations are made. A prompt is displayed at the - bottom of the screen to alert the user of this option. - - In either orbital prediction mode, predictions will not be attempted - for satellites that can never rise above the ground station's horizon, - or for satellites in geostationary orbits. If a satellite is in range - at the starting date and time specified, PPRREEDDIICCTT will adjust the start- - ing date back in time until the point of AOS so that the prediction - screen displays the first pass in its entirety from start to finish. - - -SSIINNGGLLEE SSAATTEELLLLIITTEE TTRRAACCKKIINNGG MMOODDEE - In addition to predicting satellite passes, PPRREEDDIICCTT allows satellites - to be tracked in real-time using PPRREEDDIICCTT''ss Single Satellite Tracking - Mode (main menu option [[TT]]), or simultaneously as a group of 24 using - the program's Multi-Satellite Tracking Mode (main menu option [[MM]]). - The positions of the Sun and Moon are also displayed when tracking - satellites in real-time. - - Selecting option [[TT]] from PPRREEDDIICCTT''ss main menu places the program in - Single Satellite Tracking Mode. The user will be prompted to select the - satellite of interest, after which a screen will appear and display - tracking positions for the satellite selected. - - In Single Satellite Tracking Mode, a wealth of information related to - tracking a spacecraft and communicating through its transponder is dis- - played. The current date and time is displayed along with the satel- - lite's sub-satellite point, its orbital altitude in both kilometers and - statute miles, the slant range distance between the ground station and - the satellite in both kilometers and statute miles, the current azimuth - and elevation headings toward the satellite, the orbital velocity of - the satellite in both kilometers per hour and statute miles per hour, - the footprint of the satellite in both kilometers and statute miles, - the modulo 256 orbital phase of the satellite, the eclipse depth, the - spacecraft antenna squint angle, and orbital model in use, as well as - the current orbit number are also displayed. The date and time for the - next AOS is also provided. - - Additionally, if the satellite is currently in range of the ground sta- - tion, the amount of Doppler shift experienced on uplink and downlink - frequencies, path loss, propagation delay, and echo times are also dis- - played. The expected time of LOS is also provided. - - Uplink and downlink frequencies are held in PPRREEDDIICCTT''ss transponder data- - base file _p_r_e_d_i_c_t_._d_b located under _$_H_O_M_E_/_._p_r_e_d_i_c_t. A default file is - provided with PPRREEDDIICCTT. - - Transponders may be selected by pressing the SPACE BAR. The passband - of the transponder may be tuned in 1 kHz increments by pressing the << - and >> keys. 100 Hz tuning is possible using the ,, and .. keys. (These - are simply the << and >> keys without the SHIFT key.) - - If no transponder information is available, the data displayed on the - tracking screen is abbreviated. - - The features available in the Single Satellite Tracking Mode make it - possible to accurately determine the proper uplink frequency to yield a - given downlink frequency, or vice versa. For example, if one wishes to - communicate with a station heard on 435.85200 MHz via FO-29, then - 435.85200 MHz can be selected via the keyboard as an RX frequency using - the tuning keys while tracking FO-29, and the corresponding ground sta- - tion TX frequency will be displayed by PPRREEDDIICCTT. - - Obviously, an accurate system clock and up-to-date orbital data are - required for the best tuning accuracy. - - If a sound card is present on your machine and the Single Satellite - Tracking Mode is invoked with an uppercase 'TT' rather than a lowercase - 'tt', PPRREEDDIICCTT will make periodic voice announcements stating the satel- - lite's tracking coordinates in real-time. Announcements such as: - - _"_T_h_i_s _i_s _P_R_E_D_I_C_T_. _S_a_t_e_l_l_i_t_e _i_s _a_t _f_i_f_t_y _s_i_x _d_e_g_r_e_e_s _a_z_i_m_u_t_h _a_n_d _f_o_r_t_y - _f_i_v_e _d_e_g_r_e_e_s _e_l_e_v_a_t_i_o_n_, _a_n_d _i_s _a_p_p_r_o_a_c_h_i_n_g_. _S_a_t_e_l_l_i_t_e _i_s _c_u_r_r_e_n_t_l_y - _v_i_s_i_b_l_e_._" - - are made at intervals that are a function of how quickly the satellite - is moving across the sky. Announcements can occur as frequently as - every 50 seconds for satellites in low earth orbits such as the Inter- - national Space Station (370 km), or as infrequently as every 8 minutes - for satellites in very high orbits, such as the AMC-6 geostationary - satellite (35780 km). Voice announcements are performed as background - processes so as not to interfere with tracking calculations as the - announcements are made. Alarms and special announcements are made when - the satellite being tracked enters into or out of eclipse. Regular - announcements can be forced by pressing the 'TT' key in Single Satellite - Tracking Mode. - - -MMUULLTTII--SSAATTEELLLLIITTEE TTRRAACCKKIINNGG MMOODDEE - Selecting [[MM]] from PPRREEDDIICCTT''ss main menu places the program in a real- - time multi-satellite tracking mode. In this mode, all 24 satellites in - the program's database are tracked simultaneously along with the posi- - tions of the Sun and Moon. Tracking data for the satellites is dis- - played in two columns of 12 satellites each. The name, azimuth heading, - elevation, sub-satellite point latitude (in degrees North) and longi- - tude (in degrees West) positions are provided, along with the slant - range distance between the satellite and the ground station (in kilome- - ters). - - A letter displayed to the right of the slant range indicates the satel- - lite's sunlight and eclipse conditions. If the satellite is experienc- - ing an eclipse period, an NN is displayed. If the satellite is in sun- - light and the ground station is under the cover of darkness, a VV is - displayed to indicate the possibility that the satellite is visible - under the current conditions. If the satellite is in sunlight while - conditions at the ground station do not allow the satellite to be seen, - a DD is displayed. Satellites in range of the ground station are dis- - played in BBOOLLDD lettering. The AOS dates and times for the next three - satellites predicted to come into range are displayed on the bottom of - the screen between the tracking coordinates of the Sun and Moon. Pre- - dictions are not made for satellites in geostationary orbits or for - satellites so low in inclination and/or altitude that they can never - rise above the horizon of the ground station. - - -SSOOLLAARR IILLLLUUMMIINNAATTIIOONN PPRREEDDIICCTTIIOONNSS - Selecting [[SS]] from PPRREEDDIICCTT''ss main menu will allow solar illumination - predictions to be made. These predictions indicate how much sunlight a - particular satellite will receive in a 24 hour period. This informa- - tion is especially valuable to spacecraft designers and satellite - ground station controllers who must monitor spacecraft power budgets or - thermal conditions on-board their spacecraft due to sunlight and - eclipse periods. It can even be used to predict the optimum times for - astronauts to perform extra-vehicular activities in space. Solar illu- - mination predictions may be logged to a file in the same manner that - orbital predictions may be logged (by pressing LL). - - -SSOOLLAARR AANNDD LLUUNNAARR OORRBBIITTAALL PPRREEDDIICCTTIIOONNSS - In addition to making orbital predictions of spacecraft, PPRREEDDIICCTT can - also predict transits of the Sun and the Moon. Lunar predictions are - initiated by selecting [[LL]] from PPRREEDDIICCTT's Main Menu. Solar predictions - are selected through Main Menu option [[OO]]. - - When making solar and lunar orbital predictions, PPRREEDDIICCTT provides - azimuth and elevation headings, the right ascension, declination, - Greenwich Hour Angle (GHA), radial velocity, and normalized distance - (range) to the Sun or Moon. Declination and Greenwich Hour Angle cor- - respond to the latitude and longitude of the object's sub-satellite - point above the Earth's surface. The radial velocity corresponds to - the speed and direction the object is traveling toward (+) or away (-) - from the ground station, and is expressed in meters per second. When - the radial distance of the Moon is close to zero, the amount of Doppler - shift experienced in Moonbounce communications is minimal. The normal- - ized distance corresponds to the object's actual distance to the ground - station divided its average distance. In practice, the normalized dis- - tance can range from about 0.945 to 1.055 for the Moon, and about 0.983 - to 1.017 for the Sun. - - Note that the effects of atmospherics are ignored in determining the - elevation angles for the Sun and Moon. Furthermore, the data provided - by PPRREEDDIICCTT corresponds to the object's center, and not the upper or - lower limb, as is sometimes done when predicting the rising and setting - times of these celestial objects. - - -OOPPEERRAATTIIOONN UUNNDDEERR TTHHEE XX--WWIINNDDOOWW SSYYSSTTEEMM - PPRREEDDIICCTT may be run under the X-Window System by invoking it through the - _x_p_r_e_d_i_c_t script contained with this software. _x_p_r_e_d_i_c_t can invoke _r_x_v_t, - _x_t_e_r_m, _E_t_e_r_m, _g_n_o_m_e_-_t_e_r_m_i_n_a_l, or _k_v_t, and display PPRREEDDIICCTT in a virtual - terminal window. _x_p_r_e_d_i_c_t should be edited for best results. In many - cases, holding down the SHIFT key while pressing the plus (+) and minus - (-) keys allows PPRREEDDIICCTT''ss window to be re-sized when started under - _x_p_r_e_d_i_c_t. - - -CCOOMMMMAANNDD LLIINNEE AARRGGUUMMEENNTTSS - By default, PPRREEDDIICCTT reads ground station location and orbital data - information from a pair of files located in the user's home directory - under a hidden subdirectory named _._p_r_e_d_i_c_t. Ground station location - information is held in a file named _p_r_e_d_i_c_t_._q_t_h, while orbital data - information for 24 satellites is held in a file named _p_r_e_d_i_c_t_._t_l_e. - - If we wish to run PPRREEDDIICCTT using data from alternate sources instead of - these default files, the names of such files may be passed to PPRREEDDIICCTT - on the command line when the program is started. For example, if we - wish to read the TLE file _v_i_s_u_a_l_._t_l_e and the QTH file _b_e_a_c_h___h_o_u_s_e_._q_t_h - rather than the default files, we could start PPRREEDDIICCTT and pass the - names of these alternate files to the program in the following manner: - - _p_r_e_d_i_c_t _-_t _v_i_s_u_a_l_._t_l_e _-_q _b_e_a_c_h___h_o_u_s_e_._q_t_h - - or - - _p_r_e_d_i_c_t _-_q _b_e_a_c_h___h_o_u_s_e_._q_t_h _-_t _v_i_s_u_a_l_._t_l_e - - If the files specified are not located in the current working direc- - tory, then their relative or absolute paths should also be specified - along with their names (_p_r_e_d_i_c_t _-_t _/_h_o_m_e_/_k_d_2_b_d_/_o_r_b_s_/_v_i_s_u_a_l_._t_l_e). - - It is also possible to specify only one alternate file while using the - default for the other. For example, - - _p_r_e_d_i_c_t _-_t _v_i_s_u_a_l_._t_l_e - - reads QTH information from the default _~_/_._p_r_e_d_i_c_t_/_p_r_e_d_i_c_t_._q_t_h location, - and TLE information from _v_i_s_u_a_l_._t_l_e, while - - _p_r_e_d_i_c_t _-_q _b_o_b_s_._q_t_h - - reads QTH information from _b_o_b_s_._q_t_h and TLE information from the - default _~_/_._p_r_e_d_i_c_t_/_p_r_e_d_i_c_t_._t_l_e location. - - -QQUUIIEETT OORRBBIITTAALL DDAATTAABBAASSEE UUPPDDAATTEESS - It is also possible to update PPRREEDDIICCTT''ss satellite orbital database - using another command line option that updates the database from a NASA - two-line element data set. PPRREEDDIICCTT then quietly exits without display- - ing anything to the screen, thereby eliminating the need for entering - the program and selecting the appropriate menu options. This option is - invoked using the _-_u command line switch as follows: - - _p_r_e_d_i_c_t _-_u _o_r_b_s_2_4_8_._t_l_e - - This example updates PPRREEDDIICCTT''ss default orbital database with the Keple- - rian elements found in the file _o_r_b_s_2_4_8_._t_l_e. PPRREEDDIICCTT may be updated - from a list of files as well: - - _p_r_e_d_i_c_t _-_u _a_m_a_t_e_u_r_._t_l_e _v_i_s_u_a_l_._t_l_e _w_e_a_t_h_e_r_._t_l_e - - If an alternate datafile requires updating, it may also be specified on - the command line using the _-_t switch as follows: - - _p_r_e_d_i_c_t _-_t _o_s_c_a_r_._t_l_e _-_u _a_m_a_t_e_u_r_._t_l_e - - This example updates the _o_s_c_a_r_._t_l_e orbital database with the two-line - element data contained in _a_m_a_t_e_u_r_._t_l_e. - - These options permit the automatic update of PPRREEDDIICCTT''ss orbital data - files using Keplerian orbital data obtained through automatic means - such as FTP, HTTP, or pacsat satellite download. - - For example, the following script can be used to update PPRREEDDIICCTT''ss - orbital database via the Internet: - - #!/bin/sh - wget -qr www.celestrak.com/NORAD/elements/amateur.txt -O amateur.txt - wget -qr www.celestrak.com/NORAD/elements/visual.txt -O visual.txt - wget -qr www.celestrak.com/NORAD/elements/weather.txt -O weather.txt - /usr/local/bin/predict -u amateur.txt visual.txt weather.txt - - To truly automate the process of updating your orbital database, save - the above commands to a file in your home directory (such as _k_e_p_u_p_- - _d_a_t_e), and add the following line to your crontab (type _c_r_o_n_t_a_b _-_e to - edit your crontab): - - _0 _2 _* _* _* _k_e_p_u_p_d_a_t_e - - and PPRREEDDIICCTT will automatically update its database every day at 2:00 - AM. - - -AAUUTTOOMMAATTIICC AANNTTEENNNNAA TTRRAACCKKIINNGG - PPRREEDDIICCTT is compatible with serial port antenna rotator interfaces con- - forming to the EasyComm 2 protocol standard. This includes the - PIC/TRACK interface developed by Vicenzo Mezzalira, IW3FOL , TAPR's EasyTrak Jr. (currently - under development), and Suding Associates Incorporated's Dish Con- - trollers . The - FODTRACK rotator interface is supported through the use of Luc Lange- - hegermann's (LX1GT) ffooddttrraacckk utility written for and included with PPRREE-- - DDIICCTT. - - Using any of these hardware interfaces, PPRREEDDIICCTT can automatically con- - trol the position of AZ/EL antenna rotators, and keep antennas accu- - rately pointed toward a satellite being tracked by PPRREEDDIICCTT. In opera- - tion, tracking data from PPRREEDDIICCTT is directed to the specified serial - port using the _-_a command line option. For example: - - _p_r_e_d_i_c_t _-_a _/_d_e_v_/_t_t_y_S_0 - - will send AZ/EL tracking data to the first serial port when the program - is tracking a satellite in the Single Satellite Tracking Mode. The - data sent to the serial port is of the form: _A_Z_2_4_1_._0 _E_L_2_6_._0 using 9600 - baud, 8-data bits, 1-stop bit, no parity, and no handshaking. Data is - sent to the interface if the azimuth or elevation headings change by - one degree or more. For interfaces requiring keepalive updates at - least once per second whether the AZ/EL headings have changed or not - (such as the ones by SAI), the _-_a_1 option may be used: - - _p_r_e_d_i_c_t _-_a_1 _/_d_e_v_/_t_t_y_S_0 - - -AADDDDIITTIIOONNAALL OOPPTTIIOONNSS - The _-_f command-line option, when followed by a satellite name or object - number and starting date/time, allows PPRREEDDIICCTT to respond with satellite - positional information. This feature allows PPRREEDDIICCTT to be invoked - within other applications that need to determine the location of a - satellite at a particular point in time, such as the location of where - a CCD camera image was taken by a Pacsat satellite based on its time- - stamp. - - The information produced includes the date/time in Unix format (the - number of seconds since midnight UTC on January 1, 1970), the date/time - in ASCII (UTC), the elevation of the satellite in degrees, the azimuth - heading of the satellite, the orbital phase (modulo 256), the latitude - and longitude of the satellite's sub-satellite point at the time speci- - fied, the slant range to the satellite in kilometers with respect to - the ground station's location, the orbit number, and the spacecraft's - sunlight visibility information. - - The date/time must be specified in Unix format (number of seconds since - midnight UTC on January 1, 1970). If no starting or ending time is - specified, the current date/time is assumed and a single line of output - is produced. If a starting and ending time are specified, a list of - coordinates beginning at the starting time/date and ending with the - ending time/date will be returned by the program with a one second res- - olution. If the letter _m is appended to the ending time/date, then the - data returned by the program will have a one minute resolution. The _-_o - option allows the program to write the calculated data to an output - file rather than directing it to the standard output device if desired. - - The proper syntax for this option is as follows: - - _p_r_e_d_i_c_t _-_f _I_S_S _9_7_7_4_4_6_3_9_0 _9_7_7_4_4_6_4_0_0 _-_o _d_a_t_a_f_i_l_e - - A list of coordinates starting at the current date/time and ending 10 - seconds later may be produced by the following command: - - _p_r_e_d_i_c_t _-_f _I_S_S _+_1_0 - - If a list of coordinates specifying the position of the satellite every - minute for the next 10 minutes is desired, the following command may be - used: - - _p_r_e_d_i_c_t _-_f _I_S_S _+_1_0_m - - If a satellite name contains spaces, then the entire name must be - enclosed by "quotes". - - The _-_p option allows orbital predictions for a single pass to be gener- - ated by PPRREEDDIICCTT via the command-line. For example: - - _p_r_e_d_i_c_t _-_p _O_S_C_A_R_-_1_1 _1_0_0_3_5_3_6_7_6_7 - - starts predictions for the OSCAR-11 satellite at a Unix time of - 1003536767 (Sat 20Oct01 00:12:47 UTC). If the starting date/time is - omitted, the current date/time is used. If a pass is already in - progress at the starting date/time specified, orbital predictions are - moved back to the beginning of AOS of the current pass, and data for - the entire pass from AOS to LOS is provided. - - When either the _-_f or _-_p options are used, PPRREEDDIICCTT produces an output - consisting of the date/time in Unix format, the date and time in ASCII - (UTC), the elevation of the satellite in degrees, the azimuth of the - satellite in degrees, the orbital phase (modulo 256), the latitude (N) - and longitude (W) of the satellite's sub-satellite point, the slant - range to the satellite (in kilometers), the orbit number, and the - spacecraft's sunlight visibility information. For example: 1003611710 - Sat 20Oct01 21:01:50 11 6 164 51 72 1389 16669 * The out- - put isn't annotated, but then again, it's meant to be read by other - software. - - The _-_d_p option produces a quick orbital prediction for the next pass of - a specified satellite, including 100 MHz downlink Doppler shift infor- - mation, in CSV format. For example: - - _p_r_e_d_i_c_t _-_d_p _I_S_S - - produces: - - 1525500165,Sat 05May18 06:02:45,701.256856 - 1525500169,Sat 05May18 06:02:49,678.755942 - 1525500172,Sat 05May18 06:02:52,656.033048 - 1525500176,Sat 05May18 06:02:56,633.093151 - 1525500179,Sat 05May18 06:02:59,609.940999 - 1525500183,Sat 05May18 06:03:03,586.582443 - 1525500186,Sat 05May18 06:03:06,563.022553 - <... output trimmed ...> - 1525500367,Sat 05May18 06:06:07,-733.663728 - 1525500370,Sat 05May18 06:06:10,-755.793182 - 1525500374,Sat 05May18 06:06:14,-777.690366 - 1525500377,Sat 05May18 06:06:17,-799.351435 - 1525500381,Sat 05May18 06:06:21,-820.773340 - 1525500384,Sat 05May18 06:06:24,-841.952820 - 1525500388,Sat 05May18 06:06:28,-862.887147 - - - where the Unix time is followed by the UTC date/time and 100 MHz down- - link-referenced Doppler shift. The satellite name can be followed by a - starting date/time and ending date/time much like the _-_f option. - - -SSEERRVVEERR MMOODDEE - PPRREEDDIICCTT''ss network socket interface allows the program to operate as a - server capable of providing tracking data and other information to - client applications using the UDP protocol. It is even possible to - have the PPRREEDDIICCTT server and client applications running on separate - machines provided the clients are connected to the server through a - functioning network connection. - - The _-_s switch is used to start PPRREEDDIICCTT in server mode: - - _p_r_e_d_i_c_t _-_s - - By default, PPRREEDDIICCTT uses socket port 1210 for communicating with client - applications. Therefore, the following line needs to be added to the - end your _/_e_t_c_/_s_e_r_v_i_c_e_s file: - - _p_r_e_d_i_c_t _1_2_1_0_/_u_d_p - - The port number (1210) can be changed to something else if desired. - There is no need to recompile the program if it is changed. To run - more than one instance of PPRREEDDIICCTT in server mode on a single host, an - alternate port must be specified when invoking the additional instances - of PPRREEDDIICCTT. This can be accomplished by using the _-_n switch: - - _p_r_e_d_i_c_t _-_n _1_2_1_1 _-_t _o_t_h_e_r___t_l_e___f_i_l_e _-_s - - When invoked in server mode, PPRREEDDIICCTT immediately enters Multi-Satellite - Tracking Mode, and makes live tracking data available to clients. - Clients may poll PPRREEDDIICCTT for tracking data when the program is running - in either the Multi-Satellite or Single Satellite Tracking Mode. When - in Multi-Satellite Tracking mode, tracking data for any of the 24 - satellites in the program's database may be accessed by client applica- - tions. When in Single-Satellite Tracking mode, only live tracking data - for the single satellite being tracked may be accessed. Either track- - ing mode may be ended at any time. When this is done, PPRREEDDIICCTT will - return the last calculated satellite tracking data until the program is - again put into a real-time tracking mode. This allows the user to - return to the main menu, and use other features of the program without - sending potentially harmful data to client applications. - - The best way to write a client application is to use the demonstration - program (demo.c) included in this distribution of PPRREEDDIICCTT as a guide. - The sample program has comments to explain how each component operates. - It is useful to pipe the output of this program through _l_e_s_s to easily - browse through the data returned (_d_e_m_o _| _l_e_s_s). - - In operation, a character array is filled with the command and argu- - ments to be sent to PPRREEDDIICCTT. A socket connection is then opened, the - request is sent, a response is received, and the socket connection is - closed. The command and arguments are in ASCII text format. - - Several excellent network client applications are included in this - release of PPRREEDDIICCTT, and may be found under the _p_r_e_d_i_c_t_/_c_l_i_e_n_t_s direc- - tory. - - -AADDDDIINNGG SSAATTEELLLLIITTEESS - One of the most frequently asked questions is how satellites in PPRREE-- - DDIICCTT''ss orbital database may be added, modified, or replaced. As it - turns out, there are several ways in which this can be done. Probably - the easiest is to manually edit your _~_/_._p_r_e_d_i_c_t_/_p_r_e_d_i_c_t_._t_l_e file, and - replace an existing satellite's entry with 2-line Keplerian data for - the new satellite. If this method is chosen, however, just make sure - to include ONLY the two line data, and nothing else. - - Another way is to is select the Keyboard Edit option from the program's - Main Menu, select a satellite you wish to replace. Edit the name and - object number (replacing the old information with the new information). - Just hit ENTER, and accept all the other orbital parameters shown. Get - back to PPRREEDDIICCTT''ss Main Menu. Select Auto Update, and then enter the - filename containing the 2-line element data for your favorite new - satellite. The new satellite data should be detected by PPRREEDDIICCTT, and - the orbital data for the old satellite will be overwritten by the new - data. - - -NNEEAATT TTRRIICCKKSS - In addition to tracking and predicting passes of satellites, PPRREEDDIICCTT - may also be used to generate a NASA two-line Keplerian element data set - from data entered via keyboard. For example, let's say you're listening - to Space Shuttle audio re-broadcasts via WA3NAN and Keplerian elements - for the Space Shuttle's orbit are given by the announcer. The orbital - data provided by WA3NAN in verbal form may be manually entered into - PPRREEDDIICCTT''ss orbital database using option [[EE]] of the program's main menu - (Keyboard Edit of Orbital Database). The orbital data for the Space - Shuttle in NASA two-line element form can then be found in your orbital - database file, and may imported to any other satellite tracking program - that accepts two-line element files or distributed to others electroni- - cally. - - It is also possible to run PPRREEDDIICCTT as a background process and direct - its display to an unused virtual console by using the following com- - mand: - - _p_r_e_d_i_c_t _< _/_d_e_v_/_t_t_y_8 _> _/_d_e_v_/_t_t_y_8 _& - - Switching to virtual console number 8 (ALT-F8 in text mode) will allow - PPRREEDDIICCTT to be controlled and displayed even after you've logged out. - This is especially handy when running PPRREEDDIICCTT in server mode on a - remote machine. - - -GGLLOOSSSSAARRYY OOFF TTEERRMMSS - The following terms are frequently used in association with satellite - communications and space technology: - - -AAOOSS:: - Acquisition of Signal - the time at which a ground station first - acquires radio signals from a satellite. PPRREEDDIICCTT defines AOS as the - time when the satellite being tracked comes within +/- 0.03 degrees of - the local horizon, although it may have to rise higher than this before - signals are first heard. - -AAppooggeeee:: - Point in a satellite's orbit when the satellite is at its farthest dis- - tance from the earth's surface. - -AAnnoommaalliissttiicc PPeerriioodd:: - A satellite orbital parameter specifying the time between successive - perigees. - -AAsscceennddiinngg NNooddee:: - Point in a satellite's orbit when its sub-satellite point crosses the - equator moving south to north. - -AAzziimmuutthh:: - The compass direction measured clockwise from true north. North = 0 - degrees, East = 90 degrees, South = 180 degrees, and West = 270 - degrees. - -DDeesscceennddiinngg NNooddee:: - Point in a satellite's orbit when its sub-satellite point crosses the - equator moving north to south. - -DDoopppplleerr SShhiifftt:: - The motion of a satellite in its orbit around the earth, and in many - cases the rotational motion of the earth itself, causes radio signals - generated by satellites to be received on Earth at frequencies slightly - different than those upon which they were transmitted. PPRREEDDIICCTT calcu- - lates what effect these motions have upon the reception of satellites - transmitting on the 146 MHz and 435 MHz Amateur Radio bands. - -EElleevvaattiioonn:: - The angle between the local horizon and the position of the satellite. - A satellite that appears directly above a particular location is said - to be located at an elevation of 90 degrees. A satellite located on the - horizon of a particular location is said to be located at an elevation - of 0 degrees. A satellite with an elevation of less than zero is posi- - tioned below the local horizon, and radio communication with a satel- - lite in such a position is not possible under normal circumstances. - -FFoooottpprriinntt:: - Diameter of the Earth's surface visible from a satellite. The higher - the satellite's orbital altitude, the greater the footprint, and the - wider the satellite's communications coverage. - -LLOOSS:: - Loss of Signal - the time at which a ground station loses radio contact - with a satellite. PPRREEDDIICCTT defines LOS as the time when the satellite - being tracked comes within +/- 0.03 degrees of the local horizon. - -OOrrbbiittaall PPhhaassee:: - An orbital "clock" that describes a satellite's orbital position with - respect to perigee. Orbital Phase may be modulo 256, or modulo 360, and - is sometimes referred to as mean anomaly when speaking of amateur radio - satellites in elliptical orbits, such as the Phase 3 satellites. - Orbital phase is zero at perigee. - -PPaatthh LLoossss:: - The apparent attenuation a radio signal undergoes as it travels a given - distance. This attenuation is the result of the dispersion radio waves - experience as they propagate between transmitter and receiver using - antennas of finite gain. Free space path loss is technically an oxy- - moron since free space is loss free. - -PPeerriiggeeee:: - Point in a satellite's orbit when the satellite is at its closest dis- - tance to the earth's surface. - -NNooddaall PPeerriioodd:: - A satellite orbital parameter specifying the time between successive - ascending nodes. - -SSllaanntt RRaannggee:: - The straight line distance between the ground station and the satellite - at a given time. - -SSuubb--SSaatteelllliittee PPooiinntt:: - The latitude and longitude specifying the location on the Earth that is - directly below the satellite. - - -AADDDDIITTIIOONNAALL IINNFFOORRMMAATTIIOONN - Detailed information on the operation of PPRREEDDIICCTT''ss UDP socket-based - interface as well as sample code for writing your own client applica- - tions is available in the _p_r_e_d_i_c_t_/_c_l_i_e_n_t_s_/_s_a_m_p_l_e_s subdirectory. The - latest news is available through the official PPRREEDDIICCTT software web page - located at: . - -FFIILLEESS - ~/.predict/predict.tle - Default database of orbital data - - ~/.predict/predict.db - Satellite transponder database file - - ~/.predict/predict.qth - Default ground station location information - - -AAUUTTHHOORRSS - PPRREEDDIICCTT was written by John A. Magliacane, KD2BD . - The socket server code was contributed by Ivan Galysh, KD4HBO - . The PIC/TRACK serial port antenna rotator - controller code was contributed by Vittorio Benvenuti, I3VFJ . SGP4/SDP4 code was derived from Pacsal routines written - by Dr. T.S. Kelso, and converted to 'C' by Neoklis Kyriazis, 5B4AZ. - See the CREDITS file for additional information. - - - - -KD2BD Software 05 May 2018 PREDICT(1) diff --git a/docs/man/predict.man b/docs/man/predict.man deleted file mode 100644 index 15409c4..0000000 --- a/docs/man/predict.man +++ /dev/null @@ -1,735 +0,0 @@ -.TH PREDICT 1 "05 May 2018" "KD2BD Software" "KD2BD Software" -.SH NAME -predict \- Track and predict passes of satellites in Earth orbit - -.SH SYNOPSIS -predict [-u \fItle_update_source\fP] [-t \fItlefile\fP] -[-q \fIqthfile\fP] [-a \fIserial_port\fP] [-a1 \fIserial_port\fP] -[-n \fInetwork_port\fP] -[-f \fIsat_name starting_date/time ending_date/time\fP] -[-dp \fIsat_name starting_date/time ending_date/time\fP] -[-p \fIsat_name starting_date/time\fP] -[-o \fIoutput_file\fP] [-s] [-east] [-west] [-north] [-south] - -.SH DESCRIPTION -\fBPREDICT\fP is a multi-user satellite tracking and orbital prediction -program written under the Linux operating system by John A. Magliacane, -KD2BD. \fBPREDICT\fP 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 any -later version. - -\fBPREDICT\fP is distributed in the hope that 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. - -.SH FIRST TIME USE -\fBPREDICT\fP tracks and predicts passes of satellites based on the -geographical location of the ground station, the current date and time -as provided by the computer system's clock, and Keplerian orbital data -for the satellites of interest to the ground station. First time users -of \fBPREDICT\fP are provided default ground station location and orbital -data information files. These files are managed by the program, and are -normally located in a user's home directory under a hidden subdirectory -named \fI.predict\fP. First time users will be prompted to supply -\fBPREDICT\fP with their geographical location (the same as selecting -option \fB[G]\fP from the program's main menu) the first time the -program is run. Latitude is normally expressed in degrees north with -latitudes south of the equator expressed in negative degrees. Longitude -is normally expressed in degrees west with eastern longitudes expressed -in negative degrees. This behavior can be modified by passing the -\fI-east\fP or \fI-south\fP commmand line switches to \fBPREDICT\fP. - -Latitudes and longitudes may be either entered in decimal degrees, or -in degrees, minutes, seconds (DMS) format. Station altitude is entered -as the number of meters the ground station is located above sea level. -This parameter is not very critical. If unsure, make a realistic guess -or simply enter 0. - -Users of \fBPREDICT\fP need Keplerian orbital data for the satellites -they wish to track that is preferably no older than one month. The default -orbital data supplied with the program is liable to be quite old, and so -must be brought up to date if accurate results are to be expected. This -may be accomplished by selecting option \fB[E]\fP from \fBPREDICT's\fP -main menu and manually entering Keplerian data for each satellite in -the program's database, or by selecting option \fB[U]\fP and specifying -a file containing recent 2-line Keplerian element data sets that -correspond to the satellites in the program's database. Keplerian -orbital data is available from a variety of sources, including -\fIhttp://www.celestrak.com/\fP, \fIhttp://www.space-track.org/\fP, -and \fIhttp://www.amsat.org/\fP. - -.SH PROGRAM OPERATION -The start-up screen of \fBPREDICT\fP lists the program's main functions. -Several tracking and orbital prediction modes are available, as well as -several utilities to manage the program's orbital database. - -.SH PREDICTING SATELLITE PASSES -Orbital predictions are useful for determining in advance when a satellite -is expected to come within range of a ground station. They can also be -used to look back to previous passes to help to confirm or identify past -observations. - -\fBPREDICT\fP includes two orbital prediction modes to predict any pass -above a ground station (main menu option \fB[P]\fP), or list only those -passes that might be visible to a ground station through optical means -(main menu option \fB[V]\fP). In either mode, the user is asked to -select a satellite of interest from a menu, and then asked to enter -the date and time (in UTC) at which prediction calculations should -start. - -The current date and time may be selected by default by entering nothing -and hitting simply the ENTER key when prompted to enter the starting -date and time. - -Otherwise, the starting date and time should be entered in the form: - - \fIDDMonYY HH:MM:SS\fP - -Entering the time is optional. If it is omitted, midnight (00:00:00) -is assumed. Once complete, orbital calculations are started and -prediction information is displayed on the screen. - -The date and time in UTC, along with the satellite's elevation above -ground, azimuth heading, modulo 256 orbital phase, sub-satellite point -latitude and longitude, slant range between the ground station and -the satellite, and the satellite's orbit number are all displayed. -If spacecraft attitude parameters (ALAT, ALON) are included in -\fBPREDICT's\fP transponder database file, then spacecraft antenna -squint angles are displayed instead of orbit numbers in the orbital -prediction output. - -An asterisk (*) displayed to the right of the orbit number or squint -angle means the satellite is in sunlight at the date and time listed -on the line. A plus symbol (+) means the satellite is in sunlight -while the ground station is under the cover of darkness at the time -and date listed. Under good viewing conditions, large satellites -such as the International Space Station (ISS), the US Space Shuttles, -and Hubble Space Telescope, and the Upper Atmosphere Research Satellite -(UARS) are visible to the naked eye. If no symbol appears to the right -of each line, then the satellite is in the Earth's shadow at the time -and date listed, and is not receiving any illumination from the sun. - -Pressing the \fBENTER\fP key, the '\fBY\fP' key, or the space bar -advances the orbital predictions to a screen listing the next available -passes. Pressing the '\fBL\fP' key allows the currently displayed -screen plus any subsequent screens to be logged to a text file in -your current working directory. The name given to this file is the -name of the satellite plus a ".txt" extension. Any slashes or spaces -appearing in the satellite name are replaced by the underscore (_) -symbol. The logging feature may be toggled on and off at any time by -pressing the '\fBL\fP' key. Exiting the orbital prediction mode by -pressing '\fBN\fP' or hitting the \fBESC\fPape key will also close the -log file. The log file will be appended with additional information -if additional predictions are conducted for the same satellite with -the logging feature turned on. - -Selecting \fB[V]\fP from \fBPREDICT's\fP main menu will permit -a ground station to only predict passes for satellites that are -potentially visible through optical means. Since all other passes are -filtered out in this mode, and since some satellites may never arrive -over a ground station when optical viewing conditions are possible, -the program provides the option of breaking out of visual orbital -prediction mode by pressing the \fB[ESC]\fPape key as calculations -are made. A prompt is displayed at the bottom of the screen to alert -the user of this option. - -In either orbital prediction mode, predictions will not be attempted -for satellites that can never rise above the ground station's horizon, -or for satellites in geostationary orbits. If a satellite is in range -at the starting date and time specified, \fBPREDICT\fP will adjust the -starting date back in time until the point of AOS so that the prediction -screen displays the first pass in its entirety from start to finish. - -.SH SINGLE SATELLITE TRACKING MODE -In addition to predicting satellite passes, \fBPREDICT\fP allows -satellites to be tracked in real-time using \fBPREDICT's\fP -Single Satellite Tracking Mode (main menu option \fB[T]\fP), or -simultaneously as a group of 24 using the program's Multi-Satellite -Tracking Mode (main menu option \fB[M]\fP). The positions of the -Sun and Moon are also displayed when tracking satellites in real-time. - -Selecting option \fB[T]\fP from \fBPREDICT's\fP main menu places the -program in Single Satellite Tracking Mode. The user will be prompted -to select the satellite of interest, after which a screen will appear -and display tracking positions for the satellite selected. - -In Single Satellite Tracking Mode, a wealth of information related -to tracking a spacecraft and communicating through its transponder -is displayed. The current date and time is displayed along with -the satellite's sub-satellite point, its orbital altitude in both -kilometers and statute miles, the slant range distance between the -ground station and the satellite in both kilometers and statute -miles, the current azimuth and elevation headings toward the -satellite, the orbital velocity of the satellite in both kilometers -per hour and statute miles per hour, the footprint of the satellite -in both kilometers and statute miles, the modulo 256 orbital phase -of the satellite, the eclipse depth, the spacecraft antenna squint -angle, and orbital model in use, as well as the current orbit number -are also displayed. The date and time for the next AOS is also -provided. - -Additionally, if the satellite is currently in range of the ground -station, the amount of Doppler shift experienced on uplink and -downlink frequencies, path loss, propagation delay, and echo times -are also displayed. The expected time of LOS is also provided. - -Uplink and downlink frequencies are held in \fBPREDICT's\fP transponder -database file \fIpredict.db\fP located under \fI$HOME/.predict\fP. -A default file is provided with \fBPREDICT\fP. - -Transponders may be selected by pressing the SPACE BAR. The passband -of the transponder may be tuned in 1 kHz increments by pressing the -\fB<\fP and \fB>\fP keys. 100 Hz tuning is possible using the -\fB,\fP and \fB.\fP keys. (These are simply the \fB<\fP and -\fB>\fP keys without the SHIFT key.) - -If no transponder information is available, the data displayed on -the tracking screen is abbreviated. - -The features available in the Single Satellite Tracking Mode make -it possible to accurately determine the proper uplink frequency to -yield a given downlink frequency, or vice versa. For example, if -one wishes to communicate with a station heard on 435.85200 MHz -via FO-29, then 435.85200 MHz can be selected via the keyboard -as an RX frequency using the tuning keys while tracking FO-29, -and the corresponding ground station TX frequency will be displayed -by \fBPREDICT\fP. - -Obviously, an accurate system clock and up-to-date orbital data -are required for the best tuning accuracy. - -If a sound card is present on your machine and the Single Satellite -Tracking Mode is invoked with an uppercase '\fBT\fP' rather than -a lowercase '\fBt\fP', \fBPREDICT\fP will make periodic voice -announcements stating the satellite's tracking coordinates -in real-time. Announcements such as: - -\fI"This is PREDICT. Satellite is at fifty six degrees azimuth and forty -five degrees elevation, and is approaching. Satellite is currently -visible."\fP - -are made at intervals that are a function of how quickly the satellite is -moving across the sky. Announcements can occur as frequently as every 50 -seconds for satellites in low earth orbits such as the International Space -Station (370 km), or as infrequently as every 8 minutes for satellites in -very high orbits, such as the AMC-6 geostationary satellite (35780 km). Voice -announcements are performed as background processes so as not to interfere -with tracking calculations as the announcements are made. Alarms and special -announcements are made when the satellite being tracked enters into or out -of eclipse. Regular announcements can be forced by pressing the '\fBT\fP' -key in Single Satellite Tracking Mode. - -.SH MULTI-SATELLITE TRACKING MODE -Selecting \fB[M]\fP from \fBPREDICT's\fP main menu places the program in a -real-time multi-satellite tracking mode. In this mode, all 24 satellites in -the program's database are tracked simultaneously along with the positions -of the Sun and Moon. Tracking data for the satellites is displayed in -two columns of 12 satellites each. The name, azimuth heading, elevation, -sub-satellite point latitude (in degrees North) and longitude (in degrees -West) positions are provided, along with the slant range distance between -the satellite and the ground station (in kilometers). - -A letter displayed to the right of the slant range indicates the satellite's -sunlight and eclipse conditions. If the satellite is experiencing an eclipse -period, an \fBN\fP is displayed. If the satellite is in sunlight and the -ground station is under the cover of darkness, a \fBV\fP is displayed to -indicate the possibility that the satellite is visible under the current -conditions. If the satellite is in sunlight while conditions at the ground -station do not allow the satellite to be seen, a \fBD\fP is displayed. -Satellites in range of the ground station are displayed in \fBBOLD\fP -lettering. The AOS dates and times for the next three satellites predicted -to come into range are displayed on the bottom of the screen between the -tracking coordinates of the Sun and Moon. Predictions are not made for -satellites in geostationary orbits or for satellites so low in inclination -and/or altitude that they can never rise above the horizon of the ground -station. - -.SH SOLAR ILLUMINATION PREDICTIONS -Selecting \fB[S]\fP from \fBPREDICT's\fP main menu will allow solar -illumination predictions to be made. These predictions indicate how -much sunlight a particular satellite will receive in a 24 hour period. -This information is especially valuable to spacecraft designers and -satellite ground station controllers who must monitor spacecraft power -budgets or thermal conditions on-board their spacecraft due to sunlight -and eclipse periods. It can even be used to predict the optimum times -for astronauts to perform extra-vehicular activities in space. Solar -illumination predictions may be logged to a file in the same manner -that orbital predictions may be logged (by pressing \fBL\fP). - -.SH SOLAR AND LUNAR ORBITAL PREDICTIONS -In addition to making orbital predictions of spacecraft, \fBPREDICT\fP -can also predict transits of the Sun and the Moon. Lunar predictions -are initiated by selecting \fB[L]\fP from \fBPREDICT\fP's Main Menu. -Solar predictions are selected through Main Menu option \fB[O]\fP. - -When making solar and lunar orbital predictions, \fBPREDICT\fP provides -azimuth and elevation headings, the right ascension, declination, -Greenwich Hour Angle (GHA), radial velocity, and normalized distance -(range) to the Sun or Moon. Declination and Greenwich Hour Angle -correspond to the latitude and longitude of the object's sub-satellite -point above the Earth's surface. The radial velocity corresponds to -the speed and direction the object is traveling toward (+) or away -(-) from the ground station, and is expressed in meters per second. -When the radial distance of the Moon is close to zero, the amount of -Doppler shift experienced in Moonbounce communications is minimal. -The normalized distance corresponds to the object's actual distance -to the ground station divided its average distance. In practice, -the normalized distance can range from about 0.945 to 1.055 for -the Moon, and about 0.983 to 1.017 for the Sun. - -Note that the effects of atmospherics are ignored in determining -the elevation angles for the Sun and Moon. Furthermore, the data -provided by \fBPREDICT\fP corresponds to the object's center, and -not the upper or lower limb, as is sometimes done when predicting -the rising and setting times of these celestial objects. - -.SH OPERATION UNDER THE X-WINDOW SYSTEM -\fBPREDICT\fP may be run under the X-Window System by invoking it through -the \fIxpredict\fP script contained with this software. \fIxpredict\fP -can invoke \fIrxvt\fP, \fIxterm\fP, \fIEterm\fP, \fIgnome-terminal\fP, -or \fIkvt\fP, and display \fBPREDICT\fP in a virtual terminal window. -\fIxpredict\fP should be edited for best results. In many cases, -holding down the SHIFT key while pressing the plus (+) and minus (-) -keys allows \fBPREDICT's\fP window to be re-sized when started under -\fIxpredict\fP. - -.SH COMMAND LINE ARGUMENTS -By default, \fBPREDICT\fP reads ground station location and orbital -data information from a pair of files located in the user's home directory -under a hidden subdirectory named \fI.predict\fP. Ground station location -information is held in a file named \fIpredict.qth\fP, while orbital data -information for 24 satellites is held in a file named \fIpredict.tle\fP. - -If we wish to run \fBPREDICT\fP using data from alternate sources -instead of these default files, the names of such files may be passed -to \fBPREDICT\fP on the command line when the program is started. For -example, if we wish to read the TLE file \fIvisual.tle\fP and the QTH -file \fIbeach_house.qth\fP rather than the default files, we could start -\fBPREDICT\fP and pass the names of these alternate files to the -program in the following manner: - - \fIpredict -t visual.tle -q beach_house.qth\fP - -or - - \fIpredict -q beach_house.qth -t visual.tle\fP - -If the files specified are not located in the current working directory, -then their relative or absolute paths should also be specified along -with their names (\fIpredict -t /home/kd2bd/orbs/visual.tle\fP). - -It is also possible to specify only one alternate file while using the -default for the other. For example, - - \fIpredict -t visual.tle\fP - -reads QTH information from the default \fI~/.predict/predict.qth\fP -location, and TLE information from \fIvisual.tle\fP, while - - \fIpredict -q bobs.qth\fP - -reads QTH information from \fIbobs.qth\fP and TLE information from the -default \fI~/.predict/predict.tle\fP location. - -.SH "QUIET" ORBITAL DATABASE UPDATES -It is also possible to update \fBPREDICT's\fP satellite orbital database -using another command line option that updates the database from a NASA -two-line element data set. \fBPREDICT\fP then quietly exits without -displaying anything to the screen, thereby eliminating the need for -entering the program and selecting the appropriate menu options. This -option is invoked using the \fI-u\fP command line switch as follows: - - \fIpredict -u orbs248.tle\fP - -This example updates \fBPREDICT's\fP default orbital database with the -Keplerian elements found in the file \fIorbs248.tle\fP. \fBPREDICT\fP -may be updated from a list of files as well: - - \fIpredict -u amateur.tle visual.tle weather.tle\fP - -If an alternate datafile requires updating, it may also be specified -on the command line using the \fI-t\fP switch as follows: - - \fIpredict -t oscar.tle -u amateur.tle\fP - -This example updates the \fIoscar.tle\fP orbital database with the -two-line element data contained in \fIamateur.tle\fP. - -These options permit the automatic update of \fBPREDICT's\fP orbital -data files using Keplerian orbital data obtained through automatic -means such as FTP, HTTP, or pacsat satellite download. - -For example, the following script can be used to update \fBPREDICT's\fP -orbital database via the Internet: - - \fC#!/bin/sh - wget -qr www.celestrak.com/NORAD/elements/amateur.txt -O amateur.txt - wget -qr www.celestrak.com/NORAD/elements/visual.txt -O visual.txt - wget -qr www.celestrak.com/NORAD/elements/weather.txt -O weather.txt - /usr/local/bin/predict -u amateur.txt visual.txt weather.txt\fR - -To truly automate the process of updating your orbital database, save the -above commands to a file in your home directory (such as \fIkepupdate\fP), -and add the following line to your crontab (type \fIcrontab -e\fP to edit -your crontab): - - \fI0 2 * * * kepupdate\fP - -and \fBPREDICT\fP will automatically update its database every day at -2:00 AM. - -.SH AUTOMATIC ANTENNA TRACKING -\fBPREDICT\fP is compatible with serial port antenna rotator interfaces -conforming to the EasyComm 2 protocol standard. This includes the -PIC/TRACK interface developed by Vicenzo Mezzalira, IW3FOL -, TAPR's EasyTrak Jr. -(currently under development), and Suding Associates Incorporated's -Dish Controllers . -The FODTRACK rotator interface is supported through the use of Luc -Langehegermann's (LX1GT) \fBfodtrack\fP utility written for and -included with \fBPREDICT\fP. - -Using any of these hardware interfaces, \fBPREDICT\fP can automatically -control the position of AZ/EL antenna rotators, and keep antennas -accurately pointed toward a satellite being tracked by \fBPREDICT\fP. -In operation, tracking data from \fBPREDICT\fP is directed to the -specified serial port using the \fI-a\fP command line option. For -example: - - \fIpredict -a /dev/ttyS0\fP - -will send AZ/EL tracking data to the first serial port when the program -is tracking a satellite in the Single Satellite Tracking Mode. The data -sent to the serial port is of the form: \fIAZ241.0 EL26.0\fP using -9600 baud, 8-data bits, 1-stop bit, no parity, and no handshaking. Data -is sent to the interface if the azimuth or elevation headings change by -one degree or more. For interfaces requiring keepalive updates at -least once per second whether the AZ/EL headings have changed or -not (such as the ones by SAI), the \fI-a1\fP option -may be used: - - \fIpredict -a1 /dev/ttyS0\fP - -.SH ADDITIONAL OPTIONS -The \fI-f\fP command-line option, when followed by a satellite name or -object number and starting date/time, allows \fBPREDICT\fP to respond -with satellite positional information. This feature allows \fBPREDICT\fP -to be invoked within other applications that need to determine the -location of a satellite at a particular point in time, such as the -location of where a CCD camera image was taken by a Pacsat satellite -based on its timestamp. - -The information produced includes the date/time in Unix format (the -number of seconds since midnight UTC on January 1, 1970), the date/time -in ASCII (UTC), the elevation of the satellite in degrees, the azimuth -heading of the satellite, the orbital phase (modulo 256), the latitude -and longitude of the satellite's sub-satellite point at the time -specified, the slant range to the satellite in kilometers with -respect to the ground station's location, the orbit number, and -the spacecraft's sunlight visibility information. - -The date/time must be specified in Unix format (number of seconds since -midnight UTC on January 1, 1970). If no starting or ending time is -specified, the current date/time is assumed and a single line of output -is produced. If a starting and ending time are specified, a list of -coordinates beginning at the starting time/date and ending with the -ending time/date will be returned by the program with a one second -resolution. If the letter \fIm\fP is appended to the ending time/date, -then the data returned by the program will have a one minute resolution. -The \fI-o\fP option allows the program to write the calculated data to -an output file rather than directing it to the standard output device -if desired. - -The proper syntax for this option is as follows: - - \fIpredict -f ISS 977446390 977446400 -o datafile\fP - -A list of coordinates starting at the current date/time and -ending 10 seconds later may be produced by the following command: - - \fIpredict -f ISS +10\fP - -If a list of coordinates specifying the position of the satellite -every minute for the next 10 minutes is desired, the following -command may be used: - - \fIpredict -f ISS +10m\fP - -If a satellite name contains spaces, then the entire name must be -enclosed by "quotes". - -The \fI-p\fP option allows orbital predictions for a single pass to -be generated by \fBPREDICT\fP via the command-line. For example: - - \fIpredict -p OSCAR-11 1003536767\fP - -starts predictions for the OSCAR-11 satellite at a Unix time of -1003536767 (Sat 20Oct01 00:12:47 UTC). If the starting date/time -is omitted, the current date/time is used. If a pass is already -in progress at the starting date/time specified, orbital predictions -are moved back to the beginning of AOS of the current pass, and data -for the entire pass from AOS to LOS is provided. - -When either the \fI-f\fP or \fI-p\fP options are used, \fBPREDICT\fP -produces an output consisting of the date/time in Unix format, the -date and time in ASCII (UTC), the elevation of the satellite in -degrees, the azimuth of the satellite in degrees, the orbital phase -(modulo 256), the latitude (N) and longitude (W) of the satellite's -sub-satellite point, the slant range to the satellite (in kilometers), -the orbit number, and the spacecraft's sunlight visibility information. -For example: -\fC -1003611710 Sat 20Oct01 21:01:50 11 6 164 51 72 1389 16669 * -\fR -The output isn't annotated, but then again, it's meant to be read by -other software. - -The \fI-dp\fP option produces a quick orbital prediction for the next -pass of a specified satellite, including 100 MHz downlink Doppler shift -information, in CSV format. For example: - - \fIpredict -dp ISS\fP - -produces: -\fC - -1525500165,Sat 05May18 06:02:45,701.256856 -.br -1525500169,Sat 05May18 06:02:49,678.755942 -.br -1525500172,Sat 05May18 06:02:52,656.033048 -.br -1525500176,Sat 05May18 06:02:56,633.093151 -.br -1525500179,Sat 05May18 06:02:59,609.940999 -.br -1525500183,Sat 05May18 06:03:03,586.582443 -.br -1525500186,Sat 05May18 06:03:06,563.022553 -.br -<... output trimmed ...> -.br -1525500367,Sat 05May18 06:06:07,-733.663728 -.br -1525500370,Sat 05May18 06:06:10,-755.793182 -.br -1525500374,Sat 05May18 06:06:14,-777.690366 -.br -1525500377,Sat 05May18 06:06:17,-799.351435 -.br -1525500381,Sat 05May18 06:06:21,-820.773340 -.br -1525500384,Sat 05May18 06:06:24,-841.952820 -.br -1525500388,Sat 05May18 06:06:28,-862.887147 -.br -\fR - -where the Unix time is followed by the UTC date/time and -100 MHz downlink-referenced Doppler shift. The satellite -name can be followed by a starting date/time and ending -date/time much like the \fI-f\fP option. - -.SH SERVER MODE -\fBPREDICT's\fP network socket interface allows the program to -operate as a server capable of providing tracking data and other -information to client applications using the UDP protocol. It -is even possible to have the \fBPREDICT\fP server and client -applications running on separate machines provided the clients -are connected to the server through a functioning network connection. - -The \fI-s\fP switch is used to start \fBPREDICT\fP in server mode: - - \fIpredict -s\fP - -By default, \fBPREDICT\fP uses socket port 1210 for communicating with -client applications. Therefore, the following line needs to be added -to the end your \fI/etc/services\fP file: - - \fIpredict 1210/udp\fP - -The port number (1210) can be changed to something else if desired. -There is no need to recompile the program if it is changed. To -run more than one instance of \fBPREDICT\fP in server mode on a -single host, an alternate port must be specified when invoking -the additional instances of \fBPREDICT\fP. This can be -accomplished by using the \fI-n\fP switch: - - \fIpredict -n 1211 -t other_tle_file -s\fP - -When invoked in server mode, \fBPREDICT\fP immediately enters -Multi-Satellite Tracking Mode, and makes live tracking data available -to clients. Clients may poll \fBPREDICT\fP for tracking data -when the program is running in either the Multi-Satellite or Single -Satellite Tracking Mode. When in Multi-Satellite Tracking mode, -tracking data for any of the 24 satellites in the program's database -may be accessed by client applications. When in Single-Satellite -Tracking mode, only live tracking data for the single satellite -being tracked may be accessed. Either tracking mode may be ended -at any time. When this is done, \fBPREDICT\fP will return the -last calculated satellite tracking data until the program is -again put into a real-time tracking mode. This allows the user -to return to the main menu, and use other features of the program -without sending potentially harmful data to client applications. - -The best way to write a client application is to use the demonstration -program (demo.c) included in this distribution of \fBPREDICT\fP as -a guide. The sample program has comments to explain how each component -operates. It is useful to pipe the output of this program through -\fIless\fP to easily browse through the data returned (\fIdemo | less\fP). - -In operation, a character array is filled with the command and arguments -to be sent to \fBPREDICT\fP. A socket connection is then opened, the -request is sent, a response is received, and the socket connection -is closed. The command and arguments are in ASCII text format. - -Several excellent network client applications are included in this -release of \fBPREDICT\fP, and may be found under the \fIpredict/clients\fP -directory. - -.SH ADDING SATELLITES -One of the most frequently asked questions is how satellites in -\fBPREDICT's\fP orbital database may be added, modified, or replaced. -As it turns out, there are several ways in which this can be done. -Probably the easiest is to manually edit your -\fI~/.predict/predict.tle\fP file, and replace an existing -satellite's entry with 2-line Keplerian data for the new satellite. -If this method is chosen, however, just make sure to include ONLY -the two line data, and nothing else. - -Another way is to is select the Keyboard Edit option from the program's -Main Menu, select a satellite you wish to replace. Edit the name and -object number (replacing the old information with the new information). -Just hit ENTER, and accept all the other orbital parameters shown. Get -back to \fBPREDICT's\fP Main Menu. Select Auto Update, and then enter -the filename containing the 2-line element data for your favorite new -satellite. The new satellite data should be detected by \fBPREDICT\fP, -and the orbital data for the old satellite will be overwritten by the -new data. - -.SH NEAT TRICKS -In addition to tracking and predicting passes of satellites, \fBPREDICT\fP -may also be used to generate a NASA two-line Keplerian element data set -from data entered via keyboard. For example, let's say you're listening -to Space Shuttle audio re-broadcasts via WA3NAN and Keplerian elements -for the Space Shuttle's orbit are given by the announcer. The orbital -data provided by WA3NAN in verbal form may be manually entered into -\fBPREDICT's\fP orbital database using option \fB[E]\fP of the program's -main menu (Keyboard Edit of Orbital Database). The orbital data for the -Space Shuttle in NASA two-line element form can then be found in your -orbital database file, and may imported to any other satellite tracking -program that accepts two-line element files or distributed to others -electronically. - -It is also possible to run \fBPREDICT\fP as a background process and -direct its display to an unused virtual console by using the following -command: - - \fIpredict < /dev/tty8 > /dev/tty8 &\fP - -Switching to virtual console number 8 (ALT-F8 in text mode) will -allow \fBPREDICT\fP to be controlled and displayed even after you've -logged out. This is especially handy when running \fBPREDICT\fP in -server mode on a remote machine. - -.SH GLOSSARY OF TERMS -The following terms are frequently used in association with satellite -communications and space technology: - -.SH AOS: -Acquisition of Signal - the time at which a ground station first acquires -radio signals from a satellite. \fBPREDICT\fP defines AOS as the time -when the satellite being tracked comes within +/- 0.03 degrees of the -local horizon, although it may have to rise higher than this before -signals are first heard. -.SH Apogee: -Point in a satellite's orbit when the satellite is at its farthest -distance from the earth's surface. -.SH Anomalistic Period: -A satellite orbital parameter specifying the time between successive -perigees. -.SH Ascending Node: -Point in a satellite's orbit when its sub-satellite point crosses the -equator moving south to north. -.SH Azimuth: -The compass direction measured clockwise from true north. North = 0 -degrees, East = 90 degrees, South = 180 degrees, and West = 270 degrees. -.SH Descending Node: -Point in a satellite's orbit when its sub-satellite point crosses the -equator moving north to south. -.SH Doppler Shift: -The motion of a satellite in its orbit around the earth, and in many cases -the rotational motion of the earth itself, causes radio signals generated -by satellites to be received on Earth at frequencies slightly different -than those upon which they were transmitted. \fBPREDICT\fP calculates -what effect these motions have upon the reception of satellites -transmitting on the 146 MHz and 435 MHz Amateur Radio bands. -.SH Elevation: -The angle between the local horizon and the position of the satellite. A -satellite that appears directly above a particular location is said to be -located at an elevation of 90 degrees. A satellite located on the horizon -of a particular location is said to be located at an elevation of 0 degrees. -A satellite with an elevation of less than zero is positioned below the -local horizon, and radio communication with a satellite in such a position -is not possible under normal circumstances. -.SH Footprint: -Diameter of the Earth's surface visible from a satellite. The higher -the satellite's orbital altitude, the greater the footprint, and the -wider the satellite's communications coverage. -.SH LOS: -Loss of Signal - the time at which a ground station loses radio contact -with a satellite. \fBPREDICT\fP defines LOS as the time when the satellite -being tracked comes within +/- 0.03 degrees of the local horizon. -.SH Orbital Phase: -An orbital "clock" that describes a satellite's orbital position with -respect to perigee. Orbital Phase may be modulo 256, or modulo 360, and -is sometimes referred to as mean anomaly when speaking of amateur radio -satellites in elliptical orbits, such as the Phase 3 satellites. -Orbital phase is zero at perigee. -.SH Path Loss: -The apparent attenuation a radio signal undergoes as it travels a given -distance. This attenuation is the result of the dispersion radio waves -experience as they propagate between transmitter and receiver using -antennas of finite gain. Free space path loss is technically an -oxymoron since free space is loss free. -.SH Perigee: -Point in a satellite's orbit when the satellite is at its closest -distance to the earth's surface. -.SH Nodal Period: -A satellite orbital parameter specifying the time between successive -ascending nodes. -.SH Slant Range: -The straight line distance between the ground station and the satellite -at a given time. -.SH Sub-Satellite Point: -The latitude and longitude specifying the location on the Earth that -is directly below the satellite. - -.SH ADDITIONAL INFORMATION -Detailed information on the operation of \fBPREDICT's\fP UDP socket-based -interface as well as sample code for writing your own client applications -is available in the \fIpredict/clients/samples\fP subdirectory. The latest -news is available through the official \fBPREDICT\fP software web page -located at: . -.SH FILES -.TP -\fC~/.predict/predict.tle\fR -Default database of orbital data -.TP -\fC~/.predict/predict.db\fR -Satellite transponder database file -.TP -\fC~/.predict/predict.qth\fR -Default ground station location information - -.SH AUTHORS -\fBPREDICT\fP was written by John A. Magliacane, KD2BD . -The socket server code was contributed by Ivan Galysh, KD4HBO -. The PIC/TRACK serial port antenna -rotator controller code was contributed by Vittorio Benvenuti, I3VFJ -. SGP4/SDP4 code was derived from Pacsal routines -written by Dr. T.S. Kelso, and converted to 'C' by Neoklis Kyriazis, -5B4AZ. See the CREDITS file for additional information. - diff --git a/docs/pdf/predict.pdf b/docs/pdf/predict.pdf deleted file mode 100644 index 50bcd80..0000000 Binary files a/docs/pdf/predict.pdf and /dev/null differ diff --git a/docs/postscript/predict.ps b/docs/postscript/predict.ps deleted file mode 100644 index 0d32f88..0000000 Binary files a/docs/postscript/predict.ps and /dev/null differ diff --git a/docs/text/predict.txt b/docs/text/predict.txt deleted file mode 100644 index 198978e..0000000 --- a/docs/text/predict.txt +++ /dev/null @@ -1,743 +0,0 @@ -PREDICT(1) KD2BD Software PREDICT(1) - - - -NAME - predict - Track and predict passes of satellites in Earth orbit - - -SYNOPSIS - predict [-u tle_update_source] [-t tlefile] [-q qthfile] [-a - serial_port] [-a1 serial_port] [-n network_port] [-f sat_name start- - ing_date/time ending_date/time] [-dp sat_name starting_date/time end- - ing_date/time] [-p sat_name starting_date/time] [-o output_file] [-s] - [-east] [-west] [-north] [-south] - - -DESCRIPTION - PREDICT is a multi-user satellite tracking and orbital prediction pro- - gram written under the Linux operating system by John A. Magliacane, - KD2BD. PREDICT 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 any - later version. - - PREDICT is distributed in the hope that 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. - - -FIRST TIME USE - PREDICT tracks and predicts passes of satellites based on the geograph- - ical location of the ground station, the current date and time as pro- - vided by the computer system's clock, and Keplerian orbital data for - the satellites of interest to the ground station. First time users of - PREDICT are provided default ground station location and orbital data - information files. These files are managed by the program, and are nor- - mally located in a user's home directory under a hidden subdirectory - named .predict. First time users will be prompted to supply PREDICT - with their geographical location (the same as selecting option [G] from - the program's main menu) the first time the program is run. Latitude is - normally expressed in degrees north with latitudes south of the equator - expressed in negative degrees. Longitude is normally expressed in - degrees west with eastern longitudes expressed in negative degrees. - This behavior can be modified by passing the -east or -south commmand - line switches to PREDICT. - - Latitudes and longitudes may be either entered in decimal degrees, or - in degrees, minutes, seconds (DMS) format. Station altitude is entered - as the number of meters the ground station is located above sea level. - This parameter is not very critical. If unsure, make a realistic guess - or simply enter 0. - - Users of PREDICT need Keplerian orbital data for the satellites they - wish to track that is preferably no older than one month. The default - orbital data supplied with the program is liable to be quite old, and - so must be brought up to date if accurate results are to be expected. - This may be accomplished by selecting option [E] from PREDICT's main - menu and manually entering Keplerian data for each satellite in the - program's database, or by selecting option [U] and specifying a file - containing recent 2-line Keplerian element data sets that correspond to - the satellites in the program's database. Keplerian orbital data is - available from a variety of sources, including - http://www.celestrak.com/, http://www.space-track.org/, and - http://www.amsat.org/. - - -PROGRAM OPERATION - The start-up screen of PREDICT lists the program's main functions. - Several tracking and orbital prediction modes are available, as well as - several utilities to manage the program's orbital database. - - -PREDICTING SATELLITE PASSES - Orbital predictions are useful for determining in advance when a satel- - lite is expected to come within range of a ground station. They can - also be used to look back to previous passes to help to confirm or - identify past observations. - - PREDICT includes two orbital prediction modes to predict any pass above - a ground station (main menu option [P]), or list only those passes that - might be visible to a ground station through optical means (main menu - option [V]). In either mode, the user is asked to select a satellite of - interest from a menu, and then asked to enter the date and time (in - UTC) at which prediction calculations should start. - - The current date and time may be selected by default by entering noth- - ing and hitting simply the ENTER key when prompted to enter the start- - ing date and time. - - Otherwise, the starting date and time should be entered in the form: - - DDMonYY HH:MM:SS - - Entering the time is optional. If it is omitted, midnight (00:00:00) - is assumed. Once complete, orbital calculations are started and pre- - diction information is displayed on the screen. - - The date and time in UTC, along with the satellite's elevation above - ground, azimuth heading, modulo 256 orbital phase, sub-satellite point - latitude and longitude, slant range between the ground station and the - satellite, and the satellite's orbit number are all displayed. If - spacecraft attitude parameters (ALAT, ALON) are included in PREDICT's - transponder database file, then spacecraft antenna squint angles are - displayed instead of orbit numbers in the orbital prediction output. - - An asterisk (*) displayed to the right of the orbit number or squint - angle means the satellite is in sunlight at the date and time listed on - the line. A plus symbol (+) means the satellite is in sunlight while - the ground station is under the cover of darkness at the time and date - listed. Under good viewing conditions, large satellites such as the - International Space Station (ISS), the US Space Shuttles, and Hubble - Space Telescope, and the Upper Atmosphere Research Satellite (UARS) are - visible to the naked eye. If no symbol appears to the right of each - line, then the satellite is in the Earth's shadow at the time and date - listed, and is not receiving any illumination from the sun. - - Pressing the ENTER key, the 'Y' key, or the space bar advances the - orbital predictions to a screen listing the next available passes. - Pressing the 'L' key allows the currently displayed screen plus any - subsequent screens to be logged to a text file in your current working - directory. The name given to this file is the name of the satellite - plus a ".txt" extension. Any slashes or spaces appearing in the satel- - lite name are replaced by the underscore (_) symbol. The logging fea- - ture may be toggled on and off at any time by pressing the 'L' key. - Exiting the orbital prediction mode by pressing 'N' or hitting the - ESCape key will also close the log file. The log file will be appended - with additional information if additional predictions are conducted for - the same satellite with the logging feature turned on. - - Selecting [V] from PREDICT's main menu will permit a ground station to - only predict passes for satellites that are potentially visible through - optical means. Since all other passes are filtered out in this mode, - and since some satellites may never arrive over a ground station when - optical viewing conditions are possible, the program provides the - option of breaking out of visual orbital prediction mode by pressing - the [ESC]ape key as calculations are made. A prompt is displayed at the - bottom of the screen to alert the user of this option. - - In either orbital prediction mode, predictions will not be attempted - for satellites that can never rise above the ground station's horizon, - or for satellites in geostationary orbits. If a satellite is in range - at the starting date and time specified, PREDICT will adjust the start- - ing date back in time until the point of AOS so that the prediction - screen displays the first pass in its entirety from start to finish. - - -SINGLE SATELLITE TRACKING MODE - In addition to predicting satellite passes, PREDICT allows satellites - to be tracked in real-time using PREDICT's Single Satellite Tracking - Mode (main menu option [T]), or simultaneously as a group of 24 using - the program's Multi-Satellite Tracking Mode (main menu option [M]). - The positions of the Sun and Moon are also displayed when tracking - satellites in real-time. - - Selecting option [T] from PREDICT's main menu places the program in - Single Satellite Tracking Mode. The user will be prompted to select the - satellite of interest, after which a screen will appear and display - tracking positions for the satellite selected. - - In Single Satellite Tracking Mode, a wealth of information related to - tracking a spacecraft and communicating through its transponder is dis- - played. The current date and time is displayed along with the satel- - lite's sub-satellite point, its orbital altitude in both kilometers and - statute miles, the slant range distance between the ground station and - the satellite in both kilometers and statute miles, the current azimuth - and elevation headings toward the satellite, the orbital velocity of - the satellite in both kilometers per hour and statute miles per hour, - the footprint of the satellite in both kilometers and statute miles, - the modulo 256 orbital phase of the satellite, the eclipse depth, the - spacecraft antenna squint angle, and orbital model in use, as well as - the current orbit number are also displayed. The date and time for the - next AOS is also provided. - - Additionally, if the satellite is currently in range of the ground sta- - tion, the amount of Doppler shift experienced on uplink and downlink - frequencies, path loss, propagation delay, and echo times are also dis- - played. The expected time of LOS is also provided. - - Uplink and downlink frequencies are held in PREDICT's transponder data- - base file predict.db located under $HOME/.predict. A default file is - provided with PREDICT. - - Transponders may be selected by pressing the SPACE BAR. The passband - of the transponder may be tuned in 1 kHz increments by pressing the < - and > keys. 100 Hz tuning is possible using the , and . keys. (These - are simply the < and > keys without the SHIFT key.) - - If no transponder information is available, the data displayed on the - tracking screen is abbreviated. - - The features available in the Single Satellite Tracking Mode make it - possible to accurately determine the proper uplink frequency to yield a - given downlink frequency, or vice versa. For example, if one wishes to - communicate with a station heard on 435.85200 MHz via FO-29, then - 435.85200 MHz can be selected via the keyboard as an RX frequency using - the tuning keys while tracking FO-29, and the corresponding ground sta- - tion TX frequency will be displayed by PREDICT. - - Obviously, an accurate system clock and up-to-date orbital data are - required for the best tuning accuracy. - - If a sound card is present on your machine and the Single Satellite - Tracking Mode is invoked with an uppercase 'T' rather than a lowercase - 't', PREDICT will make periodic voice announcements stating the satel- - lite's tracking coordinates in real-time. Announcements such as: - - "This is PREDICT. Satellite is at fifty six degrees azimuth and forty - five degrees elevation, and is approaching. Satellite is currently - visible." - - are made at intervals that are a function of how quickly the satellite - is moving across the sky. Announcements can occur as frequently as - every 50 seconds for satellites in low earth orbits such as the Inter- - national Space Station (370 km), or as infrequently as every 8 minutes - for satellites in very high orbits, such as the AMC-6 geostationary - satellite (35780 km). Voice announcements are performed as background - processes so as not to interfere with tracking calculations as the - announcements are made. Alarms and special announcements are made when - the satellite being tracked enters into or out of eclipse. Regular - announcements can be forced by pressing the 'T' key in Single Satellite - Tracking Mode. - - -MULTI-SATELLITE TRACKING MODE - Selecting [M] from PREDICT's main menu places the program in a real- - time multi-satellite tracking mode. In this mode, all 24 satellites in - the program's database are tracked simultaneously along with the posi- - tions of the Sun and Moon. Tracking data for the satellites is dis- - played in two columns of 12 satellites each. The name, azimuth heading, - elevation, sub-satellite point latitude (in degrees North) and longi- - tude (in degrees West) positions are provided, along with the slant - range distance between the satellite and the ground station (in kilome- - ters). - - A letter displayed to the right of the slant range indicates the satel- - lite's sunlight and eclipse conditions. If the satellite is experienc- - ing an eclipse period, an N is displayed. If the satellite is in sun- - light and the ground station is under the cover of darkness, a V is - displayed to indicate the possibility that the satellite is visible - under the current conditions. If the satellite is in sunlight while - conditions at the ground station do not allow the satellite to be seen, - a D is displayed. Satellites in range of the ground station are dis- - played in BOLD lettering. The AOS dates and times for the next three - satellites predicted to come into range are displayed on the bottom of - the screen between the tracking coordinates of the Sun and Moon. Pre- - dictions are not made for satellites in geostationary orbits or for - satellites so low in inclination and/or altitude that they can never - rise above the horizon of the ground station. - - -SOLAR ILLUMINATION PREDICTIONS - Selecting [S] from PREDICT's main menu will allow solar illumination - predictions to be made. These predictions indicate how much sunlight a - particular satellite will receive in a 24 hour period. This informa- - tion is especially valuable to spacecraft designers and satellite - ground station controllers who must monitor spacecraft power budgets or - thermal conditions on-board their spacecraft due to sunlight and - eclipse periods. It can even be used to predict the optimum times for - astronauts to perform extra-vehicular activities in space. Solar illu- - mination predictions may be logged to a file in the same manner that - orbital predictions may be logged (by pressing L). - - -SOLAR AND LUNAR ORBITAL PREDICTIONS - In addition to making orbital predictions of spacecraft, PREDICT can - also predict transits of the Sun and the Moon. Lunar predictions are - initiated by selecting [L] from PREDICT's Main Menu. Solar predictions - are selected through Main Menu option [O]. - - When making solar and lunar orbital predictions, PREDICT provides - azimuth and elevation headings, the right ascension, declination, - Greenwich Hour Angle (GHA), radial velocity, and normalized distance - (range) to the Sun or Moon. Declination and Greenwich Hour Angle cor- - respond to the latitude and longitude of the object's sub-satellite - point above the Earth's surface. The radial velocity corresponds to - the speed and direction the object is traveling toward (+) or away (-) - from the ground station, and is expressed in meters per second. When - the radial distance of the Moon is close to zero, the amount of Doppler - shift experienced in Moonbounce communications is minimal. The normal- - ized distance corresponds to the object's actual distance to the ground - station divided its average distance. In practice, the normalized dis- - tance can range from about 0.945 to 1.055 for the Moon, and about 0.983 - to 1.017 for the Sun. - - Note that the effects of atmospherics are ignored in determining the - elevation angles for the Sun and Moon. Furthermore, the data provided - by PREDICT corresponds to the object's center, and not the upper or - lower limb, as is sometimes done when predicting the rising and setting - times of these celestial objects. - - -OPERATION UNDER THE X-WINDOW SYSTEM - PREDICT may be run under the X-Window System by invoking it through the - xpredict script contained with this software. xpredict can invoke rxvt, - xterm, Eterm, gnome-terminal, or kvt, and display PREDICT in a virtual - terminal window. xpredict should be edited for best results. In many - cases, holding down the SHIFT key while pressing the plus (+) and minus - (-) keys allows PREDICT's window to be re-sized when started under - xpredict. - - -COMMAND LINE ARGUMENTS - By default, PREDICT reads ground station location and orbital data - information from a pair of files located in the user's home directory - under a hidden subdirectory named .predict. Ground station location - information is held in a file named predict.qth, while orbital data - information for 24 satellites is held in a file named predict.tle. - - If we wish to run PREDICT using data from alternate sources instead of - these default files, the names of such files may be passed to PREDICT - on the command line when the program is started. For example, if we - wish to read the TLE file visual.tle and the QTH file beach_house.qth - rather than the default files, we could start PREDICT and pass the - names of these alternate files to the program in the following manner: - - predict -t visual.tle -q beach_house.qth - - or - - predict -q beach_house.qth -t visual.tle - - If the files specified are not located in the current working direc- - tory, then their relative or absolute paths should also be specified - along with their names (predict -t /home/kd2bd/orbs/visual.tle). - - It is also possible to specify only one alternate file while using the - default for the other. For example, - - predict -t visual.tle - - reads QTH information from the default ~/.predict/predict.qth location, - and TLE information from visual.tle, while - - predict -q bobs.qth - - reads QTH information from bobs.qth and TLE information from the - default ~/.predict/predict.tle location. - - -QUIET ORBITAL DATABASE UPDATES - It is also possible to update PREDICT's satellite orbital database - using another command line option that updates the database from a NASA - two-line element data set. PREDICT then quietly exits without display- - ing anything to the screen, thereby eliminating the need for entering - the program and selecting the appropriate menu options. This option is - invoked using the -u command line switch as follows: - - predict -u orbs248.tle - - This example updates PREDICT's default orbital database with the Keple- - rian elements found in the file orbs248.tle. PREDICT may be updated - from a list of files as well: - - predict -u amateur.tle visual.tle weather.tle - - If an alternate datafile requires updating, it may also be specified on - the command line using the -t switch as follows: - - predict -t oscar.tle -u amateur.tle - - This example updates the oscar.tle orbital database with the two-line - element data contained in amateur.tle. - - These options permit the automatic update of PREDICT's orbital data - files using Keplerian orbital data obtained through automatic means - such as FTP, HTTP, or pacsat satellite download. - - For example, the following script can be used to update PREDICT's - orbital database via the Internet: - - #!/bin/sh - wget -qr www.celestrak.com/NORAD/elements/amateur.txt -O amateur.txt - wget -qr www.celestrak.com/NORAD/elements/visual.txt -O visual.txt - wget -qr www.celestrak.com/NORAD/elements/weather.txt -O weather.txt - /usr/local/bin/predict -u amateur.txt visual.txt weather.txt - - To truly automate the process of updating your orbital database, save - the above commands to a file in your home directory (such as kepup- - date), and add the following line to your crontab (type crontab -e to - edit your crontab): - - 0 2 * * * kepupdate - - and PREDICT will automatically update its database every day at 2:00 - AM. - - -AUTOMATIC ANTENNA TRACKING - PREDICT is compatible with serial port antenna rotator interfaces con- - forming to the EasyComm 2 protocol standard. This includes the - PIC/TRACK interface developed by Vicenzo Mezzalira, IW3FOL , TAPR's EasyTrak Jr. (currently - under development), and Suding Associates Incorporated's Dish Con- - trollers . The - FODTRACK rotator interface is supported through the use of Luc Lange- - hegermann's (LX1GT) fodtrack utility written for and included with PRE- - DICT. - - Using any of these hardware interfaces, PREDICT can automatically con- - trol the position of AZ/EL antenna rotators, and keep antennas accu- - rately pointed toward a satellite being tracked by PREDICT. In opera- - tion, tracking data from PREDICT is directed to the specified serial - port using the -a command line option. For example: - - predict -a /dev/ttyS0 - - will send AZ/EL tracking data to the first serial port when the program - is tracking a satellite in the Single Satellite Tracking Mode. The - data sent to the serial port is of the form: AZ241.0 EL26.0 using 9600 - baud, 8-data bits, 1-stop bit, no parity, and no handshaking. Data is - sent to the interface if the azimuth or elevation headings change by - one degree or more. For interfaces requiring keepalive updates at - least once per second whether the AZ/EL headings have changed or not - (such as the ones by SAI), the -a1 option may be used: - - predict -a1 /dev/ttyS0 - - -ADDITIONAL OPTIONS - The -f command-line option, when followed by a satellite name or object - number and starting date/time, allows PREDICT to respond with satellite - positional information. This feature allows PREDICT to be invoked - within other applications that need to determine the location of a - satellite at a particular point in time, such as the location of where - a CCD camera image was taken by a Pacsat satellite based on its time- - stamp. - - The information produced includes the date/time in Unix format (the - number of seconds since midnight UTC on January 1, 1970), the date/time - in ASCII (UTC), the elevation of the satellite in degrees, the azimuth - heading of the satellite, the orbital phase (modulo 256), the latitude - and longitude of the satellite's sub-satellite point at the time speci- - fied, the slant range to the satellite in kilometers with respect to - the ground station's location, the orbit number, and the spacecraft's - sunlight visibility information. - - The date/time must be specified in Unix format (number of seconds since - midnight UTC on January 1, 1970). If no starting or ending time is - specified, the current date/time is assumed and a single line of output - is produced. If a starting and ending time are specified, a list of - coordinates beginning at the starting time/date and ending with the - ending time/date will be returned by the program with a one second res- - olution. If the letter m is appended to the ending time/date, then the - data returned by the program will have a one minute resolution. The -o - option allows the program to write the calculated data to an output - file rather than directing it to the standard output device if desired. - - The proper syntax for this option is as follows: - - predict -f ISS 977446390 977446400 -o datafile - - A list of coordinates starting at the current date/time and ending 10 - seconds later may be produced by the following command: - - predict -f ISS +10 - - If a list of coordinates specifying the position of the satellite every - minute for the next 10 minutes is desired, the following command may be - used: - - predict -f ISS +10m - - If a satellite name contains spaces, then the entire name must be - enclosed by "quotes". - - The -p option allows orbital predictions for a single pass to be gener- - ated by PREDICT via the command-line. For example: - - predict -p OSCAR-11 1003536767 - - starts predictions for the OSCAR-11 satellite at a Unix time of - 1003536767 (Sat 20Oct01 00:12:47 UTC). If the starting date/time is - omitted, the current date/time is used. If a pass is already in - progress at the starting date/time specified, orbital predictions are - moved back to the beginning of AOS of the current pass, and data for - the entire pass from AOS to LOS is provided. - - When either the -f or -p options are used, PREDICT produces an output - consisting of the date/time in Unix format, the date and time in ASCII - (UTC), the elevation of the satellite in degrees, the azimuth of the - satellite in degrees, the orbital phase (modulo 256), the latitude (N) - and longitude (W) of the satellite's sub-satellite point, the slant - range to the satellite (in kilometers), the orbit number, and the - spacecraft's sunlight visibility information. For example: 1003611710 - Sat 20Oct01 21:01:50 11 6 164 51 72 1389 16669 * The out- - put isn't annotated, but then again, it's meant to be read by other - software. - - The -dp option produces a quick orbital prediction for the next pass of - a specified satellite, including 100 MHz downlink Doppler shift infor- - mation, in CSV format. For example: - - predict -dp ISS - - produces: - - 1525500165,Sat 05May18 06:02:45,701.256856 - 1525500169,Sat 05May18 06:02:49,678.755942 - 1525500172,Sat 05May18 06:02:52,656.033048 - 1525500176,Sat 05May18 06:02:56,633.093151 - 1525500179,Sat 05May18 06:02:59,609.940999 - 1525500183,Sat 05May18 06:03:03,586.582443 - 1525500186,Sat 05May18 06:03:06,563.022553 - <... output trimmed ...> - 1525500367,Sat 05May18 06:06:07,-733.663728 - 1525500370,Sat 05May18 06:06:10,-755.793182 - 1525500374,Sat 05May18 06:06:14,-777.690366 - 1525500377,Sat 05May18 06:06:17,-799.351435 - 1525500381,Sat 05May18 06:06:21,-820.773340 - 1525500384,Sat 05May18 06:06:24,-841.952820 - 1525500388,Sat 05May18 06:06:28,-862.887147 - - - where the Unix time is followed by the UTC date/time and 100 MHz down- - link-referenced Doppler shift. The satellite name can be followed by a - starting date/time and ending date/time much like the -f option. - - -SERVER MODE - PREDICT's network socket interface allows the program to operate as a - server capable of providing tracking data and other information to - client applications using the UDP protocol. It is even possible to - have the PREDICT server and client applications running on separate - machines provided the clients are connected to the server through a - functioning network connection. - - The -s switch is used to start PREDICT in server mode: - - predict -s - - By default, PREDICT uses socket port 1210 for communicating with client - applications. Therefore, the following line needs to be added to the - end your /etc/services file: - - predict 1210/udp - - The port number (1210) can be changed to something else if desired. - There is no need to recompile the program if it is changed. To run - more than one instance of PREDICT in server mode on a single host, an - alternate port must be specified when invoking the additional instances - of PREDICT. This can be accomplished by using the -n switch: - - predict -n 1211 -t other_tle_file -s - - When invoked in server mode, PREDICT immediately enters Multi-Satellite - Tracking Mode, and makes live tracking data available to clients. - Clients may poll PREDICT for tracking data when the program is running - in either the Multi-Satellite or Single Satellite Tracking Mode. When - in Multi-Satellite Tracking mode, tracking data for any of the 24 - satellites in the program's database may be accessed by client applica- - tions. When in Single-Satellite Tracking mode, only live tracking data - for the single satellite being tracked may be accessed. Either track- - ing mode may be ended at any time. When this is done, PREDICT will - return the last calculated satellite tracking data until the program is - again put into a real-time tracking mode. This allows the user to - return to the main menu, and use other features of the program without - sending potentially harmful data to client applications. - - The best way to write a client application is to use the demonstration - program (demo.c) included in this distribution of PREDICT as a guide. - The sample program has comments to explain how each component operates. - It is useful to pipe the output of this program through less to easily - browse through the data returned (demo | less). - - In operation, a character array is filled with the command and argu- - ments to be sent to PREDICT. A socket connection is then opened, the - request is sent, a response is received, and the socket connection is - closed. The command and arguments are in ASCII text format. - - Several excellent network client applications are included in this - release of PREDICT, and may be found under the predict/clients direc- - tory. - - -ADDING SATELLITES - One of the most frequently asked questions is how satellites in PRE- - DICT's orbital database may be added, modified, or replaced. As it - turns out, there are several ways in which this can be done. Probably - the easiest is to manually edit your ~/.predict/predict.tle file, and - replace an existing satellite's entry with 2-line Keplerian data for - the new satellite. If this method is chosen, however, just make sure - to include ONLY the two line data, and nothing else. - - Another way is to is select the Keyboard Edit option from the program's - Main Menu, select a satellite you wish to replace. Edit the name and - object number (replacing the old information with the new information). - Just hit ENTER, and accept all the other orbital parameters shown. Get - back to PREDICT's Main Menu. Select Auto Update, and then enter the - filename containing the 2-line element data for your favorite new - satellite. The new satellite data should be detected by PREDICT, and - the orbital data for the old satellite will be overwritten by the new - data. - - -NEAT TRICKS - In addition to tracking and predicting passes of satellites, PREDICT - may also be used to generate a NASA two-line Keplerian element data set - from data entered via keyboard. For example, let's say you're listening - to Space Shuttle audio re-broadcasts via WA3NAN and Keplerian elements - for the Space Shuttle's orbit are given by the announcer. The orbital - data provided by WA3NAN in verbal form may be manually entered into - PREDICT's orbital database using option [E] of the program's main menu - (Keyboard Edit of Orbital Database). The orbital data for the Space - Shuttle in NASA two-line element form can then be found in your orbital - database file, and may imported to any other satellite tracking program - that accepts two-line element files or distributed to others electroni- - cally. - - It is also possible to run PREDICT as a background process and direct - its display to an unused virtual console by using the following com- - mand: - - predict < /dev/tty8 > /dev/tty8 & - - Switching to virtual console number 8 (ALT-F8 in text mode) will allow - PREDICT to be controlled and displayed even after you've logged out. - This is especially handy when running PREDICT in server mode on a - remote machine. - - -GLOSSARY OF TERMS - The following terms are frequently used in association with satellite - communications and space technology: - - -AOS: - Acquisition of Signal - the time at which a ground station first - acquires radio signals from a satellite. PREDICT defines AOS as the - time when the satellite being tracked comes within +/- 0.03 degrees of - the local horizon, although it may have to rise higher than this before - signals are first heard. - -Apogee: - Point in a satellite's orbit when the satellite is at its farthest dis- - tance from the earth's surface. - -Anomalistic Period: - A satellite orbital parameter specifying the time between successive - perigees. - -Ascending Node: - Point in a satellite's orbit when its sub-satellite point crosses the - equator moving south to north. - -Azimuth: - The compass direction measured clockwise from true north. North = 0 - degrees, East = 90 degrees, South = 180 degrees, and West = 270 - degrees. - -Descending Node: - Point in a satellite's orbit when its sub-satellite point crosses the - equator moving north to south. - -Doppler Shift: - The motion of a satellite in its orbit around the earth, and in many - cases the rotational motion of the earth itself, causes radio signals - generated by satellites to be received on Earth at frequencies slightly - different than those upon which they were transmitted. PREDICT calcu- - lates what effect these motions have upon the reception of satellites - transmitting on the 146 MHz and 435 MHz Amateur Radio bands. - -Elevation: - The angle between the local horizon and the position of the satellite. - A satellite that appears directly above a particular location is said - to be located at an elevation of 90 degrees. A satellite located on the - horizon of a particular location is said to be located at an elevation - of 0 degrees. A satellite with an elevation of less than zero is posi- - tioned below the local horizon, and radio communication with a satel- - lite in such a position is not possible under normal circumstances. - -Footprint: - Diameter of the Earth's surface visible from a satellite. The higher - the satellite's orbital altitude, the greater the footprint, and the - wider the satellite's communications coverage. - -LOS: - Loss of Signal - the time at which a ground station loses radio contact - with a satellite. PREDICT defines LOS as the time when the satellite - being tracked comes within +/- 0.03 degrees of the local horizon. - -Orbital Phase: - An orbital "clock" that describes a satellite's orbital position with - respect to perigee. Orbital Phase may be modulo 256, or modulo 360, and - is sometimes referred to as mean anomaly when speaking of amateur radio - satellites in elliptical orbits, such as the Phase 3 satellites. - Orbital phase is zero at perigee. - -Path Loss: - The apparent attenuation a radio signal undergoes as it travels a given - distance. This attenuation is the result of the dispersion radio waves - experience as they propagate between transmitter and receiver using - antennas of finite gain. Free space path loss is technically an oxy- - moron since free space is loss free. - -Perigee: - Point in a satellite's orbit when the satellite is at its closest dis- - tance to the earth's surface. - -Nodal Period: - A satellite orbital parameter specifying the time between successive - ascending nodes. - -Slant Range: - The straight line distance between the ground station and the satellite - at a given time. - -Sub-Satellite Point: - The latitude and longitude specifying the location on the Earth that is - directly below the satellite. - - -ADDITIONAL INFORMATION - Detailed information on the operation of PREDICT's UDP socket-based - interface as well as sample code for writing your own client applica- - tions is available in the predict/clients/samples subdirectory. The - latest news is available through the official PREDICT software web page - located at: . - -FILES - ~/.predict/predict.tle - Default database of orbital data - - ~/.predict/predict.db - Satellite transponder database file - - ~/.predict/predict.qth - Default ground station location information - - -AUTHORS - PREDICT was written by John A. Magliacane, KD2BD . - The socket server code was contributed by Ivan Galysh, KD4HBO - . The PIC/TRACK serial port antenna rotator - controller code was contributed by Vittorio Benvenuti, I3VFJ . SGP4/SDP4 code was derived from Pacsal routines written - by Dr. T.S. Kelso, and converted to 'C' by Neoklis Kyriazis, 5B4AZ. - See the CREDITS file for additional information. - - - - -KD2BD Software 05 May 2018 PREDICT(1) diff --git a/hamradio.txt b/hamradio.txt new file mode 100644 index 0000000..d3180ee --- /dev/null +++ b/hamradio.txt @@ -0,0 +1,39 @@ +What is Amateur Radio? + +The Federal Communications Commission defines the Amateur Radio Service +as a radiocommunication service for the purpose of self-training, +intercommunication and technical investigations carried out by amateurs, +that is, duly authorized persons interested in radio technique solely with +a personal aim and without pecuniary interest. The Amateur Satellite Service +is a radiocommunication service using space stations on earth satellites +for the same purposes as those of the amateur service. + +In the United States, amateur radio operators are licensed by the Federal +Communications Commission. There are at present three classes of operator +licenses in the United States: Technician, General, and Extra Class. +An operator license authorizes the holder to be the control operator +of a station with the privileges of the operator class specified on +the license. A Technician Class license or higher is required to +communicate on frequencies used by amateur satellites. + +An Amateur Radio License may be obtained after successfully passing +a multiple choice written exam covering FCC rules and regulations, +communication electronics theory, and radio operating practices. All +classes of license except Technician also require successful passing +a Morse Code Proficiency exam. + +Study material to help those interested in gaining the knowledge necessary +for becoming a licensed Amateur Radio Operator is available in written +(book) form, as computer software, and on videotape. Study guides are +also available at Radio Shack stores. + +Practice exams for any class of Amateur Radio License are available on the +World Wide Web at: http://www.biochem.mcw.edu/Postdocs/Simon/radio/exam.html. +A list of examination schedules and locations are also available on the +World Wide Web at: http://www.arrl.org/arrlvec/examsearch.phtml. + +Further information on the fascinating world of Amateur satellite +communications, and the Amateur Satellite Program as a whole, is +available through AMSAT-NA, the Amateur Satellite Corporation of +North America, at: http://www.amsat.org/. + diff --git a/history.txt b/history.txt new file mode 100644 index 0000000..545f011 --- /dev/null +++ b/history.txt @@ -0,0 +1,31 @@ + + ********************** + The History of PREDICT + ********************** + +Work on PREDICT started on May 26, 1991 with the purpose of creating +a replacement for QUIKTRAK software that ran on the Commodore 64 home +computer. PREDICT was originally written in C and compiled using a +"Super C" compiler. After the program was completed and found to be +useful, PREDICT was then ported to several Unix machines and then to +DOS using a Borland Turbo C++ compiler. The DOS version was completed +in May 1994 and was the first version of PREDICT released to the public. +PREDICT was later ported to the Linux operating system in 1995 and +released as freeware as a pre-compiled a.out dynamically linked +binary in 1996. + +Through years of daily use by many users, PREDICT was found to be +reliable, accurate, and easy to use. Only minor changes were made +to the program until 1999 when major portions were re-written from +scratch and many new features were added. + +PREDICT Version 2 for DOS represents the second major release of the +program, and is designed to serve as a replacement for the original +DOS version of PREDICT released in 1994. Although similar to the Linux +version of the program, the DOS version of PREDICT does not include +all the features of the Linux version. + +The latest news and information regarding PREDICT software may be +found via the Internet at the following URL: + + http://www.qsl.net/kd2bd/predict.html diff --git a/installer.c b/installer.c deleted file mode 100644 index 131540d..0000000 --- a/installer.c +++ /dev/null @@ -1,210 +0,0 @@ -/*******************************************************/ -/** PREDICT installation program by KD2BD. **/ -/** This program is compiled and executed through **/ -/** the "configure" script in this directory. **/ -/** It checks for the existence of a soundcard, **/ -/** creates an appropriate "predict.h" file based **/ -/** on the directory in which PREDICT was installed, **/ -/** compiles PREDICT and associated utilities, and **/ -/** sets symbolic links between the executables **/ -/** generated and the installation directory **/ -/** specified (/usr/local/bin by default). **/ -/** **/ -/** Created: Oct 1999 -==- Last update: 04-May-2018 **/ -/*******************************************************/ - -#include -#include -#include -#include -#include -#include -#include - -char version[10]; - -void logo() -{ - attrset(COLOR_PAIR(6)|A_REVERSE|A_BOLD); - mvprintw(3,18," "); - mvprintw(4,18," --== PREDICT v%s ==-- ",version); - mvprintw(5,18," Released by John A. Magliacane, KD2BD "); - mvprintw(6,18," May 2018 "); - mvprintw(7,18," "); -} - -int main (argc,argv) -char argc, *argv[]; -{ - int x, cc, dsp=-1; - char pwd[80], src_path[255], dest_path[255], ans, destination[80]; - FILE *infile, *outfile; - - initscr(); - start_color(); - cbreak(); - scrollok(stdscr,TRUE); - - init_pair(1,COLOR_WHITE,COLOR_BLUE); - init_pair(2,COLOR_RED,COLOR_BLUE); - init_pair(3,COLOR_CYAN,COLOR_BLUE); - init_pair(4,COLOR_GREEN,COLOR_BLUE); - init_pair(5,COLOR_YELLOW,COLOR_BLUE); - init_pair(6,COLOR_RED,COLOR_WHITE); - - cc=0; - getcwd(pwd,79); - dsp=open("/dev/dsp",O_WRONLY); - - if (dsp!=-1) - close(dsp); - - infile=fopen(".version","r"); - fscanf(infile,"%s",version); - fclose(infile); - - bkgdset(COLOR_PAIR(1)|A_BOLD); - clear(); - refresh(); - logo(); - attrset(COLOR_PAIR(5)|A_BOLD); - - mvprintw(10,2,"PREDICT is a satellite tracking and orbital prediction program written for\n"); - printw(" Linux and similar operating systems by John A. Magliacane, KD2BD.\n"); - printw(" PREDICT is free software. You can redistribute it and/or modify it under\n"); - printw(" the terms of the GNU General Public License as published by the Free\n"); - printw(" Software Foundation, either version 2 of the License or any later version.\n\n"); - printw(" PREDICT is distributed in the hope that it will useful, but WITHOUT ANY\n"); - printw(" WARRANTY, without even the implied warranty of MERCHANTABILITY or FITNESS\n"); - printw(" FOR A PARTICULAR PURPOSE. See the GNU General Public License for more\n"); - printw(" details.\n\n"); - - attrset(COLOR_PAIR(1)|A_BOLD); - printw(" Do you accept these conditions and wish to install this software? [Y/N] "); - refresh(); - - do - { - ans=getch(); - - } while (ans!='n' && ans!='N' && ans!='y' && ans!='Y' && ans!=27); - - - if (ans=='y' || ans=='Y') - { - clear(); - curs_set(0); - logo(); - attrset(COLOR_PAIR(4)|A_BOLD); - printw("\n\n\n\n PREDICT appears to be installed under %s/\n",pwd); - - if (dsp!=-1) - printw(" An audio device was found at /dev/dsp"); - else - printw(" No soundcard was found in your system... Bummer!"); - - /* Write predict.h */ - - outfile=fopen("predict.h","w"); - - fprintf(outfile,"/* This file was generated by the installer program */\n\n"); - - fprintf(outfile,"char *predictpath={\"%s/\"}, ",pwd); - - if (dsp==-1) - fprintf(outfile, "soundcard=0,"); - else - fprintf(outfile, "soundcard=1,"); - - fprintf(outfile, " *version={\"%s\"};\n",version); - - fclose(outfile); - - printw("\n predict.h was successfully created!\n"); - attrset(COLOR_PAIR(3)|A_BOLD); - printw("\n Now compiling PREDICT. (This may take a while...)\n"); - refresh(); - - /* Compile PREDICT... */ - - cc=system("cc -Wall -O3 -s -fomit-frame-pointer predict.c -lm -lncurses -pthread -o predict"); - - /* Create vocalizer.h */ - - outfile=fopen("vocalizer/vocalizer.h","w"); - - fprintf(outfile,"/* This file was generated by the installer program */\n\n"); - fprintf(outfile,"char *path={\"%s/vocalizer/\"};\n",pwd); - - fclose(outfile); - - if (dsp!=-1 && cc==0) - { - attrset(COLOR_PAIR(3)|A_BOLD); - printw(" Compiling vocalizer...\n"); - refresh(); - system("cc -Wall -O3 -s -fomit-frame-pointer vocalizer/vocalizer.c -o vocalizer/vocalizer"); - } - - /* Now install the programs and man page by creating symlinks - between the newly created executables and the destination - directory. The default destination directory for the - executables is /usr/local/bin. This default may be - overridden by specifying a different path as an argument - to this program (ie: installer /usr/bin). Normally this - is passed along from the "configure" script. */ - - if (argc==2) - strncpy(destination,argv[1],78); - else - strncpy(destination,"/usr/local/bin/\0",16); - - /* Ensure a trailing '/' is - present in "destination". */ - - x=strlen(destination); - - if (destination[x-1]!='/' && x!=0) - { - destination[x]='/'; - destination[x+1]=0; - } - - if (cc==0) - { - attrset(COLOR_PAIR(3)|A_BOLD); - printw(" Linking PREDICT binaries to %s\n\n",destination); - sprintf(dest_path,"%spredict",destination); - unlink(dest_path); - sprintf(src_path,"%s/predict",pwd); - symlink(src_path,dest_path); - sprintf(dest_path,"%sxpredict",destination); - unlink(dest_path); - sprintf(src_path,"%s/xpredict",pwd); - symlink(src_path,dest_path); - unlink("/usr/local/man/man1/predict.1"); - sprintf(dest_path,"%s/docs/man/predict.1",pwd); - symlink(dest_path,"/usr/local/man/man1/predict.1"); - - attrset(COLOR_PAIR(5)|A_BOLD); - printw(" Don't forget to check out the new graphical\n"); - printw(" client applications under the 'clients' directory!"); - attrset(COLOR_PAIR(1)|A_BOLD); - printw("\n\n Done! Visit http://www.qsl.net/kd2bd/predict.html for the latest news!"); - } - - else - { - attrset(COLOR_PAIR(2)|A_BOLD); - printw(" *** Compilation failed. Program not installed. :-("); - beep(); - } - } - - refresh(); - unlink("installer"); - curs_set(1); - refresh(); - endwin(); - exit(0); -} diff --git a/makefile b/makefile new file mode 100644 index 0000000..679b506 --- /dev/null +++ b/makefile @@ -0,0 +1,30 @@ +# +# GNU makefile +# +CC = gcc +INCL = +CFLAGS = -O6 -s -I../include +LINK = gcc +STRIP = strip +BIND = coff2exe +RM = del +LFLAGS = -L../lib +LIBS = -lm -lpdc~1 -lemu +PROGS = predict.exe + +all: $(PROGS) + +%.exe : % + $(STRIP) $< + $(BIND) $< + +% : %.o + $(LINK) $(LFLAGS) -o $@ $< $(LIBS) + +predict.exe : predict + +predict : predict.o + +clean: + -$(RM) *.o + -$(RM) predict diff --git a/NEWS b/news.txt similarity index 62% rename from NEWS rename to news.txt index 1a39578..d3ce196 100644 --- a/NEWS +++ b/news.txt @@ -1,144 +1,155 @@ -PREDICT 2.2.0 Release -===================== -The major revisions in PREDICT 2.2.0 include the use of -SGP4/SDP4 orbital models for improved tracking accuracy, -as well as a re-written Single Satellite Tracking Mode -to provide more useful real-time satellite communications -data. - - -New Orbital Models -================== -The simplified orbital model used in previous versions -of PREDICT provided very accurate and dependable results -for the majority of users, but was not quite good enough -for more demanding applications at NASA. - -In July 2002, a test was performed on the accuracy of the -orbital model used in PREDICT. The test was performed by -a software engineer working at Edwards Airforce Base in -California, and involved comparing data provided by PREDICT's -Calc() and PreCalc() functions to that of a radar system -used to track the International Space Station. Ranging -data from the radar was taken every 50 milliseconds for -the duration of the pass. - -The error in azimuth was found to be almost zero at AOS, and -increased to 0.3 degrees over the duration of the pass. The -elevation was about 0.2 degrees lower than that measured by -radar for the entire pass. The calculated range was approximately -7000 meters low at AOS, and approximately 7000 meters high at -LOS with a crossover at TCA. - - -New Single Satellite Tracking Mode -================================== -The Single Satellite Tracking Mode has been completely revised -in PREDICT version 2.2.0. PREDICT now supports a database of -satellite transponder data so that the program can provide -path loss and Doppler-corrected uplink and downlink frequency -information in real-time. For satellites containing linear -transponders, uplink and downlink frequencies may be adjusted -by pressing the '<' and '>' keys to tune down across the -transponder in 1 kHz steps, or the ',' and '.' keys (unshifted -'<' and '>') to tune in 100 Hz steps. Switching between -transponders may be accomplished by pressing the SPACE bar. - -Eclipse depth, an angle representing how deep a satellite is -in solar eclipse, is also provided. Eclipse depth is positive -when the spacecraft is in eclipse, and negative when it is in -sunlight. Spacecraft antenna squint angle is provided if -ALAT/ALON (spacecraft attitude coordinates) parameters are -included in the transponder database file. - - -Transponder Database -==================== -When PREDICT version 2.2.0 is initially run, a default transponder -database file (predict.db) is copied into the user's $HOME/.predict -directory. At present, the database provides for many new features, -som of which have not been completely implemented by PREDICT in -this early release of the 2.2.x run. The most glaring omission -is lack of a facility to edit or modify the database file. For -the time being, it may be edited by hand if care is excercised. - -The format for the database file is as follows. Using NOAA-17 -as an example: - -NOAA-17 Name of satellite -27453 Object number (must match predict.tle) -No alat/alon ALAT/ALON spacecraft attitude information -APT Downlink Description of transmitter/transponder -0.0, 0.0 Uplink passband limits in MHz (0.0 = no uplink) -137.620, 137.620 Corresponding downlink passband limits (single downlink) -No weekly schedule Days of the week this transponder is active -No orbital schedule Orbital phase when this transponder is active -HRPT Downlink Description of second transmitter/transponder -0.0, 0.0 Uplink passband limits (low end limit, high end) -1707.0, 1707.0 Corresponding downlink passband limits (single downlink) -No weekly schedule Days of the week this transponder is active -No orbital schedule Orbital phase when this transponder is active -end End of data for this satellite - -OSCAR-29 contains linear (inverting) as well as digital (Pacsat) -transponders: - -OSCAR-29 -24278 -No alat/alon -Mode JA Transponder -145.900, 146.000 -435.900, 435.800 -No weekly schedule -No orbital schedule -Mode JD Channel A -145.850, 145.850 -435.910, 435.910 -No weekly schedule -No orbital schedule -Mode JD Channel B -145.870, 145.870 -435.910, 435.910 -No weekly schedule -No orbital schedule -Mode JD Channel C -145.910, 145.910 -435.910, 435.910 -No weekly schedule -No orbital schedule -end - -Weekly and orbital schedules have not yet been implemented in -PREDICT 2.2.0, so for the time being, entries for these parameters -should begin with the word "No". ALAT/ALON should be entered as -30.0, 0.0 for alat=30.0 and alon=0.0. See $HOME/.predict/predict.db -for further examples. - -Entries in predict.db need not be in the same order as they appear -in predict.tle. Satellite names need not match either, but the -object numbers in predict.db must be correct. predict.db may contain -more satellite entries than those appearing in predict.tle (normally 24). -PREDICT reads the entire database file, and reads only the information -that applies to the satellites in the predict.tle file in use at the -time. If no transponder data is available, or if a satellite contains -no communication transponders, the Single Satellite tracking mode -screen is modified accordingly. - -Future revisions of PREDICT will likely include a database editor -as well as possible modifications to the format of the database. - - -Other changes -============= -PREDICT now installs into a directory whose name includes the revision -number (ie: predict-2.2.0). - -Despite the major revisions to the tracking code, all other program -functions, with the exception of the Single Satellite Tracking Mode, -should act as they did in earlier versions. - - --- -John, KD2BD -October 12, 2002 - +PREDICT 2.2.x Release +====================== +The major revisions in PREDICT 2.2.x include the use of +SGP4/SDP4 orbital models for improved tracking accuracy, +a re-written Single Satellite Tracking Mode to provide +more useful real-time satellite communications data, +and several new command-line options. + +New Orbital Models +================== +The simplified orbital model used in previous versions +of PREDICT provided very accurate and dependable results +for the majority of users, but was not quite good enough +for more demanding applications at NASA. + +In July 2002, a test was performed on the accuracy of the +orbital model used in PREDICT prior to version 2.2.x. The +test was performed by a software engineer working at Edwards +Airforce Base in California, and involved comparing data +provided by PREDICT's Calc() and PreCalc() functions to that +of a radar system used to track the International Space Station. +Ranging data from the radar was taken every 50 milliseconds for +the duration of the pass. + +The error in azimuth was found to be almost zero at AOS, and +increased to 0.3 degrees over the duration of the pass. The +elevation was about 0.2 degrees lower than that measured by +radar for the entire pass. The calculated range was approximately +7000 meters low at AOS, and approximately 7000 meters high at +LOS, with a crossover at the time of closest approach. + +The adoption of SGP4/SDP4 orbital models in PREDICT 2.2.x should +result in improved tracking and orbital prediction accuracy. +In benchmark testing, the SGP4 model has demonstrated an accuracy +of 0.1 degrees in both azimuth and elevation bearings using TLE +elements sets that are several days old. + +PREDICT 2.2.x invokes the SGP4 model for near earth satellites having +orbital periods less than 225 minutes. For deep space satellites +having orbital periods greater than 225 minutes, the SDP4 model +is used. + + +New Single Satellite Tracking Mode +================================== +The Single Satellite Tracking Mode has been completely revised +in PREDICT 2.2.x. PREDICT now supports a database of +satellite transponder data so that the program can provide +path loss and Doppler-corrected uplink and downlink frequency +information in real-time. For satellites containing linear +transponders, uplink and downlink frequencies may be adjusted +by pressing the '<' and '>' keys to tune down across the +transponder in 1 kHz steps, or the ',' and '.' keys (unshifted +'<' and '>') to tune in 100 Hz steps. Switching between +transponders may be accomplished by pressing the SPACE bar. + +Eclipse depth, an angle representing how deep a satellite is +in solar eclipse, is also provided. Eclipse depth is positive +when the spacecraft is in eclipse, and negative when it is in +sunlight. Spacecraft antenna squint angle is provided if +ALAT/ALON (spacecraft attitude coordinates) parameters are +included in the transponder database file. + + +Transponder Database +==================== +When PREDICT version 2.2.x is run, a transponder database file +(predict.db) is read by the program. At present, the database +provides for many new features, some of which have not been +completely implemented by PREDICT in this early release of the +2.2.x series. The most glaring omission is the lack of a facility +to edit or modify the database file. For the time being, it may be +edited by hand if care is excercised. + +The format for the database file is as follows. Using NOAA-17 +as an example: + +NOAA-17 Name of satellite +27453 Object number (must match predict.tle) +No alat/alon ALAT/ALON spacecraft attitude information +APT Downlink Description of transmitter/transponder +0.0, 0.0 Uplink passband limits in MHz (0.0 = no uplink) +137.620, 137.620 Corresponding downlink passband limits (single downlink) +No weekly schedule Days of the week this transponder is active +No orbital schedule Orbital phase when this transponder is active +HRPT Downlink Description of second transmitter/transponder +0.0, 0.0 Uplink passband limits (low end limit, high end) +1707.0, 1707.0 Corresponding downlink passband limits (single downlink) +No weekly schedule Days of the week this transponder is active +No orbital schedule Orbital phase when this transponder is active +end End of data for this satellite + +OSCAR-29 contains linear (inverting) as well as digital (Pacsat) +transponders: + +OSCAR-29 +24278 +No alat/alon +Mode JA Transponder +145.900, 146.000 +435.900, 435.800 +No weekly schedule +No orbital schedule +Mode JD Channel A +145.850, 145.850 +435.910, 435.910 +No weekly schedule +No orbital schedule +Mode JD Channel B +145.870, 145.870 +435.910, 435.910 +No weekly schedule +No orbital schedule +Mode JD Channel C +145.910, 145.910 +435.910, 435.910 +No weekly schedule +No orbital schedule +end + +Weekly and orbital schedules have not yet been implemented in this +version of PREDICT, so for the time being, entries for these parameters +should begin with the word "No". ALAT/ALON should be entered as +30.0, 0.0 for alat=30.0 and alon=0.0. See $HOME/.predict/predict.db +for further examples. + +Entries in predict.db need not be in the same order as they appear +in predict.tle. Satellite names need not match either, but the +object numbers in predict.db must be correct. predict.db may contain +more satellite entries than those appearing in predict.tle (normally 24). +PREDICT reads the entire database file, and selects only the information +that applies to the satellites in the predict.tle file in use at the +time. If no transponder data is available, or if a satellite contains +no communication transponders, the Single Satellite tracking mode +display screen is abbreviated accordingly. + +Future versions of PREDICT will likely include a database editor +as well as possible modifications to the format of the database. + + +Other changes +============= +PREDICT contains code to control several different antenna rotator control +systems via the serial port. HOWEVER, DOS lacks serial port drivers, so +these features probably will not work at the present time. + +Despite the major revisions to the tracking code, all other program +functions, with the exception of the Single Satellite Tracking Mode, +should behave as they did in earlier versions. + + +-- +John, KD2BD +November 2, 2002 + diff --git a/predict-2.2.5.lsm b/predict-2.2.5.lsm deleted file mode 100644 index 0ea0c80..0000000 --- a/predict-2.2.5.lsm +++ /dev/null @@ -1,37 +0,0 @@ -Begin4 -Title: PREDICT -Version: 2.2.5 -Entered-date: 2018-05-07 -Description: PREDICT is an easy to use, ncurses-based satellite - tracking/orbital prediction program developed for the - Linux operating system. PREDICT permits users to track - satellites in real-time, or make orbital predictions in - advance of their arrival. A unique voice mode allows - azimuth and elevation bearings of a satellite to be - articulated via a soundcard to aid a ground-based - observer in locating and identifying satellites through - optical means. PREDICT also provides live bearings of - the Sun and Moon, as well as solar illumination conditions - onboard satellites. Doppler shift and path loss information - is also provided for analyzing radio communication paths - between satellites and earth-based ground stations. - PREDICT supports the PIC/TRACK automatic antenna tracking - system, and includes a UDP socket-based interface that - allows the program to provide real-time tracking data to - any number of client applications running either locally - or remotely via a network connection. Several socket-based - graphical satellite tracking display applications are - included in this release of PREDICT. PREDICT requires - ncurses version 4.2 or higher and the pthreads library - for successful compilation. -Keywords: Satellite tracking, orbital prediction, amateur radio, - astronomy, OSCAR satellites, Space Shuttle, ISS -Author: kd2bd@amsat.org (John A. Magliacane) - galysh@juno.nrl.navy.mil (Ivan Galysh) - (socket code) - benscosm@iol.it (Vittorio Benvenuti) - (PIC/TRACK code) -Maintained-by: kd2bd@amsat.org (John A. Magliacane) -Primary-site: http://www.qsl.net/kd2bd/predict-2.2.5.tar.gz -Platforms: Linux/Unix -Copying-policy: GPL -End - diff --git a/predict.c b/predict.c index c9b86d3..7af468a 100644 --- a/predict.c +++ b/predict.c @@ -1,6677 +1,5268 @@ -/***************************************************************************\ -* PREDICT: A satellite tracking/orbital prediction program * -* Project started 26-May-1991 by John A. Magliacane, KD2BD * -* Last update: 04-May-2018 * -***************************************************************************** -* * -* 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 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. * -* * -***************************************************************************** -* See the "CREDITS" file for the names of those who have * -* generously contributed their time, talent, and effort to this project. * -\***************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "predict.h" - -/* Constants used by SGP4/SDP4 code */ - -#define km2mi 0.621371 /* km to miles */ -#define deg2rad 1.745329251994330E-2 /* Degrees to radians */ -#define pi 3.14159265358979323846 /* Pi */ -#define pio2 1.57079632679489656 /* Pi/2 */ -#define x3pio2 4.71238898038468967 /* 3*Pi/2 */ -#define twopi 6.28318530717958623 /* 2*Pi */ -#define e6a 1.0E-6 -#define tothrd 6.6666666666666666E-1 /* 2/3 */ -#define xj2 1.0826158E-3 /* J2 Harmonic (WGS '72) */ -#define xj3 -2.53881E-6 /* J3 Harmonic (WGS '72) */ -#define xj4 -1.65597E-6 /* J4 Harmonic (WGS '72) */ -#define xke 7.43669161E-2 -#define xkmper 6.378137E3 /* WGS 84 Earth radius km */ -#define xmnpda 1.44E3 /* Minutes per day */ -#define ae 1.0 -#define ck2 5.413079E-4 -#define ck4 6.209887E-7 -#define f 3.35281066474748E-3 /* Flattening factor */ -#define ge 3.986008E5 /* Earth gravitational constant (WGS '72) */ -#define s 1.012229 -#define qoms2t 1.880279E-09 -#define secday 8.6400E4 /* Seconds per day */ -#define omega_E 1.00273790934 /* Earth rotations/siderial day */ -#define omega_ER 6.3003879 /* Earth rotations, rads/siderial day */ -#define zns 1.19459E-5 -#define c1ss 2.9864797E-6 -#define zes 1.675E-2 -#define znl 1.5835218E-4 -#define c1l 4.7968065E-7 -#define zel 5.490E-2 -#define zcosis 9.1744867E-1 -#define zsinis 3.9785416E-1 -#define zsings -9.8088458E-1 -#define zcosgs 1.945905E-1 -#define zcoshs 1 -#define zsinhs 0 -#define q22 1.7891679E-6 -#define q31 2.1460748E-6 -#define q33 2.2123015E-7 -#define g22 5.7686396 -#define g32 9.5240898E-1 -#define g44 1.8014998 -#define g52 1.0508330 -#define g54 4.4108898 -#define root22 1.7891679E-6 -#define root32 3.7393792E-7 -#define root44 7.3636953E-9 -#define root52 1.1428639E-7 -#define root54 2.1765803E-9 -#define thdt 4.3752691E-3 -#define rho 1.5696615E-1 -#define mfactor 7.292115E-5 -#define sr 6.96000E5 /* Solar radius - km (IAU 76) */ -#define AU 1.49597870691E8 /* Astronomical unit - km (IAU 76) */ - -/* Entry points of Deep() */ - -#define dpinit 1 /* Deep-space initialization code */ -#define dpsec 2 /* Deep-space secular code */ -#define dpper 3 /* Deep-space periodic code */ - -/* Flow control flag definitions */ - -#define ALL_FLAGS -1 -#define SGP_INITIALIZED_FLAG 0x000001 /* not used */ -#define SGP4_INITIALIZED_FLAG 0x000002 -#define SDP4_INITIALIZED_FLAG 0x000004 -#define SGP8_INITIALIZED_FLAG 0x000008 /* not used */ -#define SDP8_INITIALIZED_FLAG 0x000010 /* not used */ -#define SIMPLE_FLAG 0x000020 -#define DEEP_SPACE_EPHEM_FLAG 0x000040 -#define LUNAR_TERMS_DONE_FLAG 0x000080 -#define NEW_EPHEMERIS_FLAG 0x000100 /* not used */ -#define DO_LOOP_FLAG 0x000200 -#define RESONANCE_FLAG 0x000400 -#define SYNCHRONOUS_FLAG 0x000800 -#define EPOCH_RESTART_FLAG 0x001000 -#define VISIBLE_FLAG 0x002000 -#define SAT_ECLIPSED_FLAG 0x004000 - -struct { char line1[70]; - char line2[70]; - char name[25]; - long catnum; - long setnum; - char designator[10]; - int year; - double refepoch; - double incl; - double raan; - double eccn; - double argper; - double meanan; - double meanmo; - double drag; - double nddot6; - double bstar; - long orbitnum; - } sat[24]; - -struct { char callsign[17]; - double stnlat; - double stnlong; - int stnalt; - } qth; - -struct { char name[25]; - long catnum; - char squintflag; - double alat; - double alon; - unsigned char transponders; - char transponder_name[10][80]; - double uplink_start[10]; - double uplink_end[10]; - double downlink_start[10]; - double downlink_end[10]; - unsigned char dayofweek[10]; - int phase_start[10]; - int phase_end[10]; - } sat_db[24]; - -/* Global variables for sharing data among functions... */ - -double tsince, jul_epoch, jul_utc, eclipse_depth=0, - sat_azi, sat_ele, sat_range, sat_range_rate, - sat_lat, sat_lon, sat_alt, sat_vel, phase, - sun_azi, sun_ele, daynum, fm, fk, age, aostime, - lostime, ax, ay, az, rx, ry, rz, squint, alat, alon, - sun_ra, sun_dec, sun_lat, sun_lon, sun_range, sun_range_rate, - moon_az, moon_el, moon_dx, moon_ra, moon_dec, moon_gha, moon_dv; - -char qthfile[50], tlefile[50], dbfile[50], temp[80], output[25], - serial_port[15], resave=0, reload_tle=0, netport[7], - once_per_second=0, ephem[5], sat_sun_status, findsun, - calc_squint, database=0, xterm, io_lat='N', io_lon='W'; - -int indx, antfd, iaz, iel, ma256, isplat, isplong, socket_flag=0, - Flags=0; - -long rv, irk; - -unsigned char val[256]; - -/* The following variables are used by the socket server. They - are updated in the MultiTrack() and SingleTrack() functions. */ - -char visibility_array[24], tracking_mode[30]; - -float az_array[24], el_array[24], long_array[24], lat_array[24], - footprint_array[24], range_array[24], altitude_array[24], - velocity_array[24], eclipse_depth_array[24], phase_array[24], - squint_array[24]; - -double doppler[24], nextevent[24]; - -long aos_array[24], orbitnum_array[24]; - -unsigned short portbase=0; - -/** Type definitions **/ - -/* Two-line-element satellite orbital data - structure used directly by the SGP4/SDP4 code. */ - -typedef struct { - double epoch, xndt2o, xndd6o, bstar, xincl, - xnodeo, eo, omegao, xmo, xno; - int catnr, elset, revnum; - char sat_name[25], idesg[9]; - } tle_t; - -/* Geodetic position structure used by SGP4/SDP4 code. */ - -typedef struct { - double lat, lon, alt, theta; - } geodetic_t; - -/* General three-dimensional vector structure used by SGP4/SDP4 code. */ - -typedef struct { - double x, y, z, w; - } vector_t; - -/* Common arguments between deep-space functions used by SGP4/SDP4 code. */ - -typedef struct { - /* Used by dpinit part of Deep() */ - double eosq, sinio, cosio, betao, aodp, theta2, - sing, cosg, betao2, xmdot, omgdot, xnodot, xnodp; - - /* Used by dpsec and dpper parts of Deep() */ - double xll, omgadf, xnode, em, xinc, xn, t; - - /* Used by thetg and Deep() */ - double ds50; - } deep_arg_t; - -/* Global structure used by SGP4/SDP4 code. */ - -geodetic_t obs_geodetic; - -/* Two-line Orbital Elements for the satellite used by SGP4/SDP4 code. */ - -tle_t tle; - -/* Functions for testing and setting/clearing flags used in SGP4/SDP4 code */ - -int isFlagSet(int flag) -{ - return (Flags&flag); -} - -int isFlagClear(int flag) -{ - return (~Flags&flag); -} - -void SetFlag(int flag) -{ - Flags|=flag; -} - -void ClearFlag(int flag) -{ - Flags&=~flag; -} - -/* Remaining SGP4/SDP4 code follows... */ - -int Sign(double arg) -{ - /* Returns sign of a double */ - - if (arg>0) - return 1; - - else if (arg<0) - return -1; - - else - return 0; -} - -double Sqr(double arg) -{ - /* Returns square of a double */ - return (arg*arg); -} - -double Cube(double arg) -{ - /* Returns cube of a double */ - return (arg*arg*arg); -} - -double Radians(double arg) -{ - /* Returns angle in radians from argument in degrees */ - return (arg*deg2rad); -} - -double Degrees(double arg) -{ - /* Returns angle in degrees from argument in radians */ - return (arg/deg2rad); -} - -double ArcSin(double arg) -{ - /* Returns the arcsine of the argument */ - - if (fabs(arg)>=1.0) - return(Sign(arg)*pio2); - else - - return(atan(arg/sqrt(1.0-arg*arg))); -} - -double ArcCos(double arg) -{ - /* Returns arccosine of argument */ - return(pio2-ArcSin(arg)); -} - -void Magnitude(vector_t *v) -{ - /* Calculates scalar magnitude of a vector_t argument */ - v->w=sqrt(Sqr(v->x)+Sqr(v->y)+Sqr(v->z)); -} - -void Vec_Add(vector_t *v1, vector_t *v2, vector_t *v3) -{ - /* Adds vectors v1 and v2 together to produce v3 */ - v3->x=v1->x+v2->x; - v3->y=v1->y+v2->y; - v3->z=v1->z+v2->z; - Magnitude(v3); -} - -void Vec_Sub(vector_t *v1, vector_t *v2, vector_t *v3) -{ - /* Subtracts vector v2 from v1 to produce v3 */ - v3->x=v1->x-v2->x; - v3->y=v1->y-v2->y; - v3->z=v1->z-v2->z; - Magnitude(v3); -} - -void Scalar_Multiply(double k, vector_t *v1, vector_t *v2) -{ - /* Multiplies the vector v1 by the scalar k to produce the vector v2 */ - v2->x=k*v1->x; - v2->y=k*v1->y; - v2->z=k*v1->z; - v2->w=fabs(k)*v1->w; -} - -void Scale_Vector(double k, vector_t *v) -{ - /* Multiplies the vector v1 by the scalar k */ - v->x*=k; - v->y*=k; - v->z*=k; - Magnitude(v); -} - -double Dot(vector_t *v1, vector_t *v2) -{ - /* Returns the dot product of two vectors */ - return (v1->x*v2->x+v1->y*v2->y+v1->z*v2->z); -} - -double Angle(vector_t *v1, vector_t *v2) -{ - /* Calculates the angle between vectors v1 and v2 */ - Magnitude(v1); - Magnitude(v2); - return(ArcCos(Dot(v1,v2)/(v1->w*v2->w))); -} - -void Cross(vector_t *v1, vector_t *v2 ,vector_t *v3) -{ - /* Produces cross product of v1 and v2, and returns in v3 */ - v3->x=v1->y*v2->z-v1->z*v2->y; - v3->y=v1->z*v2->x-v1->x*v2->z; - v3->z=v1->x*v2->y-v1->y*v2->x; - Magnitude(v3); -} - -void Normalize(vector_t *v) -{ - /* Normalizes a vector */ - v->x/=v->w; - v->y/=v->w; - v->z/=v->w; -} - -double AcTan(double sinx, double cosx) -{ - /* Four-quadrant arctan function */ - - if (cosx==0.0) - { - if (sinx>0.0) - return (pio2); - else - return (x3pio2); - } - - else - { - if (cosx>0.0) - { - if (sinx>0.0) - return (atan(sinx/cosx)); - else - return (twopi+atan(sinx/cosx)); - } - - else - return (pi+atan(sinx/cosx)); - } -} - -double FMod2p(double x) -{ - /* Returns mod 2PI of argument */ - - int i; - double ret_val; - - ret_val=x; - i=ret_val/twopi; - ret_val-=i*twopi; - - if (ret_val<0.0) - ret_val+=twopi; - - return ret_val; -} - -double Modulus(double arg1, double arg2) -{ - /* Returns arg1 mod arg2 */ - - int i; - double ret_val; - - ret_val=arg1; - i=ret_val/arg2; - ret_val-=i*arg2; - - if (ret_val<0.0) - ret_val+=arg2; - - return ret_val; -} - -double Frac(double arg) -{ - /* Returns fractional part of double argument */ - return(arg-floor(arg)); -} - -int Round(double arg) -{ - /* Returns argument rounded up to nearest integer */ - return((int)floor(arg+0.5)); -} - -double Int(double arg) -{ - /* Returns the floor integer of a double arguement, as double */ - return(floor(arg)); -} - -void Convert_Sat_State(vector_t *pos, vector_t *vel) -{ - /* Converts the satellite's position and velocity */ - /* vectors from normalized values to km and km/sec */ - Scale_Vector(xkmper, pos); - Scale_Vector(xkmper*xmnpda/secday, vel); -} - -double Julian_Date_of_Year(double year) -{ - /* The function Julian_Date_of_Year calculates the Julian Date */ - /* of Day 0.0 of {year}. This function is used to calculate the */ - /* Julian Date of any date by using Julian_Date_of_Year, DOY, */ - /* and Fraction_of_Day. */ - - /* Astronomical Formulae for Calculators, Jean Meeus, */ - /* pages 23-25. Calculate Julian Date of 0.0 Jan year */ - - long A, B, i; - double jdoy; - - year=year-1; - i=year/100; - A=i; - i=A/4; - B=2-A+i; - i=365.25*year; - i+=30.6001*14; - jdoy=i+1720994.5+B; - - return jdoy; -} - -double Julian_Date_of_Epoch(double epoch) -{ - /* The function Julian_Date_of_Epoch returns the Julian Date of */ - /* an epoch specified in the format used in the NORAD two-line */ - /* element sets. It has been modified to support dates beyond */ - /* the year 1999 assuming that two-digit years in the range 00-56 */ - /* correspond to 2000-2056. Until the two-line element set format */ - /* is changed, it is only valid for dates through 2056 December 31. */ - - double year, day; - - /* Modification to support Y2K */ - /* Valid 1957 through 2056 */ - - day=modf(epoch*1E-3, &year)*1E3; - - if (year<57) - year=year+2000; - else - year=year+1900; - - return (Julian_Date_of_Year(year)+day); -} - -int DOY (int yr, int mo, int dy) -{ - /* The function DOY calculates the day of the year for the specified */ - /* date. The calculation uses the rules for the Gregorian calendar */ - /* and is valid from the inception of that calendar system. */ - - const int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; - int i, day; - - day=0; - - for (i=0; i2)) - day++; - - return day; -} - -double Fraction_of_Day(int hr, int mi, double se) -{ - /* Fraction_of_Day calculates the fraction of */ - /* a day passed at the specified input time. */ - - double dhr, dmi; - - dhr=(double)hr; - dmi=(double)mi; - - return ((dhr+(dmi+se/60.0)/60.0)/24.0); -} - -double Julian_Date(struct tm *cdate) -{ - /* The function Julian_Date converts a standard calendar */ - /* date and time to a Julian Date. The procedure Date_Time */ - /* performs the inverse of this function. */ - - double julian_date; - - julian_date=Julian_Date_of_Year(cdate->tm_year)+DOY(cdate->tm_year,cdate->tm_mon,cdate->tm_mday)+Fraction_of_Day(cdate->tm_hour,cdate->tm_min,cdate->tm_sec)+5.787037e-06; /* Round up to nearest 1 sec */ - - return julian_date; -} - -void Date_Time(double julian_date, struct tm *cdate) -{ - /* The function Date_Time() converts a Julian Date to - standard calendar date and time. The function - Julian_Date() performs the inverse of this function. */ - - time_t jtime; - - jtime=(julian_date-2440587.5)*86400.0; - *cdate=*gmtime(&jtime); -} - -double Delta_ET(double year) -{ - /* The function Delta_ET has been added to allow calculations on */ - /* the position of the sun. It provides the difference between UT */ - /* (approximately the same as UTC) and ET (now referred to as TDT).*/ - /* This function is based on a least squares fit of data from 1950 */ - /* to 1991 and will need to be updated periodically. */ - - /* Values determined using data from 1950-1991 in the 1990 - Astronomical Almanac. See DELTA_ET.WQ1 for details. */ - - double delta_et; - - delta_et=26.465+0.747622*(year-1950)+1.886913*sin(twopi*(year-1975)/33); - - return delta_et; -} - -double ThetaG(double epoch, deep_arg_t *deep_arg) -{ - /* The function ThetaG calculates the Greenwich Mean Sidereal Time */ - /* for an epoch specified in the format used in the NORAD two-line */ - /* element sets. It has now been adapted for dates beyond the year */ - /* 1999, as described above. The function ThetaG_JD provides the */ - /* same calculation except that it is based on an input in the */ - /* form of a Julian Date. */ - - /* Reference: The 1992 Astronomical Almanac, page B6. */ - - double year, day, UT, jd, TU, GMST, ThetaG; - - /* Modification to support Y2K */ - /* Valid 1957 through 2056 */ - - day=modf(epoch*1E-3,&year)*1E3; - - if (year<57) - year+=2000; - else - year+=1900; - - UT=modf(day,&day); - jd=Julian_Date_of_Year(year)+day; - TU=(jd-2451545.0)/36525; - GMST=24110.54841+TU*(8640184.812866+TU*(0.093104-TU*6.2E-6)); - GMST=Modulus(GMST+secday*omega_E*UT,secday); - ThetaG=twopi*GMST/secday; - deep_arg->ds50=jd-2433281.5+UT; - ThetaG=FMod2p(6.3003880987*deep_arg->ds50+1.72944494); - - return ThetaG; -} - -double ThetaG_JD(double jd) -{ - /* Reference: The 1992 Astronomical Almanac, page B6. */ - - double UT, TU, GMST; - - UT=Frac(jd+0.5); - jd=jd-UT; - TU=(jd-2451545.0)/36525; - GMST=24110.54841+TU*(8640184.812866+TU*(0.093104-TU*6.2E-6)); - GMST=Modulus(GMST+secday*omega_E*UT,secday); - - return (twopi*GMST/secday); -} - -void Calculate_Solar_Position(double time, vector_t *solar_vector) -{ - /* Calculates solar position vector */ - - double mjd, year, T, M, L, e, C, O, Lsa, nu, R, eps; - - mjd=time-2415020.0; - year=1900+mjd/365.25; - T=(mjd+Delta_ET(year)/secday)/36525.0; - M=Radians(Modulus(358.47583+Modulus(35999.04975*T,360.0)-(0.000150+0.0000033*T)*Sqr(T),360.0)); - L=Radians(Modulus(279.69668+Modulus(36000.76892*T,360.0)+0.0003025*Sqr(T),360.0)); - e=0.01675104-(0.0000418+0.000000126*T)*T; - C=Radians((1.919460-(0.004789+0.000014*T)*T)*sin(M)+(0.020094-0.000100*T)*sin(2*M)+0.000293*sin(3*M)); - O=Radians(Modulus(259.18-1934.142*T,360.0)); - Lsa=Modulus(L+C-Radians(0.00569-0.00479*sin(O)),twopi); - nu=Modulus(M+C,twopi); - R=1.0000002*(1.0-Sqr(e))/(1.0+e*cos(nu)); - eps=Radians(23.452294-(0.0130125+(0.00000164-0.000000503*T)*T)*T+0.00256*cos(O)); - R=AU*R; - solar_vector->x=R*cos(Lsa); - solar_vector->y=R*sin(Lsa)*cos(eps); - solar_vector->z=R*sin(Lsa)*sin(eps); - solar_vector->w=R; -} - -int Sat_Eclipsed(vector_t *pos, vector_t *sol, double *depth) -{ - /* Calculates satellite's eclipse status and depth */ - - double sd_sun, sd_earth, delta; - vector_t Rho, earth; - - /* Determine partial eclipse */ - - sd_earth=ArcSin(xkmper/pos->w); - Vec_Sub(sol,pos,&Rho); - sd_sun=ArcSin(sr/Rho.w); - Scalar_Multiply(-1,pos,&earth); - delta=Angle(sol,&earth); - *depth=sd_earth-sd_sun-delta; - - if (sd_earth=0) - return 1; - else - return 0; -} - -void select_ephemeris(tle_t *tle) -{ - /* Selects the apropriate ephemeris type to be used */ - /* for predictions according to the data in the TLE */ - /* It also processes values in the tle set so that */ - /* they are apropriate for the sgp4/sdp4 routines */ - - double ao, xnodp, dd1, dd2, delo, temp, a1, del1, r1; - - /* Preprocess tle set */ - tle->xnodeo*=deg2rad; - tle->omegao*=deg2rad; - tle->xmo*=deg2rad; - tle->xincl*=deg2rad; - temp=twopi/xmnpda/xmnpda; - tle->xno=tle->xno*temp*xmnpda; - tle->xndt2o*=temp; - tle->xndd6o=tle->xndd6o*temp/xmnpda; - tle->bstar/=ae; - - /* Period > 225 minutes is deep space */ - dd1=(xke/tle->xno); - dd2=tothrd; - a1=pow(dd1,dd2); - r1=cos(tle->xincl); - dd1=(1.0-tle->eo*tle->eo); - temp=ck2*1.5f*(r1*r1*3.0-1.0)/pow(dd1,1.5); - del1=temp/(a1*a1); - ao=a1*(1.0-del1*(tothrd*.5+del1*(del1*1.654320987654321+1.0))); - delo=temp/(ao*ao); - xnodp=tle->xno/(delo+1.0); - - /* Select a deep-space/near-earth ephemeris */ - - if (twopi/xnodp/xmnpda>=0.15625) - SetFlag(DEEP_SPACE_EPHEM_FLAG); - else - ClearFlag(DEEP_SPACE_EPHEM_FLAG); -} - -void SGP4(double tsince, tle_t * tle, vector_t * pos, vector_t * vel) -{ - /* This function is used to calculate the position and velocity */ - /* of near-earth (period < 225 minutes) satellites. tsince is */ - /* time since epoch in minutes, tle is a pointer to a tle_t */ - /* structure with Keplerian orbital elements and pos and vel */ - /* are vector_t structures returning ECI satellite position and */ - /* velocity. Use Convert_Sat_State() to convert to km and km/s. */ - - static double aodp, aycof, c1, c4, c5, cosio, d2, d3, d4, delmo, - omgcof, eta, omgdot, sinio, xnodp, sinmo, t2cof, t3cof, t4cof, - t5cof, x1mth2, x3thm1, x7thm1, xmcof, xmdot, xnodcf, xnodot, xlcof; - - double cosuk, sinuk, rfdotk, vx, vy, vz, ux, uy, uz, xmy, xmx, cosnok, - sinnok, cosik, sinik, rdotk, xinck, xnodek, uk, rk, cos2u, sin2u, - u, sinu, cosu, betal, rfdot, rdot, r, pl, elsq, esine, ecose, epw, - cosepw, x1m5th, xhdot1, tfour, sinepw, capu, ayn, xlt, aynl, xll, - axn, xn, beta, xl, e, a, tcube, delm, delomg, templ, tempe, tempa, - xnode, tsq, xmp, omega, xnoddf, omgadf, xmdf, a1, a3ovk2, ao, - betao, betao2, c1sq, c2, c3, coef, coef1, del1, delo, eeta, eosq, - etasq, perigee, pinvsq, psisq, qoms24, s4, temp, temp1, temp2, - temp3, temp4, temp5, temp6, theta2, theta4, tsi; - - int i; - - /* Initialization */ - - if (isFlagClear(SGP4_INITIALIZED_FLAG)) - { - SetFlag(SGP4_INITIALIZED_FLAG); - - /* Recover original mean motion (xnodp) and */ - /* semimajor axis (aodp) from input elements. */ - - a1=pow(xke/tle->xno,tothrd); - cosio=cos(tle->xincl); - theta2=cosio*cosio; - x3thm1=3*theta2-1.0; - eosq=tle->eo*tle->eo; - betao2=1.0-eosq; - betao=sqrt(betao2); - del1=1.5*ck2*x3thm1/(a1*a1*betao*betao2); - ao=a1*(1.0-del1*(0.5*tothrd+del1*(1.0+134.0/81.0*del1))); - delo=1.5*ck2*x3thm1/(ao*ao*betao*betao2); - xnodp=tle->xno/(1.0+delo); - aodp=ao/(1.0-delo); - - /* For perigee less than 220 kilometers, the "simple" */ - /* flag is set and the equations are truncated to linear */ - /* variation in sqrt a and quadratic variation in mean */ - /* anomaly. Also, the c3 term, the delta omega term, and */ - /* the delta m term are dropped. */ - - if ((aodp*(1-tle->eo)/ae)<(220/xkmper+ae)) - SetFlag(SIMPLE_FLAG); - - else - ClearFlag(SIMPLE_FLAG); - - /* For perigees below 156 km, the */ - /* values of s and qoms2t are altered. */ - - s4=s; - qoms24=qoms2t; - perigee=(aodp*(1-tle->eo)-ae)*xkmper; - - if (perigee<156.0) - { - if (perigee<=98.0) - s4=20; - else - s4=perigee-78.0; - - qoms24=pow((120-s4)*ae/xkmper,4); - s4=s4/xkmper+ae; - } - - pinvsq=1/(aodp*aodp*betao2*betao2); - tsi=1/(aodp-s4); - eta=aodp*tle->eo*tsi; - etasq=eta*eta; - eeta=tle->eo*eta; - psisq=fabs(1-etasq); - coef=qoms24*pow(tsi,4); - coef1=coef/pow(psisq,3.5); - c2=coef1*xnodp*(aodp*(1+1.5*etasq+eeta*(4+etasq))+0.75*ck2*tsi/psisq*x3thm1*(8+3*etasq*(8+etasq))); - c1=tle->bstar*c2; - sinio=sin(tle->xincl); - a3ovk2=-xj3/ck2*pow(ae,3); - c3=coef*tsi*a3ovk2*xnodp*ae*sinio/tle->eo; - x1mth2=1-theta2; - - c4=2*xnodp*coef1*aodp*betao2*(eta*(2+0.5*etasq)+tle->eo*(0.5+2*etasq)-2*ck2*tsi/(aodp*psisq)*(-3*x3thm1*(1-2*eeta+etasq*(1.5-0.5*eeta))+0.75*x1mth2*(2*etasq-eeta*(1+etasq))*cos(2*tle->omegao))); - c5=2*coef1*aodp*betao2*(1+2.75*(etasq+eeta)+eeta*etasq); - - theta4=theta2*theta2; - temp1=3*ck2*pinvsq*xnodp; - temp2=temp1*ck2*pinvsq; - temp3=1.25*ck4*pinvsq*pinvsq*xnodp; - xmdot=xnodp+0.5*temp1*betao*x3thm1+0.0625*temp2*betao*(13-78*theta2+137*theta4); - x1m5th=1-5*theta2; - omgdot=-0.5*temp1*x1m5th+0.0625*temp2*(7-114*theta2+395*theta4)+temp3*(3-36*theta2+49*theta4); - xhdot1=-temp1*cosio; - xnodot=xhdot1+(0.5*temp2*(4-19*theta2)+2*temp3*(3-7*theta2))*cosio; - omgcof=tle->bstar*c3*cos(tle->omegao); - xmcof=-tothrd*coef*tle->bstar*ae/eeta; - xnodcf=3.5*betao2*xhdot1*c1; - t2cof=1.5*c1; - xlcof=0.125*a3ovk2*sinio*(3+5*cosio)/(1+cosio); - aycof=0.25*a3ovk2*sinio; - delmo=pow(1+eta*cos(tle->xmo),3); - sinmo=sin(tle->xmo); - x7thm1=7*theta2-1; - - if (isFlagClear(SIMPLE_FLAG)) - { - c1sq=c1*c1; - d2=4*aodp*tsi*c1sq; - temp=d2*tsi*c1/3; - d3=(17*aodp+s4)*temp; - d4=0.5*temp*aodp*tsi*(221*aodp+31*s4)*c1; - t3cof=d2+2*c1sq; - t4cof=0.25*(3*d3+c1*(12*d2+10*c1sq)); - t5cof=0.2*(3*d4+12*c1*d3+6*d2*d2+15*c1sq*(2*d2+c1sq)); - } - } - - /* Update for secular gravity and atmospheric drag. */ - xmdf=tle->xmo+xmdot*tsince; - omgadf=tle->omegao+omgdot*tsince; - xnoddf=tle->xnodeo+xnodot*tsince; - omega=omgadf; - xmp=xmdf; - tsq=tsince*tsince; - xnode=xnoddf+xnodcf*tsq; - tempa=1-c1*tsince; - tempe=tle->bstar*c4*tsince; - templ=t2cof*tsq; - - if (isFlagClear(SIMPLE_FLAG)) - { - delomg=omgcof*tsince; - delm=xmcof*(pow(1+eta*cos(xmdf),3)-delmo); - temp=delomg+delm; - xmp=xmdf+temp; - omega=omgadf-temp; - tcube=tsq*tsince; - tfour=tsince*tcube; - tempa=tempa-d2*tsq-d3*tcube-d4*tfour; - tempe=tempe+tle->bstar*c5*(sin(xmp)-sinmo); - templ=templ+t3cof*tcube+tfour*(t4cof+tsince*t5cof); - } - - a=aodp*pow(tempa,2); - e=tle->eo-tempe; - xl=xmp+omega+xnode+xnodp*templ; - beta=sqrt(1-e*e); - xn=xke/pow(a,1.5); - - /* Long period periodics */ - axn=e*cos(omega); - temp=1/(a*beta*beta); - xll=temp*xlcof*axn; - aynl=temp*aycof; - xlt=xl+xll; - ayn=e*sin(omega)+aynl; - - /* Solve Kepler's Equation */ - capu=FMod2p(xlt-xnode); - temp2=capu; - i=0; - - do - { - sinepw=sin(temp2); - cosepw=cos(temp2); - temp3=axn*sinepw; - temp4=ayn*cosepw; - temp5=axn*cosepw; - temp6=ayn*sinepw; - epw=(capu-temp4+temp3-temp2)/(1-temp5-temp6)+temp2; - - if (fabs(epw-temp2)<= e6a) - break; - - temp2=epw; - - } while (i++<10); - - /* Short period preliminary quantities */ - ecose=temp5+temp6; - esine=temp3-temp4; - elsq=axn*axn+ayn*ayn; - temp=1-elsq; - pl=a*temp; - r=a*(1-ecose); - temp1=1/r; - rdot=xke*sqrt(a)*esine*temp1; - rfdot=xke*sqrt(pl)*temp1; - temp2=a*temp1; - betal=sqrt(temp); - temp3=1/(1+betal); - cosu=temp2*(cosepw-axn+ayn*esine*temp3); - sinu=temp2*(sinepw-ayn-axn*esine*temp3); - u=AcTan(sinu,cosu); - sin2u=2*sinu*cosu; - cos2u=2*cosu*cosu-1; - temp=1/pl; - temp1=ck2*temp; - temp2=temp1*temp; - - /* Update for short periodics */ - rk=r*(1-1.5*temp2*betal*x3thm1)+0.5*temp1*x1mth2*cos2u; - uk=u-0.25*temp2*x7thm1*sin2u; - xnodek=xnode+1.5*temp2*cosio*sin2u; - xinck=tle->xincl+1.5*temp2*cosio*sinio*cos2u; - rdotk=rdot-xn*temp1*x1mth2*sin2u; - rfdotk=rfdot+xn*temp1*(x1mth2*cos2u+1.5*x3thm1); - - /* Orientation vectors */ - sinuk=sin(uk); - cosuk=cos(uk); - sinik=sin(xinck); - cosik=cos(xinck); - sinnok=sin(xnodek); - cosnok=cos(xnodek); - xmx=-sinnok*cosik; - xmy=cosnok*cosik; - ux=xmx*sinuk+cosnok*cosuk; - uy=xmy*sinuk+sinnok*cosuk; - uz=sinik*sinuk; - vx=xmx*cosuk-cosnok*sinuk; - vy=xmy*cosuk-sinnok*sinuk; - vz=sinik*cosuk; - - /* Position and velocity */ - pos->x=rk*ux; - pos->y=rk*uy; - pos->z=rk*uz; - vel->x=rdotk*ux+rfdotk*vx; - vel->y=rdotk*uy+rfdotk*vy; - vel->z=rdotk*uz+rfdotk*vz; - - /* Phase in radians */ - phase=xlt-xnode-omgadf+twopi; - - if (phase<0.0) - phase+=twopi; - - phase=FMod2p(phase); -} - -void Deep(int ientry, tle_t * tle, deep_arg_t * deep_arg) -{ - /* This function is used by SDP4 to add lunar and solar */ - /* perturbation effects to deep-space orbit objects. */ - - static double thgr, xnq, xqncl, omegaq, zmol, zmos, savtsn, ee2, e3, - xi2, xl2, xl3, xl4, xgh2, xgh3, xgh4, xh2, xh3, sse, ssi, ssg, xi3, - se2, si2, sl2, sgh2, sh2, se3, si3, sl3, sgh3, sh3, sl4, sgh4, ssl, - ssh, d3210, d3222, d4410, d4422, d5220, d5232, d5421, d5433, del1, - del2, del3, fasx2, fasx4, fasx6, xlamo, xfact, xni, atime, stepp, - stepn, step2, preep, pl, sghs, xli, d2201, d2211, sghl, sh1, pinc, - pe, shs, zsingl, zcosgl, zsinhl, zcoshl, zsinil, zcosil; - - double a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, ainv2, alfdp, aqnv, - sgh, sini2, sinis, sinok, sh, si, sil, day, betdp, dalf, bfact, c, - cc, cosis, cosok, cosq, ctem, f322, zx, zy, dbet, dls, eoc, eq, f2, - f220, f221, f3, f311, f321, xnoh, f330, f441, f442, f522, f523, - f542, f543, g200, g201, g211, pgh, ph, s1, s2, s3, s4, s5, s6, s7, - se, sel, ses, xls, g300, g310, g322, g410, g422, g520, g521, g532, - g533, gam, sinq, sinzf, sis, sl, sll, sls, stem, temp, temp1, x1, - x2, x2li, x2omi, x3, x4, x5, x6, x7, x8, xl, xldot, xmao, xnddt, - xndot, xno2, xnodce, xnoi, xomi, xpidot, z1, z11, z12, z13, z2, - z21, z22, z23, z3, z31, z32, z33, ze, zf, zm, zn, zsing, zsinh, - zsini, zcosg, zcosh, zcosi, delt=0, ft=0; - - switch (ientry) - { - case dpinit: /* Entrance for deep space initialization */ - thgr=ThetaG(tle->epoch,deep_arg); - eq=tle->eo; - xnq=deep_arg->xnodp; - aqnv=1/deep_arg->aodp; - xqncl=tle->xincl; - xmao=tle->xmo; - xpidot=deep_arg->omgdot+deep_arg->xnodot; - sinq=sin(tle->xnodeo); - cosq=cos(tle->xnodeo); - omegaq=tle->omegao; - - /* Initialize lunar solar terms */ - day=deep_arg->ds50+18261.5; /* Days since 1900 Jan 0.5 */ - - if (day!=preep) - { - preep=day; - xnodce=4.5236020-9.2422029E-4*day; - stem=sin(xnodce); - ctem=cos(xnodce); - zcosil=0.91375164-0.03568096*ctem; - zsinil=sqrt(1-zcosil*zcosil); - zsinhl=0.089683511*stem/zsinil; - zcoshl=sqrt(1-zsinhl*zsinhl); - c=4.7199672+0.22997150*day; - gam=5.8351514+0.0019443680*day; - zmol=FMod2p(c-gam); - zx=0.39785416*stem/zsinil; - zy=zcoshl*ctem+0.91744867*zsinhl*stem; - zx=AcTan(zx,zy); - zx=gam+zx-xnodce; - zcosgl=cos(zx); - zsingl=sin(zx); - zmos=6.2565837+0.017201977*day; - zmos=FMod2p(zmos); - } - - /* Do solar terms */ - savtsn=1E20; - zcosg=zcosgs; - zsing=zsings; - zcosi=zcosis; - zsini=zsinis; - zcosh=cosq; - zsinh= sinq; - cc=c1ss; - zn=zns; - ze=zes; - xnoi=1/xnq; - - /* Loop breaks when Solar terms are done a second */ - /* time, after Lunar terms are initialized */ - - for (;;) - { - /* Solar terms done again after Lunar terms are done */ - a1=zcosg*zcosh+zsing*zcosi*zsinh; - a3=-zsing*zcosh+zcosg*zcosi*zsinh; - a7=-zcosg*zsinh+zsing*zcosi*zcosh; - a8=zsing*zsini; - a9=zsing*zsinh+zcosg*zcosi*zcosh; - a10=zcosg*zsini; - a2=deep_arg->cosio*a7+deep_arg->sinio*a8; - a4=deep_arg->cosio*a9+deep_arg->sinio*a10; - a5=-deep_arg->sinio*a7+deep_arg->cosio*a8; - a6=-deep_arg->sinio*a9+deep_arg->cosio*a10; - x1=a1*deep_arg->cosg+a2*deep_arg->sing; - x2=a3*deep_arg->cosg+a4*deep_arg->sing; - x3=-a1*deep_arg->sing+a2*deep_arg->cosg; - x4=-a3*deep_arg->sing+a4*deep_arg->cosg; - x5=a5*deep_arg->sing; - x6=a6*deep_arg->sing; - x7=a5*deep_arg->cosg; - x8=a6*deep_arg->cosg; - z31=12*x1*x1-3*x3*x3; - z32=24*x1*x2-6*x3*x4; - z33=12*x2*x2-3*x4*x4; - z1=3*(a1*a1+a2*a2)+z31*deep_arg->eosq; - z2=6*(a1*a3+a2*a4)+z32*deep_arg->eosq; - z3=3*(a3*a3+a4*a4)+z33*deep_arg->eosq; - z11=-6*a1*a5+deep_arg->eosq*(-24*x1*x7-6*x3*x5); - z12=-6*(a1*a6+a3*a5)+deep_arg->eosq*(-24*(x2*x7+x1*x8)-6*(x3*x6+x4*x5)); - z13=-6*a3*a6+deep_arg->eosq*(-24*x2*x8-6*x4*x6); - z21=6*a2*a5+deep_arg->eosq*(24*x1*x5-6*x3*x7); - z22=6*(a4*a5+a2*a6)+deep_arg->eosq*(24*(x2*x5+x1*x6)-6*(x4*x7+x3*x8)); - z23=6*a4*a6+deep_arg->eosq*(24*x2*x6-6*x4*x8); - z1=z1+z1+deep_arg->betao2*z31; - z2=z2+z2+deep_arg->betao2*z32; - z3=z3+z3+deep_arg->betao2*z33; - s3=cc*xnoi; - s2=-0.5*s3/deep_arg->betao; - s4=s3*deep_arg->betao; - s1=-15*eq*s4; - s5=x1*x3+x2*x4; - s6=x2*x3+x1*x4; - s7=x2*x4-x1*x3; - se=s1*zn*s5; - si=s2*zn*(z11+z13); - sl=-zn*s3*(z1+z3-14-6*deep_arg->eosq); - sgh=s4*zn*(z31+z33-6); - sh=-zn*s2*(z21+z23); - - if (xqncl<5.2359877E-2) - sh=0; - - ee2=2*s1*s6; - e3=2*s1*s7; - xi2=2*s2*z12; - xi3=2*s2*(z13-z11); - xl2=-2*s3*z2; - xl3=-2*s3*(z3-z1); - xl4=-2*s3*(-21-9*deep_arg->eosq)*ze; - xgh2=2*s4*z32; - xgh3=2*s4*(z33-z31); - xgh4=-18*s4*ze; - xh2=-2*s2*z22; - xh3=-2*s2*(z23-z21); - - if (isFlagSet(LUNAR_TERMS_DONE_FLAG)) - break; - - /* Do lunar terms */ - sse=se; - ssi=si; - ssl=sl; - ssh=sh/deep_arg->sinio; - ssg=sgh-deep_arg->cosio*ssh; - se2=ee2; - si2=xi2; - sl2=xl2; - sgh2=xgh2; - sh2=xh2; - se3=e3; - si3=xi3; - sl3=xl3; - sgh3=xgh3; - sh3=xh3; - sl4=xl4; - sgh4=xgh4; - zcosg=zcosgl; - zsing=zsingl; - zcosi=zcosil; - zsini=zsinil; - zcosh=zcoshl*cosq+zsinhl*sinq; - zsinh=sinq*zcoshl-cosq*zsinhl; - zn=znl; - cc=c1l; - ze=zel; - SetFlag(LUNAR_TERMS_DONE_FLAG); - } - - sse=sse+se; - ssi=ssi+si; - ssl=ssl+sl; - ssg=ssg+sgh-deep_arg->cosio/deep_arg->sinio*sh; - ssh=ssh+sh/deep_arg->sinio; - - /* Geopotential resonance initialization for 12 hour orbits */ - ClearFlag(RESONANCE_FLAG); - ClearFlag(SYNCHRONOUS_FLAG); - - if (!((xnq<0.0052359877) && (xnq>0.0034906585))) - { - if ((xnq<0.00826) || (xnq>0.00924)) - return; - - if (eq<0.5) - return; - - SetFlag(RESONANCE_FLAG); - eoc=eq*deep_arg->eosq; - g201=-0.306-(eq-0.64)*0.440; - - if (eq<=0.65) - { - g211=3.616-13.247*eq+16.290*deep_arg->eosq; - g310=-19.302+117.390*eq-228.419*deep_arg->eosq+156.591*eoc; - g322=-18.9068+109.7927*eq-214.6334*deep_arg->eosq+146.5816*eoc; - g410=-41.122+242.694*eq-471.094*deep_arg->eosq+313.953*eoc; - g422=-146.407+841.880*eq-1629.014*deep_arg->eosq+1083.435 * eoc; - g520=-532.114+3017.977*eq-5740*deep_arg->eosq+3708.276*eoc; - } - - else - { - g211=-72.099+331.819*eq-508.738*deep_arg->eosq+266.724*eoc; - g310=-346.844+1582.851*eq-2415.925*deep_arg->eosq+1246.113*eoc; - g322=-342.585+1554.908*eq-2366.899*deep_arg->eosq+1215.972*eoc; - g410=-1052.797+4758.686*eq-7193.992*deep_arg->eosq+3651.957*eoc; - g422=-3581.69+16178.11*eq-24462.77*deep_arg->eosq+12422.52*eoc; - - if (eq<=0.715) - g520=1464.74-4664.75*eq+3763.64*deep_arg->eosq; - - else - g520=-5149.66+29936.92*eq-54087.36*deep_arg->eosq+31324.56*eoc; - } - - if (eq<0.7) - { - g533=-919.2277+4988.61*eq-9064.77*deep_arg->eosq+5542.21*eoc; - g521=-822.71072+4568.6173*eq-8491.4146*deep_arg->eosq+5337.524*eoc; - g532=-853.666+4690.25*eq-8624.77*deep_arg->eosq+5341.4*eoc; - } - - else - { - g533=-37995.78+161616.52*eq-229838.2*deep_arg->eosq+109377.94*eoc; - g521 =-51752.104+218913.95*eq-309468.16*deep_arg->eosq+146349.42*eoc; - g532 =-40023.88+170470.89*eq-242699.48*deep_arg->eosq+115605.82*eoc; - } - - sini2=deep_arg->sinio*deep_arg->sinio; - f220=0.75*(1+2*deep_arg->cosio+deep_arg->theta2); - f221=1.5*sini2; - f321=1.875*deep_arg->sinio*(1-2*deep_arg->cosio-3*deep_arg->theta2); - f322=-1.875*deep_arg->sinio*(1+2*deep_arg->cosio-3*deep_arg->theta2); - f441=35*sini2*f220; - f442=39.3750*sini2*sini2; - f522=9.84375*deep_arg->sinio*(sini2*(1-2*deep_arg->cosio-5*deep_arg->theta2)+0.33333333*(-2+4*deep_arg->cosio+6*deep_arg->theta2)); - f523=deep_arg->sinio*(4.92187512*sini2*(-2-4*deep_arg->cosio+10*deep_arg->theta2)+6.56250012*(1+2*deep_arg->cosio-3*deep_arg->theta2)); - f542=29.53125*deep_arg->sinio*(2-8*deep_arg->cosio+deep_arg->theta2*(-12+8*deep_arg->cosio+10*deep_arg->theta2)); - f543=29.53125*deep_arg->sinio*(-2-8*deep_arg->cosio+deep_arg->theta2*(12+8*deep_arg->cosio-10*deep_arg->theta2)); - xno2=xnq*xnq; - ainv2=aqnv*aqnv; - temp1=3*xno2*ainv2; - temp=temp1*root22; - d2201=temp*f220*g201; - d2211=temp*f221*g211; - temp1=temp1*aqnv; - temp=temp1*root32; - d3210=temp*f321*g310; - d3222=temp*f322*g322; - temp1=temp1*aqnv; - temp=2*temp1*root44; - d4410=temp*f441*g410; - d4422=temp*f442*g422; - temp1=temp1*aqnv; - temp=temp1*root52; - d5220=temp*f522*g520; - d5232=temp*f523*g532; - temp=2*temp1*root54; - d5421=temp*f542*g521; - d5433=temp*f543*g533; - xlamo=xmao+tle->xnodeo+tle->xnodeo-thgr-thgr; - bfact=deep_arg->xmdot+deep_arg->xnodot+deep_arg->xnodot-thdt-thdt; - bfact=bfact+ssl+ssh+ssh; - } - - else - { - SetFlag(RESONANCE_FLAG); - SetFlag(SYNCHRONOUS_FLAG); - - /* Synchronous resonance terms initialization */ - g200=1+deep_arg->eosq*(-2.5+0.8125*deep_arg->eosq); - g310=1+2*deep_arg->eosq; - g300=1+deep_arg->eosq*(-6+6.60937*deep_arg->eosq); - f220=0.75*(1+deep_arg->cosio)*(1+deep_arg->cosio); - f311=0.9375*deep_arg->sinio*deep_arg->sinio*(1+3*deep_arg->cosio)-0.75*(1+deep_arg->cosio); - f330=1+deep_arg->cosio; - f330=1.875*f330*f330*f330; - del1=3*xnq*xnq*aqnv*aqnv; - del2=2*del1*f220*g200*q22; - del3=3*del1*f330*g300*q33*aqnv; - del1=del1*f311*g310*q31*aqnv; - fasx2=0.13130908; - fasx4=2.8843198; - fasx6=0.37448087; - xlamo=xmao+tle->xnodeo+tle->omegao-thgr; - bfact=deep_arg->xmdot+xpidot-thdt; - bfact=bfact+ssl+ssg+ssh; - } - - xfact=bfact-xnq; - - /* Initialize integrator */ - xli=xlamo; - xni=xnq; - atime=0; - stepp=720; - stepn=-720; - step2=259200; - - return; - - case dpsec: /* Entrance for deep space secular effects */ - deep_arg->xll=deep_arg->xll+ssl*deep_arg->t; - deep_arg->omgadf=deep_arg->omgadf+ssg*deep_arg->t; - deep_arg->xnode=deep_arg->xnode+ssh*deep_arg->t; - deep_arg->em=tle->eo+sse*deep_arg->t; - deep_arg->xinc=tle->xincl+ssi*deep_arg->t; - - if (deep_arg->xinc<0) - { - deep_arg->xinc=-deep_arg->xinc; - deep_arg->xnode=deep_arg->xnode+pi; - deep_arg->omgadf=deep_arg->omgadf-pi; - } - - if (isFlagClear(RESONANCE_FLAG)) - return; - - do - { - if ((atime==0) || ((deep_arg->t>=0) && (atime<0)) || ((deep_arg->t<0) && (atime>=0))) - { - /* Epoch restart */ - - if (deep_arg->t>=0) - delt=stepp; - else - delt=stepn; - - atime=0; - xni=xnq; - xli=xlamo; - } - - else - { - if (fabs(deep_arg->t)>=fabs(atime)) - { - if (deep_arg->t>0) - delt=stepp; - else - delt=stepn; - } - } - - do - { - if (fabs(deep_arg->t-atime)>=stepp) - { - SetFlag(DO_LOOP_FLAG); - ClearFlag(EPOCH_RESTART_FLAG); - } - - else - { - ft=deep_arg->t-atime; - ClearFlag(DO_LOOP_FLAG); - } - - if (fabs(deep_arg->t)t>=0) - delt=stepn; - else - delt=stepp; - - SetFlag(DO_LOOP_FLAG | EPOCH_RESTART_FLAG); - } - - /* Dot terms calculated */ - if (isFlagSet(SYNCHRONOUS_FLAG)) - { - xndot=del1*sin(xli-fasx2)+del2*sin(2*(xli-fasx4))+del3*sin(3*(xli-fasx6)); - xnddt=del1*cos(xli-fasx2)+2*del2*cos(2*(xli-fasx4))+3*del3*cos(3*(xli-fasx6)); - } - - else - { - xomi=omegaq+deep_arg->omgdot*atime; - x2omi=xomi+xomi; - x2li=xli+xli; - xndot=d2201*sin(x2omi+xli-g22)+d2211*sin(xli-g22)+d3210*sin(xomi+xli-g32)+d3222*sin(-xomi+xli-g32)+d4410*sin(x2omi+x2li-g44)+d4422*sin(x2li-g44)+d5220*sin(xomi+xli-g52)+d5232*sin(-xomi+xli-g52)+d5421*sin(xomi+x2li-g54)+d5433*sin(-xomi+x2li-g54); - xnddt=d2201*cos(x2omi+xli-g22)+d2211*cos(xli-g22)+d3210*cos(xomi+xli-g32)+d3222*cos(-xomi+xli-g32)+d5220*cos(xomi+xli-g52)+d5232*cos(-xomi+xli-g52)+2*(d4410*cos(x2omi+x2li-g44)+d4422*cos(x2li-g44)+d5421*cos(xomi+x2li-g54)+d5433*cos(-xomi+x2li-g54)); - } - - xldot=xni+xfact; - xnddt=xnddt*xldot; - - if (isFlagSet(DO_LOOP_FLAG)) - { - xli=xli+xldot*delt+xndot*step2; - xni=xni+xndot*delt+xnddt*step2; - atime=atime+delt; - } - } while (isFlagSet(DO_LOOP_FLAG) && isFlagClear(EPOCH_RESTART_FLAG)); - } while (isFlagSet(DO_LOOP_FLAG) && isFlagSet(EPOCH_RESTART_FLAG)); - - deep_arg->xn=xni+xndot*ft+xnddt*ft*ft*0.5; - xl=xli+xldot*ft+xndot*ft*ft*0.5; - temp=-deep_arg->xnode+thgr+deep_arg->t*thdt; - - if (isFlagClear(SYNCHRONOUS_FLAG)) - deep_arg->xll=xl+temp+temp; - else - deep_arg->xll=xl-deep_arg->omgadf+temp; - - return; - - case dpper: /* Entrance for lunar-solar periodics */ - sinis=sin(deep_arg->xinc); - cosis=cos(deep_arg->xinc); - - if (fabs(savtsn-deep_arg->t)>=30) - { - savtsn=deep_arg->t; - zm=zmos+zns*deep_arg->t; - zf=zm+2*zes*sin(zm); - sinzf=sin(zf); - f2=0.5*sinzf*sinzf-0.25; - f3=-0.5*sinzf*cos(zf); - ses=se2*f2+se3*f3; - sis=si2*f2+si3*f3; - sls=sl2*f2+sl3*f3+sl4*sinzf; - sghs=sgh2*f2+sgh3*f3+sgh4*sinzf; - shs=sh2*f2+sh3*f3; - zm=zmol+znl*deep_arg->t; - zf=zm+2*zel*sin(zm); - sinzf=sin(zf); - f2=0.5*sinzf*sinzf-0.25; - f3=-0.5*sinzf*cos(zf); - sel=ee2*f2+e3*f3; - sil=xi2*f2+xi3*f3; - sll=xl2*f2+xl3*f3+xl4*sinzf; - sghl=xgh2*f2+xgh3*f3+xgh4*sinzf; - sh1=xh2*f2+xh3*f3; - pe=ses+sel; - pinc=sis+sil; - pl=sls+sll; - } - - pgh=sghs+sghl; - ph=shs+sh1; - deep_arg->xinc=deep_arg->xinc+pinc; - deep_arg->em=deep_arg->em+pe; - - if (xqncl>=0.2) - { - /* Apply periodics directly */ - ph=ph/deep_arg->sinio; - pgh=pgh-deep_arg->cosio*ph; - deep_arg->omgadf=deep_arg->omgadf+pgh; - deep_arg->xnode=deep_arg->xnode+ph; - deep_arg->xll=deep_arg->xll+pl; - } - - else - { - /* Apply periodics with Lyddane modification */ - sinok=sin(deep_arg->xnode); - cosok=cos(deep_arg->xnode); - alfdp=sinis*sinok; - betdp=sinis*cosok; - dalf=ph*cosok+pinc*cosis*sinok; - dbet=-ph*sinok+pinc*cosis*cosok; - alfdp=alfdp+dalf; - betdp=betdp+dbet; - deep_arg->xnode=FMod2p(deep_arg->xnode); - xls=deep_arg->xll+deep_arg->omgadf+cosis*deep_arg->xnode; - dls=pl+pgh-pinc*deep_arg->xnode*sinis; - xls=xls+dls; - xnoh=deep_arg->xnode; - deep_arg->xnode=AcTan(alfdp,betdp); - - /* This is a patch to Lyddane modification */ - /* suggested by Rob Matson. */ - - if (fabs(xnoh-deep_arg->xnode)>pi) - { - if (deep_arg->xnodexnode+=twopi; - else - deep_arg->xnode-=twopi; - } - - deep_arg->xll=deep_arg->xll+pl; - deep_arg->omgadf=xls-deep_arg->xll-cos(deep_arg->xinc)*deep_arg->xnode; - } - return; - } -} - -void SDP4(double tsince, tle_t * tle, vector_t * pos, vector_t * vel) -{ - /* This function is used to calculate the position and velocity */ - /* of deep-space (period > 225 minutes) satellites. tsince is */ - /* time since epoch in minutes, tle is a pointer to a tle_t */ - /* structure with Keplerian orbital elements and pos and vel */ - /* are vector_t structures returning ECI satellite position and */ - /* velocity. Use Convert_Sat_State() to convert to km and km/s. */ - - int i; - - static double x3thm1, c1, x1mth2, c4, xnodcf, t2cof, xlcof, - aycof, x7thm1; - - double a, axn, ayn, aynl, beta, betal, capu, cos2u, cosepw, cosik, - cosnok, cosu, cosuk, ecose, elsq, epw, esine, pl, theta4, rdot, - rdotk, rfdot, rfdotk, rk, sin2u, sinepw, sinik, sinnok, sinu, - sinuk, tempe, templ, tsq, u, uk, ux, uy, uz, vx, vy, vz, xinck, xl, - xlt, xmam, xmdf, xmx, xmy, xnoddf, xnodek, xll, a1, a3ovk2, ao, c2, - coef, coef1, x1m5th, xhdot1, del1, r, delo, eeta, eta, etasq, - perigee, psisq, tsi, qoms24, s4, pinvsq, temp, tempa, temp1, - temp2, temp3, temp4, temp5, temp6, bx, by, bz, cx, cy, cz; - - static deep_arg_t deep_arg; - - /* Initialization */ - - if (isFlagClear(SDP4_INITIALIZED_FLAG)) - { - SetFlag(SDP4_INITIALIZED_FLAG); - - /* Recover original mean motion (xnodp) and */ - /* semimajor axis (aodp) from input elements. */ - - a1=pow(xke/tle->xno,tothrd); - deep_arg.cosio=cos(tle->xincl); - deep_arg.theta2=deep_arg.cosio*deep_arg.cosio; - x3thm1=3*deep_arg.theta2-1; - deep_arg.eosq=tle->eo*tle->eo; - deep_arg.betao2=1-deep_arg.eosq; - deep_arg.betao=sqrt(deep_arg.betao2); - del1=1.5*ck2*x3thm1/(a1*a1*deep_arg.betao*deep_arg.betao2); - ao=a1*(1-del1*(0.5*tothrd+del1*(1+134/81*del1))); - delo=1.5*ck2*x3thm1/(ao*ao*deep_arg.betao*deep_arg.betao2); - deep_arg.xnodp=tle->xno/(1+delo); - deep_arg.aodp=ao/(1-delo); - - /* For perigee below 156 km, the values */ - /* of s and qoms2t are altered. */ - - s4=s; - qoms24=qoms2t; - perigee=(deep_arg.aodp*(1-tle->eo)-ae)*xkmper; - - if (perigee<156.0) - { - if (perigee<=98.0) - s4=20.0; - else - s4=perigee-78.0; - - qoms24=pow((120-s4)*ae/xkmper,4); - s4=s4/xkmper+ae; - } - - pinvsq=1/(deep_arg.aodp*deep_arg.aodp*deep_arg.betao2*deep_arg.betao2); - deep_arg.sing=sin(tle->omegao); - deep_arg.cosg=cos(tle->omegao); - tsi=1/(deep_arg.aodp-s4); - eta=deep_arg.aodp*tle->eo*tsi; - etasq=eta*eta; - eeta=tle->eo*eta; - psisq=fabs(1-etasq); - coef=qoms24*pow(tsi,4); - coef1=coef/pow(psisq,3.5); - c2=coef1*deep_arg.xnodp*(deep_arg.aodp*(1+1.5*etasq+eeta*(4+etasq))+0.75*ck2*tsi/psisq*x3thm1*(8+3*etasq*(8+etasq))); - c1=tle->bstar*c2; - deep_arg.sinio=sin(tle->xincl); - a3ovk2=-xj3/ck2*pow(ae,3); - x1mth2=1-deep_arg.theta2; - c4=2*deep_arg.xnodp*coef1*deep_arg.aodp*deep_arg.betao2*(eta*(2+0.5*etasq)+tle->eo*(0.5+2*etasq)-2*ck2*tsi/(deep_arg.aodp*psisq)*(-3*x3thm1*(1-2*eeta+etasq*(1.5-0.5*eeta))+0.75*x1mth2*(2*etasq-eeta*(1+etasq))*cos(2*tle->omegao))); - theta4=deep_arg.theta2*deep_arg.theta2; - temp1=3*ck2*pinvsq*deep_arg.xnodp; - temp2=temp1*ck2*pinvsq; - temp3=1.25*ck4*pinvsq*pinvsq*deep_arg.xnodp; - deep_arg.xmdot=deep_arg.xnodp+0.5*temp1*deep_arg.betao*x3thm1+0.0625*temp2*deep_arg.betao*(13-78*deep_arg.theta2+137*theta4); - x1m5th=1-5*deep_arg.theta2; - deep_arg.omgdot=-0.5*temp1*x1m5th+0.0625*temp2*(7-114*deep_arg.theta2+395*theta4)+temp3*(3-36*deep_arg.theta2+49*theta4); - xhdot1=-temp1*deep_arg.cosio; - deep_arg.xnodot=xhdot1+(0.5*temp2*(4-19*deep_arg.theta2)+2*temp3*(3-7*deep_arg.theta2))*deep_arg.cosio; - xnodcf=3.5*deep_arg.betao2*xhdot1*c1; - t2cof=1.5*c1; - xlcof=0.125*a3ovk2*deep_arg.sinio*(3+5*deep_arg.cosio)/(1+deep_arg.cosio); - aycof=0.25*a3ovk2*deep_arg.sinio; - x7thm1=7*deep_arg.theta2-1; - - /* initialize Deep() */ - - Deep(dpinit,tle,&deep_arg); - } - - /* Update for secular gravity and atmospheric drag */ - xmdf=tle->xmo+deep_arg.xmdot*tsince; - deep_arg.omgadf=tle->omegao+deep_arg.omgdot*tsince; - xnoddf=tle->xnodeo+deep_arg.xnodot*tsince; - tsq=tsince*tsince; - deep_arg.xnode=xnoddf+xnodcf*tsq; - tempa=1-c1*tsince; - tempe=tle->bstar*c4*tsince; - templ=t2cof*tsq; - deep_arg.xn=deep_arg.xnodp; - - /* Update for deep-space secular effects */ - deep_arg.xll=xmdf; - deep_arg.t=tsince; - - Deep(dpsec, tle, &deep_arg); - - xmdf=deep_arg.xll; - a=pow(xke/deep_arg.xn,tothrd)*tempa*tempa; - deep_arg.em=deep_arg.em-tempe; - xmam=xmdf+deep_arg.xnodp*templ; - - /* Update for deep-space periodic effects */ - deep_arg.xll=xmam; - - Deep(dpper,tle,&deep_arg); - - xmam=deep_arg.xll; - xl=xmam+deep_arg.omgadf+deep_arg.xnode; - beta=sqrt(1-deep_arg.em*deep_arg.em); - deep_arg.xn=xke/pow(a,1.5); - - /* Long period periodics */ - axn=deep_arg.em*cos(deep_arg.omgadf); - temp=1/(a*beta*beta); - xll=temp*xlcof*axn; - aynl=temp*aycof; - xlt=xl+xll; - ayn=deep_arg.em*sin(deep_arg.omgadf)+aynl; - - /* Solve Kepler's Equation */ - capu=FMod2p(xlt-deep_arg.xnode); - temp2=capu; - i=0; - - do - { - sinepw=sin(temp2); - cosepw=cos(temp2); - temp3=axn*sinepw; - temp4=ayn*cosepw; - temp5=axn*cosepw; - temp6=ayn*sinepw; - epw=(capu-temp4+temp3-temp2)/(1-temp5-temp6)+temp2; - - if (fabs(epw-temp2)<=e6a) - break; - - temp2=epw; - - } while (i++<10); - - /* Short period preliminary quantities */ - ecose=temp5+temp6; - esine=temp3-temp4; - elsq=axn*axn+ayn*ayn; - temp=1-elsq; - pl=a*temp; - r=a*(1-ecose); - temp1=1/r; - rdot=xke*sqrt(a)*esine*temp1; - rfdot=xke*sqrt(pl)*temp1; - temp2=a*temp1; - betal=sqrt(temp); - temp3=1/(1+betal); - cosu=temp2*(cosepw-axn+ayn*esine*temp3); - sinu=temp2*(sinepw-ayn-axn*esine*temp3); - u=AcTan(sinu,cosu); - sin2u=2*sinu*cosu; - cos2u=2*cosu*cosu-1; - temp=1/pl; - temp1=ck2*temp; - temp2=temp1*temp; - - /* Update for short periodics */ - rk=r*(1-1.5*temp2*betal*x3thm1)+0.5*temp1*x1mth2*cos2u; - uk=u-0.25*temp2*x7thm1*sin2u; - xnodek=deep_arg.xnode+1.5*temp2*deep_arg.cosio*sin2u; - xinck=deep_arg.xinc+1.5*temp2*deep_arg.cosio*deep_arg.sinio*cos2u; - rdotk=rdot-deep_arg.xn*temp1*x1mth2*sin2u; - rfdotk=rfdot+deep_arg.xn*temp1*(x1mth2*cos2u+1.5*x3thm1); - - /* Orientation vectors */ - sinuk=sin(uk); - cosuk=cos(uk); - sinik=sin(xinck); - cosik=cos(xinck); - sinnok=sin(xnodek); - cosnok=cos(xnodek); - xmx=-sinnok*cosik; - xmy=cosnok*cosik; - ux=xmx*sinuk+cosnok*cosuk; - uy=xmy*sinuk+sinnok*cosuk; - uz=sinik*sinuk; - vx=xmx*cosuk-cosnok*sinuk; - vy=xmy*cosuk-sinnok*sinuk; - vz=sinik*cosuk; - - /* Position and velocity */ - pos->x=rk*ux; - pos->y=rk*uy; - pos->z=rk*uz; - vel->x=rdotk*ux+rfdotk*vx; - vel->y=rdotk*uy+rfdotk*vy; - vel->z=rdotk*uz+rfdotk*vz; - - /* Calculations for squint angle begin here... */ - - if (calc_squint) - { - bx=cos(alat)*cos(alon+deep_arg.omgadf); - by=cos(alat)*sin(alon+deep_arg.omgadf); - bz=sin(alat); - cx=bx; - cy=by*cos(xinck)-bz*sin(xinck); - cz=by*sin(xinck)+bz*cos(xinck); - ax=cx*cos(xnodek)-cy*sin(xnodek); - ay=cx*sin(xnodek)+cy*cos(xnodek); - az=cz; - } - - /* Phase in radians */ - phase=xlt-deep_arg.xnode-deep_arg.omgadf+twopi; - - if (phase<0.0) - phase+=twopi; - - phase=FMod2p(phase); -} - -void Calculate_User_PosVel(double time, geodetic_t *geodetic, vector_t *obs_pos, vector_t *obs_vel) -{ - /* Calculate_User_PosVel() passes the user's geodetic position - and the time of interest and returns the ECI position and - velocity of the observer. The velocity calculation assumes - the geodetic position is stationary relative to the earth's - surface. */ - - /* Reference: The 1992 Astronomical Almanac, page K11. */ - - double c, sq, achcp; - - geodetic->theta=FMod2p(ThetaG_JD(time)+geodetic->lon); /* LMST */ - c=1/sqrt(1+f*(f-2)*Sqr(sin(geodetic->lat))); - sq=Sqr(1-f)*c; - achcp=(xkmper*c+geodetic->alt)*cos(geodetic->lat); - obs_pos->x=achcp*cos(geodetic->theta); /* kilometers */ - obs_pos->y=achcp*sin(geodetic->theta); - obs_pos->z=(xkmper*sq+geodetic->alt)*sin(geodetic->lat); - obs_vel->x=-mfactor*obs_pos->y; /* kilometers/second */ - obs_vel->y=mfactor*obs_pos->x; - obs_vel->z=0; - Magnitude(obs_pos); - Magnitude(obs_vel); -} - -void Calculate_LatLonAlt(double time, vector_t *pos, geodetic_t *geodetic) -{ - /* Procedure Calculate_LatLonAlt will calculate the geodetic */ - /* position of an object given its ECI position pos and time. */ - /* It is intended to be used to determine the ground track of */ - /* a satellite. The calculations assume the earth to be an */ - /* oblate spheroid as defined in WGS '72. */ - - /* Reference: The 1992 Astronomical Almanac, page K12. */ - - double r, e2, phi, c; - - geodetic->theta=AcTan(pos->y,pos->x); /* radians */ - geodetic->lon=FMod2p(geodetic->theta-ThetaG_JD(time)); /* radians */ - r=sqrt(Sqr(pos->x)+Sqr(pos->y)); - e2=f*(2-f); - geodetic->lat=AcTan(pos->z,r); /* radians */ - - do - { - phi=geodetic->lat; - c=1/sqrt(1-e2*Sqr(sin(phi))); - geodetic->lat=AcTan(pos->z+xkmper*c*e2*sin(phi),r); - - } while (fabs(geodetic->lat-phi)>=1E-10); - - geodetic->alt=r/cos(geodetic->lat)-xkmper*c; /* kilometers */ - - if (geodetic->lat>pio2) - geodetic->lat-=twopi; -} - -void Calculate_Obs(double time, vector_t *pos, vector_t *vel, geodetic_t *geodetic, vector_t *obs_set) -{ - /* The procedures Calculate_Obs and Calculate_RADec calculate */ - /* the *topocentric* coordinates of the object with ECI position, */ - /* {pos}, and velocity, {vel}, from location {geodetic} at {time}. */ - /* The {obs_set} returned for Calculate_Obs consists of azimuth, */ - /* elevation, range, and range rate (in that order) with units of */ - /* radians, radians, kilometers, and kilometers/second, respectively. */ - /* The WGS '72 geoid is used and the effect of atmospheric refraction */ - /* (under standard temperature and pressure) is incorporated into the */ - /* elevation calculation; the effect of atmospheric refraction on */ - /* range and range rate has not yet been quantified. */ - - /* The {obs_set} for Calculate_RADec consists of right ascension and */ - /* declination (in that order) in radians. Again, calculations are */ - /* based on *topocentric* position using the WGS '72 geoid and */ - /* incorporating atmospheric refraction. */ - - double sin_lat, cos_lat, sin_theta, cos_theta, el, azim, top_s, top_e, top_z; - - vector_t obs_pos, obs_vel, range, rgvel; - - Calculate_User_PosVel(time, geodetic, &obs_pos, &obs_vel); - - range.x=pos->x-obs_pos.x; - range.y=pos->y-obs_pos.y; - range.z=pos->z-obs_pos.z; - - /* Save these values globally for calculating squint angles later... */ - - rx=range.x; - ry=range.y; - rz=range.z; - - rgvel.x=vel->x-obs_vel.x; - rgvel.y=vel->y-obs_vel.y; - rgvel.z=vel->z-obs_vel.z; - - Magnitude(&range); - - sin_lat=sin(geodetic->lat); - cos_lat=cos(geodetic->lat); - sin_theta=sin(geodetic->theta); - cos_theta=cos(geodetic->theta); - top_s=sin_lat*cos_theta*range.x+sin_lat*sin_theta*range.y-cos_lat*range.z; - top_e=-sin_theta*range.x+cos_theta*range.y; - top_z=cos_lat*cos_theta*range.x+cos_lat*sin_theta*range.y+sin_lat*range.z; - azim=atan(-top_e/top_s); /* Azimuth */ - - if (top_s>0.0) - azim=azim+pi; - - if (azim<0.0) - azim=azim+twopi; - - el=ArcSin(top_z/range.w); - obs_set->x=azim; /* Azimuth (radians) */ - obs_set->y=el; /* Elevation (radians) */ - obs_set->z=range.w; /* Range (kilometers) */ - - /* Range Rate (kilometers/second) */ - - obs_set->w=Dot(&range,&rgvel)/range.w; - - /* Corrections for atmospheric refraction */ - /* Reference: Astronomical Algorithms by Jean Meeus, pp. 101-104 */ - /* Correction is meaningless when apparent elevation is below horizon */ - - /*** The following adjustment for - atmospheric refraction is bypassed ***/ - - /* obs_set->y=obs_set->y+Radians((1.02/tan(Radians(Degrees(el)+10.3/(Degrees(el)+5.11))))/60); */ - - obs_set->y=el; - - /**** End bypass ****/ - - if (obs_set->y>=0.0) - SetFlag(VISIBLE_FLAG); - else - { - obs_set->y=el; /* Reset to true elevation */ - ClearFlag(VISIBLE_FLAG); - } -} - -void Calculate_RADec(double time, vector_t *pos, vector_t *vel, geodetic_t *geodetic, vector_t *obs_set) -{ - /* Reference: Methods of Orbit Determination by */ - /* Pedro Ramon Escobal, pp. 401-402 */ - - double phi, theta, sin_theta, cos_theta, sin_phi, cos_phi, az, el, - Lxh, Lyh, Lzh, Sx, Ex, Zx, Sy, Ey, Zy, Sz, Ez, Zz, Lx, Ly, - Lz, cos_delta, sin_alpha, cos_alpha; - - Calculate_Obs(time,pos,vel,geodetic,obs_set); - - az=obs_set->x; - el=obs_set->y; - phi=geodetic->lat; - theta=FMod2p(ThetaG_JD(time)+geodetic->lon); - sin_theta=sin(theta); - cos_theta=cos(theta); - sin_phi=sin(phi); - cos_phi=cos(phi); - Lxh=-cos(az)*cos(el); - Lyh=sin(az)*cos(el); - Lzh=sin(el); - Sx=sin_phi*cos_theta; - Ex=-sin_theta; - Zx=cos_theta*cos_phi; - Sy=sin_phi*sin_theta; - Ey=cos_theta; - Zy=sin_theta*cos_phi; - Sz=-cos_phi; - Ez=0.0; - Zz=sin_phi; - Lx=Sx*Lxh+Ex*Lyh+Zx*Lzh; - Ly=Sy*Lxh+Ey*Lyh+Zy*Lzh; - Lz=Sz*Lxh+Ez*Lyh+Zz*Lzh; - obs_set->y=ArcSin(Lz); /* Declination (radians) */ - cos_delta=sqrt(1.0-Sqr(Lz)); - sin_alpha=Ly/cos_delta; - cos_alpha=Lx/cos_delta; - obs_set->x=AcTan(sin_alpha,cos_alpha); /* Right Ascension (radians) */ - obs_set->x=FMod2p(obs_set->x); -} - -/* .... SGP4/SDP4 functions end .... */ - -void bailout(string) -char *string; -{ - /* This function quits ncurses, resets and "beeps" - the terminal, and displays an error message (string) - when we need to bail out of the program in a hurry. */ - - beep(); - curs_set(1); - bkgdset(COLOR_PAIR(1)); - clear(); - refresh(); - endwin(); - fprintf(stderr,"*** predict: %s!\n",string); -} - -void TrackDataOut(antfd, elevation, azimuth) -int antfd; -double elevation, azimuth; -{ - /* This function sends Azimuth and Elevation data - to an antenna tracker connected to the serial port */ - - int n, port; - char message[30]="\n"; - - port=antfd; - - sprintf(message, "AZ%3.1f EL%3.1f \x0D\x0A", azimuth,elevation); - n=write(port,message,strlen(message)); - - if (n<0) - { - bailout("Error Writing To Antenna Port"); - exit(-1); - } -} - -int passivesock(char *service, char *protocol, int qlen) -{ - /* This function opens the socket port */ - - struct servent *pse; - struct protoent *ppe; - struct sockaddr_in sin; - int sd, type; - - memset((char *)&sin, 0, sizeof(struct sockaddr_in)); - sin.sin_family=AF_INET; - sin.sin_addr.s_addr=INADDR_ANY; - - if ((pse=getservbyname(service,protocol))) - sin.sin_port=htons(ntohs((unsigned short)pse->s_port)+portbase); - - else if ((sin.sin_port=htons((unsigned short)atoi(service)))==0) - { - bailout("Can't get service"); - exit(-1); - } - - if ((ppe=getprotobyname(protocol))==0) - { - bailout("Can't get protocol"); - exit(-1); - } - - if (strcmp(protocol,"udp")==0) - type=SOCK_DGRAM; - else - type=SOCK_STREAM; - - sd=socket(PF_INET,type, ppe->p_proto); - - if (sd<0) - { - bailout("Can't open socket"); - exit(-1); - } - - if (bind(sd,(struct sockaddr *)&sin,sizeof(sin))<0) - { - bailout("Can't bind"); - exit(-1); - } - - if ((type=SOCK_STREAM && listen(s,qlen))<0) - { - bailout("Listen fail"); - exit(-1); - } - - return sd; -} - -void socket_server(predict_name) -char *predict_name; -{ - /* This is the socket server code */ - - int i, j, n, sock; - socklen_t alen; - struct sockaddr_in fsin; - char buf[80], buff[1000], satname[50], tempname[30], ok; - time_t t; - long nxtevt; - FILE *fd=NULL; - - /* Open a socket port at "predict" or netport if defined */ - - if (netport[0]==0) - strncpy(netport,"predict",7); - - sock=passivesock(netport,"udp",10); - alen=sizeof(fsin); - - /* This is the main loop for monitoring the socket - port and sending back replies to clients */ - - while (1) - { - /* Get datagram from socket port */ - - if ((n=recvfrom(sock,buf,sizeof(buf),0,(struct sockaddr *)&fsin,&alen)) < 0) - exit (-1); - - buf[n]=0; - ok=0; - - /* Parse the command in the datagram */ - if ((strncmp("GET_SAT",buf,7)==0) && (strncmp("GET_SAT_POS",buf,11)!=0)) - { - /* Parse "buf" for satellite name */ - for (i=0; buf[i]!=32 && buf[i]!=0 && i<39; i++); - - for (j=++i; buf[j]!='\n' && buf[j]!=0 && (j-i)<25; j++) - satname[j-i]=buf[j]; - - satname[j-i]=0; - - /* Do a simple search for the matching satellite name */ - - for (i=0; i<24; i++) - { - if ((strncmp(satname,sat[i].name,25)==0) || (atol(satname)==sat[i].catnum)) - { - nxtevt=(long)rint(86400.0*(nextevent[i]+3651.0)); - - /* Build text buffer with satellite data */ - sprintf(buff,"%s\n%-7.2f\n%+-6.2f\n%-7.2f\n%+-6.2f\n%ld\n%-7.2f\n%-7.2f\n%-7.2f\n%-7.2f\n%ld\n%c\n%-7.2f\n%-7.2f\n%-7.2f\n",sat[i].name,long_array[i],lat_array[i],az_array[i],el_array[i],nxtevt,footprint_array[i],range_array[i],altitude_array[i],velocity_array[i],orbitnum_array[i],visibility_array[i],phase_array[i],eclipse_depth_array[i],squint_array[i]); - - /* Send buffer back to the client that sent the request */ - sendto(sock,buff,strlen(buff),0,(struct sockaddr*)&fsin,sizeof(fsin)); - ok=1; - break; - } - } - } - - if (strncmp("GET_TLE",buf,7)==0) - { - /* Parse "buf" for satellite name */ - for (i=0; buf[i]!=32 && buf[i]!=0 && i<39; i++); - - for (j=++i; buf[j]!='\n' && buf[j]!=0 && (j-i)<25; j++) - satname[j-i]=buf[j]; - - satname[j-i]=0; - - /* Do a simple search for the matching satellite name */ - - for (i=0; i<24; i++) - { - if ((strncmp(satname,sat[i].name,25)==0) || (atol(satname)==sat[i].catnum)) - { - /* Build text buffer with satellite data */ - - sprintf(buff,"%s\n%s\n%s\n",sat[i].name,sat[i].line1, sat[i].line2); - /* Send buffer back to the client that sent the request */ - sendto(sock,buff,strlen(buff),0,(struct sockaddr*)&fsin,sizeof(fsin)); - ok=1; - break; - } - } - } - - if (strncmp("GET_DOPPLER",buf,11)==0) - { - /* Parse "buf" for satellite name */ - for (i=0; buf[i]!=32 && buf[i]!=0 && i<39; i++); - - for (j=++i; buf[j]!='\n' && buf[j]!=0 && (j-i)<25; j++) - satname[j-i]=buf[j]; - - satname[j-i]=0; - - /* Do a simple search for the matching satellite name */ - - for (i=0; i<24; i++) - { - if ((strncmp(satname,sat[i].name,25)==0) || (atol(satname)==sat[i].catnum)) - { - /* Get Normalized (100 MHz) - Doppler shift for sat[i] */ - - sprintf(buff,"%f\n",doppler[i]); - - /* Send buffer back to client who sent request */ - sendto(sock,buff,strlen(buff),0,(struct sockaddr*)&fsin,sizeof(fsin)); - ok=1; - break; - } - } - } - - if (strncmp("GET_LIST",buf,8)==0) - { - buff[0]=0; - - for (i=0; i<24; i++) - { - if (sat[i].name[0]!=0) - strcat(buff,sat[i].name); - - strcat(buff,"\n"); - } - - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - ok=1; - } - - if (strncmp("RELOAD_TLE",buf,10)==0) - { - buff[0]=0; - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - reload_tle=1; - ok=1; - } - - if (strncmp("GET_SUN",buf,7)==0) - { - buff[0]=0; - sprintf(buff,"%-7.2f\n%+-6.2f\n%-7.2f\n%-7.2f\n%-7.2f\n",sun_azi, sun_ele, sun_lat, sun_lon, sun_ra); - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - ok=1; - } - - if (strncmp("GET_MOON",buf,8)==0) - { - buff[0]=0; - sprintf(buff,"%-7.2f\n%+-6.2f\n%-7.2f\n%-7.2f\n%-7.2f\n",moon_az, moon_el, moon_dec, moon_gha, moon_ra); - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - ok=1; - } - - if (strncmp("GET_MODE",buf,8)==0) - { - sendto(sock,tracking_mode,strlen(tracking_mode),0,(struct sockaddr *)&fsin,sizeof(fsin)); - ok=1; - } - - if (strncmp("GET_VERSION",buf,11)==0) - { - buff[0]=0; - sprintf(buff,"%s\n",version); - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - ok=1; - } - - if (strncmp("GET_QTH",buf,7)==0) - { - buff[0]=0; - sprintf(buff,"%s\n%g\n%g\n%d\n",qth.callsign, qth.stnlat, qth.stnlong, qth.stnalt); - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - ok=1; - } - - if (strncmp("GET_TIME$",buf,9)==0) - { - buff[0]=0; - t=time(NULL); - sprintf(buff,"%s",asctime(gmtime(&t))); - - if (buff[8]==32) - buff[8]='0'; - - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - buf[0]=0; - ok=1; - } - - if (strncmp("GET_TIME",buf,8)==0) - { - buff[0]=0; - t=time(NULL); - sprintf(buff,"%lu\n",(unsigned long)t); - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - ok=1; - } - - if (strncmp("GET_SAT_POS",buf,11)==0) - { - /* Parse "buf" for satellite name and arguments */ - for (i=0; buf[i]!=32 && buf[i]!=0 && i<39; i++); - - for (j=++i; buf[j]!='\n' && buf[j]!=0 && (j-i)<49; j++) - satname[j-i]=buf[j]; - - satname[j-i]=0; - - /* Send request to predict with output - directed to a temporary file under /tmp */ - - strcpy(tempname,"/tmp/XXXXXX\0"); - i=mkstemp(tempname); - - sprintf(buff,"%s -f %s -t %s -q %s -o %s\n",predict_name,satname,tlefile,qthfile,tempname); - system(buff); - - /* Append an EOF marker (CNTRL-Z) to the end of file */ - - fd=fopen(tempname,"a"); - fprintf(fd,"%c\n",26); /* Control-Z */ - fclose(fd); - - buff[0]=0; - - /* Send the file to the client */ - - fd=fopen(tempname,"rb"); - - fgets(buff,80,fd); - - do - { - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - fgets(buff,80,fd); - /* usleep(2); if needed (for flow-control) */ - - } while (feof(fd)==0); - - fclose(fd); - unlink(tempname); - close(i); - ok=1; - } - - if (strncmp("PREDICT",buf,7)==0) - { - /* Parse "buf" for satellite name and arguments */ - for (i=0; buf[i]!=32 && buf[i]!=0 && i<39; i++); - - for (j=++i; buf[j]!='\n' && buf[j]!=0 && (j-i)<49; j++) - satname[j-i]=buf[j]; - - satname[j-i]=0; - - /* Send request to predict with output - directed to a temporary file under /tmp */ - - strcpy(tempname,"/tmp/XXXXXX\0"); - i=mkstemp(tempname); - - sprintf(buff,"%s -p %s -t %s -q %s -o %s\n",predict_name, satname,tlefile,qthfile,tempname); - system(buff); - - /* Append an EOF marker (CNTRL-Z) to the end of file */ - - fd=fopen(tempname,"a"); - fprintf(fd,"%c\n",26); /* Control-Z */ - fclose(fd); - - buff[0]=0; - - /* Send the file to the client */ - - fd=fopen(tempname,"rb"); - - fgets(buff,80,fd); - - do - { - sendto(sock,buff,strlen(buff),0,(struct sockaddr *)&fsin,sizeof(fsin)); - fgets(buff,80,fd); - /* usleep(2); if needed (for flow-control) */ - - } while (feof(fd)==0); - - fclose(fd); - unlink(tempname); - close(i); - ok=1; - } - - if (ok==0) - sendto(sock,"Huh?\n",5,0,(struct sockaddr *)&fsin,sizeof(fsin)); - } -} - -void Banner() -{ - curs_set(0); - bkgdset(COLOR_PAIR(3)); - clear(); - refresh(); - - attrset(COLOR_PAIR(6)|A_REVERSE|A_BOLD); - mvprintw(3,18," "); - mvprintw(4,18," --== PREDICT v%s ==-- ",version); - mvprintw(5,18," Released by John A. Magliacane, KD2BD "); - mvprintw(6,18," May 2018 "); - mvprintw(7,18," "); -} - -void AnyKey() -{ - mvprintw(23,24,"<< Press Any Key To Continue >>"); - refresh(); - getch(); -} - -double FixAngle(x) -double x; -{ - /* This function reduces angles greater than - two pi by subtracting two pi from the angle */ - - while (x>twopi) - x-=twopi; - - return x; -} - -double PrimeAngle(x) -double x; -{ - /* This function is used in the FindMoon() function. */ - - x=x-360.0*floor(x/360.0); - return x; -} - -char *SubString(string,start,end) -char *string, start, end; -{ - /* This function returns a substring based on the starting - and ending positions provided. It is used heavily in - the AutoUpdate function when parsing 2-line element data. */ - - unsigned x, y; - - if (end>=start) - { - for (x=start, y=0; x<=end && string[x]!=0; x++) - if (string[x]!=' ') - { - temp[y]=string[x]; - y++; - } - - temp[y]=0; - return temp; - } - else - return NULL; -} - -void CopyString(source, destination, start, end) -char *source, *destination, start, end; -{ - /* This function copies elements of the string "source" - bounded by "start" and "end" into the string "destination". */ - - unsigned j, k=0; - - for (j=start; j<=end; j++) - if (source[k]!=0) - { - destination[j]=source[k]; - k++; - } -} - -char *Abbreviate(string,n) -char *string; -int n; -{ - /* This function returns an abbreviated substring of the original, - including a '~' character if a non-blank character is chopped - out of the generated substring. n is the length of the desired - substring. It is used for abbreviating satellite names. */ - - strncpy(temp,string,79); - - if (temp[n]!=0 && temp[n]!=32) - { - temp[n-2]='~'; - temp[n-1]=temp[strlen(temp)-1]; - } - - temp[n]=0; - - return temp; -} - -char KepCheck(line1,line2) -char *line1, *line2; -{ - /* This function scans line 1 and line 2 of a NASA 2-Line element - set and returns a 1 if the element set appears to be valid or - a 0 if it does not. If the data survives this torture test, - it's a pretty safe bet we're looking at a valid 2-line - element set and not just some random text that might pass - as orbital data based on a simple checksum calculation alone. */ - - int x; - unsigned sum1, sum2; - - /* Compute checksum for each line */ - - for (x=0, sum1=0, sum2=0; x<=67; sum1+=val[(int)line1[x]], sum2+=val[(int)line2[x]], x++); - - /* Perform a "torture test" on the data */ - - x=(val[(int)line1[68]]^(sum1%10)) | (val[(int)line2[68]]^(sum2%10)) | - (line1[0]^'1') | (line1[1]^' ') | (line1[7]^'U') | - (line1[8]^' ') | (line1[17]^' ') | (line1[23]^'.') | - (line1[32]^' ') | (line1[34]^'.') | (line1[43]^' ') | - (line1[52]^' ') | (line1[61]^' ') | (line1[62]^'0') | - (line1[63]^' ') | (line2[0]^'2') | (line2[1]^' ') | - (line2[7]^' ') | (line2[11]^'.') | (line2[16]^' ') | - (line2[20]^'.') | (line2[25]^' ') | (line2[33]^' ') | - (line2[37]^'.') | (line2[42]^' ') | (line2[46]^'.') | - (line2[51]^' ') | (line2[54]^'.') | (line1[2]^line2[2]) | - (line1[3]^line2[3]) | (line1[4]^line2[4]) | - (line1[5]^line2[5]) | (line1[6]^line2[6]) | - (isdigit(line1[68]) ? 0 : 1) | (isdigit(line2[68]) ? 0 : 1) | - (isdigit(line1[18]) ? 0 : 1) | (isdigit(line1[19]) ? 0 : 1) | - (isdigit(line2[31]) ? 0 : 1) | (isdigit(line2[32]) ? 0 : 1); - - return (x ? 0 : 1); -} - -void InternalUpdate(x) -int x; -{ - /* Updates data in TLE structure based on - line1 and line2 stored in structure. */ - - double tempnum; - - strncpy(sat[x].designator,SubString(sat[x].line1,9,16),8); - sat[x].designator[9]=0; - sat[x].catnum=atol(SubString(sat[x].line1,2,6)); - sat[x].year=atoi(SubString(sat[x].line1,18,19)); - sat[x].refepoch=atof(SubString(sat[x].line1,20,31)); - tempnum=1.0e-5*atof(SubString(sat[x].line1,44,49)); - sat[x].nddot6=tempnum/pow(10.0,(sat[x].line1[51]-'0')); - tempnum=1.0e-5*atof(SubString(sat[x].line1,53,58)); - sat[x].bstar=tempnum/pow(10.0,(sat[x].line1[60]-'0')); - sat[x].setnum=atol(SubString(sat[x].line1,64,67)); - sat[x].incl=atof(SubString(sat[x].line2,8,15)); - sat[x].raan=atof(SubString(sat[x].line2,17,24)); - sat[x].eccn=1.0e-07*atof(SubString(sat[x].line2,26,32)); - sat[x].argper=atof(SubString(sat[x].line2,34,41)); - sat[x].meanan=atof(SubString(sat[x].line2,43,50)); - sat[x].meanmo=atof(SubString(sat[x].line2,52,62)); - sat[x].drag=atof(SubString(sat[x].line1,33,42)); - sat[x].orbitnum=atof(SubString(sat[x].line2,63,67)); -} - -char *noradEvalue(value) -double value; -{ - /* Converts numeric values to E notation used in NORAD TLEs */ - - char string[15]; - - sprintf(string,"%11.4e",value*10.0); - - output[0]=string[0]; - output[1]=string[1]; - output[2]=string[3]; - output[3]=string[4]; - output[4]=string[5]; - output[5]=string[6]; - output[6]='-'; - output[7]=string[10]; - output[8]=0; - - return output; -} - -void Data2TLE(x) -int x; -{ - /* This function converts orbital data held in the numeric - portion of the sat tle structure to ASCII TLE format, - and places the result in ASCII portion of the structure. */ - - int i; - char string[15], line1[70], line2[70]; - unsigned sum; - - /* Fill lines with blanks */ - - for (i=0; i<70; line1[i]=32, line2[i]=32, i++); - - line1[69]=0; - line2[69]=0; - - /* Insert static characters */ - - line1[0]='1'; - line1[7]='U'; /* Unclassified */ - line2[0]='2'; - - line1[62]='0'; /* For publically released TLEs */ - - /* Insert orbital data */ - - sprintf(string,"%05ld",sat[x].catnum); - CopyString(string,line1,2,6); - CopyString(string,line2,2,6); - - CopyString(sat[x].designator,line1,9,16); - - sprintf(string,"%02d",sat[x].year); - CopyString(string,line1,18,19); - - sprintf(string,"%12.8f",sat[x].refepoch); - CopyString(string,line1,20,32); - - sprintf(string,"%.9f",fabs(sat[x].drag)); - - CopyString(string,line1,33,42); - - if (sat[x].drag<0.0) - line1[33]='-'; - else - line1[33]=32; - - CopyString(noradEvalue(sat[x].nddot6),line1,44,51); - CopyString(noradEvalue(sat[x].bstar),line1,53,60); - - sprintf(string,"%4lu",sat[x].setnum); - CopyString(string,line1,64,67); - - sprintf(string,"%9.4f",sat[x].incl); - CopyString(string,line2,7,15); - - sprintf(string,"%9.4f",sat[x].raan); - CopyString(string,line2,16,24); - - sprintf(string,"%13.12f",sat[x].eccn); - - /* Erase eccentricity's decimal point */ - - for (i=2; i<=9; string[i-2]=string[i], i++); - - CopyString(string,line2,26,32); - - sprintf(string,"%9.4f",sat[x].argper); - CopyString(string,line2,33,41); - - sprintf(string,"%9.5f",sat[x].meanan); - CopyString(string,line2,43,50); - - sprintf(string,"%12.9f",sat[x].meanmo); - CopyString(string,line2,52,62); - - sprintf(string,"%5lu",sat[x].orbitnum); - CopyString(string,line2,63,67); - - /* Compute and insert checksum for line 1 and line 2 */ - - for (i=0, sum=0; i<=67; sum+=val[(int)line1[i]], i++); - - line1[68]=(sum%10)+'0'; - - for (i=0, sum=0; i<=67; sum+=val[(int)line2[i]], i++); - - line2[68]=(sum%10)+'0'; - - line1[69]=0; - line2[69]=0; - - strcpy(sat[x].line1,line1); - strcpy(sat[x].line2,line2); -} - -double ReadBearing(input) -char *input; -{ - /* This function takes numeric input in the form of a character - string, and returns an equivalent bearing in degrees as a - decimal number (double). The input may either be expressed - in decimal format (74.2467) or degree, minute, second - format (74 14 48). This function also safely handles - extra spaces found either leading, trailing, or - embedded within the numbers expressed in the - input string. Decimal seconds are permitted. */ - - char string[20]; - double bearing=0.0, seconds; - int a, b, length, degrees, minutes; - - /* Copy "input" to "string", and ignore any extra - spaces that might be present in the process. */ - - string[0]=0; - length=strlen(input); - - for (a=0, b=0; a360.0 || bearing<-360.0) - bearing=0.0; - - return bearing; -} - -char ReadDataFiles() -{ - /* This function reads "predict.qth", "predict.tle", - and (optionally) "predict.db" files into memory. - Return values are as follows: - - 0: Neither the qth nor the tle files were loaded - 1: Only the qth file was loaded - 2: Only the tle file was loaded - 3: The qth and tle files were loaded successfully */ - - FILE *fd; - long catnum; - unsigned char dayofweek; - int x=0, y, entry=0, max_entries=10, transponders=0; - char flag=0, match, name[80], line1[80], line2[80]; - - fd=fopen(qthfile,"r"); - - if (fd!=NULL) - { - fgets(qth.callsign,16,fd); - qth.callsign[strlen(qth.callsign)-1]=0; - fscanf(fd,"%lf", &qth.stnlat); - fscanf(fd,"%lf", &qth.stnlong); - fscanf(fd,"%d", &qth.stnalt); - fclose(fd); - - obs_geodetic.lat=qth.stnlat*deg2rad; - obs_geodetic.lon=-qth.stnlong*deg2rad; - obs_geodetic.alt=((double)qth.stnalt)/1000.0; - obs_geodetic.theta=0.0; - - flag=1; - } - - fd=fopen(tlefile,"r"); - - if (fd!=NULL) - { - while (x<24 && feof(fd)==0) - { - /* Initialize variables */ - - name[0]=0; - line1[0]=0; - line2[0]=0; - - /* Read element set */ - - fgets(name,75,fd); - fgets(line1,75,fd); - fgets(line2,75,fd); - - if (KepCheck(line1,line2) && (feof(fd)==0)) - { - /* We found a valid TLE! */ - - /* Some TLE sources left justify the sat - name in a 24-byte field that is padded - with blanks. The following lines cut - out the blanks as well as the line feed - character read by the fgets() function. */ - - y=strlen(name); - - while (name[y]==32 || name[y]==0 || name[y]==10 || name[y]==13 || y==0) - { - name[y]=0; - y--; - } - - /* Copy TLE data into the sat data structure */ - - strncpy(sat[x].name,name,24); - strncpy(sat[x].line1,line1,69); - strncpy(sat[x].line2,line2,69); - - /* Update individual parameters */ - - InternalUpdate(x); - - x++; - } - } - - fclose(fd); - flag+=2; - resave=0; - - /* Load satellite database file */ - - fd=fopen(dbfile,"r"); - - if (fd!=NULL) - { - database=1; - - fgets(line1,40,fd); - - while (strncmp(line1,"end",3)!=0 && line1[0]!='\n' && feof(fd)==0) - { - /* The first line is the satellite - name which is ignored here. */ - - fgets(line1,40,fd); - sscanf(line1,"%ld",&catnum); - - /* Search for match */ - - for (y=0, match=0; y<24 && match==0; y++) - { - if (catnum==sat[y].catnum) - match=1; - } - - if (match) - { - transponders=0; - entry=0; - y--; - } - - fgets(line1,40,fd); - - if (match) - { - if (strncmp(line1,"No",2)!=0) - { - sscanf(line1,"%lf, %lf",&sat_db[y].alat, &sat_db[y].alon); - sat_db[y].squintflag=1; - } - - else - sat_db[y].squintflag=0; - } - - fgets(line1,80,fd); - - while (strncmp(line1,"end",3)!=0 && line1[0]!='\n' && feof(fd)==0) - { - if (entry "); - refresh(); - wgetnstr(stdscr,filename,49); - clear(); - curs_set(0); - } - else - strcpy(filename,string); - - /* Prevent "." and ".." from being used as a - filename, otherwise strange things happen. */ - - if (strlen(filename)==0 || strncmp(filename,".",1)==0 || strncmp(filename,"..",2)==0) - return 0; - - fd=fopen(filename,"r"); - - if (interactive && fd==NULL) - { - bkgdset(COLOR_PAIR(5)); - clear(); - move(12,0); - - for (i=47; i>strlen(filename); i-=2) - printw(" "); - - printw("*** ERROR: File \"%s\" not found! ***\n",filename); - beep(); - attrset(COLOR_PAIR(7)|A_BOLD); - AnyKey(); - } - - if (fd!=NULL) - { - success=1; - - fgets(str0,75,fd); - fgets(str1,75,fd); - fgets(str2,75,fd); - - do - { - if (KepCheck(str1,str2)) - { - /* We found a valid TLE! - Copy strings str1 and - str2 into line1 and line2 */ - - strncpy(line1,str1,75); - strncpy(line2,str2,75); - kepcount++; - - /* Scan for object number in datafile to see - if this is something we're interested in */ - - for (i=0; (i<24 && sat[i].catnum!=atol(SubString(line1,2,6))); i++); - - if (i!=24) - { - /* We found it! Check to see if it's more - recent than the data we already have. */ - - if (sat[i].year<57) - database_year=365.25*(100.0+(float)sat[i].year); - else - database_year=365.25*(float)sat[i].year; - - database_epoch=(float)sat[i].refepoch+database_year; - - tle_year=(float)atof(SubString(line1,18,19)); - - if (tle_year<57.0) - tle_year+=100.0; - - tle_epoch=(float)atof(SubString(line1,20,31))+(tle_year*365.25); - - /* Update only if TLE epoch >= epoch in data file - so we don't overwrite current data with older - data. */ - - if (tle_epoch>=database_epoch) - { - if (saveflag==0) - { - if (interactive) - { - clear(); - bkgdset(COLOR_PAIR(2)); - mvprintw(3,35,"Updating....."); - refresh(); - move(7,0); - } - saveflag=1; - } - - if (interactive) - { - bkgdset(COLOR_PAIR(3)); - printw(" %-15s",sat[i].name); - } - - savecount++; - - /* Copy TLE data into the sat data structure */ - - strncpy(sat[i].line1,line1,69); - strncpy(sat[i].line2,line2,69); - InternalUpdate(i); - } - } - - fgets(str0,75,fd); - fgets(str1,75,fd); - fgets(str2,75,fd); - } - - else - { - strcpy(str0,str1); - strcpy(str1,str2); - fgets(str2,75,fd); - } - - } while (feof(fd)==0); - - fclose(fd); - - if (interactive) - { - bkgdset(COLOR_PAIR(2)); - - if (kepcount==1) - mvprintw(18,21," Only 1 NASA Two Line Element was found."); - else - mvprintw(18,21,"%3u NASA Two Line Elements were read.",kepcount); - - if (saveflag) - { - if (savecount==1) - mvprintw(19,21," Only 1 satellite was updated."); - else - { - if (savecount==24) - mvprintw(19,21," All satellites were updated!"); - else - mvprintw(19,21,"%3u out of 24 satellites were updated.",savecount); - } - } - - refresh(); - } - } - - if (interactive) - { - noecho(); - - if (strlen(filename) && fd!=NULL) - { - attrset(COLOR_PAIR(4)|A_BOLD); - AnyKey(); - } - } - - if (saveflag) - SaveTLE(); - } - while (success==0 && interactive); - - return (saveflag ? 0 : -1); -} - -int Select() -{ - /* This function displays the names of satellites contained - within the program's database and returns an index that - corresponds to the satellite selected by the user. An - ESC or CR returns a -1. */ - - int x, y, z, key=0; - - clear(); - - bkgdset(COLOR_PAIR(2)|A_BOLD); - printw("\n\n\t\t\t Select a Satellite:\n\n"); - - attrset(COLOR_PAIR(3)|A_BOLD); - - for (x=0, y=8, z=16; y<16; ++x, ++y, ++z) - { - printw("\n\t[%c]: %-15s", x+'A', Abbreviate(sat[x].name,15)); - printw("\t[%c]: %-15s", y+'A', Abbreviate(sat[y].name,15)); - printw("\t[%c]: %-15s\n", z+'A', Abbreviate(sat[z].name,15)); - } - - attrset(COLOR_PAIR(4)|A_BOLD); - - printw("\n\n\t\t<< Enter Selection - Press [ESC] To Exit >>"); - refresh(); - - do - { - key=toupper(getch()); - - if (key==27 || key=='\n') - return -1; - - } while (key<'A' || key>'X'); - - return(key-'A'); -} - -long DayNum(m,d,y) -int m, d, y; -{ - /* This function calculates the day number from m/d/y. */ - - long dn; - double mm, yy; - - if (m<3) - { - y--; - m+=12; - } - - if (y<57) - y+=100; - - yy=(double)y; - mm=(double)m; - dn=(long)(floor(365.25*(yy-80.0))-floor(19.0+yy/100.0)+floor(4.75+yy/400.0)-16.0); - dn+=d+30*m+(long)floor(0.6*mm-0.3); - return dn; -} - -double CurrentDaynum() -{ - /* Read the system clock and return the number - of days since 31Dec79 00:00:00 UTC (daynum 0) */ - - /* int x; */ - struct timeval tptr; - double usecs, seconds; - - /* x=gettimeofday(&tptr,NULL); */ - (void)gettimeofday(&tptr,NULL); - - usecs=0.000001*(double)tptr.tv_usec; - seconds=usecs+(double)tptr.tv_sec; - - return ((seconds/86400.0)-3651.0); -} - -char *Daynum2String(daynum) -double daynum; -{ - /* This function takes the given epoch as a fractional number of - days since 31Dec79 00:00:00 UTC and returns the corresponding - date as a string of the form "Tue 12Oct99 17:22:37". */ - - char timestr[26]; - time_t t; - int x; - - /* Convert daynum to Unix time (seconds since 01-Jan-70) */ - t=(time_t)(86400.0*(daynum+3651.0)); - - sprintf(timestr,"%s",asctime(gmtime(&t))); - - if (timestr[8]==' ') - timestr[8]='0'; - - for (x=0; x<=3; output[x]=timestr[x], x++); - - output[4]=timestr[8]; - output[5]=timestr[9]; - output[6]=timestr[4]; - output[7]=timestr[5]; - output[8]=timestr[6]; - output[9]=timestr[22]; - output[10]=timestr[23]; - output[11]=' '; - - for (x=12; x<=19; output[x]=timestr[x-1], x++); - - output[20]=0; - return output; -} - -double GetStartTime(mode) -char mode; -{ - /* This function prompts the user for the time and date - the user wishes to begin prediction calculations, - and returns the corresponding fractional day number. - 31Dec79 00:00:00 returns 0. Default is NOW. */ - - int x, hr, min, sec ,mm=0, dd=0, yy; - char good, mon[5], line[30], string[30], bozo_count=0, - *month[12]= {"Jan", "Feb", "Mar", "Apr", "May", - "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; - - do - { - bkgdset(COLOR_PAIR(2)|A_BOLD); - clear(); - - if (mode=='m') - printw("\n\n\n\t Starting UTC Date and Time for Predictions of the Moon\n\n"); - - if (mode=='o') - printw("\n\n\n\t Starting UTC Date and Time for Predictions of the Sun\n\n"); - - if (mode!='m' && mode!='o') - printw("\n\n\n\t Starting UTC Date and Time for Predictions of %-15s\n\n",sat[indx].name); - - bozo_count++; - - strcpy(string,Daynum2String(CurrentDaynum())); - - for (x=4; x<24; x++) - string[x-4]=string[x]; - - attrset(COLOR_PAIR(4)|A_BOLD); - printw("\t\t Format: %s -or- ",string); - string[7]=0; - printw("%s",string); - attrset(COLOR_PAIR(2)|A_BOLD); - mvprintw(21,30,"Default is `NOW'"); - attrset(COLOR_PAIR(3)|A_BOLD); - mvprintw(13,1,"Enter Start Date & Time >> "); - curs_set(1); - refresh(); - echo(); - string[0]=0; - wgetnstr(stdscr,string,29); - curs_set(0); - noecho(); - - if (strlen(string)!=0) - strcpy(line,string); - else - /* Select `NOW' */ - return(CurrentDaynum()); - - if (strlen(line)==7) - { - line[7]=' '; - line[8]='0'; - line[9]='0'; - line[10]=':'; - line[11]='0'; - line[12]='0'; - line[13]=':'; - line[14]='0'; - line[15]='0'; - line[16]=0; - } - - /* Check Day */ - good = (isdigit(line[0]) && isdigit(line[1])) ? 1 : 0; - - /* Month */ - good = (good && isalpha(line[2]) && isalpha(line[3]) && isalpha(line[4])) ? 1 : 0; - - /* Year */ - good = (good && isdigit(line[5]) && isdigit(line[6]) && (line[7]==' ')) ? 1 : 0; - - /* Hour */ - good = (good && isdigit(line[8]) && isdigit(line[9]) && (line[10]==':')) ? 1 : 0; - - /* Minute */ - good = (good && isdigit(line[11]) && isdigit(line[12]) && (line[13]==':')) ? 1 : 0; - - /* Seconds */ - good = (good && isdigit(line[14]) && isdigit(line[15])) ? 1 : 0; - - if (good) - { - /* Decode Day */ - dd=10*(line[0]-'0')+line[1]-'0'; - - /* Decode Month Number */ - line[2]=toupper(line[2]); - line[3]=tolower(line[3]); - line[4]=tolower(line[4]); - - mon[0]=line[2]; - mon[1]=line[3]; - mon[2]=line[4]; - mon[3]=0; - - for (mm=0; (mm<12 && strcmp(mon,month[mm])!=0); mm++); - - mm++; - - good=(mm>12) ? 0 : 1; - } - - if (good==0) - beep(); - - } while (good==0 && bozo_count<6); - - if (good==0) - { - /* If the user can't enter the starting date/time - correctly after several attempts, then the user - is a "bozo" and obviously can't follow directions. */ - - bailout("Too Many Errors"); - exit(-1); - } - - /* Decode Year */ - yy=10*(line[5]-'0')+line[6]-'0'; - - /* Decode Time */ - for (x=8; x<16; x++) - string[x-8]=line[x]; - - string[8]=0; - - hr=10*(line[8]-'0')+line[9]-'0'; - min=10*(line[11]-'0')+line[12]-'0'; - sec=10*(line[14]-'0')+line[15]-'0'; - - return ((double)DayNum(mm,dd,yy)+((hr/24.0)+(min/1440.0)+(sec/86400.0))); -} - -void FindMoon(daynum) -double daynum; -{ - /* This function determines the position of the moon, including - the azimuth and elevation headings, relative to the latitude - and longitude of the tracking station. This code was derived - from a Javascript implementation of the Meeus method for - determining the exact position of the Moon found at: - http://www.geocities.com/s_perona/ingles/poslun.htm. */ - - double jd, ss, t, t1, t2, t3, d, ff, l1, m, m1, ex, om, l, - b, w1, w2, bt, p, lm, h, ra, dec, z, ob, n, el, az, - teg, th, mm, dv; - - jd=daynum+2444238.5; - - t=(jd-2415020.0)/36525.0; - t2=t*t; - t3=t2*t; - l1=270.434164+481267.8831*t-0.001133*t2+0.0000019*t3; - m=358.475833+35999.0498*t-0.00015*t2-0.0000033*t3; - m1=296.104608+477198.8491*t+0.009192*t2+0.0000144*t3; - d=350.737486+445267.1142*t-0.001436*t2+0.0000019*t3; - ff=11.250889+483202.0251*t-0.003211*t2-0.0000003*t3; - om=259.183275-1934.142*t+0.002078*t2+0.0000022*t3; - om=om*deg2rad; - - /* Additive terms */ - - l1=l1+0.000233*sin((51.2+20.2*t)*deg2rad); - ss=0.003964*sin((346.56+132.87*t-0.0091731*t2)*deg2rad); - l1=l1+ss+0.001964*sin(om); - m=m-0.001778*sin((51.2+20.2*t)*deg2rad); - m1=m1+0.000817*sin((51.2+20.2*t)*deg2rad); - m1=m1+ss+0.002541*sin(om); - d=d+0.002011*sin((51.2+20.2*t)*deg2rad); - d=d+ss+0.001964*sin(om); - ff=ff+ss-0.024691*sin(om); - ff=ff-0.004328*sin(om+(275.05-2.3*t)*deg2rad); - ex=1.0-0.002495*t-0.00000752*t2; - om=om*deg2rad; - - l1=PrimeAngle(l1); - m=PrimeAngle(m); - m1=PrimeAngle(m1); - d=PrimeAngle(d); - ff=PrimeAngle(ff); - om=PrimeAngle(om); - - m=m*deg2rad; - m1=m1*deg2rad; - d=d*deg2rad; - ff=ff*deg2rad; - - /* Ecliptic Longitude */ - - l=l1+6.28875*sin(m1)+1.274018*sin(2.0*d-m1)+0.658309*sin(2.0*d); - l=l+0.213616*sin(2.0*m1)-ex*0.185596*sin(m)-0.114336*sin(2.0*ff); - l=l+0.058793*sin(2.0*d-2.0*m1)+ex*0.057212*sin(2.0*d-m-m1)+0.05332*sin(2.0*d+m1); - l=l+ex*0.045874*sin(2.0*d-m)+ex*0.041024*sin(m1-m)-0.034718*sin(d); - l=l-ex*0.030465*sin(m+m1)+0.015326*sin(2.0*d-2.0*ff)-0.012528*sin(2.0*ff+m1); - - l=l-0.01098*sin(2.0*ff-m1)+0.010674*sin(4.0*d-m1)+0.010034*sin(3.0*m1); - l=l+0.008548*sin(4.0*d-2.0*m1)-ex*0.00791*sin(m-m1+2.0*d)-ex*0.006783*sin(2.0*d+m); - - l=l+0.005162*sin(m1-d)+ex*0.005*sin(m+d)+ex*0.004049*sin(m1-m+2.0*d); - l=l+0.003996*sin(2.0*m1+2.0*d)+0.003862*sin(4.0*d)+0.003665*sin(2.0*d-3.0*m1); - - l=l+ex*0.002695*sin(2.0*m1-m)+0.002602*sin(m1-2.0*ff-2.0*d)+ex*0.002396*sin(2.0*d-m-2.0*m1); - - l=l-0.002349*sin(m1+d)+ex*ex*0.002249*sin(2.0*d-2.0*m)-ex*0.002125*sin(2.0*m1+m); - - l=l-ex*ex*0.002079*sin(2.0*m)+ex*ex*0.002059*sin(2.0*d-m1-2.0*m)-0.001773*sin(m1+2.0*d-2.0*ff); - - l=l+ex*0.00122*sin(4.0*d-m-m1)-0.00111*sin(2.0*m1+2.0*ff)+0.000892*sin(m1-3.0*d); - - l=l-ex*0.000811*sin(m+m1+2.0*d)+ex*0.000761*sin(4.0*d-m-2.0*m1)+ex*ex*.000717*sin(m1-2.0*m); - - l=l+ex*ex*0.000704*sin(m1-2.0*m-2.0*d)+ex*0.000693*sin(m-2.0*m1+2.0*d)+ex*0.000598*sin(2.0*d-m-2.0*ff)+0.00055*sin(m1+4.0*d); - - l=l+0.000538*sin(4.0*m1)+ex*0.000521*sin(4.0*d-m)+0.000486*sin(2.0*m1-d); - - l=l-0.001595*sin(2.0*ff+2.0*d); - - /* Ecliptic latitude */ - - b=5.128189*sin(ff)+0.280606*sin(m1+ff)+0.277693*sin(m1-ff)+0.173238*sin(2.0*d-ff); - b=b+0.055413*sin(2.0*d+ff-m1)+0.046272*sin(2.0*d-ff-m1)+0.032573*sin(2.0*d+ff); - - b=b+0.017198*sin(2.0*m1+ff)+9.266999e-03*sin(2.0*d+m1-ff)+0.008823*sin(2.0*m1-ff); - b=b+ex*0.008247*sin(2.0*d-m-ff)+0.004323*sin(2.0*d-ff-2.0*m1)+0.0042*sin(2.0*d+ff+m1); - - b=b+ex*0.003372*sin(ff-m-2.0*d)+ex*0.002472*sin(2.0*d+ff-m-m1)+ex*0.002222*sin(2.0*d+ff-m); - - b=b+0.002072*sin(2.0*d-ff-m-m1)+ex*0.001877*sin(ff-m+m1)+0.001828*sin(4.0*d-ff-m1); - - b=b-ex*0.001803*sin(ff+m)-0.00175*sin(3.0*ff)+ex*0.00157*sin(m1-m-ff)-0.001487*sin(ff+d)-ex*0.001481*sin(ff+m+m1)+ex*0.001417*sin(ff-m-m1)+ex*0.00135*sin(ff-m)+0.00133*sin(ff-d); - - b=b+0.001106*sin(ff+3.0*m1)+0.00102*sin(4.0*d-ff)+0.000833*sin(ff+4.0*d-m1); - - b=b+0.000781*sin(m1-3.0*ff)+0.00067*sin(ff+4.0*d-2.0*m1)+0.000606*sin(2.0*d-3.0*ff); - - b=b+0.000597*sin(2.0*d+2.0*m1-ff)+ex*0.000492*sin(2.0*d+m1-m-ff)+0.00045*sin(2.0*m1-ff-2.0*d); - - b=b+0.000439*sin(3.0*m1-ff)+0.000423*sin(ff+2.0*d+2.0*m1)+0.000422*sin(2.0*d-ff-3.0*m1); - - b=b-ex*0.000367*sin(m+ff+2.0*d-m1)-ex*0.000353*sin(m+ff+2.0*d)+0.000331*sin(ff+4.0*d); - - b=b+ex*0.000317*sin(2.0*d+ff-m+m1)+ex*ex*0.000306*sin(2.0*d-2.0*m-ff)-0.000283*sin(m1+3.0*ff); - - w1=0.0004664*cos(om*deg2rad); - w2=0.0000754*cos((om+275.05-2.3*t)*deg2rad); - bt=b*(1.0-w1-w2); - - /* Parallax calculations */ - - p=0.950724+0.051818*cos(m1)+0.009531*cos(2.0*d-m1)+0.007843*cos(2.0*d)+0.002824*cos(2.0*m1)+0.000857*cos(2.0*d+m1)+ex*0.000533*cos(2.0*d-m)+ex*0.000401*cos(2.0*d-m-m1); - - p=p+0.000173*cos(3.0*m1)+0.000167*cos(4.0*d-m1)-ex*0.000111*cos(m)+0.000103*cos(4.0*d-2.0*m1)-0.000084*cos(2.0*m1-2.0*d)-ex*0.000083*cos(2.0*d+m)+0.000079*cos(2.0*d+2.0*m1); - - p=p+0.000072*cos(4.0*d)+ex*0.000064*cos(2.0*d-m+m1)-ex*0.000063*cos(2.0*d+m-m1); - - p=p+ex*0.000041*cos(m+d)+ex*0.000035*cos(2.0*m1-m)-0.000033*cos(3.0*m1-2.0*d); - - p=p-0.00003*cos(m1+d)-0.000029*cos(2.0*ff-2.0*d)-ex*0.000029*cos(2.0*m1+m); - - p=p+ex*ex*0.000026*cos(2.0*d-2.0*m)-0.000023*cos(2.0*ff-2.0*d+m1)+ex*0.000019*cos(4.0*d-m-m1); - - b=bt*deg2rad; - lm=l*deg2rad; - moon_dx=3.0/(pi*p); - - /* Semi-diameter calculation */ - /* sem=10800.0*asin(0.272488*p*deg2rad)/pi; */ - - /* Convert ecliptic coordinates to equatorial coordinates */ - - z=(jd-2415020.5)/365.2422; - ob=23.452294-(0.46845*z+5.9e-07*z*z)/3600.0; - ob=ob*deg2rad; - dec=asin(sin(b)*cos(ob)+cos(b)*sin(ob)*sin(lm)); - ra=acos(cos(b)*cos(lm)/cos(dec)); - - if (lm>pi) - ra=twopi-ra; - - /* ra = right ascension */ - /* dec = declination */ - - n=qth.stnlat*deg2rad; /* North latitude of tracking station */ - - /* Find siderial time in radians */ - - t=(jd-2451545.0)/36525.0; - teg=280.46061837+360.98564736629*(jd-2451545.0)+(0.000387933*t-t*t/38710000.0)*t; - - while (teg>360.0) - teg-=360.0; - - th=FixAngle((teg-qth.stnlong)*deg2rad); - h=th-ra; - - az=atan2(sin(h),cos(h)*sin(n)-tan(dec)*cos(n))+pi; - el=asin(sin(n)*sin(dec)+cos(n)*cos(dec)*cos(h)); - - moon_az=az/deg2rad; - moon_el=el/deg2rad; - - /* Radial velocity approximation. This code was derived - from "Amateur Radio Software", by John Morris, GM4ANB, - published by the RSGB in 1985. */ - - mm=FixAngle(1.319238+daynum*0.228027135); /* mean moon position */ - t2=0.10976; - t1=mm+t2*sin(mm); - dv=0.01255*moon_dx*moon_dx*sin(t1)*(1.0+t2*cos(mm)); - dv=dv*4449.0; - t1=6378.0; - t2=384401.0; - t3=t1*t2*(cos(dec)*cos(n)*sin(h)); - t3=t3/sqrt(t2*t2-t2*t1*sin(el)); - moon_dv=dv+t3*0.0753125; - - moon_dec=dec/deg2rad; - moon_ra=ra/deg2rad; - moon_gha=teg-moon_ra; - - if (moon_gha<0.0) - moon_gha+=360.0; -} - -void FindSun(daynum) -double daynum; -{ - /* This function finds the position of the Sun */ - - /* Zero vector for initializations */ - vector_t zero_vector={0,0,0,0}; - - /* Solar ECI position vector */ - vector_t solar_vector=zero_vector; - - /* Solar observed azi and ele vector */ - vector_t solar_set=zero_vector; - - /* Solar right ascension and declination vector */ - vector_t solar_rad=zero_vector; - - /* Solar lat, long, alt vector */ - geodetic_t solar_latlonalt; - - jul_utc=daynum+2444238.5; - - Calculate_Solar_Position(jul_utc, &solar_vector); - Calculate_Obs(jul_utc, &solar_vector, &zero_vector, &obs_geodetic, &solar_set); - sun_azi=Degrees(solar_set.x); - sun_ele=Degrees(solar_set.y); - sun_range=1.0+((solar_set.z-AU)/AU); - sun_range_rate=1000.0*solar_set.w; - - Calculate_LatLonAlt(jul_utc, &solar_vector, &solar_latlonalt); - - sun_lat=Degrees(solar_latlonalt.lat); - sun_lon=360.0-Degrees(solar_latlonalt.lon); - - Calculate_RADec(jul_utc, &solar_vector, &zero_vector, &obs_geodetic, &solar_rad); - - sun_ra=Degrees(solar_rad.x); - sun_dec=Degrees(solar_rad.y); -} - -void PreCalc(x) -int x; -{ - /* This function copies TLE data from PREDICT's sat structure - to the SGP4/SDP4's single dimensioned tle structure, and - prepares the tracking code for the update. */ - - strcpy(tle.sat_name,sat[x].name); - strcpy(tle.idesg,sat[x].designator); - tle.catnr=sat[x].catnum; - tle.epoch=(1000.0*(double)sat[x].year)+sat[x].refepoch; - tle.xndt2o=sat[x].drag; - tle.xndd6o=sat[x].nddot6; - tle.bstar=sat[x].bstar; - tle.xincl=sat[x].incl; - tle.xnodeo=sat[x].raan; - tle.eo=sat[x].eccn; - tle.omegao=sat[x].argper; - tle.xmo=sat[x].meanan; - tle.xno=sat[x].meanmo; - tle.revnum=sat[x].orbitnum; - - if (sat_db[x].squintflag) - { - calc_squint=1; - alat=deg2rad*sat_db[x].alat; - alon=deg2rad*sat_db[x].alon; - } - else - calc_squint=0; - - /* Clear all flags */ - - ClearFlag(ALL_FLAGS); - - /* Select ephemeris type. This function will set or clear the - DEEP_SPACE_EPHEM_FLAG depending on the TLE parameters of the - satellite. It will also pre-process tle members for the - ephemeris functions SGP4 or SDP4, so this function must - be called each time a new tle set is used. */ - - select_ephemeris(&tle); -} - -void Calc() -{ - /* This is the stuff we need to do repetitively while tracking. */ - - /* Zero vector for initializations */ - vector_t zero_vector={0,0,0,0}; - - /* Satellite position and velocity vectors */ - vector_t vel=zero_vector; - vector_t pos=zero_vector; - - /* Satellite Az, El, Range, Range rate */ - vector_t obs_set; - - /* Solar ECI position vector */ - vector_t solar_vector=zero_vector; - - /* Solar observed azi and ele vector */ - vector_t solar_set; - - /* Satellite's predicted geodetic position */ - geodetic_t sat_geodetic; - - jul_utc=daynum+2444238.5; - - /* Convert satellite's epoch time to Julian */ - /* and calculate time since epoch in minutes */ - - jul_epoch=Julian_Date_of_Epoch(tle.epoch); - tsince=(jul_utc-jul_epoch)*xmnpda; - age=jul_utc-jul_epoch; - - /* Copy the ephemeris type in use to ephem string. */ - - if (isFlagSet(DEEP_SPACE_EPHEM_FLAG)) - strcpy(ephem,"SDP4"); - else - strcpy(ephem,"SGP4"); - - /* Call NORAD routines according to deep-space flag. */ - - if (isFlagSet(DEEP_SPACE_EPHEM_FLAG)) - SDP4(tsince, &tle, &pos, &vel); - else - SGP4(tsince, &tle, &pos, &vel); - - /* Scale position and velocity vectors to km and km/sec */ - - Convert_Sat_State(&pos, &vel); - - /* Calculate velocity of satellite */ - - Magnitude(&vel); - sat_vel=vel.w; - - /** All angles in rads. Distance in km. Velocity in km/s **/ - /* Calculate satellite Azi, Ele, Range and Range-rate */ - - Calculate_Obs(jul_utc, &pos, &vel, &obs_geodetic, &obs_set); - - /* Calculate satellite Lat North, Lon East and Alt. */ - - Calculate_LatLonAlt(jul_utc, &pos, &sat_geodetic); - - /* Calculate squint angle */ - - if (calc_squint) - squint=(acos(-(ax*rx+ay*ry+az*rz)/obs_set.z))/deg2rad; - - /* Calculate solar position and satellite eclipse depth. */ - /* Also set or clear the satellite eclipsed flag accordingly. */ - - Calculate_Solar_Position(jul_utc, &solar_vector); - Calculate_Obs(jul_utc, &solar_vector, &zero_vector, &obs_geodetic, &solar_set); - - if (Sat_Eclipsed(&pos, &solar_vector, &eclipse_depth)) - SetFlag(SAT_ECLIPSED_FLAG); - else - ClearFlag(SAT_ECLIPSED_FLAG); - - if (isFlagSet(SAT_ECLIPSED_FLAG)) - sat_sun_status=0; /* Eclipse */ - else - sat_sun_status=1; /* In sunlight */ - - /* Convert satellite and solar data */ - sat_azi=Degrees(obs_set.x); - sat_ele=Degrees(obs_set.y); - sat_range=obs_set.z; - sat_range_rate=obs_set.w; - sat_lat=Degrees(sat_geodetic.lat); - sat_lon=Degrees(sat_geodetic.lon); - sat_alt=sat_geodetic.alt; - - fk=12756.33*acos(xkmper/(xkmper+sat_alt)); - fm=fk/1.609344; - - rv=(long)floor((tle.xno*xmnpda/twopi+age*tle.bstar*ae)*age+tle.xmo/twopi)+tle.revnum; - - sun_azi=Degrees(solar_set.x); - sun_ele=Degrees(solar_set.y); - - irk=(long)rint(sat_range); - isplat=(int)rint(sat_lat); - isplong=(int)rint(360.0-sat_lon); - iaz=(int)rint(sat_azi); - iel=(int)rint(sat_ele); - ma256=(int)rint(256.0*(phase/twopi)); - - if (sat_sun_status) - { - if (sun_ele<=-12.0 && rint(sat_ele)>=0.0) - findsun='+'; - else - findsun='*'; - } - else - findsun=' '; -} - -char AosHappens(x) -int x; -{ - /* This function returns a 1 if the satellite pointed to by - "x" can ever rise above the horizon of the ground station. */ - - double lin, sma, apogee; - - if (sat[x].meanmo==0.0) - return 0; - else - { - lin=sat[x].incl; - - if (lin>=90.0) - lin=180.0-lin; - - sma=331.25*exp(log(1440.0/sat[x].meanmo)*(2.0/3.0)); - apogee=sma*(1.0+sat[x].eccn)-xkmper; - - if ((acos(xkmper/(apogee+xkmper))+(lin*deg2rad)) > fabs(qth.stnlat*deg2rad)) - return 1; - else - return 0; - } -} - -char Decayed(x,time) -int x; -double time; -{ - /* This function returns a 1 if it appears that the - satellite pointed to by 'x' has decayed at the - time of 'time'. If 'time' is 0.0, then the - current date/time is used. */ - - double satepoch; - - if (time==0.0) - time=CurrentDaynum(); - - satepoch=DayNum(1,0,sat[x].year)+sat[x].refepoch; - - if (satepoch+((16.666666-sat[x].meanmo)/(10.0*fabs(sat[x].drag))) < time) - return 1; - else - return 0; -} - -char Geostationary(x) -int x; -{ - /* This function returns a 1 if the satellite pointed - to by "x" appears to be in a geostationary orbit */ - - if (fabs(sat[x].meanmo-1.0027)<0.0002) - - return 1; - else - return 0; -} - -double FindAOS() -{ - /* This function finds and returns the time of AOS (aostime). */ - - aostime=0.0; - - if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) - { - Calc(); - - /* Get the satellite in range */ - - while (sat_ele<-1.0) - { - daynum-=0.00035*(sat_ele*((sat_alt/8400.0)+0.46)-2.0); - Calc(); - } - - /* Find AOS */ - - while (aostime==0.0) - { - if (fabs(sat_ele)<0.03) - aostime=daynum; - else - { - daynum-=sat_ele*sqrt(sat_alt)/530000.0; - Calc(); - } - } - } - - return aostime; -} - -double FindLOS() -{ - lostime=0.0; - - if (Geostationary(indx)==0 && AosHappens(indx)==1 && Decayed(indx,daynum)==0) - { - Calc(); - - do - { - daynum+=sat_ele*sqrt(sat_alt)/502500.0; - Calc(); - - if (fabs(sat_ele) < 0.03) - lostime=daynum; - - } while (lostime==0.0); - } - - return lostime; -} - -double FindLOS2() -{ - /* This function steps through the pass to find LOS. - FindLOS() is called to "fine tune" and return the result. */ - - do - { - daynum+=cos((sat_ele-1.0)*deg2rad)*sqrt(sat_alt)/25000.0; - Calc(); - - } while (sat_ele>=0.0); - - return(FindLOS()); -} - -double NextAOS() -{ - /* This function finds and returns the time of the next - AOS for a satellite that is currently in range. */ - - aostime=0.0; - - if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) - daynum=FindLOS2()+0.014; /* Move to LOS + 20 minutes */ - - return (FindAOS()); -} - -int Print(string,mode) -char *string, mode; -{ - /* This function buffers and displays orbital predictions - and allows screens to be saved to a disk file. */ - - char type[20], spaces[80], head1[160], head2[70], - head3[72], satellite_name[25]; - int key, ans=0, l, x, t; - static char buffer[1450], lines, quit; - static FILE *fd; - - /* Pass a NULL string to initialize the buffer, counter, and flags */ - - if (string[0]==0) - { - lines=0; - quit=0; - buffer[0]=0; - fd=NULL; - } - - else - { - if (mode=='m') - { - sprintf(head1,"\n %s's Orbit Calendar for the Moon",qth.callsign); - strncpy(satellite_name,"Moon\0",5); - } - - if (mode=='o') - { - sprintf(head1,"\n %s's Orbit Calendar for the Sun",qth.callsign); - strncpy(satellite_name,"Sun\0",4); - } - - if (mode=='m' || mode=='o') - - sprintf(head2,"\n\t Date Time El Az RA Dec GHA Vel Range\n"); - - - if (mode=='p') - strcpy(type,"Orbit"); - - if (mode=='v') - strcpy(type,"Visual"); - - if (mode=='s') - strcpy(type,"Solar Illumination"); - - if (mode!='m' && mode!='o') - { - strcpy(satellite_name,sat[indx].name); - - l=strlen(qth.callsign)+strlen(satellite_name)+strlen(type); - - spaces[0]=0; - - for (x=l; x<60; x+=2) - strcat(spaces," "); - - sprintf(head1,"\n%s%s's %s Calendar For %s", spaces, qth.callsign, type, satellite_name); - - if (mode=='s') - sprintf(head2,"\n\t Date Mins/Day Sun%c Date Mins/Day Sun%c\n",37,37); - else - { - if (calc_squint) - - sprintf(head2,"\n\t Date Time El Az Phase %s %s Range Squint\n",(io_lat=='N'?"LatN":"LatS"),(io_lon=='W'?"LonW":"LonE")); - else - - sprintf(head2,"\n\t Date Time El Az Phase %s %s Range Orbit\n",(io_lat=='N'?"LatN":"LatS"),(io_lon=='W'?"LonW":"LonE")); - } - } - - sprintf(head3," -----------------------------------------------------------------"); - - strcat(buffer,string); - lines++; - - if (lines==18) - { - bkgdset(COLOR_PAIR(2)|A_BOLD); - clear(); - addstr(head1); - attrset(COLOR_PAIR(4)|A_BOLD); - addstr(head2); - addstr(head3); - attrset(COLOR_PAIR(3)|A_BOLD); - - if (buffer[0]!='\n') - printw("\n"); - - addstr(buffer); - attrset(COLOR_PAIR(4)|A_BOLD); - - if (buffer[0]=='\n') - printw("\n"); - - if (fd==NULL) - mvprintw(23,63," "); - else - mvprintw(23,63,"Log = ON"); - - mvprintw(23,6,"More? [y/n] >> "); - curs_set(1); - refresh(); - - while (ans==0) - { - key=toupper(getch()); - - if (key=='Y' || key=='\n' || key==' ') - { - key='Y'; - ans=1; - quit=0; - } - - if (key=='N' || key=='Q' || key==27) - { - key='N'; - ans=1; - quit=1; - } - - /* 'L' logs output to "satname.txt" */ - - if (key=='L' && fd==NULL && buffer[0]) - { - sprintf(temp,"%s.txt",satellite_name); - - l=strlen(temp)-4; - - for (x=0; x3) || (plus>2 && asterisk>2)) - visible=1; - } - - if (visible) - { - /* Dump buffer to Print() line by line */ - - for (x=0, y=0; buffer[x]!=0 && quit==0; x++) - { - line[y]=buffer[x]; - - if (line[y]=='\n') - { - line[y+1]=0; - quit=Print(line,'v'); - line[0]=0; - y=0; - } - - else - y++; - } - } - - buffer[0]=0; - } - } - - return quit; -} - -void Predict(mode) -char mode; -{ - /* This function predicts satellite passes. It displays - output through the Print() function if mode=='p' (show - all passes), or through the PrintVisible() function if - mode=='v' (show optically visible passes only). */ - - int quit=0, lastel=0, breakout=0; - char string[80], type[10]; - - PreCalc(indx); - daynum=GetStartTime(0); - clear(); - - /* Trap geostationary orbits and passes that cannot occur. */ - - if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) - { - if (xterm) - { - strcpy(type,"Orbit"); /* Default */ - - if (mode=='v') - strcpy(type,"Visual"); - - fprintf(stderr,"\033]0;PREDICT: %s's %s Calendar For %s\007",qth.callsign, type, sat[indx].name); - } - - do - { - daynum=FindAOS(); - - /* Display the pass */ - - while (iel>=0 && quit==0) - { - if (calc_squint) - - sprintf(string," %s%4d %4d %4d %4d %4d %6ld %4.0f %c\n",Daynum2String(daynum),iel,iaz,ma256,(io_lat=='N'?+1:-1)*isplat,(io_lon=='W'?isplong:360-isplong),irk,squint,findsun); - - else - sprintf(string," %s%4d %4d %4d %4d %4d %6ld %6ld %c\n",Daynum2String(daynum),iel,iaz,ma256,(io_lat=='N'?+1:-1)*isplat,(io_lon=='W'?isplong:360-isplong),irk,rv,findsun); - - lastel=iel; - - if (mode=='p') - quit=Print(string,'p'); - - if (mode=='v') - { - nodelay(stdscr,TRUE); - attrset(COLOR_PAIR(4)); - mvprintw(23,6," Calculating... Press [ESC] To Quit"); - - /* Allow a way out if this - should continue forever... */ - - if (getch()==27) - breakout=1; - - nodelay(stdscr,FALSE); - - quit=PrintVisible(string); - } - - daynum+=cos((sat_ele-1.0)*deg2rad)*sqrt(sat_alt)/25000.0; - Calc(); - } - - if (lastel!=0) - { - daynum=FindLOS(); - Calc(); - - if (calc_squint) - sprintf(string," %s%4d %4d %4d %4d %4d %6ld %4.0f %c\n",Daynum2String(daynum),iel,iaz,ma256,(io_lat=='N'?+1:-1)*isplat,(io_lon=='W'?isplong:360-isplong),irk,squint,findsun); - - else - sprintf(string," %s%4d %4d %4d %4d %4d %6ld %6ld %c\n",Daynum2String(daynum),iel,iaz,ma256,(io_lat=='N'?+1:-1)*isplat,(io_lon=='W'?isplong:360-isplong),irk,rv,findsun); - - if (mode=='p') - quit=Print(string,'p'); - - if (mode=='v') - quit=PrintVisible(string); - } - - if (mode=='p') - quit=Print("\n",'p'); - - if (mode=='v') - quit=PrintVisible("\n"); - - /* Move to next orbit */ - daynum=NextAOS(); - - } while (quit==0 && breakout==0 && AosHappens(indx) && Decayed(indx,daynum)==0); - } - - else - { - bkgdset(COLOR_PAIR(5)|A_BOLD); - clear(); - - if (AosHappens(indx)==0 || Decayed(indx,daynum)==1) - mvprintw(12,5,"*** Passes for %s cannot occur for your ground station! ***\n",sat[indx].name); - - if (Geostationary(indx)==1) - mvprintw(12,3,"*** Orbital predictions cannot be made for a geostationary satellite! ***\n"); - - beep(); - bkgdset(COLOR_PAIR(7)|A_BOLD); - AnyKey(); - refresh(); - } -} - -void PredictMoon() -{ - /* This function predicts "passes" of the Moon */ - - int iaz, iel, lastel=0; - char string[80], quit=0; - double daynum, lastdaynum, moonrise=0.0; - - daynum=GetStartTime('m'); - clear(); - - if (xterm) - fprintf(stderr,"\033]0;PREDICT: %s's Orbit Calendar for the Moon\007",qth.callsign); - - do - { - /* Determine moonrise */ - - FindMoon(daynum); - - while (moonrise==0.0) - { - if (fabs(moon_el)<0.03) - moonrise=daynum; - else - { - daynum-=(0.004*moon_el); - FindMoon(daynum); - } - } - - FindMoon(moonrise); - daynum=moonrise; - iaz=(int)rint(moon_az); - iel=(int)rint(moon_el); - - do - { - /* Display pass of the moon */ - - sprintf(string," %s%4d %4d %5.1f %5.1f %5.1f %6.1f%7.3f\n",Daynum2String(daynum), iel, iaz, moon_ra, moon_dec, moon_gha, moon_dv, moon_dx); - quit=Print(string,'m'); - lastel=iel; - lastdaynum=daynum; - daynum+=0.04*(cos(deg2rad*(moon_el+0.5))); - FindMoon(daynum); - iaz=(int)rint(moon_az); - iel=(int)rint(moon_el); - - } while (iel>3 && quit==0); - - while (lastel!=0 && quit==0) - { - daynum=lastdaynum; - - do - { - /* Determine setting time */ - - daynum+=0.004*(sin(deg2rad*(moon_el+0.5))); - FindMoon(daynum); - iaz=(int)rint(moon_az); - iel=(int)rint(moon_el); - - } while (iel>0); - - /* Print moonset */ - - sprintf(string," %s%4d %4d %5.1f %5.1f %5.1f %6.1f%7.3f\n",Daynum2String(daynum), iel, iaz, moon_ra, moon_dec, moon_gha, moon_dv, moon_dx); - quit=Print(string,'m'); - lastel=iel; - } - - quit=Print("\n",'m'); - daynum+=0.4; - moonrise=0.0; - - } while (quit==0); -} - -void PredictSun() -{ - /* This function predicts "passes" of the Sun. */ - - int iaz, iel, lastel=0; - char string[80], quit=0; - double daynum, lastdaynum, sunrise=0.0; - - daynum=GetStartTime('o'); - clear(); - - if (xterm) - fprintf(stderr,"\033]0;PREDICT: %s's Orbit Calendar for the Sun\007",qth.callsign); - - do - { - /* Determine sunrise */ - - FindSun(daynum); - - while (sunrise==0.0) - { - if (fabs(sun_ele)<0.03) - sunrise=daynum; - else - { - daynum-=(0.004*sun_ele); - FindSun(daynum); - } - } - - FindSun(sunrise); - daynum=sunrise; - iaz=(int)rint(sun_azi); - iel=(int)rint(sun_ele); - - /* Print time of sunrise */ - - do - { - /* Display pass of the sun */ - - sprintf(string," %s%4d %4d %5.1f %5.1f %5.1f %6.1f%7.3f\n",Daynum2String(daynum), iel, iaz, sun_ra, sun_dec, sun_lon, sun_range_rate, sun_range); - quit=Print(string,'o'); - lastel=iel; - lastdaynum=daynum; - daynum+=0.04*(cos(deg2rad*(sun_ele+0.5))); - FindSun(daynum); - iaz=(int)rint(sun_azi); - iel=(int)rint(sun_ele); - - } while (iel>3 && quit==0); - - while (lastel!=0 && quit==0) - { - daynum=lastdaynum; - - do - { - /* Find sun set */ - - daynum+=0.004*(sin(deg2rad*(sun_ele+0.5))); - FindSun(daynum); - iaz=(int)rint(sun_azi); - iel=(int)rint(sun_ele); - - } while (iel>0); - - /* Print time of sunset */ - - sprintf(string," %s%4d %4d %5.1f %5.1f %5.1f %6.1f%7.3f\n",Daynum2String(daynum), iel, iaz, sun_ra, sun_dec, sun_lon, sun_range_rate, sun_range); - quit=Print(string,'o'); - lastel=iel; - } - - quit=Print("\n",'o'); - daynum+=0.4; - sunrise=0.0; - - } while (quit==0); -} - -char KbEdit(x,y) -int x,y; -{ - /* This function is used when editing QTH - and orbital data via the keyboard. */ - - char need2save=0, input[25]; - - echo(); - move(y-1,x-1); - wgetnstr(stdscr,input,24); - - if (strlen(input)!=0) - { - need2save=1; /* Save new data to variables */ - resave=1; /* Save new data to disk files */ - strncpy(temp,input,24); - } - - mvprintw(y-1,x-1,"%-25s",temp); - - refresh(); - noecho(); - - return need2save; -} - -void ShowOrbitData() -{ - /* This function permits displays a satellite's orbital - data. The age of the satellite data is also provided. */ - - int c, x, namelength, age; - double an_period, no_period, sma, c1, e2, satepoch; - char days[5]; - - x=Select(); - - while (x!=-1) - { - if (sat[x].meanmo!=0.0) - { - bkgdset(COLOR_PAIR(2)|A_BOLD); - clear(); - sma=331.25*exp(log(1440.0/sat[x].meanmo)*(2.0/3.0)); - an_period=1440.0/sat[x].meanmo; - c1=cos(sat[x].incl*deg2rad); - e2=1.0-(sat[x].eccn*sat[x].eccn); - no_period=(an_period*360.0)/(360.0+(4.97*pow((xkmper/sma),3.5)*((5.0*c1*c1)-1.0)/(e2*e2))/sat[x].meanmo); - satepoch=DayNum(1,0,sat[x].year)+sat[x].refepoch; - age=(int)rint(CurrentDaynum()-satepoch); - - if (age==1) - strcpy(days,"day"); - else - strcpy(days,"days"); - - namelength=strlen(sat[x].name); - - printw("\n"); - - for (c=41; c>namelength; c-=2) - printw(" "); - - printw("Orbital Data For %s / Catalog Number %ld\n",sat[x].name,sat[x].catnum); - attrset(COLOR_PAIR(3)|A_BOLD); - printw("\n\t\t Issued %d %s ago on %s UTC\n\n",age,days,Daynum2String(satepoch)); - - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(5,21,"Reference Epoch"); - mvprintw(6,21,"Inclination"); - mvprintw(7,21,"RAAN"); - mvprintw(8,21,"Eccentricity"); - mvprintw(9,21,"Arg of Perigee"); - mvprintw(10,21,"Mean Anomaly"); - mvprintw(11,21,"Mean Motion"); - mvprintw(12,21,"Decay Rate"); - mvprintw(13,21,"Nddot/6 Drag"); - mvprintw(14,21,"Bstar Drag Factor"); - mvprintw(15,21,"Semi-Major Axis"); - mvprintw(16,21,"Apogee Altitude"); - mvprintw(17,21,"Perigee Altitude"); - mvprintw(18,21,"Anomalistic Period"); - mvprintw(19,21,"Nodal Period"); - mvprintw(20,21,"Orbit Number"); - mvprintw(21,21,"Element Set Number"); - - attrset(COLOR_PAIR(2)|A_BOLD); - mvprintw(5,40,": %02d %.8f",sat[x].year,sat[x].refepoch); - mvprintw(6,40,": %.4f deg",sat[x].incl); - mvprintw(7,40,": %.4f deg",sat[x].raan); - mvprintw(8,40,": %g",sat[x].eccn); - mvprintw(9,40,": %.4f deg",sat[x].argper); - mvprintw(10,40,": %.4f deg",sat[x].meanan); - mvprintw(11,40,": %.8f rev/day",sat[x].meanmo); - mvprintw(12,40,": %g rev/day/day",sat[x].drag); - mvprintw(13,40,": %g rev/day/day/day",sat[x].nddot6); - mvprintw(14,40,": %g 1/earth radii",sat[x].bstar); - mvprintw(15,40,": %.4f km",sma); - mvprintw(16,40,": %.4f km",sma*(1.0+sat[x].eccn)-xkmper); - mvprintw(17,40,": %.4f km",sma*(1.0-sat[x].eccn)-xkmper); - mvprintw(18,40,": %.4f mins",an_period); - mvprintw(19,40,": %.4f mins",no_period); - mvprintw(20,40,": %ld",sat[x].orbitnum); - mvprintw(21,40,": %ld",sat[x].setnum); - - attrset(COLOR_PAIR(3)|A_BOLD); - refresh(); - AnyKey(); - } - - x=Select(); - }; -} - -void KepEdit() -{ - /* This function permits keyboard editing of the orbital database. */ - - int x; - - do - { - x=Select(); - - if (x!=-1) - { - bkgdset(COLOR_PAIR(3)|A_BOLD); - clear(); - mvprintw(3,1,"\t\t * Orbital Database Editing Utility *\n\n\n"); - attrset(COLOR_PAIR(4)|A_BOLD); - - printw("\n\t\t\tSpacecraft Name :"); - printw("\n\t\t\tCatalog Number :"); - printw("\n\t\t\tDesignator :"); - printw("\n\t\t\tReference Epoch :"); - printw("\n\t\t\tInclination :"); - printw("\n\t\t\tRAAN :"); - printw("\n\t\t\tEccentricity :"); - printw("\n\t\t\tArg of Perigee :"); - printw("\n\t\t\tMean Anomaly :"); - printw("\n\t\t\tMean Motion :"); - printw("\n\t\t\tDecay Rate :"); - printw("\n\t\t\tNddot/6 :"); - printw("\n\t\t\tBstar Drag Term :"); - printw("\n\t\t\tOrbit Number :"); - printw("\n\t\t\tElement Set No. :"); - - attrset(COLOR_PAIR(2)|A_BOLD); - - mvprintw(7,42,"%s",sat[x].name); - mvprintw(8,42,"%ld",sat[x].catnum); - mvprintw(9,42,"%s",sat[x].designator); - mvprintw(10,42,"%02d %.8f",sat[x].year,sat[x].refepoch); - mvprintw(11,42,"%.4f",sat[x].incl); - mvprintw(12,42,"%.4f",sat[x].raan); - mvprintw(13,42,"%g",sat[x].eccn); - mvprintw(14,42,"%.4f",sat[x].argper); - mvprintw(15,42,"%.4f",sat[x].meanan); - mvprintw(16,42,"%.8f",sat[x].meanmo); - mvprintw(17,42,"%g",sat[x].drag); - mvprintw(18,42,"%g",sat[x].nddot6); - mvprintw(19,42,"%g",sat[x].bstar); - mvprintw(20,42,"%ld",sat[x].orbitnum); - mvprintw(21,42,"%ld",sat[x].setnum); - - curs_set(1); - refresh(); - - sprintf(temp,"%s",sat[x].name); - - if (KbEdit(43,8)) - strncpy(sat[x].name,temp,24); - - sprintf(temp,"%ld",sat[x].catnum); - - if (KbEdit(43,9)) - sscanf(temp,"%ld",&sat[x].catnum); - - sprintf(temp,"%s",sat[x].designator); - - if (KbEdit(43,10)) - sscanf(temp,"%s",sat[x].designator); - - sprintf(temp,"%02d %4.8f",sat[x].year,sat[x].refepoch); - - if (KbEdit(43,11)) - sscanf(temp,"%d %lf",&sat[x].year,&sat[x].refepoch); - - sprintf(temp,"%4.4f",sat[x].incl); - - if (KbEdit(43,12)) - sscanf(temp,"%lf",&sat[x].incl); - - sprintf(temp,"%4.4f",sat[x].raan); - - if (KbEdit(43,13)) - sscanf(temp,"%lf",&sat[x].raan); - - sprintf(temp,"%g",sat[x].eccn); - - if (KbEdit(43,14)) - sscanf(temp,"%lf",&sat[x].eccn); - - sprintf(temp,"%4.4f",sat[x].argper); - - if (KbEdit(43,15)) - sscanf(temp,"%lf",&sat[x].argper); - - sprintf(temp,"%4.4f",sat[x].meanan); - - if (KbEdit(43,16)) - sscanf(temp,"%lf",&sat[x].meanan); - - sprintf(temp,"%4.8f",sat[x].meanmo); - - if (KbEdit(43,17)) - sscanf(temp,"%lf",&sat[x].meanmo); - - sprintf(temp,"%g",sat[x].drag); - - if (KbEdit(43,18)) - sscanf(temp,"%lf",&sat[x].drag); - - sprintf(temp,"%g",sat[x].nddot6); - - if (KbEdit(43,19)) - sscanf(temp,"%lf",&sat[x].nddot6); - - sprintf(temp,"%g",sat[x].bstar); - - if (KbEdit(43,20)) - sscanf(temp,"%lf",&sat[x].bstar); - - sprintf(temp,"%ld",sat[x].orbitnum); - - if (KbEdit(43,21)) - sscanf(temp,"%ld",&sat[x].orbitnum); - - sprintf(temp,"%ld",sat[x].setnum); - - if (KbEdit(43,22)) - sscanf(temp,"%ld",&sat[x].setnum); - - curs_set(0); - } - - } while (x!=-1); - - if (resave) - { - SaveTLE(); - resave=0; - } -} - -void QthEdit() -{ - /* This function permits keyboard editing of - the ground station's location information. */ - - bkgdset(COLOR_PAIR(3)|A_BOLD); - clear(); - curs_set(1); - mvprintw(7,0,"\t\t * Ground Station Location Editing Utility *\n\n\n"); - - attrset(COLOR_PAIR(4)|A_BOLD); - printw("\n\t\t\tStation Callsign :"); - printw("\n\t\t\tStation Latitude :"); - printw("\n\t\t\tStation Longitude :"); - printw("\n\t\t\tStation Altitude :"); - - attrset(COLOR_PAIR(2)|A_BOLD); - mvprintw(11,44,"%s",qth.callsign); - - if (io_lat=='N') - mvprintw(12,44,"%g [DegN]",+qth.stnlat); - else - mvprintw(12,44,"%g [DegS]",-qth.stnlat); - - if (io_lon=='W') - mvprintw(13,44,"%g [DegW]",+qth.stnlong); - else - mvprintw(13,44,"%g [DegE]",-qth.stnlong); - - mvprintw(14,44,"%d [m]",qth.stnalt); - - refresh(); - - sprintf(temp,"%s",qth.callsign); - - mvprintw(18,12,"Enter the callsign or identifier of your ground station"); - - if (KbEdit(45,12)) - strncpy(qth.callsign,temp,16); - - if (io_lat=='N') - sprintf(temp,"%g [DegN]",+qth.stnlat); - else - sprintf(temp,"%g [DegS]",-qth.stnlat); - - if (io_lat=='N') - mvprintw(18,12,"Enter your latitude in degrees NORTH (south=negative) "); - else - mvprintw(18,12,"Enter your latitude in degrees SOUTH (north=negative) "); - - mvprintw(19,12," Decimal (74.2467) or DMS (74 14 48) format allowed"); - - if (KbEdit(45,13)) - { - if (io_lat=='N') - qth.stnlat=+ReadBearing(temp); - else - qth.stnlat=-ReadBearing(temp); - } - - if (io_lon=='W') - sprintf(temp,"%g [DegW]",+qth.stnlong); - else - sprintf(temp,"%g [DegE]",-qth.stnlong); - - if (io_lon=='W') - mvprintw(18,12,"Enter your longitude in degrees WEST (east=negative) "); - else - mvprintw(18,12,"Enter your longitude in degrees EAST (west=negative) "); - - if (KbEdit(45,14)) - { - if (io_lon=='W') - qth.stnlong=+ReadBearing(temp); - else - qth.stnlong=-ReadBearing(temp); - } - - move(19,12); - clrtoeol(); - mvprintw(18,12," Enter your altitude above sea level (in meters) "); - - sprintf(temp,"%d",qth.stnalt); - - if (KbEdit(45,15)) - sscanf(temp,"%d",&qth.stnalt); - - if (resave) - { - SaveQTH(); - resave=0; - } -} - -void SingleTrack(x,speak) -int x; -char speak; -{ - /* This function tracks a single satellite in real-time - until 'Q' or ESC is pressed. x represents the index - of the satellite being tracked. If speak=='T', then - the speech routines are enabled. */ - - int ans, oldaz=0, oldel=0, length, xponder=0, - polarity=0, tshift, bshift; - char approaching=0, command[80], comsat, aos_alarm=0, - geostationary=0, aoshappens=0, decayed=0, - eclipse_alarm=0, visibility=0, old_visibility=0; - double oldtime=0.0, nextaos=0.0, lostime=0.0, aoslos=0.0, - downlink=0.0, uplink=0.0, downlink_start=0.0, - downlink_end=0.0, uplink_start=0.0, uplink_end=0.0, - dopp, doppler100=0.0, delay, loss, shift; - long newtime, lasttime=0; - - PreCalc(x); - indx=x; - - if (sat_db[x].transponders>0) - { - comsat=1; - tshift=0; - bshift=0; - } - - else - { - comsat=0; - tshift=2; - bshift=-2; - } - - if (comsat) - { - downlink_start=sat_db[x].downlink_start[xponder]; - downlink_end=sat_db[x].downlink_end[xponder]; - uplink_start=sat_db[x].uplink_start[xponder]; - uplink_end=sat_db[x].uplink_end[xponder]; - - if (downlink_start>downlink_end) - polarity=-1; - - if (downlink_start=0.0) - visibility_array[indx]='V'; - else - visibility_array[indx]='D'; - } - - else - visibility_array[indx]='N'; - - visibility=visibility_array[indx]; - - if (comsat) - { - if (downlink!=0.0) - mvprintw(13,11,"%11.5f MHz",downlink); - - else - mvprintw(13,11," "); - - if (uplink!=0.0) - mvprintw(12,11,"%11.5f MHz",uplink); - - else - mvprintw(12,11," "); - } - - if (antfd!=-1) - { - if (sat_ele>=0.0) - mvprintw(18+bshift,67," Active "); - else - mvprintw(18+bshift,67,"Standing By"); - } - else - mvprintw(18+bshift,67,"Not Enabled"); - - if (calc_squint) - mvprintw(18+bshift,52,"%+6.2f",squint); - else - mvprintw(18+bshift,54,"N/A"); - - doppler100=-100.0e06*((sat_range_rate*1000.0)/299792458.0); - delay=1000.0*((1000.0*sat_range)/299792458.0); - - if (sat_ele>=0.0) - { - if (aos_alarm==0) - { - beep(); - aos_alarm=1; - } - - if (comsat) - { - attrset(COLOR_PAIR(4)|A_BOLD); - - if (fabs(sat_range_rate)<0.1) - mvprintw(14,34," TCA "); - - else - { - if (sat_range_rate<0.0) - mvprintw(14,34,"Approaching"); - - if (sat_range_rate>0.0) - mvprintw(14,34," Receding "); - } - - attrset(COLOR_PAIR(2)|A_BOLD); - - if (downlink!=0.0) - { - dopp=1.0e-08*(doppler100*downlink); - mvprintw(13,32,"%11.5f MHz",downlink+dopp); - loss=32.4+(20.0*log10(downlink))+(20.0*log10(sat_range)); - mvprintw(13,67,"%7.3f dB",loss); - mvprintw(14,13,"%7.3f ms",delay); - } - - else - { - mvprintw(13,32," "); - mvprintw(13,67," "); - mvprintw(14,13," "); - } - - if (uplink!=0.0) - { - dopp=1.0e-08*(doppler100*uplink); - mvprintw(12,32,"%11.5f MHz",uplink-dopp); - loss=32.4+(20.0*log10(uplink))+(20.0*log10(sat_range)); - mvprintw(12,67,"%7.3f dB",loss); - } - - else - { - mvprintw(12,32," "); - mvprintw(12,67," "); - } - - if (uplink!=0.0 && downlink!=0.0) - mvprintw(14,67,"%7.3f ms",2.0*delay); - - else - mvprintw(14,67," "); - } - - if (speak=='T' && soundcard) - { - if (eclipse_alarm==0 && fabs(eclipse_depth)<0.015) /* ~1 deg */ - { - /* Hold off regular announcements if - satellite is within about 2 degrees - of entering into or out of an - eclipse. */ - - oldtime=CurrentDaynum(); - - if ((old_visibility=='V' || old_visibility=='D') && visibility=='N') - { - sprintf(command,"%svocalizer/vocalizer eclipse &",predictpath); - system(command); - eclipse_alarm=1; - oldtime-=0.000015*sqrt(sat_alt); - } - - if (old_visibility=='N' && (visibility=='V' || visibility=='D')) - { - sprintf(command,"%svocalizer/vocalizer sunlight &",predictpath); - system(command); - eclipse_alarm=1; - oldtime-=0.000015*sqrt(sat_alt); - } - } - - if ((CurrentDaynum()-oldtime)>(0.00003*sqrt(sat_alt))) - { - if (sat_range_rate<0.0) - approaching='+'; - - if (sat_range_rate>0.0) - approaching='-'; - - sprintf(command,"%svocalizer/vocalizer %.0f %.0f %c %c &",predictpath,sat_azi,sat_ele,approaching,visibility); - system(command); - oldtime=CurrentDaynum(); - old_visibility=visibility; - } - - if (sat_ele<=1.0 && approaching=='-') - { - /* Suspend regular announcements - as we approach LOS. */ - - oldtime=CurrentDaynum(); - } - } - } - - else - { - lostime=0.0; - aos_alarm=0; - eclipse_alarm=0; - - if (comsat) - { - mvprintw(12,32," "); - mvprintw(12,67," "); - mvprintw(13,32," "); - mvprintw(13,67," "); - mvprintw(14,13," "); - mvprintw(14,34," "); - mvprintw(14,67," "); - } - } - - mvprintw(7+tshift,42,"%0.f ",fm); - mvprintw(8+tshift,42,"%0.f ",fk); - - attrset(COLOR_PAIR(3)|A_BOLD); - - mvprintw(21,22,"Orbit Number: %ld",rv); - - /* Send data to serial port antenna tracker - either as needed (when it changes), or - once per second. */ - - if (sat_ele>=0.0 && antfd!=-1) - { - newtime=(long)time(NULL); - - if ((oldel!=iel || oldaz!=iaz) || (once_per_second && newtime>lasttime)) - { - TrackDataOut(antfd,(float)iel,(float)iaz); - oldel=iel; - oldaz=iaz; - lasttime=newtime; - } - } - - mvprintw(23,22,"Spacecraft is currently "); - - if (visibility=='V') - mvprintw(23,46,"visible "); - - if (visibility=='D') - mvprintw(23,46,"in sunlight"); - - if (visibility=='N') - mvprintw(23,46,"in eclipse "); - - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(20,5," Sun "); - mvprintw(21,5,"---------"); - attrset(COLOR_PAIR(3)|A_BOLD); - mvprintw(22,5,"%-7.2fAz",sun_azi); - mvprintw(23,4,"%+-6.2f El",sun_ele); - - FindMoon(daynum); - - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(20,65," Moon "); - mvprintw(21,65,"---------"); - attrset(COLOR_PAIR(3)|A_BOLD); - mvprintw(22,65,"%-7.2fAz",moon_az); - mvprintw(23,64,"%+-6.2f El",moon_el); - - if (geostationary==1 && sat_ele>=0.0) - { - mvprintw(22,22,"Satellite orbit is geostationary"); - aoslos=-3651.0; - } - - if (geostationary==1 && sat_ele<0.0) - { - mvprintw(22,22,"This satellite never reaches AOS"); - aoslos=-3651.0; - } - - if (aoshappens==0 || decayed==1) - { - mvprintw(22,22,"This satellite never reaches AOS"); - aoslos=-3651.0; - } - - if (sat_ele>=0.0 && geostationary==0 && decayed==0 && daynum>lostime) - { - lostime=FindLOS2(); - mvprintw(22,22,"LOS at: %s UTC ",Daynum2String(lostime)); - aoslos=lostime; - } - - else if (sat_ele<0.0 && geostationary==0 && decayed==0 && aoshappens==1 && daynum>aoslos) - { - daynum+=0.003; /* Move ahead slightly... */ - nextaos=FindAOS(); - mvprintw(22,22,"Next AOS: %s UTC",Daynum2String(nextaos)); - aoslos=nextaos; - - if (oldtime!=0.0 && speak=='T' && soundcard) - { - /* Announce LOS */ - - sprintf(command,"%svocalizer/vocalizer los &",predictpath); - system(command); - } - } - - /* This is where the variables for the socket server are updated. */ - - if (socket_flag) - { - az_array[indx]=sat_azi; - el_array[indx]=sat_ele; - lat_array[indx]=sat_lat; - long_array[indx]=360.0-sat_lon; - footprint_array[indx]=fk; - range_array[indx]=sat_range; - altitude_array[indx]=sat_alt; - velocity_array[indx]=sat_vel; - orbitnum_array[indx]=rv; - doppler[indx]=doppler100; - nextevent[indx]=aoslos; - eclipse_depth_array[indx]=eclipse_depth/deg2rad; - phase_array[indx]=360.0*(phase/twopi); - - if (calc_squint) - squint_array[indx]=squint; - else - squint_array[indx]=360.0; - - FindSun(daynum); - - sprintf(tracking_mode, "%s\n%c",sat[indx].name,0); - } - - /* Get input from keyboard */ - - ans=tolower(getch()); - - /* We can force PREDICT to speak by pressing 'T' */ - - if (ans=='t') - oldtime=0.0; - - /* If we receive a RELOAD_TLE command through the - socket connection or an 'r' through the keyboard, - reload the TLE file. */ - - if (reload_tle || ans=='r') - { - ReadDataFiles(); - reload_tle=0; - } - - if (comsat) - { - if (ans==' ' && sat_db[x].transponders>1) - { - xponder++; - - if (xponder>=sat_db[x].transponders) - xponder=0; - - move(10,1); - clrtoeol(); - - downlink_start=sat_db[x].downlink_start[xponder]; - downlink_end=sat_db[x].downlink_end[xponder]; - uplink_start=sat_db[x].uplink_start[xponder]; - uplink_end=sat_db[x].uplink_end[xponder]; - - if (downlink_start>downlink_end) - polarity=-1; - - if (downlink_start' || ans=='.') - { - if (ans=='>') - shift=0.001; /* 1 kHz */ - else - shift=0.0001; /* 100 Hz */ - - /* Raise uplink frequency */ - - uplink+=shift*(double)abs(polarity); - downlink=downlink+(shift*(double)polarity); - - if (uplink>uplink_end) - { - uplink=uplink_start; - downlink=downlink_start; - } - } - - if (ans=='<' || ans== ',') - { - if (ans=='<') - shift=0.001; /* 1 kHz */ - else - shift=0.0001; /* 100 Hz */ - - /* Lower uplink frequency */ - - uplink-=shift*(double)abs(polarity); - downlink=downlink-(shift*(double)polarity); - - if (uplink=0.0) - { - attrset(COLOR_PAIR(2)|A_BOLD); - inrange[indx]=1; - } - - else - { - attrset(COLOR_PAIR(2)); - inrange[indx]=0; - } - - if (sat_sun_status) - { - if (sun_ele<=-12.0 && sat_ele>=0.0) - sunstat='V'; - else - sunstat='D'; - } - - else - sunstat='N'; - - mvprintw(y+6,x,"%-10s%3.0f %+3.0f %3.0f %3.0f %6.0f %c", Abbreviate(sat[indx].name,9),sat_azi,sat_ele,(io_lat=='N'?+1:-1)*sat_lat,(io_lon=='W'?360.0-sat_lon:sat_lon),sat_range,sunstat); - - if (socket_flag) - { - az_array[indx]=sat_azi; - el_array[indx]=sat_ele; - lat_array[indx]=sat_lat; - long_array[indx]=360.0-sat_lon; - footprint_array[indx]=fk; - range_array[indx]=sat_range; - altitude_array[indx]=sat_alt; - velocity_array[indx]=sat_vel; - orbitnum_array[indx]=rv; - visibility_array[indx]=sunstat; - eclipse_depth_array[indx]=eclipse_depth/deg2rad; - phase_array[indx]=360.0*(phase/twopi); - - doppler[indx]=-100e06*((sat_range_rate*1000.0)/299792458.0); - - if (calc_squint) - squint_array[indx]=squint; - else - squint_array[indx]=360.0; - - FindSun(daynum); - sprintf(tracking_mode,"MULTI\n%c",0); - } - - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(20,5," Sun "); - mvprintw(21,5,"---------"); - attrset(COLOR_PAIR(3)|A_BOLD); - mvprintw(22,5,"%-7.2fAz",sun_azi); - mvprintw(23,4,"%+-6.2f El",sun_ele); - - FindMoon(daynum); - - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(20,65," Moon "); - mvprintw(21,65,"---------"); - attrset(COLOR_PAIR(3)|A_BOLD); - mvprintw(22,65,"%-7.2fAz",moon_az); - mvprintw(23,64,"%+-6.2f El",moon_el); - - /* Calculate Next Event (AOS/LOS) Times */ - - if (ok2predict[indx] && daynum>los[indx] && inrange[indx]) - los[indx]=FindLOS2(); - - if (ok2predict[indx] && daynum>aos[indx]) - { - if (inrange[indx]) - aos[indx]=NextAOS(); - else - aos[indx]=FindAOS(); - } - - if (inrange[indx]) - aoslos[indx]=los[indx]; - else - aoslos[indx]=aos[indx]; - - if (socket_flag) - { - if (ok2predict[indx]) - nextevent[indx]=aoslos[indx]; - - else - nextevent[indx]=-3651.0; - } - - aos2[indx]=aos[indx]; - satindex[indx]=indx; - } - - if (Decayed(indx,0.0)) - { - attrset(COLOR_PAIR(2)); - mvprintw(y+6,x,"%-10s---------- Decayed ---------", Abbreviate(sat[indx].name,9)); - - if (socket_flag) - { - az_array[indx]=0.0; - el_array[indx]=0.0; - lat_array[indx]=0.0; - long_array[indx]=0.0; - footprint_array[indx]=0.0; - range_array[indx]=0.0; - altitude_array[indx]=0.0; - velocity_array[indx]=0.0; - orbitnum_array[indx]=0L; - visibility_array[indx]='N'; - eclipse_depth_array[indx]=0.0; - phase_array[indx]=0.0; - doppler[indx]=0.0; - squint_array[indx]=0.0; - nextevent[indx]=-3651.0; - } - } - } - - attrset(COLOR_PAIR(6)|A_REVERSE|A_BOLD); - - daynum=CurrentDaynum(); - mvprintw(2,39,"%s",Daynum2String(daynum)); - - if (daynum>nextcalctime) - { - /* Bubble sort the AOS times */ - - for (z=22; z>=0; z--) - for (y=0; y<=z; y++) - if (aos2[y]>=aos2[y+1]) - { - temptime=aos2[y]; - aos2[y]=aos2[y+1]; - aos2[y+1]=temptime; - - x=satindex[y]; - satindex[y]=satindex[y+1]; - satindex[y+1]=x; - } - - /* Display list of upcoming passes */ - - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(19,31,"Upcoming Passes"); - mvprintw(20,31,"---------------"); - attrset(COLOR_PAIR(3)|A_BOLD); - - for (x=0, y=0, z=-1; x<21 && y!=3; x++) - { - if (ok2predict[satindex[x]] && aos2[x]!=0.0) - { - mvprintw(y+21,19,"%10s on %s UTC",Abbreviate(sat[(int)satindex[x]].name,9),Daynum2String(aos2[x])); - - if (z==-1) - z=x; - y++; - } - } - - if (z!=-1) - nextcalctime=aos2[z]; - } - - refresh(); - halfdelay(2); /* Increase if CPU load is too high */ - ans=tolower(getch()); - - /* If we receive a RELOAD_TLE command through the - socket connection, or an 'r' through the keyboard, - reload the TLE file. */ - - if (reload_tle || ans=='r') - { - ReadDataFiles(); - reload_tle=0; - nextcalctime=0.0; - } - - } while (ans!='q' && ans!=27); - - cbreak(); - sprintf(tracking_mode, "NONE\n%c",0); -} - -void Illumination() -{ - double startday, oneminute, sunpercent; - int eclipses, minutes, quit, breakout=0; - char string1[365], string[725], datestring[25], count; - - oneminute=1.0/(24.0*60.0); - - PreCalc(indx); - daynum=floor(GetStartTime(0)); - startday=daynum; - count=0; - - curs_set(0); - clear(); - - if (xterm) - fprintf(stderr,"\033]0;PREDICT: %s's Solar Illumination Calendar For %s\007",qth.callsign, sat[indx].name); - - do - { - attrset(COLOR_PAIR(4)); - mvprintw(23,6," Calculating... Press [ESC] To Quit"); - refresh(); - - count++; - daynum=startday; - - for (minutes=0, eclipses=0; minutes<1440; minutes++) - { - Calc(); - - if (sat_sun_status==0) - eclipses++; - - daynum=startday+(oneminute*(double)minutes); - } - - sunpercent=((double)eclipses)/((double)minutes); - sunpercent=100.0-(sunpercent*100.0); - - strcpy(datestring,Daynum2String(startday)); - datestring[11]=0; - sprintf(string1," %s %4d %6.2f%c",datestring,1440-eclipses,sunpercent,37); - - /* Allow a quick way out */ - - nodelay(stdscr,TRUE); - - if (getch()==27) - breakout=1; - - nodelay(stdscr,FALSE); - - startday+=18.0; - - daynum=startday; - - for (minutes=0, eclipses=0; minutes<1440; minutes++) - { - Calc(); - - if (sat_sun_status==0) - eclipses++; - - daynum=startday+(oneminute*(double)minutes); - } - - sunpercent=((double)eclipses)/((double)minutes); - sunpercent=100.0-(sunpercent*100.0); - - strcpy(datestring,Daynum2String(startday)); - datestring[11]=0; - sprintf(string,"%s\t %s %4d %6.2f%c\n",string1,datestring,1440-eclipses,sunpercent,37); - quit=Print(string,'s'); - - /* Allow a quick way out */ - - nodelay(stdscr,TRUE); - - if (getch()==27) - breakout=1; - - nodelay(stdscr,FALSE); - - if (count<18) - startday-=17.0; - else - { - count=0; - startday+=1.0; - } - } - while (quit!=1 && breakout!=1 && Decayed(indx,daynum)==0); -} - -void MainMenu() -{ - /* Start-up menu. Your wish is my command. :-) */ - - Banner(); - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(10,28,"--==[ Main Menu ]==--"); - - attrset(COLOR_PAIR(3)|A_BOLD); - mvprintw(13,1,"[P]: Predict Satellite Passes"); - mvprintw(14,1,"[V]: Predict Visible Passes"); - mvprintw(15,1,"[S]: Solar Illumination Predictions"); - mvprintw(16,1,"[L]: Lunar Predictions"); - mvprintw(17,1,"[O]: Solar Predictions"); - mvprintw(18,1,"[T]: Single Satellite Tracking Mode"); - mvprintw(19,1,"[M]: Multi-Satellite Tracking Mode"); - - mvprintw(13,40,"[I]: Program Information"); - mvprintw(14,40,"[G]: Edit Ground Station Information"); - mvprintw(15,40,"[D]: Display Satellite Orbital Data"); - mvprintw(16,40,"[U]: Update Sat Elements From File"); - mvprintw(17,40,"[E]: Manually Edit Orbital Elements"); - mvprintw(18,40,"[B]: Edit Transponder Database"); - mvprintw(19,40,"[Q]: Exit PREDICT"); - - if (socket_flag) - { - attrset(COLOR_PAIR(4)|A_BOLD); - mvprintw(22,33,"Server Mode"); - } - - refresh(); - - if (xterm) - fprintf(stderr,"\033]0;PREDICT: Version %s\007",version); -} - -void ProgramInfo() -{ - Banner(); - attrset(COLOR_PAIR(3)|A_BOLD); - - printw("\n\n\n\n\n\t\tPREDICT version : %s\n",version); - printw("\t\tQTH file loaded : %s\n",qthfile); - printw("\t\tTLE file loaded : %s\n",tlefile); - printw("\t\tDatabase file : "); - - if (database) - printw("Loaded\n"); - else - printw("Not loaded\n"); - - if (antfd!=-1) - { - printw("\t\tAutoTracking : Sending data to %s",serial_port); - - if (once_per_second) - printw(" every second"); - - printw("\n"); - } - - else - printw("\t\tAutoTracking : Not enabled\n"); - - printw("\t\tRunning Mode : "); - - if (socket_flag) - printw("Network server on port \"%s\"\n",netport); - else - printw("Standalone\n"); - - printw("\t\tVocalizer : "); - - if (soundcard) - printw("Soundcard present"); - else - printw("No soundcard available"); - - refresh(); - attrset(COLOR_PAIR(4)|A_BOLD); - AnyKey(); -} - -void NewUser() -{ - int *mkdir(); - - Banner(); - attrset(COLOR_PAIR(3)|A_BOLD); - - mvprintw(12,2,"WELCOME to PREDICT! Since you are a new user to the program, default\n"); - printw(" orbital data and ground station location information was copied into\n"); - printw(" your home directory to get you going. Please select option [G] from\n"); - printw(" PREDICT's main menu to edit your ground station information, and update\n"); - printw(" your orbital database using option [U] or [E]. Enjoy the program! :-)"); - refresh(); - - /* Make "~/.predict" subdirectory */ - - sprintf(temp,"%s/.predict",getenv("HOME")); - mkdir(temp,0777); - - /* Copy default files into ~/.predict directory */ - - sprintf(temp,"%sdefault/predict.tle",predictpath); - - CopyFile(temp,tlefile); - - sprintf(temp,"%sdefault/predict.db",predictpath); - - CopyFile(temp,dbfile); - - sprintf(temp,"%sdefault/predict.qth",predictpath); - - CopyFile(temp,qthfile); - - attrset(COLOR_PAIR(4)|A_BOLD); - AnyKey(); -} - -void db_edit() -{ - clear(); - attrset(COLOR_PAIR(3)|A_BOLD); - mvprintw(2,15,"* PREDICT Transponder Database Editing Utility *"); - attrset(COLOR_PAIR(2)|A_BOLD); - mvprintw(13,33,"Coming Soon!"); - attrset(COLOR_PAIR(4)|A_BOLD); - refresh(); - AnyKey(); -} - -int QuickFind(string, outputfile) -char *string, *outputfile; -{ - int x, y, z, step=1; - long start, now, end, count; - char satname[50], startstr[20], endstr[20]; - time_t t; - FILE *fd; - - if (outputfile[0]) - fd=fopen(outputfile,"w"); - else - fd=stdout; - - startstr[0]=0; - endstr[0]=0; - - ReadDataFiles(); - - for (x=0; x<48 && string[x]!=0 && string[x]!='\n'; x++) - satname[x]=string[x]; - - satname[x]=0; - x++; - - for (y=0; string[x+y]!=0 && string[x+y]!='\n'; y++) - startstr[y]=string[x+y]; - - startstr[y]=0; - y++; - - for (z=0; string[x+y+z]!=0 && string[x+y+z]!='\n'; z++) - endstr[z]=string[x+y+z]; - - endstr[z]=0; - - /* Do a simple search for the matching satellite name */ - - for (z=0; z<24; z++) - { - if ((strcmp(sat[z].name,satname)==0) || (atol(satname)==sat[z].catnum)) - { - start=atol(startstr); - - if (endstr[strlen(endstr)-1]=='m') - { - step=60; - endstr[strlen(endstr)-1]=0; - } - - if (endstr[0]=='+') - end=start+((long)step)*atol(endstr); - else - end=atol(endstr); - - indx=z; - - t=time(NULL); - now=(long)t; - - if (start==0) - start=now; - - if (startstr[0]=='+') - { - start=now; - - if (startstr[strlen(startstr)-1]=='m') - { - step=60; - startstr[strlen(startstr)-1]=0; - } - - end=start+((long)step)*atol(startstr); - - /* Prevent a list greater than - 24 hours from being produced */ - - if ((end-start)>86400) - { - start=now; - end=now-1; - } - } - - if ((start>=now-31557600) && (start<=now+31557600) && end==0) - { - /* Start must be one year from now */ - /* Display a single position */ - daynum=((start/86400.0)-3651.0); - PreCalc(indx); - Calc(); - - if (Decayed(indx,daynum)==0) - fprintf(fd,"%ld %s %4d %4d %4d %4d %4d %6ld %6ld %c\n",start,Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); - break; - } - - else - { - /* Display a whole list */ - for (count=start; count<=end; count+=step) - { - daynum=((count/86400.0)-3651.0); - PreCalc(indx); - Calc(); - - if (Decayed(indx,daynum)==0) - fprintf(fd,"%ld %s %4d %4d %4d %4d %4d %6ld %6ld %c\n",count,Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); - } - break; - } - } - } - - if (outputfile[0]) - fclose(fd); - - return 0; -} - -int QuickPredict(string, outputfile) -char *string, *outputfile; -{ - int x, y, z, lastel=0; - long start, now; - double doppler100=0.0; - char satname[50], startstr[20]; - time_t t; - FILE *fd; - - if (outputfile[0]) - fd=fopen(outputfile,"w"); - else - fd=stdout; - - startstr[0]=0; - - ReadDataFiles(); - - for (x=0; x<48 && string[x]!=0 && string[x]!='\n'; x++) - satname[x]=string[x]; - - satname[x]=0; - x++; - - for (y=0; string[x+y]!=0 && string[x+y]!='\n'; y++) - startstr[y]=string[x+y]; - - startstr[y]=0; - y++; - - /* Do a simple search for the matching satellite name */ - - for (z=0; z<24; z++) - { - if ((strcmp(sat[z].name,satname)==0) || (atol(satname)==sat[z].catnum)) - { - start=atol(startstr); - indx=z; - - t=time(NULL); - now=(long)t; - - if (start==0) - start=now; - - if ((start>=now-31557600) && (start<=now+31557600)) - { - /* Start must within one year of now */ - daynum=((start/86400.0)-3651.0); - PreCalc(indx); - Calc(); - - if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) - { - /* Make Predictions */ - daynum=FindAOS(); - - /* Display the pass */ - - while (iel>=0) - { - fprintf(fd,"%.0f %s %4d %4d %4d %4d %4d %6ld %6ld %c %f\n",floor(86400.0*(3651.0+daynum)),Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun,doppler100); - lastel=iel; - daynum+=cos((sat_ele-1.0)*deg2rad)*sqrt(sat_alt)/25000.0; - Calc(); - } - - if (lastel!=0) - { - daynum=FindLOS(); - Calc(); - fprintf(fd,"%.0f %s %4d %4d %4d %4d %4d %6ld %6ld %c %f\n",floor(86400.0*(3651.0+daynum)),Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun,doppler100); - } - } - break; - } - } - } - - if (outputfile[0]) - fclose(fd); - - return 0; -} - -int QuickDoppler100(string, outputfile) -char *string, *outputfile; -{ - - /* Do a quick predict of the doppler for non-geo sattelites, returns UTC epoch seconds, - UTC time and doppler normalized to 100MHz for every 5 seconds of satellite-pass as a CSV*/ - - int x, y, z, lastel=0; - long start, now; - double doppler100; - char satname[50], startstr[20]; - time_t t; - FILE *fd; - - if (outputfile[0]) - fd=fopen(outputfile,"w"); - else - fd=stdout; - - startstr[0]=0; - - ReadDataFiles(); - - for (x=0; x<48 && string[x]!=0 && string[x]!='\n'; x++) - satname[x]=string[x]; - - satname[x]=0; - x++; - - for (y=0; string[x+y]!=0 && string[x+y]!='\n'; y++) - startstr[y]=string[x+y]; - - startstr[y]=0; - y++; - - /* Do a simple search for the matching satellite name */ - - for (z=0; z<24; z++) - { - if ((strcmp(sat[z].name,satname)==0) || (atol(satname)==sat[z].catnum)) - { - start=atol(startstr); - indx=z; - - t=time(NULL); - now=(long)t; - - if (start==0) - start=now; - - if ((start>=now-31557600) && (start<=now+31557600)) - { - /* Start must within one year of now */ - daynum=((start/86400.0)-3651.0); - PreCalc(indx); - Calc(); - - if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) - { - /* Make Predictions */ - daynum=FindAOS(); - - /* Display the pass */ - - while (iel>=0) - { - doppler100=-100.0e06*((sat_range_rate*1000.0)/299792458.0); - fprintf(fd,"%.0f,%s,%f\n",floor(86400.0*(3651.0+daynum)),Daynum2String(daynum),doppler100); - lastel=iel; - daynum+=cos((sat_ele-1.0)*deg2rad)*sqrt(sat_alt)/500000.0; - Calc(); - } - - if (lastel!=0) - { - doppler100=-100.0e06*((sat_range_rate*1000.0)/299792458.0); - daynum=FindLOS(); - Calc(); - fprintf(fd,"%.0f,%s,%f\n",floor(86400.0*(3651.0+daynum)),Daynum2String(daynum),doppler100); - } - } - break; - } - } - } - - if (outputfile[0]) - fclose(fd); - - return 0; -} - - -int main(argc,argv) -char argc, *argv[]; -{ - int x, y, z, key=0; - char updatefile[80], quickfind=0, quickpredict=0, - quickstring[40], outputfile[42], quickdoppler100=0, - tle_cli[50], qth_cli[50], interactive=0; - struct termios oldtty, newtty; - pthread_t thread; - char *env=NULL; - FILE *db; - - /* Set up translation table for computing TLE checksums */ - - for (x=0; x<=255; val[x]=0, x++); - for (x='0'; x<='9'; val[x]=x-'0', x++); - - val['-']=1; - - updatefile[0]=0; - outputfile[0]=0; - temp[0]=0; - tle_cli[0]=0; - qth_cli[0]=0; - dbfile[0]=0; - netport[0]=0; - serial_port[0]=0; - once_per_second=0; - - y=argc-1; - antfd=-1; - - /* Make sure entire "quickstring" array is initialized before use */ - - for (x=0; x<40; quickstring[x]=0, x++); - - /* Scan command-line arguments */ - - for (x=1; x<=y; x++) - { - if (strcmp(argv[x],"-f")==0) - { - quickfind=1; - z=x+1; - while (z<=y && argv[z][0] && argv[z][0]!='-') - { - if ((strlen(quickstring)+strlen(argv[z]))<37) - { - strncat(quickstring,argv[z],15); - strcat(quickstring,"\n"); - z++; - } - } - z--; - } - - if (strcmp(argv[x],"-p")==0) - { - quickpredict=1; - z=x+1; - - while (z<=y && argv[z][0] && argv[z][0]!='-') - { - if ((strlen(quickstring)+strlen(argv[z]))<37) - { - strncat(quickstring,argv[z],15); - strcat(quickstring,"\n"); - z++; - } - } - z--; - } - - if (strcmp(argv[x],"-dp")==0) - { - quickdoppler100=1; - z=x+1; - - while (z<=y && argv[z][0] && argv[z][0]!='-') - { - if ((strlen(quickstring)+strlen(argv[z]))<37) - { - strncat(quickstring,argv[z],15); - strcat(quickstring,"\n"); - z++; - } - } - z--; - } - - if (strcmp(argv[x],"-u")==0) - { - z=x+1; - while (z<=y && argv[z][0] && argv[z][0]!='-') - { - if ((strlen(updatefile)+strlen(argv[z]))<75) - { - strncat(updatefile,argv[z],75); - strcat(updatefile,"\n"); - z++; - } - } - z--; - } - - - if (strcmp(argv[x],"-t")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(tle_cli,argv[z],48); - } - - if (strcmp(argv[x],"-q")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(qth_cli,argv[z],48); - } - - if (strcmp(argv[x],"-a")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(serial_port,argv[z],13); - } - - if (strcmp(argv[x],"-a1")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(serial_port,argv[z],13); - once_per_second=1; - } - - if (strcmp(argv[x],"-o")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(outputfile,argv[z],40); - } - - if (strcmp(argv[x],"-n")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(netport,argv[z],5); - } - - if (strcmp(argv[x],"-s")==0) - socket_flag=1; - - if (strcmp(argv[x],"-north")==0) /* Default */ - io_lat='N'; - - if (strcmp(argv[x],"-south")==0) - io_lat='S'; - - if (strcmp(argv[x],"-west")==0) /* Default */ - io_lon='W'; - - if (strcmp(argv[x],"-east")==0) - io_lon='E'; - } - - /* We're done scanning command-line arguments */ - - /* If no command-line (-t or -q) arguments have been passed - to PREDICT, create qth and tle filenames based on the - default ($HOME) directory. */ - - env=getenv("HOME"); - - if (qth_cli[0]==0) - sprintf(qthfile,"%s/.predict/predict.qth",env); - else - /* sprintf(qthfile,"%s%c",qth_cli,0); */ - sprintf(qthfile,"%s",qth_cli); - - if (tle_cli[0]==0) - sprintf(tlefile,"%s/.predict/predict.tle",env); - else - /* sprintf(tlefile,"%s%c",tle_cli,0); */ - sprintf(tlefile,"%s",tle_cli); - - /* Test for interactive/non-interactive mode of operation - based on command-line arguments given to PREDICT. */ - - if (updatefile[0] || quickfind || quickpredict || quickdoppler100) - interactive=0; - else - interactive=1; - - if (interactive) - { - sprintf(dbfile,"%s/.predict/predict.db",env); - - /* If the transponder database file doesn't already - exist under $HOME/.predict, and a working environment - is available, place a default copy from the PREDICT - distribution under $HOME/.predict. */ - - db=fopen(dbfile,"r"); - - if (db==NULL) - { - sprintf(temp,"%sdefault/predict.db",predictpath); - CopyFile(temp,dbfile); - } - - else - fclose(db); - } - - x=ReadDataFiles(); - - if (x>1) /* TLE file was loaded successfully */ - { - if (updatefile[0]) /* -u was passed to PREDICT */ - { - y=0; - z=0; - temp[0]=0; - - while (updatefile[y]!=0) - { - while (updatefile[y]!='\n' && updatefile[y]!=0 && y<79) - { - temp[z]=updatefile[y]; - z++; - y++; - } - - temp[z]=0; - - if (temp[0]) - { - AutoUpdate(temp); - temp[0]=0; - z=0; - y++; - } - } - - exit(0); - } - } - - if (x==3) /* Both TLE and QTH files were loaded successfully */ - { - if (quickfind) /* -f was passed to PREDICT */ - exit(QuickFind(quickstring,outputfile)); - - if (quickpredict) /* -p was passed to PREDICT */ - exit(QuickPredict(quickstring,outputfile)); - - if (quickdoppler100) /* -dp was passed to PREDICT */ - exit(QuickDoppler100(quickstring,outputfile)); - } - - else - { - if (tle_cli[0] || qth_cli[0]) - { - /* "Houston, we have a problem..." */ - - printf("\n%c",7); - - if (x^1) - printf("*** ERROR! Your QTH file \"%s\" could not be loaded!\n",qthfile); - - if (x^2) - printf("*** ERROR! Your TLE file \"%s\" could not be loaded!\n",tlefile); - - printf("\n"); - - exit(-1); - } - } - - if (interactive) - { - /* We're in interactive mode. Prepare the screen */ - - /* Are we running under an xterm or equivalent? */ - - env=getenv("TERM"); - - if (env!=NULL && strncmp(env,"xterm",5)==0) - xterm=1; - else - xterm=0; - - /* Start ncurses */ - - initscr(); - start_color(); - cbreak(); - noecho(); - scrollok(stdscr,TRUE); - curs_set(0); - - init_pair(1,COLOR_WHITE,COLOR_BLACK); - init_pair(2,COLOR_WHITE,COLOR_BLUE); - init_pair(3,COLOR_YELLOW,COLOR_BLUE); - init_pair(4,COLOR_CYAN,COLOR_BLUE); - init_pair(5,COLOR_WHITE,COLOR_RED); - init_pair(6,COLOR_RED,COLOR_WHITE); - init_pair(7,COLOR_CYAN,COLOR_RED); - - if (x<3) - { - /* A problem occurred reading the - default QTH and TLE files, and - no -t or -q options were - provided on the command-line. */ - - NewUser(); - x=ReadDataFiles(); - QthEdit(); - } - } - - if (x==3) - { - /* Open serial port to send data to - the antenna tracker if present. */ - - if (serial_port[0]!=0) - { - /* Make sure there's no trailing '/' */ - - x=strlen(serial_port); - - if (serial_port[x-1]=='/') - serial_port[x-1]=0; - - antfd=open(serial_port, O_WRONLY|O_NOCTTY); - - if (antfd!=-1) - { - /* Set up serial port */ - - tcgetattr(antfd, &oldtty); - memset(&newtty, 0, sizeof(newtty)); - - /* 9600 baud, 8-bits, no parity, - 1-stop bit, no handshaking */ - - newtty.c_cflag=B9600|CS8|CLOCAL; - newtty.c_iflag=IGNPAR; - newtty.c_oflag=0; - newtty.c_lflag=0; - - tcflush(antfd, TCIFLUSH); - tcsetattr(antfd, TCSANOW, &newtty); - } - - else - { - bailout("Unable To Open Antenna Port"); - exit(-1); - } - } - - /* Socket activated here. Remember that - the socket data is updated only when - running in the real-time tracking modes. */ - - if (socket_flag) - { - pthread_create(&thread,NULL,(void *)socket_server,(void *)argv[0]); - bkgdset(COLOR_PAIR(3)); - MultiTrack(); - } - - MainMenu(); - - do - { - key=getch(); - - if (key!='T') - key=tolower(key); - - switch (key) - { - case 'p': - case 'v': - Print("",0); - PrintVisible(""); - indx=Select(); - - if (indx!=-1 && sat[indx].meanmo!=0.0 && Decayed(indx,0.0)==0) - Predict(key); - - MainMenu(); - break; - - case 'l': - Print("",0); - PredictMoon(); - MainMenu(); - break; - - case 'o': - Print("",0); - PredictSun(); - MainMenu(); - break; - - case 'u': - AutoUpdate(""); - MainMenu(); - break; - - case 'e': - KepEdit(); - MainMenu(); - break; - - case 'd': - ShowOrbitData(); - MainMenu(); - break; - - case 'g': - QthEdit(); - MainMenu(); - break; - - case 't': - case 'T': - indx=Select(); - - if (indx!=-1 && sat[indx].meanmo!=0.0 && Decayed(indx,0.0)==0) - SingleTrack(indx,key); - - MainMenu(); - break; - - case 'm': - MultiTrack(); - MainMenu(); - break; - - case 'i': - ProgramInfo(); - MainMenu(); - break; - - case 'b': - db_edit(); - MainMenu(); - break; - - case 's': - indx=Select(); - if (indx!=-1 && sat[indx].meanmo!=0.0 && Decayed(indx,0.0)==0) - { - Print("",0); - Illumination(); - } - MainMenu(); - break; - } - - } while (key!='q' && key!=27); - - if (antfd!=-1) - { - tcsetattr(antfd,TCSANOW,&oldtty); - close(antfd); - } - - curs_set(1); - bkgdset(COLOR_PAIR(1)); - clear(); - refresh(); - endwin(); - } - - exit(0); -} - +/**************************************************************************** +* PREDICT: A satellite tracking/orbital prediction program * +* Copyright John A. Magliacane, KD2BD 1991-2002 * +* Project started: 26-May-1991 * +* Ported from Linux to DOS: 28-Dec-1999 * +* Last update: 02-Nov-2002 * +***************************************************************************** +* * +* 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 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. * +* * +*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef _WIN32 +#include +#define bzero(b,len) (memset((b), '\0', (len)), (void) 0) +#include /* usleep() */ +#endif + +/* Constants used by SGP4/SDP4 code */ + +#define km2mi 0.621371 /* km to miles */ +#define deg2rad 1.745329251994330E-2 /* Degrees to radians */ +#define pi 3.14159265358979323846 /* Pi */ +#define pio2 1.57079632679489656 /* Pi/2 */ +#define x3pio2 4.71238898038468967 /* 3*Pi/2 */ +#define twopi 6.28318530717958623 /* 2*Pi */ +#define e6a 1.0E-6 +#define tothrd 6.6666666666666666E-1 /* 2/3 */ +#define xj2 1.0826158E-3 /* J2 Harmonic (WGS '72) */ +#define xj3 -2.53881E-6 /* J3 Harmonic (WGS '72) */ +#define xj4 -1.65597E-6 /* J4 Harmonic (WGS '72) */ +#define xke 7.43669161E-2 +#define xkmper 6.378137E3 /* WGS 84 Earth radius km */ +#define xmnpda 1.44E3 /* Minutes per day */ +#define ae 1.0 +#define ck2 5.413079E-4 +#define ck4 6.209887E-7 +#define f 3.35281066474748E-3 /* Flattening factor */ +#define ge 3.986008E5 /* Earth gravitational constant (WGS '72) */ +#define s 1.012229 +#define qoms2t 1.880279E-09 +#define secday 8.6400E4 /* Seconds per day */ +#define omega_E 1.00273790934 /* Earth rotations/siderial day */ +#define omega_ER 6.3003879 /* Earth rotations, rads/siderial day */ +#define zns 1.19459E-5 +#define c1ss 2.9864797E-6 +#define zes 1.675E-2 +#define znl 1.5835218E-4 +#define c1l 4.7968065E-7 +#define zel 5.490E-2 +#define zcosis 9.1744867E-1 +#define zsinis 3.9785416E-1 +#define zsings -9.8088458E-1 +#define zcosgs 1.945905E-1 +#define zcoshs 1 +#define zsinhs 0 +#define q22 1.7891679E-6 +#define q31 2.1460748E-6 +#define q33 2.2123015E-7 +#define g22 5.7686396 +#define g32 9.5240898E-1 +#define g44 1.8014998 +#define g52 1.0508330 +#define g54 4.4108898 +#define root22 1.7891679E-6 +#define root32 3.7393792E-7 +#define root44 7.3636953E-9 +#define root52 1.1428639E-7 +#define root54 2.1765803E-9 +#define thdt 4.3752691E-3 +#define rho 1.5696615E-1 +#define mfactor 7.292115E-5 +#define sr 6.96000E5 /* Solar radius - km (IAU 76) */ +#define AU 1.49597870691E8 /* Astronomical unit - km (IAU 76) */ + +/* Entry points of Deep() */ + +#define dpinit 1 /* Deep-space initialization code */ +#define dpsec 2 /* Deep-space secular code */ +#define dpper 3 /* Deep-space periodic code */ + +/* Flow control flag definitions */ + +#define ALL_FLAGS -1 +#define SGP_INITIALIZED_FLAG 0x000001 /* not used */ +#define SGP4_INITIALIZED_FLAG 0x000002 +#define SDP4_INITIALIZED_FLAG 0x000004 +#define SGP8_INITIALIZED_FLAG 0x000008 /* not used */ +#define SDP8_INITIALIZED_FLAG 0x000010 /* not used */ +#define SIMPLE_FLAG 0x000020 +#define DEEP_SPACE_EPHEM_FLAG 0x000040 +#define LUNAR_TERMS_DONE_FLAG 0x000080 +#define NEW_EPHEMERIS_FLAG 0x000100 /* not used */ +#define DO_LOOP_FLAG 0x000200 +#define RESONANCE_FLAG 0x000400 +#define SYNCHRONOUS_FLAG 0x000800 +#define EPOCH_RESTART_FLAG 0x001000 +#define VISIBLE_FLAG 0x002000 +#define SAT_ECLIPSED_FLAG 0x004000 + +/* Global Variables */ + +struct { char line1[70]; + char line2[70]; + char name[25]; + long catnum; + long setnum; + char designator[10]; + int year; + double refepoch; + double incl; + double raan; + double eccn; + double argper; + double meanan; + double meanmo; + double drag; + double nddot6; + double bstar; + long orbitnum; + } sat[24]; + +struct { char callsign[17]; + double stnlat; + double stnlong; + int stnalt; + float utc_offset; + } qth; + +struct { char name[25]; + long catnum; + char squintflag; + double alat; + double alon; + unsigned char transponders; + char transponder_name[10][80]; + double uplink_start[10]; + double uplink_end[10]; + double downlink_start[10]; + double downlink_end[10]; + unsigned char dayofweek[10]; + int phase_start[10]; + int phase_end[10]; + } sat_db[24]; + +char qthfile[50], tlefile[50], temp[80], output[25], + serial_port[15], *version={"2.2.1"}; + +/* Global variables for sharing data among functions... */ + +double tsince, jul_epoch, jul_utc, eclipse_depth=0, + sat_azi, sat_ele, sat_range, sat_range_rate, + sat_lat, sat_lon, sat_alt, sat_vel, phase, + sun_azi, sun_ele, daynum, fm, fk, age, aostime, + lostime, ax, ay, az, rx, ry, rz, squint, alat, alon; + +char qthfile[50], tlefile[50], dbfile[50], temp[80], output[25], + serial_port[15], resave=0, reload_tle=0, netport[6], + once_per_second=0, ephem[5], sat_sun_status, findsun, + calc_squint, database=0; + +int indx, antfd, iaz, iel, ma256, isplat, isplong, socket_flag=0, + Flags=0; + +long rv, irk; + +unsigned char val[256]; + +/** Type definitions **/ + +/* Two-line-element satellite orbital data + structure used directly by the SGP4/SDP4 code. */ + +typedef struct { + double epoch, xndt2o, xndd6o, bstar, xincl, + xnodeo, eo, omegao, xmo, xno; + int catnr, elset, revnum; + char sat_name[25], idesg[9]; + } tle_t; + +/* Geodetic position structure used by SGP4/SDP4 code. */ + +typedef struct { + double lat, lon, alt, theta; + } geodetic_t; + +/* General three-dimensional vector structure used by SGP4/SDP4 code. */ + +typedef struct { + double x, y, z, w; + } vector_t; + +/* Common arguments between deep-space functions used by SGP4/SDP4 code. */ + +typedef struct { + /* Used by dpinit part of Deep() */ + double eosq, sinio, cosio, betao, aodp, theta2, + sing, cosg, betao2, xmdot, omgdot, xnodot, xnodp; + + /* Used by dpsec and dpper parts of Deep() */ + double xll, omgadf, xnode, em, xinc, xn, t; + + /* Used by thetg and Deep() */ + double ds50; + } deep_arg_t; + +/* Global structure used by SGP4/SDP4 code. */ + +geodetic_t obs_geodetic; + +/* Two-line Orbital Elements for the satellite used by SGP4/SDP4 code. */ + +tle_t tle; + +/* Functions for testing and setting/clearing flags used in SGP4/SDP4 code */ + +int isFlagSet(int flag) +{ + return (Flags&flag); +} + +int isFlagClear(int flag) +{ + return (~Flags&flag); +} + +void SetFlag(int flag) +{ + Flags|=flag; +} + +void ClearFlag(int flag) +{ + Flags&=~flag; +} + +/* Remaining SGP4/SDP4 code follows... */ + +int Sign(double arg) +{ + /* Returns sign of a double */ + + if (arg>0) + return 1; + + else if (arg<0) + return -1; + + else + return 0; +} + +double Sqr(double arg) +{ + /* Returns square of a double */ + return (arg*arg); +} + +double Cube(double arg) +{ + /* Returns cube of a double */ + return (arg*arg*arg); +} + +double Radians(double arg) +{ + /* Returns angle in radians from argument in degrees */ + return (arg*deg2rad); +} + +double Degrees(double arg) +{ + /* Returns angle in degrees from argument in radians */ + return (arg/deg2rad); +} + +double ArcSin(double arg) +{ + /* Returns the arcsine of the argument */ + + if (fabs(arg)>=1.0) + return(Sign(arg)*pio2); + else + + return(atan(arg/sqrt(1.0-arg*arg))); +} + +double ArcCos(double arg) +{ + /* Returns arccosine of argument */ + return(pio2-ArcSin(arg)); +} + +void Magnitude(vector_t *v) +{ + /* Calculates scalar magnitude of a vector_t argument */ + v->w=sqrt(Sqr(v->x)+Sqr(v->y)+Sqr(v->z)); +} + +void Vec_Add(vector_t *v1, vector_t *v2, vector_t *v3) +{ + /* Adds vectors v1 and v2 together to produce v3 */ + v3->x=v1->x+v2->x; + v3->y=v1->y+v2->y; + v3->z=v1->z+v2->z; + Magnitude(v3); +} + +void Vec_Sub(vector_t *v1, vector_t *v2, vector_t *v3) +{ + /* Subtracts vector v2 from v1 to produce v3 */ + v3->x=v1->x-v2->x; + v3->y=v1->y-v2->y; + v3->z=v1->z-v2->z; + Magnitude(v3); +} + +void Scalar_Multiply(double k, vector_t *v1, vector_t *v2) +{ + /* Multiplies the vector v1 by the scalar k to produce the vector v2 */ + v2->x=k*v1->x; + v2->y=k*v1->y; + v2->z=k*v1->z; + v2->w=fabs(k)*v1->w; +} + +void Scale_Vector(double k, vector_t *v) +{ + /* Multiplies the vector v1 by the scalar k */ + v->x*=k; + v->y*=k; + v->z*=k; + Magnitude(v); +} + +double Dot(vector_t *v1, vector_t *v2) +{ + /* Returns the dot product of two vectors */ + return (v1->x*v2->x+v1->y*v2->y+v1->z*v2->z); +} + +double Angle(vector_t *v1, vector_t *v2) +{ + /* Calculates the angle between vectors v1 and v2 */ + Magnitude(v1); + Magnitude(v2); + return(ArcCos(Dot(v1,v2)/(v1->w*v2->w))); +} + +void Cross(vector_t *v1, vector_t *v2 ,vector_t *v3) +{ + /* Produces cross product of v1 and v2, and returns in v3 */ + v3->x=v1->y*v2->z-v1->z*v2->y; + v3->y=v1->z*v2->x-v1->x*v2->z; + v3->z=v1->x*v2->y-v1->y*v2->x; + Magnitude(v3); +} + +void Normalize(vector_t *v) +{ + /* Normalizes a vector */ + v->x/=v->w; + v->y/=v->w; + v->z/=v->w; +} + +double AcTan(double sinx, double cosx) +{ + /* Four-quadrant arctan function */ + + if (cosx==0.0) + { + if (sinx>0.0) + return (pio2); + else + return (x3pio2); + } + + else + { + if (cosx>0.0) + { + if (sinx>0.0) + return (atan(sinx/cosx)); + else + return (twopi+atan(sinx/cosx)); + } + + else + return (pi+atan(sinx/cosx)); + } +} + +double FMod2p(double x) +{ + /* Returns mod 2PI of argument */ + + int i; + double ret_val; + + ret_val=x; + i=ret_val/twopi; + ret_val-=i*twopi; + + if (ret_val<0.0) + ret_val+=twopi; + + return ret_val; +} + +double Modulus(double arg1, double arg2) +{ + /* Returns arg1 mod arg2 */ + + int i; + double ret_val; + + ret_val=arg1; + i=ret_val/arg2; + ret_val-=i*arg2; + + if (ret_val<0.0) + ret_val+=arg2; + + return ret_val; +} + +double Frac(double arg) +{ + /* Returns fractional part of double argument */ + return(arg-floor(arg)); +} + +int Round(double arg) +{ + /* Returns argument rounded up to nearest integer */ + return((int)floor(arg+0.5)); +} + +double Int(double arg) +{ + /* Returns the floor integer of a double arguement, as double */ + return(floor(arg)); +} + +void Convert_Sat_State(vector_t *pos, vector_t *vel) +{ + /* Converts the satellite's position and velocity */ + /* vectors from normalized values to km and km/sec */ + Scale_Vector(xkmper, pos); + Scale_Vector(xkmper*xmnpda/secday, vel); +} + +double Julian_Date_of_Year(double year) +{ + /* The function Julian_Date_of_Year calculates the Julian Date */ + /* of Day 0.0 of {year}. This function is used to calculate the */ + /* Julian Date of any date by using Julian_Date_of_Year, DOY, */ + /* and Fraction_of_Day. */ + + /* Astronomical Formulae for Calculators, Jean Meeus, */ + /* pages 23-25. Calculate Julian Date of 0.0 Jan year */ + + long A, B, i; + double jdoy; + + year=year-1; + i=year/100; + A=i; + i=A/4; + B=2-A+i; + i=365.25*year; + i+=30.6001*14; + jdoy=i+1720994.5+B; + + return jdoy; +} + +double Julian_Date_of_Epoch(double epoch) +{ + /* The function Julian_Date_of_Epoch returns the Julian Date of */ + /* an epoch specified in the format used in the NORAD two-line */ + /* element sets. It has been modified to support dates beyond */ + /* the year 1999 assuming that two-digit years in the range 00-56 */ + /* correspond to 2000-2056. Until the two-line element set format */ + /* is changed, it is only valid for dates through 2056 December 31. */ + + double year, day; + + /* Modification to support Y2K */ + /* Valid 1957 through 2056 */ + + day=modf(epoch*1E-3, &year)*1E3; + + if (year<57) + year=year+2000; + else + year=year+1900; + + return (Julian_Date_of_Year(year)+day); +} + +int DOY (int yr, int mo, int dy) +{ + /* The function DOY calculates the day of the year for the specified */ + /* date. The calculation uses the rules for the Gregorian calendar */ + /* and is valid from the inception of that calendar system. */ + + const int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + int i, day; + + day=0; + + for (i=0; i2)) + day++; + + return day; +} + +double Fraction_of_Day(int hr, int mi, double se) +{ + /* Fraction_of_Day calculates the fraction of */ + /* a day passed at the specified input time. */ + + double dhr, dmi; + + dhr=(double)hr; + dmi=(double)mi; + + return ((dhr+(dmi+se/60.0)/60.0)/24.0); +} + +double Julian_Date(struct tm *cdate) +{ + /* The function Julian_Date converts a standard calendar */ + /* date and time to a Julian Date. The procedure Date_Time */ + /* performs the inverse of this function. */ + + double julian_date; + + julian_date=Julian_Date_of_Year(cdate->tm_year)+DOY(cdate->tm_year,cdate->tm_mon,cdate->tm_mday)+Fraction_of_Day(cdate->tm_hour,cdate->tm_min,cdate->tm_sec)+5.787037e-06; /* Round up to nearest 1 sec */ + + return julian_date; +} + +void Date_Time(double julian_date, struct tm *cdate) +{ + /* The function Date_Time() converts a Julian Date to + standard calendar date and time. The function + Julian_Date() performs the inverse of this function. */ + + time_t jtime; + + jtime=(julian_date-2440587.5)*86400.0; + *cdate=*gmtime(&jtime); +} + +double Delta_ET(double year) +{ + /* The function Delta_ET has been added to allow calculations on */ + /* the position of the sun. It provides the difference between UT */ + /* (approximately the same as UTC) and ET (now referred to as TDT).*/ + /* This function is based on a least squares fit of data from 1950 */ + /* to 1991 and will need to be updated periodically. */ + + /* Values determined using data from 1950-1991 in the 1990 + Astronomical Almanac. See DELTA_ET.WQ1 for details. */ + + double delta_et; + + delta_et=26.465+0.747622*(year-1950)+1.886913*sin(twopi*(year-1975)/33); + + return delta_et; +} + +double ThetaG(double epoch, deep_arg_t *deep_arg) +{ + /* The function ThetaG calculates the Greenwich Mean Sidereal Time */ + /* for an epoch specified in the format used in the NORAD two-line */ + /* element sets. It has now been adapted for dates beyond the year */ + /* 1999, as described above. The function ThetaG_JD provides the */ + /* same calculation except that it is based on an input in the */ + /* form of a Julian Date. */ + + /* Reference: The 1992 Astronomical Almanac, page B6. */ + + double year, day, UT, jd, TU, GMST, ThetaG; + + /* Modification to support Y2K */ + /* Valid 1957 through 2056 */ + + day=modf(epoch*1E-3,&year)*1E3; + + if (year<57) + year+=2000; + else + year+=1900; + + UT=modf(day,&day); + jd=Julian_Date_of_Year(year)+day; + TU=(jd-2451545.0)/36525; + GMST=24110.54841+TU*(8640184.812866+TU*(0.093104-TU*6.2E-6)); + GMST=Modulus(GMST+secday*omega_E*UT,secday); + ThetaG=twopi*GMST/secday; + deep_arg->ds50=jd-2433281.5+UT; + ThetaG=FMod2p(6.3003880987*deep_arg->ds50+1.72944494); + + return ThetaG; +} + +double ThetaG_JD(double jd) +{ + /* Reference: The 1992 Astronomical Almanac, page B6. */ + + double UT, TU, GMST; + + UT=Frac(jd+0.5); + jd=jd-UT; + TU=(jd-2451545.0)/36525; + GMST=24110.54841+TU*(8640184.812866+TU*(0.093104-TU*6.2E-6)); + GMST=Modulus(GMST+secday*omega_E*UT,secday); + + return (twopi*GMST/secday); +} + +void Calculate_Solar_Position(double time, vector_t *solar_vector) +{ + /* Calculates solar position vector */ + + double mjd, year, T, M, L, e, C, O, Lsa, nu, R, eps; + + mjd=time-2415020.0; + year=1900+mjd/365.25; + T=(mjd+Delta_ET(year)/secday)/36525.0; + M=Radians(Modulus(358.47583+Modulus(35999.04975*T,360.0)-(0.000150+0.0000033*T)*Sqr(T),360.0)); + L=Radians(Modulus(279.69668+Modulus(36000.76892*T,360.0)+0.0003025*Sqr(T),360.0)); + e=0.01675104-(0.0000418+0.000000126*T)*T; + C=Radians((1.919460-(0.004789+0.000014*T)*T)*sin(M)+(0.020094-0.000100*T)*sin(2*M)+0.000293*sin(3*M)); + O=Radians(Modulus(259.18-1934.142*T,360.0)); + Lsa=Modulus(L+C-Radians(0.00569-0.00479*sin(O)),twopi); + nu=Modulus(M+C,twopi); + R=1.0000002*(1.0-Sqr(e))/(1.0+e*cos(nu)); + eps=Radians(23.452294-(0.0130125+(0.00000164-0.000000503*T)*T)*T+0.00256*cos(O)); + R=AU*R; + solar_vector->x=R*cos(Lsa); + solar_vector->y=R*sin(Lsa)*cos(eps); + solar_vector->z=R*sin(Lsa)*sin(eps); + solar_vector->w=R; +} + +int Sat_Eclipsed(vector_t *pos, vector_t *sol, double *depth) +{ + /* Calculates stellite's eclipse status and depth */ + + double sd_sun, sd_earth, delta; + vector_t Rho, earth; + + /* Determine partial eclipse */ + + sd_earth=ArcSin(xkmper/pos->w); + Vec_Sub(sol,pos,&Rho); + sd_sun=ArcSin(sr/Rho.w); + Scalar_Multiply(-1,pos,&earth); + delta=Angle(sol,&earth); + *depth=sd_earth-sd_sun-delta; + + if (sd_earth=0) + return 1; + else + return 0; +} + +void select_ephemeris(tle_t *tle) +{ + /* Selects the apropriate ephemeris type to be used */ + /* for predictions according to the data in the TLE */ + /* It also processes values in the tle set so that */ + /* they are apropriate for the sgp4/sdp4 routines */ + + double ao, xnodp, dd1, dd2, delo, temp, a1, del1, r1; + + /* Preprocess tle set */ + tle->xnodeo*=deg2rad; + tle->omegao*=deg2rad; + tle->xmo*=deg2rad; + tle->xincl*=deg2rad; + temp=twopi/xmnpda/xmnpda; + tle->xno=tle->xno*temp*xmnpda; + tle->xndt2o*=temp; + tle->xndd6o=tle->xndd6o*temp/xmnpda; + tle->bstar/=ae; + + /* Period > 225 minutes is deep space */ + dd1=(xke/tle->xno); + dd2=tothrd; + a1=pow(dd1,dd2); + r1=cos(tle->xincl); + dd1=(1.0-tle->eo*tle->eo); + temp=ck2*1.5f*(r1*r1*3.0-1.0)/pow(dd1,1.5); + del1=temp/(a1*a1); + ao=a1*(1.0-del1*(tothrd*.5+del1*(del1*1.654320987654321+1.0))); + delo=temp/(ao*ao); + xnodp=tle->xno/(delo+1.0); + + /* Select a deep-space/near-earth ephemeris */ + if (twopi/xnodp/xmnpda>=0.15625) + SetFlag(DEEP_SPACE_EPHEM_FLAG); + else + ClearFlag(DEEP_SPACE_EPHEM_FLAG); +} + +void SGP4(double tsince, tle_t * tle, vector_t * pos, vector_t * vel) +{ + /* This function is used to calculate the position and velocity */ + /* of near-earth (period < 225 minutes) satellites. tsince is */ + /* time since epoch in minutes, tle is a pointer to a tle_t */ + /* structure with Keplerian orbital elements and pos and vel */ + /* are vector_t structures returning ECI satellite position and */ + /* velocity. Use Convert_Sat_State() to convert to km and km/s. */ + + static double aodp, aycof, c1, c4, c5, cosio, d2, d3, d4, delmo, + omgcof, eta, omgdot, sinio, xnodp, sinmo, t2cof, t3cof, t4cof, + t5cof, x1mth2, x3thm1, x7thm1, xmcof, xmdot, xnodcf, xnodot, xlcof; + + double cosuk, sinuk, rfdotk, vx, vy, vz, ux, uy, uz, xmy, xmx, cosnok, + sinnok, cosik, sinik, rdotk, xinck, xnodek, uk, rk, cos2u, sin2u, + u, sinu, cosu, betal, rfdot, rdot, r, pl, elsq, esine, ecose, epw, + cosepw, x1m5th, xhdot1, tfour, sinepw, capu, ayn, xlt, aynl, xll, + axn, xn, beta, xl, e, a, tcube, delm, delomg, templ, tempe, tempa, + xnode, tsq, xmp, omega, xnoddf, omgadf, xmdf, a1, a3ovk2, ao, + betao, betao2, c1sq, c2, c3, coef, coef1, del1, delo, eeta, eosq, + etasq, perigee, pinvsq, psisq, qoms24, s4, temp, temp1, temp2, + temp3, temp4, temp5, temp6, theta2, theta4, tsi; + + int i; + + /* Initialization */ + + if (isFlagClear(SGP4_INITIALIZED_FLAG)) + { + SetFlag(SGP4_INITIALIZED_FLAG); + + /* Recover original mean motion (xnodp) and */ + /* semimajor axis (aodp) from input elements. */ + + a1=pow(xke/tle->xno,tothrd); + cosio=cos(tle->xincl); + theta2=cosio*cosio; + x3thm1=3*theta2-1.0; + eosq=tle->eo*tle->eo; + betao2=1.0-eosq; + betao=sqrt(betao2); + del1=1.5*ck2*x3thm1/(a1*a1*betao*betao2); + ao=a1*(1.0-del1*(0.5*tothrd+del1*(1.0+134.0/81.0*del1))); + delo=1.5*ck2*x3thm1/(ao*ao*betao*betao2); + xnodp=tle->xno/(1.0+delo); + aodp=ao/(1.0-delo); + + /* For perigee less than 220 kilometers, the "simple" */ + /* flag is set and the equations are truncated to linear */ + /* variation in sqrt a and quadratic variation in mean */ + /* anomaly. Also, the c3 term, the delta omega term, and */ + /* the delta m term are dropped. */ + + if ((aodp*(1-tle->eo)/ae)<(220/xkmper+ae)) + SetFlag(SIMPLE_FLAG); + + else + ClearFlag(SIMPLE_FLAG); + + /* For perigees below 156 km, the */ + /* values of s and qoms2t are altered. */ + + s4=s; + qoms24=qoms2t; + perigee=(aodp*(1-tle->eo)-ae)*xkmper; + + if (perigee<156.0) + { + if (perigee<=98.0) + s4=20; + else + s4=perigee-78.0; + + qoms24=pow((120-s4)*ae/xkmper,4); + s4=s4/xkmper+ae; + } + + pinvsq=1/(aodp*aodp*betao2*betao2); + tsi=1/(aodp-s4); + eta=aodp*tle->eo*tsi; + etasq=eta*eta; + eeta=tle->eo*eta; + psisq=fabs(1-etasq); + coef=qoms24*pow(tsi,4); + coef1=coef/pow(psisq,3.5); + c2=coef1*xnodp*(aodp*(1+1.5*etasq+eeta*(4+etasq))+0.75*ck2*tsi/psisq*x3thm1*(8+3*etasq*(8+etasq))); + c1=tle->bstar*c2; + sinio=sin(tle->xincl); + a3ovk2=-xj3/ck2*pow(ae,3); + c3=coef*tsi*a3ovk2*xnodp*ae*sinio/tle->eo; + x1mth2=1-theta2; + + c4=2*xnodp*coef1*aodp*betao2*(eta*(2+0.5*etasq)+tle->eo*(0.5+2*etasq)-2*ck2*tsi/(aodp*psisq)*(-3*x3thm1*(1-2*eeta+etasq*(1.5-0.5*eeta))+0.75*x1mth2*(2*etasq-eeta*(1+etasq))*cos(2*tle->omegao))); + c5=2*coef1*aodp*betao2*(1+2.75*(etasq+eeta)+eeta*etasq); + + theta4=theta2*theta2; + temp1=3*ck2*pinvsq*xnodp; + temp2=temp1*ck2*pinvsq; + temp3=1.25*ck4*pinvsq*pinvsq*xnodp; + xmdot=xnodp+0.5*temp1*betao*x3thm1+0.0625*temp2*betao*(13-78*theta2+137*theta4); + x1m5th=1-5*theta2; + omgdot=-0.5*temp1*x1m5th+0.0625*temp2*(7-114*theta2+395*theta4)+temp3*(3-36*theta2+49*theta4); + xhdot1=-temp1*cosio; + xnodot=xhdot1+(0.5*temp2*(4-19*theta2)+2*temp3*(3-7*theta2))*cosio; + omgcof=tle->bstar*c3*cos(tle->omegao); + xmcof=-tothrd*coef*tle->bstar*ae/eeta; + xnodcf=3.5*betao2*xhdot1*c1; + t2cof=1.5*c1; + xlcof=0.125*a3ovk2*sinio*(3+5*cosio)/(1+cosio); + aycof=0.25*a3ovk2*sinio; + delmo=pow(1+eta*cos(tle->xmo),3); + sinmo=sin(tle->xmo); + x7thm1=7*theta2-1; + + if (isFlagClear(SIMPLE_FLAG)) + { + c1sq=c1*c1; + d2=4*aodp*tsi*c1sq; + temp=d2*tsi*c1/3; + d3=(17*aodp+s4)*temp; + d4=0.5*temp*aodp*tsi*(221*aodp+31*s4)*c1; + t3cof=d2+2*c1sq; + t4cof=0.25*(3*d3+c1*(12*d2+10*c1sq)); + t5cof=0.2*(3*d4+12*c1*d3+6*d2*d2+15*c1sq*(2*d2+c1sq)); + } + } + + /* Update for secular gravity and atmospheric drag. */ + xmdf=tle->xmo+xmdot*tsince; + omgadf=tle->omegao+omgdot*tsince; + xnoddf=tle->xnodeo+xnodot*tsince; + omega=omgadf; + xmp=xmdf; + tsq=tsince*tsince; + xnode=xnoddf+xnodcf*tsq; + tempa=1-c1*tsince; + tempe=tle->bstar*c4*tsince; + templ=t2cof*tsq; + + if (isFlagClear(SIMPLE_FLAG)) + { + delomg=omgcof*tsince; + delm=xmcof*(pow(1+eta*cos(xmdf),3)-delmo); + temp=delomg+delm; + xmp=xmdf+temp; + omega=omgadf-temp; + tcube=tsq*tsince; + tfour=tsince*tcube; + tempa=tempa-d2*tsq-d3*tcube-d4*tfour; + tempe=tempe+tle->bstar*c5*(sin(xmp)-sinmo); + templ=templ+t3cof*tcube+tfour*(t4cof+tsince*t5cof); + } + + a=aodp*pow(tempa,2); + e=tle->eo-tempe; + xl=xmp+omega+xnode+xnodp*templ; + beta=sqrt(1-e*e); + xn=xke/pow(a,1.5); + + /* Long period periodics */ + axn=e*cos(omega); + temp=1/(a*beta*beta); + xll=temp*xlcof*axn; + aynl=temp*aycof; + xlt=xl+xll; + ayn=e*sin(omega)+aynl; + + /* Solve Kepler's Equation */ + capu=FMod2p(xlt-xnode); + temp2=capu; + i=0; + + do + { + sinepw=sin(temp2); + cosepw=cos(temp2); + temp3=axn*sinepw; + temp4=ayn*cosepw; + temp5=axn*cosepw; + temp6=ayn*sinepw; + epw=(capu-temp4+temp3-temp2)/(1-temp5-temp6)+temp2; + + if (fabs(epw-temp2)<= e6a) + break; + + temp2=epw; + + } while (i++<10); + + /* Short period preliminary quantities */ + ecose=temp5+temp6; + esine=temp3-temp4; + elsq=axn*axn+ayn*ayn; + temp=1-elsq; + pl=a*temp; + r=a*(1-ecose); + temp1=1/r; + rdot=xke*sqrt(a)*esine*temp1; + rfdot=xke*sqrt(pl)*temp1; + temp2=a*temp1; + betal=sqrt(temp); + temp3=1/(1+betal); + cosu=temp2*(cosepw-axn+ayn*esine*temp3); + sinu=temp2*(sinepw-ayn-axn*esine*temp3); + u=AcTan(sinu,cosu); + sin2u=2*sinu*cosu; + cos2u=2*cosu*cosu-1; + temp=1/pl; + temp1=ck2*temp; + temp2=temp1*temp; + + /* Update for short periodics */ + rk=r*(1-1.5*temp2*betal*x3thm1)+0.5*temp1*x1mth2*cos2u; + uk=u-0.25*temp2*x7thm1*sin2u; + xnodek=xnode+1.5*temp2*cosio*sin2u; + xinck=tle->xincl+1.5*temp2*cosio*sinio*cos2u; + rdotk=rdot-xn*temp1*x1mth2*sin2u; + rfdotk=rfdot+xn*temp1*(x1mth2*cos2u+1.5*x3thm1); + + /* Orientation vectors */ + sinuk=sin(uk); + cosuk=cos(uk); + sinik=sin(xinck); + cosik=cos(xinck); + sinnok=sin(xnodek); + cosnok=cos(xnodek); + xmx=-sinnok*cosik; + xmy=cosnok*cosik; + ux=xmx*sinuk+cosnok*cosuk; + uy=xmy*sinuk+sinnok*cosuk; + uz=sinik*sinuk; + vx=xmx*cosuk-cosnok*sinuk; + vy=xmy*cosuk-sinnok*sinuk; + vz=sinik*cosuk; + + /* Position and velocity */ + pos->x=rk*ux; + pos->y=rk*uy; + pos->z=rk*uz; + vel->x=rdotk*ux+rfdotk*vx; + vel->y=rdotk*uy+rfdotk*vy; + vel->z=rdotk*uz+rfdotk*vz; + + /* Phase in radians */ + phase=xlt-xnode-omgadf+twopi; + + if (phase<0.0) + phase+=twopi; + + phase=FMod2p(phase); +} + +void Deep(int ientry, tle_t * tle, deep_arg_t * deep_arg) +{ + /* This function is used by SDP4 to add lunar and solar */ + /* perturbation effects to deep-space orbit objects. */ + + static double thgr, xnq, xqncl, omegaq, zmol, zmos, savtsn, ee2, e3, + xi2, xl2, xl3, xl4, xgh2, xgh3, xgh4, xh2, xh3, sse, ssi, ssg, xi3, + se2, si2, sl2, sgh2, sh2, se3, si3, sl3, sgh3, sh3, sl4, sgh4, ssl, + ssh, d3210, d3222, d4410, d4422, d5220, d5232, d5421, d5433, del1, + del2, del3, fasx2, fasx4, fasx6, xlamo, xfact, xni, atime, stepp, + stepn, step2, preep, pl, sghs, xli, d2201, d2211, sghl, sh1, pinc, + pe, shs, zsingl, zcosgl, zsinhl, zcoshl, zsinil, zcosil; + + double a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, ainv2, alfdp, aqnv, + sgh, sini2, sinis, sinok, sh, si, sil, day, betdp, dalf, bfact, c, + cc, cosis, cosok, cosq, ctem, f322, zx, zy, dbet, dls, eoc, eq, f2, + f220, f221, f3, f311, f321, xnoh, f330, f441, f442, f522, f523, + f542, f543, g200, g201, g211, pgh, ph, s1, s2, s3, s4, s5, s6, s7, + se, sel, ses, xls, g300, g310, g322, g410, g422, g520, g521, g532, + g533, gam, sinq, sinzf, sis, sl, sll, sls, stem, temp, temp1, x1, + x2, x2li, x2omi, x3, x4, x5, x6, x7, x8, xl, xldot, xmao, xnddt, + xndot, xno2, xnodce, xnoi, xomi, xpidot, z1, z11, z12, z13, z2, + z21, z22, z23, z3, z31, z32, z33, ze, zf, zm, zmo, zn, zsing, + zsinh, zsini, zcosg, zcosh, zcosi, delt=0, ft=0; + + switch (ientry) + { + case dpinit: /* Entrance for deep space initialization */ + thgr=ThetaG(tle->epoch,deep_arg); + eq=tle->eo; + xnq=deep_arg->xnodp; + aqnv=1/deep_arg->aodp; + xqncl=tle->xincl; + xmao=tle->xmo; + xpidot=deep_arg->omgdot+deep_arg->xnodot; + sinq=sin(tle->xnodeo); + cosq=cos(tle->xnodeo); + omegaq=tle->omegao; + + /* Initialize lunar solar terms */ + day=deep_arg->ds50+18261.5; /* Days since 1900 Jan 0.5 */ + + if (day!=preep) + { + preep=day; + xnodce=4.5236020-9.2422029E-4*day; + stem=sin(xnodce); + ctem=cos(xnodce); + zcosil=0.91375164-0.03568096*ctem; + zsinil=sqrt(1-zcosil*zcosil); + zsinhl=0.089683511*stem/zsinil; + zcoshl=sqrt(1-zsinhl*zsinhl); + c=4.7199672+0.22997150*day; + gam=5.8351514+0.0019443680*day; + zmol=FMod2p(c-gam); + zx=0.39785416*stem/zsinil; + zy=zcoshl*ctem+0.91744867*zsinhl*stem; + zx=AcTan(zx,zy); + zx=gam+zx-xnodce; + zcosgl=cos(zx); + zsingl=sin(zx); + zmos=6.2565837+0.017201977*day; + zmos=FMod2p(zmos); + } + + /* Do solar terms */ + savtsn=1E20; + zcosg=zcosgs; + zsing=zsings; + zcosi=zcosis; + zsini=zsinis; + zcosh=cosq; + zsinh= sinq; + cc=c1ss; + zn=zns; + ze=zes; + zmo=zmos; + xnoi=1/xnq; + + /* Loop breaks when Solar terms are done a second */ + /* time, after Lunar terms are initialized */ + + for (;;) + { + /* Solar terms done again after Lunar terms are done */ + a1=zcosg*zcosh+zsing*zcosi*zsinh; + a3=-zsing*zcosh+zcosg*zcosi*zsinh; + a7=-zcosg*zsinh+zsing*zcosi*zcosh; + a8=zsing*zsini; + a9=zsing*zsinh+zcosg*zcosi*zcosh; + a10=zcosg*zsini; + a2=deep_arg->cosio*a7+deep_arg->sinio*a8; + a4=deep_arg->cosio*a9+deep_arg->sinio*a10; + a5=-deep_arg->sinio*a7+deep_arg->cosio*a8; + a6=-deep_arg->sinio*a9+deep_arg->cosio*a10; + x1=a1*deep_arg->cosg+a2*deep_arg->sing; + x2=a3*deep_arg->cosg+a4*deep_arg->sing; + x3=-a1*deep_arg->sing+a2*deep_arg->cosg; + x4=-a3*deep_arg->sing+a4*deep_arg->cosg; + x5=a5*deep_arg->sing; + x6=a6*deep_arg->sing; + x7=a5*deep_arg->cosg; + x8=a6*deep_arg->cosg; + z31=12*x1*x1-3*x3*x3; + z32=24*x1*x2-6*x3*x4; + z33=12*x2*x2-3*x4*x4; + z1=3*(a1*a1+a2*a2)+z31*deep_arg->eosq; + z2=6*(a1*a3+a2*a4)+z32*deep_arg->eosq; + z3=3*(a3*a3+a4*a4)+z33*deep_arg->eosq; + z11=-6*a1*a5+deep_arg->eosq*(-24*x1*x7-6*x3*x5); + z12=-6*(a1*a6+a3*a5)+deep_arg->eosq*(-24*(x2*x7+x1*x8)-6*(x3*x6+x4*x5)); + z13=-6*a3*a6+deep_arg->eosq*(-24*x2*x8-6*x4*x6); + z21=6*a2*a5+deep_arg->eosq*(24*x1*x5-6*x3*x7); + z22=6*(a4*a5+a2*a6)+deep_arg->eosq*(24*(x2*x5+x1*x6)-6*(x4*x7+x3*x8)); + z23=6*a4*a6+deep_arg->eosq*(24*x2*x6-6*x4*x8); + z1=z1+z1+deep_arg->betao2*z31; + z2=z2+z2+deep_arg->betao2*z32; + z3=z3+z3+deep_arg->betao2*z33; + s3=cc*xnoi; + s2=-0.5*s3/deep_arg->betao; + s4=s3*deep_arg->betao; + s1=-15*eq*s4; + s5=x1*x3+x2*x4; + s6=x2*x3+x1*x4; + s7=x2*x4-x1*x3; + se=s1*zn*s5; + si=s2*zn*(z11+z13); + sl=-zn*s3*(z1+z3-14-6*deep_arg->eosq); + sgh=s4*zn*(z31+z33-6); + sh=-zn*s2*(z21+z23); + + if (xqncl<5.2359877E-2) + sh=0; + + ee2=2*s1*s6; + e3=2*s1*s7; + xi2=2*s2*z12; + xi3=2*s2*(z13-z11); + xl2=-2*s3*z2; + xl3=-2*s3*(z3-z1); + xl4=-2*s3*(-21-9*deep_arg->eosq)*ze; + xgh2=2*s4*z32; + xgh3=2*s4*(z33-z31); + xgh4=-18*s4*ze; + xh2=-2*s2*z22; + xh3=-2*s2*(z23-z21); + + if (isFlagSet(LUNAR_TERMS_DONE_FLAG)) + break; + + /* Do lunar terms */ + sse=se; + ssi=si; + ssl=sl; + ssh=sh/deep_arg->sinio; + ssg=sgh-deep_arg->cosio*ssh; + se2=ee2; + si2=xi2; + sl2=xl2; + sgh2=xgh2; + sh2=xh2; + se3=e3; + si3=xi3; + sl3=xl3; + sgh3=xgh3; + sh3=xh3; + sl4=xl4; + sgh4=xgh4; + zcosg=zcosgl; + zsing=zsingl; + zcosi=zcosil; + zsini=zsinil; + zcosh=zcoshl*cosq+zsinhl*sinq; + zsinh=sinq*zcoshl-cosq*zsinhl; + zn=znl; + cc=c1l; + ze=zel; + zmo=zmol; + SetFlag(LUNAR_TERMS_DONE_FLAG); + } + + sse=sse+se; + ssi=ssi+si; + ssl=ssl+sl; + ssg=ssg+sgh-deep_arg->cosio/deep_arg->sinio*sh; + ssh=ssh+sh/deep_arg->sinio; + + /* Geopotential resonance initialization for 12 hour orbits */ + ClearFlag(RESONANCE_FLAG); + ClearFlag(SYNCHRONOUS_FLAG); + + if (!((xnq<0.0052359877) && (xnq>0.0034906585))) + { + if ((xnq<0.00826) || (xnq>0.00924)) + return; + + if (eq<0.5) + return; + + SetFlag(RESONANCE_FLAG); + eoc=eq*deep_arg->eosq; + g201=-0.306-(eq-0.64)*0.440; + + if (eq<=0.65) + { + g211=3.616-13.247*eq+16.290*deep_arg->eosq; + g310=-19.302+117.390*eq-228.419*deep_arg->eosq+156.591*eoc; + g322=-18.9068+109.7927*eq-214.6334*deep_arg->eosq+146.5816*eoc; + g410=-41.122+242.694*eq-471.094*deep_arg->eosq+313.953*eoc; + g422=-146.407+841.880*eq-1629.014*deep_arg->eosq+1083.435 * eoc; + g520=-532.114+3017.977*eq-5740*deep_arg->eosq+3708.276*eoc; + } + + else + { + g211=-72.099+331.819*eq-508.738*deep_arg->eosq+266.724*eoc; + g310=-346.844+1582.851*eq-2415.925*deep_arg->eosq+1246.113*eoc; + g322=-342.585+1554.908*eq-2366.899*deep_arg->eosq+1215.972*eoc; + g410=-1052.797+4758.686*eq-7193.992*deep_arg->eosq+3651.957*eoc; + g422=-3581.69+16178.11*eq-24462.77*deep_arg->eosq+12422.52*eoc; + + if (eq<=0.715) + g520=1464.74-4664.75*eq+3763.64*deep_arg->eosq; + + else + g520=-5149.66+29936.92*eq-54087.36*deep_arg->eosq+31324.56*eoc; + } + + if (eq<0.7) + { + g533=-919.2277+4988.61*eq-9064.77*deep_arg->eosq+5542.21*eoc; + g521=-822.71072+4568.6173*eq-8491.4146*deep_arg->eosq+5337.524*eoc; + g532=-853.666+4690.25*eq-8624.77*deep_arg->eosq+5341.4*eoc; + } + + else + { + g533=-37995.78+161616.52*eq-229838.2*deep_arg->eosq+109377.94*eoc; + g521 =-51752.104+218913.95*eq-309468.16*deep_arg->eosq+146349.42*eoc; + g532 =-40023.88+170470.89*eq-242699.48*deep_arg->eosq+115605.82*eoc; + } + + sini2=deep_arg->sinio*deep_arg->sinio; + f220=0.75*(1+2*deep_arg->cosio+deep_arg->theta2); + f221=1.5*sini2; + f321=1.875*deep_arg->sinio*(1-2*deep_arg->cosio-3*deep_arg->theta2); + f322=-1.875*deep_arg->sinio*(1+2*deep_arg->cosio-3*deep_arg->theta2); + f441=35*sini2*f220; + f442=39.3750*sini2*sini2; + f522=9.84375*deep_arg->sinio*(sini2*(1-2*deep_arg->cosio-5*deep_arg->theta2)+0.33333333*(-2+4*deep_arg->cosio+6*deep_arg->theta2)); + f523=deep_arg->sinio*(4.92187512*sini2*(-2-4*deep_arg->cosio+10*deep_arg->theta2)+6.56250012*(1+2*deep_arg->cosio-3*deep_arg->theta2)); + f542=29.53125*deep_arg->sinio*(2-8*deep_arg->cosio+deep_arg->theta2*(-12+8*deep_arg->cosio+10*deep_arg->theta2)); + f543=29.53125*deep_arg->sinio*(-2-8*deep_arg->cosio+deep_arg->theta2*(12+8*deep_arg->cosio-10*deep_arg->theta2)); + xno2=xnq*xnq; + ainv2=aqnv*aqnv; + temp1=3*xno2*ainv2; + temp=temp1*root22; + d2201=temp*f220*g201; + d2211=temp*f221*g211; + temp1=temp1*aqnv; + temp=temp1*root32; + d3210=temp*f321*g310; + d3222=temp*f322*g322; + temp1=temp1*aqnv; + temp=2*temp1*root44; + d4410=temp*f441*g410; + d4422=temp*f442*g422; + temp1=temp1*aqnv; + temp=temp1*root52; + d5220=temp*f522*g520; + d5232=temp*f523*g532; + temp=2*temp1*root54; + d5421=temp*f542*g521; + d5433=temp*f543*g533; + xlamo=xmao+tle->xnodeo+tle->xnodeo-thgr-thgr; + bfact=deep_arg->xmdot+deep_arg->xnodot+deep_arg->xnodot-thdt-thdt; + bfact=bfact+ssl+ssh+ssh; + } + + else + { + SetFlag(RESONANCE_FLAG); + SetFlag(SYNCHRONOUS_FLAG); + + /* Synchronous resonance terms initialization */ + g200=1+deep_arg->eosq*(-2.5+0.8125*deep_arg->eosq); + g310=1+2*deep_arg->eosq; + g300=1+deep_arg->eosq*(-6+6.60937*deep_arg->eosq); + f220=0.75*(1+deep_arg->cosio)*(1+deep_arg->cosio); + f311=0.9375*deep_arg->sinio*deep_arg->sinio*(1+3*deep_arg->cosio)-0.75*(1+deep_arg->cosio); + f330=1+deep_arg->cosio; + f330=1.875*f330*f330*f330; + del1=3*xnq*xnq*aqnv*aqnv; + del2=2*del1*f220*g200*q22; + del3=3*del1*f330*g300*q33*aqnv; + del1=del1*f311*g310*q31*aqnv; + fasx2=0.13130908; + fasx4=2.8843198; + fasx6=0.37448087; + xlamo=xmao+tle->xnodeo+tle->omegao-thgr; + bfact=deep_arg->xmdot+xpidot-thdt; + bfact=bfact+ssl+ssg+ssh; + } + + xfact=bfact-xnq; + + /* Initialize integrator */ + xli=xlamo; + xni=xnq; + atime=0; + stepp=720; + stepn=-720; + step2=259200; + + return; + + case dpsec: /* Entrance for deep space secular effects */ + deep_arg->xll=deep_arg->xll+ssl*deep_arg->t; + deep_arg->omgadf=deep_arg->omgadf+ssg*deep_arg->t; + deep_arg->xnode=deep_arg->xnode+ssh*deep_arg->t; + deep_arg->em=tle->eo+sse*deep_arg->t; + deep_arg->xinc=tle->xincl+ssi*deep_arg->t; + + if (deep_arg->xinc<0) + { + deep_arg->xinc=-deep_arg->xinc; + deep_arg->xnode=deep_arg->xnode+pi; + deep_arg->omgadf=deep_arg->omgadf-pi; + } + + if (isFlagClear(RESONANCE_FLAG)) + return; + + do + { + if ((atime==0) || ((deep_arg->t>=0) && (atime<0)) || ((deep_arg->t<0) && (atime>=0))) + { + /* Epoch restart */ + + if (deep_arg->t>=0) + delt=stepp; + else + delt=stepn; + + atime=0; + xni=xnq; + xli=xlamo; + } + + else + { + if (fabs(deep_arg->t)>=fabs(atime)) + { + if (deep_arg->t>0) + delt=stepp; + else + delt=stepn; + } + } + + do + { + if (fabs(deep_arg->t-atime)>=stepp) + { + SetFlag(DO_LOOP_FLAG); + ClearFlag(EPOCH_RESTART_FLAG); + } + + else + { + ft=deep_arg->t-atime; + ClearFlag(DO_LOOP_FLAG); + } + + if (fabs(deep_arg->t)t>=0) + delt=stepn; + else + delt=stepp; + + SetFlag(DO_LOOP_FLAG | EPOCH_RESTART_FLAG); + } + + /* Dot terms calculated */ + if (isFlagSet(SYNCHRONOUS_FLAG)) + { + xndot=del1*sin(xli-fasx2)+del2*sin(2*(xli-fasx4))+del3*sin(3*(xli-fasx6)); + xnddt=del1*cos(xli-fasx2)+2*del2*cos(2*(xli-fasx4))+3*del3*cos(3*(xli-fasx6)); + } + + else + { + xomi=omegaq+deep_arg->omgdot*atime; + x2omi=xomi+xomi; + x2li=xli+xli; + xndot=d2201*sin(x2omi+xli-g22)+d2211*sin(xli-g22)+d3210*sin(xomi+xli-g32)+d3222*sin(-xomi+xli-g32)+d4410*sin(x2omi+x2li-g44)+d4422*sin(x2li-g44)+d5220*sin(xomi+xli-g52)+d5232*sin(-xomi+xli-g52)+d5421*sin(xomi+x2li-g54)+d5433*sin(-xomi+x2li-g54); + xnddt=d2201*cos(x2omi+xli-g22)+d2211*cos(xli-g22)+d3210*cos(xomi+xli-g32)+d3222*cos(-xomi+xli-g32)+d5220*cos(xomi+xli-g52)+d5232*cos(-xomi+xli-g52)+2*(d4410*cos(x2omi+x2li-g44)+d4422*cos(x2li-g44)+d5421*cos(xomi+x2li-g54)+d5433*cos(-xomi+x2li-g54)); + } + + xldot=xni+xfact; + xnddt=xnddt*xldot; + + if (isFlagSet(DO_LOOP_FLAG)) + { + xli=xli+xldot*delt+xndot*step2; + xni=xni+xndot*delt+xnddt*step2; + atime=atime+delt; + } + } while (isFlagSet(DO_LOOP_FLAG) && isFlagClear(EPOCH_RESTART_FLAG)); + } while (isFlagSet(DO_LOOP_FLAG) && isFlagSet(EPOCH_RESTART_FLAG)); + + deep_arg->xn=xni+xndot*ft+xnddt*ft*ft*0.5; + xl=xli+xldot*ft+xndot*ft*ft*0.5; + temp=-deep_arg->xnode+thgr+deep_arg->t*thdt; + + if (isFlagClear(SYNCHRONOUS_FLAG)) + deep_arg->xll=xl+temp+temp; + else + deep_arg->xll=xl-deep_arg->omgadf+temp; + + return; + + case dpper: /* Entrance for lunar-solar periodics */ + sinis=sin(deep_arg->xinc); + cosis=cos(deep_arg->xinc); + + if (fabs(savtsn-deep_arg->t)>=30) + { + savtsn=deep_arg->t; + zm=zmos+zns*deep_arg->t; + zf=zm+2*zes*sin(zm); + sinzf=sin(zf); + f2=0.5*sinzf*sinzf-0.25; + f3=-0.5*sinzf*cos(zf); + ses=se2*f2+se3*f3; + sis=si2*f2+si3*f3; + sls=sl2*f2+sl3*f3+sl4*sinzf; + sghs=sgh2*f2+sgh3*f3+sgh4*sinzf; + shs=sh2*f2+sh3*f3; + zm=zmol+znl*deep_arg->t; + zf=zm+2*zel*sin(zm); + sinzf=sin(zf); + f2=0.5*sinzf*sinzf-0.25; + f3=-0.5*sinzf*cos(zf); + sel=ee2*f2+e3*f3; + sil=xi2*f2+xi3*f3; + sll=xl2*f2+xl3*f3+xl4*sinzf; + sghl=xgh2*f2+xgh3*f3+xgh4*sinzf; + sh1=xh2*f2+xh3*f3; + pe=ses+sel; + pinc=sis+sil; + pl=sls+sll; + } + + pgh=sghs+sghl; + ph=shs+sh1; + deep_arg->xinc=deep_arg->xinc+pinc; + deep_arg->em=deep_arg->em+pe; + + if (xqncl>=0.2) + { + /* Apply periodics directly */ + ph=ph/deep_arg->sinio; + pgh=pgh-deep_arg->cosio*ph; + deep_arg->omgadf=deep_arg->omgadf+pgh; + deep_arg->xnode=deep_arg->xnode+ph; + deep_arg->xll=deep_arg->xll+pl; + } + + else + { + /* Apply periodics with Lyddane modification */ + sinok=sin(deep_arg->xnode); + cosok=cos(deep_arg->xnode); + alfdp=sinis*sinok; + betdp=sinis*cosok; + dalf=ph*cosok+pinc*cosis*sinok; + dbet=-ph*sinok+pinc*cosis*cosok; + alfdp=alfdp+dalf; + betdp=betdp+dbet; + deep_arg->xnode=FMod2p(deep_arg->xnode); + xls=deep_arg->xll+deep_arg->omgadf+cosis*deep_arg->xnode; + dls=pl+pgh-pinc*deep_arg->xnode*sinis; + xls=xls+dls; + xnoh=deep_arg->xnode; + deep_arg->xnode=AcTan(alfdp,betdp); + + /* This is a patch to Lyddane modification */ + /* suggested by Rob Matson. */ + + if (fabs(xnoh-deep_arg->xnode)>pi) + { + if (deep_arg->xnodexnode+=twopi; + else + deep_arg->xnode-=twopi; + } + + deep_arg->xll=deep_arg->xll+pl; + deep_arg->omgadf=xls-deep_arg->xll-cos(deep_arg->xinc)*deep_arg->xnode; + } + return; + } +} + +void SDP4(double tsince, tle_t * tle, vector_t * pos, vector_t * vel) +{ + /* This function is used to calculate the position and velocity */ + /* of deep-space (period > 225 minutes) satellites. tsince is */ + /* time since epoch in minutes, tle is a pointer to a tle_t */ + /* structure with Keplerian orbital elements and pos and vel */ + /* are vector_t structures returning ECI satellite position and */ + /* velocity. Use Convert_Sat_State() to convert to km and km/s. */ + + int i; + + static double x3thm1, c1, x1mth2, c4, xnodcf, t2cof, xlcof, + aycof, x7thm1; + + double a, axn, ayn, aynl, beta, betal, capu, cos2u, cosepw, cosik, + cosnok, cosu, cosuk, ecose, elsq, epw, esine, pl, theta4, rdot, + rdotk, rfdot, rfdotk, rk, sin2u, sinepw, sinik, sinnok, sinu, + sinuk, tempe, templ, tsq, u, uk, ux, uy, uz, vx, vy, vz, xinck, xl, + xlt, xmam, xmdf, xmx, xmy, xnoddf, xnodek, xll, a1, a3ovk2, ao, c2, + coef, coef1, x1m5th, xhdot1, del1, r, delo, eeta, eta, etasq, + perigee, psisq, tsi, qoms24, s4, pinvsq, temp, tempa, temp1, + temp2, temp3, temp4, temp5, temp6, bx, by, bz, cx, cy, cz; + + static deep_arg_t deep_arg; + + /* Initialization */ + + if (isFlagClear(SDP4_INITIALIZED_FLAG)) + { + SetFlag(SDP4_INITIALIZED_FLAG); + + /* Recover original mean motion (xnodp) and */ + /* semimajor axis (aodp) from input elements. */ + + a1=pow(xke/tle->xno,tothrd); + deep_arg.cosio=cos(tle->xincl); + deep_arg.theta2=deep_arg.cosio*deep_arg.cosio; + x3thm1=3*deep_arg.theta2-1; + deep_arg.eosq=tle->eo*tle->eo; + deep_arg.betao2=1-deep_arg.eosq; + deep_arg.betao=sqrt(deep_arg.betao2); + del1=1.5*ck2*x3thm1/(a1*a1*deep_arg.betao*deep_arg.betao2); + ao=a1*(1-del1*(0.5*tothrd+del1*(1+134/81*del1))); + delo=1.5*ck2*x3thm1/(ao*ao*deep_arg.betao*deep_arg.betao2); + deep_arg.xnodp=tle->xno/(1+delo); + deep_arg.aodp=ao/(1-delo); + + /* For perigee below 156 km, the values */ + /* of s and qoms2t are altered. */ + + s4=s; + qoms24=qoms2t; + perigee=(deep_arg.aodp*(1-tle->eo)-ae)*xkmper; + + if (perigee<156.0) + { + if (perigee<=98.0) + s4=20.0; + else + s4=perigee-78.0; + + qoms24=pow((120-s4)*ae/xkmper,4); + s4=s4/xkmper+ae; + } + + pinvsq=1/(deep_arg.aodp*deep_arg.aodp*deep_arg.betao2*deep_arg.betao2); + deep_arg.sing=sin(tle->omegao); + deep_arg.cosg=cos(tle->omegao); + tsi=1/(deep_arg.aodp-s4); + eta=deep_arg.aodp*tle->eo*tsi; + etasq=eta*eta; + eeta=tle->eo*eta; + psisq=fabs(1-etasq); + coef=qoms24*pow(tsi,4); + coef1=coef/pow(psisq,3.5); + c2=coef1*deep_arg.xnodp*(deep_arg.aodp*(1+1.5*etasq+eeta*(4+etasq))+0.75*ck2*tsi/psisq*x3thm1*(8+3*etasq*(8+etasq))); + c1=tle->bstar*c2; + deep_arg.sinio=sin(tle->xincl); + a3ovk2=-xj3/ck2*pow(ae,3); + x1mth2=1-deep_arg.theta2; + c4=2*deep_arg.xnodp*coef1*deep_arg.aodp*deep_arg.betao2*(eta*(2+0.5*etasq)+tle->eo*(0.5+2*etasq)-2*ck2*tsi/(deep_arg.aodp*psisq)*(-3*x3thm1*(1-2*eeta+etasq*(1.5-0.5*eeta))+0.75*x1mth2*(2*etasq-eeta*(1+etasq))*cos(2*tle->omegao))); + theta4=deep_arg.theta2*deep_arg.theta2; + temp1=3*ck2*pinvsq*deep_arg.xnodp; + temp2=temp1*ck2*pinvsq; + temp3=1.25*ck4*pinvsq*pinvsq*deep_arg.xnodp; + deep_arg.xmdot=deep_arg.xnodp+0.5*temp1*deep_arg.betao*x3thm1+0.0625*temp2*deep_arg.betao*(13-78*deep_arg.theta2+137*theta4); + x1m5th=1-5*deep_arg.theta2; + deep_arg.omgdot=-0.5*temp1*x1m5th+0.0625*temp2*(7-114*deep_arg.theta2+395*theta4)+temp3*(3-36*deep_arg.theta2+49*theta4); + xhdot1=-temp1*deep_arg.cosio; + deep_arg.xnodot=xhdot1+(0.5*temp2*(4-19*deep_arg.theta2)+2*temp3*(3-7*deep_arg.theta2))*deep_arg.cosio; + xnodcf=3.5*deep_arg.betao2*xhdot1*c1; + t2cof=1.5*c1; + xlcof=0.125*a3ovk2*deep_arg.sinio*(3+5*deep_arg.cosio)/(1+deep_arg.cosio); + aycof=0.25*a3ovk2*deep_arg.sinio; + x7thm1=7*deep_arg.theta2-1; + + /* initialize Deep() */ + + Deep(dpinit,tle,&deep_arg); + } + + /* Update for secular gravity and atmospheric drag */ + xmdf=tle->xmo+deep_arg.xmdot*tsince; + deep_arg.omgadf=tle->omegao+deep_arg.omgdot*tsince; + xnoddf=tle->xnodeo+deep_arg.xnodot*tsince; + tsq=tsince*tsince; + deep_arg.xnode=xnoddf+xnodcf*tsq; + tempa=1-c1*tsince; + tempe=tle->bstar*c4*tsince; + templ=t2cof*tsq; + deep_arg.xn=deep_arg.xnodp; + + /* Update for deep-space secular effects */ + deep_arg.xll=xmdf; + deep_arg.t=tsince; + + Deep(dpsec, tle, &deep_arg); + + xmdf=deep_arg.xll; + a=pow(xke/deep_arg.xn,tothrd)*tempa*tempa; + deep_arg.em=deep_arg.em-tempe; + xmam=xmdf+deep_arg.xnodp*templ; + + /* Update for deep-space periodic effects */ + deep_arg.xll=xmam; + + Deep(dpper,tle,&deep_arg); + + xmam=deep_arg.xll; + xl=xmam+deep_arg.omgadf+deep_arg.xnode; + beta=sqrt(1-deep_arg.em*deep_arg.em); + deep_arg.xn=xke/pow(a,1.5); + + /* Long period periodics */ + axn=deep_arg.em*cos(deep_arg.omgadf); + temp=1/(a*beta*beta); + xll=temp*xlcof*axn; + aynl=temp*aycof; + xlt=xl+xll; + ayn=deep_arg.em*sin(deep_arg.omgadf)+aynl; + + /* Solve Kepler's Equation */ + capu=FMod2p(xlt-deep_arg.xnode); + temp2=capu; + i=0; + + do + { + sinepw=sin(temp2); + cosepw=cos(temp2); + temp3=axn*sinepw; + temp4=ayn*cosepw; + temp5=axn*cosepw; + temp6=ayn*sinepw; + epw=(capu-temp4+temp3-temp2)/(1-temp5-temp6)+temp2; + + if (fabs(epw-temp2)<=e6a) + break; + + temp2=epw; + + } while (i++<10); + + /* Short period preliminary quantities */ + ecose=temp5+temp6; + esine=temp3-temp4; + elsq=axn*axn+ayn*ayn; + temp=1-elsq; + pl=a*temp; + r=a*(1-ecose); + temp1=1/r; + rdot=xke*sqrt(a)*esine*temp1; + rfdot=xke*sqrt(pl)*temp1; + temp2=a*temp1; + betal=sqrt(temp); + temp3=1/(1+betal); + cosu=temp2*(cosepw-axn+ayn*esine*temp3); + sinu=temp2*(sinepw-ayn-axn*esine*temp3); + u=AcTan(sinu,cosu); + sin2u=2*sinu*cosu; + cos2u=2*cosu*cosu-1; + temp=1/pl; + temp1=ck2*temp; + temp2=temp1*temp; + + /* Update for short periodics */ + rk=r*(1-1.5*temp2*betal*x3thm1)+0.5*temp1*x1mth2*cos2u; + uk=u-0.25*temp2*x7thm1*sin2u; + xnodek=deep_arg.xnode+1.5*temp2*deep_arg.cosio*sin2u; + xinck=deep_arg.xinc+1.5*temp2*deep_arg.cosio*deep_arg.sinio*cos2u; + rdotk=rdot-deep_arg.xn*temp1*x1mth2*sin2u; + rfdotk=rfdot+deep_arg.xn*temp1*(x1mth2*cos2u+1.5*x3thm1); + + /* Orientation vectors */ + sinuk=sin(uk); + cosuk=cos(uk); + sinik=sin(xinck); + cosik=cos(xinck); + sinnok=sin(xnodek); + cosnok=cos(xnodek); + xmx=-sinnok*cosik; + xmy=cosnok*cosik; + ux=xmx*sinuk+cosnok*cosuk; + uy=xmy*sinuk+sinnok*cosuk; + uz=sinik*sinuk; + vx=xmx*cosuk-cosnok*sinuk; + vy=xmy*cosuk-sinnok*sinuk; + vz=sinik*cosuk; + + /* Position and velocity */ + pos->x=rk*ux; + pos->y=rk*uy; + pos->z=rk*uz; + vel->x=rdotk*ux+rfdotk*vx; + vel->y=rdotk*uy+rfdotk*vy; + vel->z=rdotk*uz+rfdotk*vz; + + /* Calculations for squint angle begin here... */ + + if (calc_squint) + { + bx=cos(alat)*cos(alon+deep_arg.omgadf); + by=cos(alat)*sin(alon+deep_arg.omgadf); + bz=sin(alat); + cx=bx; + cy=by*cos(xinck)-bz*sin(xinck); + cz=by*sin(xinck)+bz*cos(xinck); + ax=cx*cos(xnodek)-cy*sin(xnodek); + ay=cx*sin(xnodek)+cy*cos(xnodek); + az=cz; + } + + /* Phase in radians */ + phase=xlt-deep_arg.xnode-deep_arg.omgadf+twopi; + + if (phase<0.0) + phase+=twopi; + + phase=FMod2p(phase); +} + +void Calculate_User_PosVel(double time, geodetic_t *geodetic, vector_t *obs_pos, vector_t *obs_vel) +{ + /* Calculate_User_PosVel() passes the user's geodetic position + and the time of interest and returns the ECI position and + velocity of the observer. The velocity calculation assumes + the geodetic position is stationary relative to the earth's + surface. */ + + /* Reference: The 1992 Astronomical Almanac, page K11. */ + + double c, sq, achcp; + + geodetic->theta=FMod2p(ThetaG_JD(time)+geodetic->lon); /* LMST */ + c=1/sqrt(1+f*(f-2)*Sqr(sin(geodetic->lat))); + sq=Sqr(1-f)*c; + achcp=(xkmper*c+geodetic->alt)*cos(geodetic->lat); + obs_pos->x=achcp*cos(geodetic->theta); /* kilometers */ + obs_pos->y=achcp*sin(geodetic->theta); + obs_pos->z=(xkmper*sq+geodetic->alt)*sin(geodetic->lat); + obs_vel->x=-mfactor*obs_pos->y; /* kilometers/second */ + obs_vel->y=mfactor*obs_pos->x; + obs_vel->z=0; + Magnitude(obs_pos); + Magnitude(obs_vel); +} + +void Calculate_LatLonAlt(double time, vector_t *pos, geodetic_t *geodetic) +{ + /* Procedure Calculate_LatLonAlt will calculate the geodetic */ + /* position of an object given its ECI position pos and time. */ + /* It is intended to be used to determine the ground track of */ + /* a satellite. The calculations assume the earth to be an */ + /* oblate spheroid as defined in WGS '72. */ + + /* Reference: The 1992 Astronomical Almanac, page K12. */ + + double r, e2, phi, c; + + geodetic->theta=AcTan(pos->y,pos->x); /* radians */ + geodetic->lon=FMod2p(geodetic->theta-ThetaG_JD(time)); /* radians */ + r=sqrt(Sqr(pos->x)+Sqr(pos->y)); + e2=f*(2-f); + geodetic->lat=AcTan(pos->z,r); /* radians */ + + do + { + phi=geodetic->lat; + c=1/sqrt(1-e2*Sqr(sin(phi))); + geodetic->lat=AcTan(pos->z+xkmper*c*e2*sin(phi),r); + + } while (fabs(geodetic->lat-phi)>=1E-10); + + geodetic->alt=r/cos(geodetic->lat)-xkmper*c; /* kilometers */ + + if (geodetic->lat>pio2) + geodetic->lat-=twopi; +} + +void Calculate_Obs(double time, vector_t *pos, vector_t *vel, geodetic_t *geodetic, vector_t *obs_set) +{ + /* The procedures Calculate_Obs and Calculate_RADec calculate */ + /* the *topocentric* coordinates of the object with ECI position, */ + /* {pos}, and velocity, {vel}, from location {geodetic} at {time}. */ + /* The {obs_set} returned for Calculate_Obs consists of azimuth, */ + /* elevation, range, and range rate (in that order) with units of */ + /* radians, radians, kilometers, and kilometers/second, respectively. */ + /* The WGS '72 geoid is used and the effect of atmospheric refraction */ + /* (under standard temperature and pressure) is incorporated into the */ + /* elevation calculation; the effect of atmospheric refraction on */ + /* range and range rate has not yet been quantified. */ + + /* The {obs_set} for Calculate_RADec consists of right ascension and */ + /* declination (in that order) in radians. Again, calculations are */ + /* based on *topocentric* position using the WGS '72 geoid and */ + /* incorporating atmospheric refraction. */ + + double sin_lat, cos_lat, sin_theta, cos_theta, el, azim, top_s, top_e, top_z; + + vector_t obs_pos, obs_vel, range, rgvel; + + Calculate_User_PosVel(time, geodetic, &obs_pos, &obs_vel); + + range.x=pos->x-obs_pos.x; + range.y=pos->y-obs_pos.y; + range.z=pos->z-obs_pos.z; + + /* Save these values globally for calculating squint angles later... */ + + rx=range.x; + ry=range.y; + rz=range.z; + + rgvel.x=vel->x-obs_vel.x; + rgvel.y=vel->y-obs_vel.y; + rgvel.z=vel->z-obs_vel.z; + + Magnitude(&range); + + sin_lat=sin(geodetic->lat); + cos_lat=cos(geodetic->lat); + sin_theta=sin(geodetic->theta); + cos_theta=cos(geodetic->theta); + top_s=sin_lat*cos_theta*range.x+sin_lat*sin_theta*range.y-cos_lat*range.z; + top_e=-sin_theta*range.x+cos_theta*range.y; + top_z=cos_lat*cos_theta*range.x+cos_lat*sin_theta*range.y+sin_lat*range.z; + azim=atan(-top_e/top_s); /* Azimuth */ + + if (top_s>0.0) + azim=azim+pi; + + if (azim<0.0) + azim=azim+twopi; + + el=ArcSin(top_z/range.w); + obs_set->x=azim; /* Azimuth (radians) */ + obs_set->y=el; /* Elevation (radians) */ + obs_set->z=range.w; /* Range (kilometers) */ + + /* Range Rate (kilometers/second) */ + + obs_set->w=Dot(&range,&rgvel)/range.w; + + /* Corrections for atmospheric refraction */ + /* Reference: Astronomical Algorithms by Jean Meeus, pp. 101-104 */ + /* Correction is meaningless when apparent elevation is below horizon */ + + /*** Temporary bypass for PREDICT-2.2.x ***/ + + /* obs_set->y=obs_set->y+Radians((1.02/tan(Radians(Degrees(el)+10.3/(Degrees(el)+5.11))))/60); */ + + obs_set->y=el; + + /**** End bypass ****/ + + if (obs_set->y>=0.0) + SetFlag(VISIBLE_FLAG); + else + { + obs_set->y=el; /* Reset to true elevation */ + ClearFlag(VISIBLE_FLAG); + } +} + +void Calculate_RADec(double time, vector_t *pos, vector_t *vel, geodetic_t *geodetic, vector_t *obs_set) +{ + /* Reference: Methods of Orbit Determination by */ + /* Pedro Ramon Escobal, pp. 401-402 */ + + double phi, theta, sin_theta, cos_theta, sin_phi, cos_phi, az, el, + Lxh, Lyh, Lzh, Sx, Ex, Zx, Sy, Ey, Zy, Sz, Ez, Zz, Lx, Ly, + Lz, cos_delta, sin_alpha, cos_alpha; + + Calculate_Obs(time,pos,vel,geodetic,obs_set); + + if (isFlagSet(VISIBLE_FLAG)) + { + az=obs_set->x; + el=obs_set->y; + phi=geodetic->lat; + theta=FMod2p(ThetaG_JD(time)+geodetic->lon); + sin_theta=sin(theta); + cos_theta=cos(theta); + sin_phi=sin(phi); + cos_phi=cos(phi); + Lxh=-cos(az)*cos(el); + Lyh=sin(az)*cos(el); + Lzh=sin(el); + Sx=sin_phi*cos_theta; + Ex=-sin_theta; + Zx=cos_theta*cos_phi; + Sy=sin_phi*sin_theta; + Ey=cos_theta; + Zy=sin_theta*cos_phi; + Sz=-cos_phi; + Ez=0.0; + Zz=sin_phi; + Lx=Sx*Lxh+Ex*Lyh+Zx*Lzh; + Ly=Sy*Lxh+Ey*Lyh+Zy*Lzh; + Lz=Sz*Lxh+Ez*Lyh+Zz*Lzh; + obs_set->y=ArcSin(Lz); /* Declination (radians) */ + cos_delta=sqrt(1.0-Sqr(Lz)); + sin_alpha=Ly/cos_delta; + cos_alpha=Lx/cos_delta; + obs_set->x=AcTan(sin_alpha,cos_alpha); /* Right Ascension (radians) */ + obs_set->x=FMod2p(obs_set->x); + } +} + +/* PREDICT functions follow... */ + +void Banner() +{ + curs_set(0); + bkgdset(COLOR_PAIR(3)); + clear(); + refresh(); + + attrset(COLOR_PAIR(6)|A_BOLD); + mvprintw(3,18," "); + mvprintw(4,18," --== PREDICT v%sd ==-- ",version); + mvprintw(5,18," By John A. Magliacane "); + mvprintw(6,18," KD2BD Software -- Copyright 1991-2002 "); + mvprintw(7,18," "); +} + +void AnyKey() +{ + mvprintw(23,24,"<< Press Any Key To Continue >>"); + refresh(); + getch(); +} + +void bailout(string) +char *string; +{ + /* This function quits ncurses, resets and "beeps" + the terminal, and displays an error message (string) + when we need to bail out of the program in a hurry. */ + + beep(); + curs_set(1); + bkgdset(COLOR_PAIR(1)); + clear(); + refresh(); + endwin(); + fprintf(stderr,"*** predict: %s!\n",string); +} + +void TrackDataOut(antfd, elevation, azimuth) +int antfd; +double elevation, azimuth; +{ + /* This function sends Azimuth and Elevation data + to an antenna tracker connected to the serial port */ + + int n, port; + char message[30]="\n"; + + port=antfd; + + sprintf(message, "AZ%3.1f EL%3.1f \x0D\x0A", azimuth,elevation); + n=write(port,message,30); + + if (n<0) + { + bailout("Error Writing To Antenna Port"); + exit(-1); + } +} + +double FixAngle(x) +double x; +{ + /* This function reduces angles greater than + two pi by subtracting two pi from the angle */ + + while (x>twopi) + x-=twopi; + + return x; +} + +char *SubString(string,start,end) +unsigned char *string, start, end; +{ + /* This function returns a substring based on the starting + and ending positions provided. It is used heavily in the + AutoUpdate function when parsing 2-line element data. */ + + unsigned x, y; + + if (end>=start) + { + for (x=start, y=0; x<=end && string[x]!=0; x++) + if (string[x]!=' ') + { + temp[y]=string[x]; + y++; + } + + temp[y]=0; + return temp; + } + else + return NULL; +} + +void CopyString(source, destination, start, end) +unsigned char *source, *destination, start, end; +{ + /* This function copies elements of the string "source" + bounded by "start" and "end" into the string "destination". */ + + unsigned j, k=0; + + for (j=start; j<=end; j++) + if (source[k]!=0) + { + destination[j]=source[k]; + k++; + } +} + +char *Abbreviate(string,n) +unsigned char *string, n; +{ + /* This function returns an abbreviated substring of the original, + including a '~' character if a non-blank character is chopped + out of the generated substring. n is the length of the desired + substring. It is used for abbreviating satellite names. */ + + strncpy(temp,string,79); + + if (temp[n]!=0 && temp[n]!=32) + { + temp[n-2]='~'; + temp[n-1]=temp[strlen(temp)-1]; + } + + temp[n]=0; + + return temp; +} + +char KepCheck(line1,line2) +char *line1, *line2; +{ + /* This function scans line 1 and line 2 of a NASA 2-Line element + set and returns a 1 if the element set appears to be valid or + a 0 if it does not. If the data survives this torture test, + it's a pretty safe bet we're looking at a valid 2-line + element set and not just some random text that might pass + as orbital data based on a simple checksum calculation alone. */ + + int x; + unsigned sum1, sum2; + + /* Compute checksum for each line */ + + for (x=0, sum1=0, sum2=0; x<=67; sum1+=val[(int)line1[x]], sum2+=val[(int)line2[x]], x++); + + /* Perform a "torture test" on the data */ + + x=(val[(int)line1[68]]^(sum1%10)) | (val[(int)line2[68]]^(sum2%10)) | + (line1[0]^'1') | (line1[1]^' ') | (line1[7]^'U') | + (line1[8]^' ') | (line1[17]^' ') | (line1[23]^'.') | + (line1[32]^' ') | (line1[34]^'.') | (line1[43]^' ') | + (line1[52]^' ') | (line1[61]^' ') | (line1[62]^'0') | + (line1[63]^' ') | (line2[0]^'2') | (line2[1]^' ') | + (line2[7]^' ') | (line2[11]^'.') | (line2[16]^' ') | + (line2[20]^'.') | (line2[25]^' ') | (line2[33]^' ') | + (line2[37]^'.') | (line2[42]^' ') | (line2[46]^'.') | + (line2[51]^' ') | (line2[54]^'.') | (line1[2]^line2[2]) | + (line1[3]^line2[3]) | (line1[4]^line2[4]) | + (line1[5]^line2[5]) | (line1[6]^line2[6]) | + (isdigit(line1[68]) ? 0 : 1) | (isdigit(line2[68]) ? 0 : 1) | + (isdigit(line1[18]) ? 0 : 1) | (isdigit(line1[19]) ? 0 : 1) | + (isdigit(line2[31]) ? 0 : 1) | (isdigit(line2[32]) ? 0 : 1); + + return (x ? 0 : 1); +} + +void InternalUpdate(x) +int x; +{ + /* Updates data in TLE structure based on + line1 and line2 stored in structure. */ + + double tempnum; + + strncpy(sat[x].designator,SubString(sat[x].line1,9,16),8); + sat[x].designator[9]=0; + sat[x].catnum=atol(SubString(sat[x].line1,2,6)); + sat[x].year=atoi(SubString(sat[x].line1,18,19)); + sat[x].refepoch=atof(SubString(sat[x].line1,20,31)); + tempnum=1.0e-5*atof(SubString(sat[x].line1,44,49)); + sat[x].nddot6=tempnum/pow(10.0,(sat[x].line1[51]-'0')); + tempnum=1.0e-5*atof(SubString(sat[x].line1,53,58)); + sat[x].bstar=tempnum/pow(10.0,(sat[x].line1[60]-'0')); + sat[x].setnum=atol(SubString(sat[x].line1,64,67)); + sat[x].incl=atof(SubString(sat[x].line2,8,15)); + sat[x].raan=atof(SubString(sat[x].line2,17,24)); + sat[x].eccn=1.0e-07*atof(SubString(sat[x].line2,26,32)); + sat[x].argper=atof(SubString(sat[x].line2,34,41)); + sat[x].meanan=atof(SubString(sat[x].line2,43,50)); + sat[x].meanmo=atof(SubString(sat[x].line2,52,62)); + sat[x].drag=atof(SubString(sat[x].line1,33,42)); + sat[x].orbitnum=atof(SubString(sat[x].line2,63,67)); +} + +char *noradEvalue(value) +double value; +{ + /* Converts numeric values to E notation used in NORAD TLEs */ + + char string[15]; + + sprintf(string,"%11.4e",value*10.0); + + output[0]=string[0]; + output[1]=string[1]; + output[2]=string[3]; + output[3]=string[4]; + output[4]=string[5]; + output[5]=string[6]; + output[6]='-'; + output[7]=string[10]; + output[8]=0; + + return output; +} + +void Data2TLE(x) +int x; +{ + /* This function converts orbital data held in the numeric + portion of the sat tle structure to ASCII TLE format, + and places the result in ASCII portion of the structure. */ + + int i; + char string[15], line1[70], line2[70]; + unsigned sum; + + /* Fill lines with blanks */ + + for (i=0; i<70; line1[i]=32, line2[i]=32, i++); + + line1[69]=0; + line2[69]=0; + + /* Insert static characters */ + + line1[0]='1'; + line1[7]='U'; /* Unclassified */ + line2[0]='2'; + + line1[62]='0'; /* For publically released TLEs */ + + /* Insert orbital data */ + + sprintf(string,"%05ld",sat[x].catnum); + CopyString(string,line1,2,6); + CopyString(string,line2,2,6); + + CopyString(sat[x].designator,line1,9,16); + + sprintf(string,"%02d",sat[x].year); + CopyString(string,line1,18,19); + + sprintf(string,"%12.8f",sat[x].refepoch); + CopyString(string,line1,20,32); + + sprintf(string,"%.9f",fabs(sat[x].drag)); + + CopyString(string,line1,33,42); + + if (sat[x].drag<0.0) + line1[33]='-'; + else + line1[33]=32; + + CopyString(noradEvalue(sat[x].nddot6),line1,44,51); + CopyString(noradEvalue(sat[x].bstar),line1,53,60); + + sprintf(string,"%4lu",sat[x].setnum); + CopyString(string,line1,64,67); + + sprintf(string,"%9.4f",sat[x].incl); + CopyString(string,line2,7,15); + + sprintf(string,"%9.4f",sat[x].raan); + CopyString(string,line2,16,24); + + sprintf(string,"%13.12f",sat[x].eccn); + + /* Erase eccentricity's decimal point */ + + for (i=2; i<=9; string[i-2]=string[i], i++); + + CopyString(string,line2,26,32); + + sprintf(string,"%9.4f",sat[x].argper); + CopyString(string,line2,33,41); + + sprintf(string,"%9.5f",sat[x].meanan); + CopyString(string,line2,43,50); + + sprintf(string,"%12.9f",sat[x].meanmo); + CopyString(string,line2,52,62); + + sprintf(string,"%5lu",sat[x].orbitnum); + CopyString(string,line2,63,67); + + /* Compute and insert checksum for line 1 and line 2 */ + + for (i=0, sum=0; i<=67; sum+=val[(int)line1[i]], i++); + + line1[68]=(sum%10)+'0'; + + for (i=0, sum=0; i<=67; sum+=val[(int)line2[i]], i++); + + line2[68]=(sum%10)+'0'; + + line1[69]=0; + line2[69]=0; + + strcpy(sat[x].line1,line1); + strcpy(sat[x].line2,line2); +} + +char ReadDataFiles() +{ + /* This function reads "predict.qth", "predict.tle", and + (optional) "predict.db" files into memory. Return + values are as follows: + + 0 : No files were loaded + 1 : Only the qth file was loaded + 2 : Only the tle file was loaded + 3 : Both files were loaded successfully */ + + FILE *fd; + long catnum; + unsigned char dayofweek; + int x=0, y, entry=0, max_entries=10, transponders=0; + char flag=0, match, name[80], line1[80], line2[80]; + + fd=fopen(qthfile,"r"); + + if (fd!=NULL) + { + fgets(qth.callsign,16,fd); + qth.callsign[strlen(qth.callsign)-1]=0; + fscanf(fd,"%lf", &qth.stnlat); + fscanf(fd,"%lf", &qth.stnlong); + fscanf(fd,"%d", &qth.stnalt); + fscanf(fd,"%f",&qth.utc_offset); + fclose(fd); + + obs_geodetic.lat=qth.stnlat*deg2rad; + obs_geodetic.lon=-qth.stnlong*deg2rad; + obs_geodetic.alt=((double)qth.stnalt)/1000.0; + obs_geodetic.theta=0.0; + + flag=1; + } + + fd=fopen(tlefile,"r"); + + if (fd!=NULL) + { + while (x<24 && feof(fd)==0) + { + /* Initialize variables */ + + name[0]=0; + line1[0]=0; + line2[0]=0; + + /* Read element set */ + + fgets(name,75,fd); + fgets(line1,75,fd); + fgets(line2,75,fd); + + if (KepCheck(line1,line2) && (feof(fd)==0)) + { + /* We found a valid TLE! */ + + /* Some TLE sources left justify the sat + name in a 24-byte field that is padded + with blanks. The following lines cut + out the blanks as well as the line feed + character read by the fgets() function. */ + + y=strlen(name); + + while (name[y]==32 || name[y]==0 || name[y]==10 || name[y]==13 || y==0) + { + name[y]=0; + y--; + } + + /* Copy TLE data into the sat data structure */ + + strncpy(sat[x].name,name,24); + strncpy(sat[x].line1,line1,69); + strncpy(sat[x].line2,line2,69); + + /* Update individual parameters */ + + InternalUpdate(x); + + x++; + } + } + + fclose(fd); + flag+=2; + resave=0; + + /* Load satellite database file */ + + fd=fopen(dbfile,"r"); + + if (fd!=NULL) + { + database=1; + + fgets(line1,40,fd); + + while (strncmp(line1,"end",3)!=0 && line1[0]!='\n' && feof(fd)==0) + { + /* The first line is the satellite + name which is ignored here. */ + + fgets(line1,40,fd); + sscanf(line1,"%ld",&catnum); + + /* Search for match */ + + for (y=0, match=0; y<24 && match==0; y++) + { + if (catnum==sat[y].catnum) + match=1; + } + + if (match) + { + transponders=0; + entry=0; + y--; + } + + fgets(line1,40,fd); + + if (match) + { + if (strncmp(line1,"No",2)!=0) + { + sscanf(line1,"%lf, %lf",&sat_db[y].alat, &sat_db[y].alon); + sat_db[y].squintflag=1; + } + + else + sat_db[y].squintflag=0; + } + + fgets(line1,80,fd); + + while (strncmp(line1,"end",3)!=0 && line1[0]!='\n' && feof(fd)==0) + { + if (entry "); + refresh(); + wgetnstr(stdscr,filename,49); + clear(); + curs_set(0); + } + else + strcpy(filename,string); + + /* Prevent "." and ".." from being used as a + filename otherwise strange things happen. */ + + if (strlen(filename)==0 || strncmp(filename,".",1)==0 || strncmp(filename,"..",2)==0) + return 0; + + fd=fopen(filename,"r"); + + if (interactive && fd==NULL) + { + bkgdset(COLOR_PAIR(5)|A_BOLD); + clear(); + move(12,0); + attrset(COLOR_PAIR(5)|A_BOLD); + for (i=47; i>strlen(filename); i-=2) + printw(" "); + + printw("*** ERROR: File \"%s\" not found! ***\n",filename); + beep(); + attrset(COLOR_PAIR(7)|A_BOLD); + AnyKey(); + } + + if (fd!=NULL) + { + success=1; + + fgets(str0,75,fd); + fgets(str1,75,fd); + fgets(str2,75,fd); + + do + { + if (KepCheck(str1,str2)) + { + /* We found a valid TLE! + Copy strings str1 and + str2 into line1 and line2 */ + + strncpy(line1,str1,75); + strncpy(line2,str2,75); + kepcount++; + + /* Scan for object number in datafile to see + if this is something we're interested in */ + + for (i=0; (i<24 && sat[i].catnum!=atol(SubString(line1,2,6))); i++); + + if (i!=24) + { + /* We found it! Check to see if it's more + recent than the data we already have. */ + + if (sat[i].year<=50) + database_year=365.25*(100.0+(float)sat[i].year); + else + database_year=365.25*(float)sat[i].year; + + database_epoch=(float)sat[i].refepoch+database_year; + + + tle_year=(float)atof(SubString(line1,18,19)); + + if (tle_year<=50.0) + tle_year+=100.0; + + tle_epoch=(float)atof(SubString(line1,20,31))+(tle_year*365.25); + + /* Update only if TLE epoch >= epoch in data file + so we don't overwrite current data with older + data. */ + + if (tle_epoch>=database_epoch) + { + if (saveflag==0) + { + if (interactive) + { + clear(); + bkgdset(COLOR_PAIR(2)|A_BOLD); + attrset(COLOR_PAIR(2)|A_BOLD); + mvprintw(3,35,"Updating....."); + refresh(); + move(7,0); + } + saveflag=1; + } + + if (interactive) + { + bkgdset(COLOR_PAIR(3)|A_BOLD); + attrset(COLOR_PAIR(3)|A_BOLD); + printw(" %-15s",sat[i].name); + } + + savecount++; + + /* Copy TLE data into the sat data structure */ + + strncpy(sat[i].line1,line1,69); + strncpy(sat[i].line2,line2,69); + InternalUpdate(i); + } + } + + fgets(str0,75,fd); + fgets(str1,75,fd); + fgets(str2,75,fd); + } + + else + { + strcpy(str0,str1); + strcpy(str1,str2); + fgets(str2,75,fd); + } + + } while (feof(fd)==0); + + fclose(fd); + + if (interactive) + { + bkgdset(COLOR_PAIR(2)|A_BOLD); + attrset(COLOR_PAIR(2)|A_BOLD); + + if (kepcount==1) + mvprintw(18,21," Only 1 NASA Two Line Element was found."); + else + mvprintw(18,21,"%3u NASA Two Line Elements were read.",kepcount); + + if (saveflag) + { + if (savecount==1) + mvprintw(19,21," Only 1 satellite was updated."); + else + { + if (savecount==24) + mvprintw(19,21," All satellites were updated!"); + else + mvprintw(19,21,"%3u out of 24 satellites were updated.",savecount); + } + } + + refresh(); + } + } + + if (interactive) + { + noecho(); + + if (strlen(filename) && fd!=NULL) + { + attrset(COLOR_PAIR(4)|A_BOLD); + AnyKey(); + } + } + + if (saveflag) + SaveTLE(); + } + while (success==0 && interactive); + + return (saveflag ? 0 : -1); +} + +int Select() +{ + /* This function displays the names of satellites contained + within the program's database and returns an index that + corresponds to the satellite selected by the user. An + ESC or CR returns a -1. */ + + int x, y, z, key=0; + + clear(); + + bkgdset(COLOR_PAIR(2)|A_BOLD); + attrset(COLOR_PAIR(2)|A_BOLD); + printw("\n\n\t\t\t Select a Satellite:\n\n"); + + attrset(COLOR_PAIR(3)|A_BOLD); + + for (x=0, y=8, z=16; y<16; ++x, ++y, ++z) + { + printw("\n\t[%c]: %-15s", x+'A', Abbreviate(sat[x].name,15)); + printw("\t[%c]: %-15s", y+'A', Abbreviate(sat[y].name,15)); + printw("\t[%c]: %-15s\n", z+'A', Abbreviate(sat[z].name,15)); + } + + attrset(COLOR_PAIR(4)|A_BOLD); + + printw("\n\n\t\t<< Enter Selection - Press [ESC] To Exit >>"); + refresh(); + + do + { + key=toupper(getch()); + + if (key==27 || key=='\n') + return -1; + } + while (key<'A' || key>'X'); + + return(key-'A'); +} + +long DayNum(m,d,y) +int m, d, y; +{ + /* This function calculates the day number from m/d/y. */ + + long dn; + double mm, yy; + + if (m<3) + { + y--; + m+=12; + } + + /* Correct for Y2K... */ + + if (y<=50) + y+=100; + + yy=(double)y; + mm=(double)m; + dn=(long)(floor(365.25*(yy-80.0))-floor(19.0+yy/100.0)+floor(4.75+yy/400.0)-16.0); + dn+=d+30*m+(long)floor(0.6*mm-0.3); + return dn; +} + +double CurrentDaynum() +{ + /* Read the system clock and return the number + of days since 31Dec79 00:00:00 UTC (daynum 0) */ + + double local_clock, offset; + struct timeval tv; + struct timezone tz; + int x; + + x=gettimeofday(&tv,&tz); + + if (tz.tz_minuteswest==0) + offset=qth.utc_offset/24.0; + else + offset=0.0; + + local_clock=((((double)tv.tv_sec+0.000001*(double)tv.tv_usec)/86400.0)-3651.0); + + return (local_clock-offset); +} + +char *Daynum2String(daynum) +double daynum; +{ + /* This function takes the given epoch as a fractional number of + days since 31Dec79 00:00:00 UTC and returns the corresponding + date as a string of the form "Tue 12Oct99 17:22:37". */ + + char timestr[25]; + int x; + time_t t; + + /* Convert daynum to Unix time (seconds since 01-Jan-70) */ + t=(time_t)rint(86400.0*(daynum+3651.0)); + + sprintf(timestr,"%s",asctime(gmtime(&t))); + + if (timestr[8]==' ') + timestr[8]='0'; + + for (x=0; x<=3; output[x]=timestr[x], x++); + + output[4]=timestr[8]; + output[5]=timestr[9]; + output[6]=timestr[4]; + output[7]=timestr[5]; + output[8]=timestr[6]; + output[9]=timestr[22]; + output[10]=timestr[23]; + output[11]=' '; + + for (x=12; x<=19; output[x]=timestr[x-1], x++); + + output[20]=0; + return output; +} + +double GetStartTime() +{ + /* This function prompts the user for the time and date + the user wishes to begin prediction calculations, + and returns the corresponding fractional day number. + 31Dec79 00:00:00 returns 0. Default is NOW. */ + + int x, hr, min, sec, mm=0, dd=0, yy; + char good, mon[5], line[30], string[30], bozo_count=0, + *month[12]= {"Jan", "Feb", "Mar", "Apr", "May", + "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; + + do + { + bkgdset(COLOR_PAIR(2)|A_BOLD); + clear(); + printw("\n\n\n\t Starting UTC Date and Time for Predictions of %-15s\n\n",sat[indx].name); + bozo_count++; + + strcpy(string,Daynum2String(CurrentDaynum())); + + for (x=4; x<24; x++) + string[x-4]=string[x]; + + attrset(COLOR_PAIR(4)|A_BOLD); + printw("\t\t Format: %s -or- ",string); + string[7]=0; + printw("%s",string); + attrset(COLOR_PAIR(2)|A_BOLD); + mvprintw(21,30,"Default is `NOW'"); + attrset(COLOR_PAIR(3)|A_BOLD); + mvprintw(13,1,"Enter Start Date & Time >> "); + curs_set(1); + refresh(); + echo(); + string[0]=0; + wgetnstr(stdscr,string,29); + curs_set(0); + noecho(); + + if (strlen(string)!=0) + strcpy(line,string); + else + /* Select `NOW' */ + return(CurrentDaynum()); + + if (strlen(line)==7) + { + line[7]=' '; + line[8]='0'; + line[9]='0'; + line[10]=':'; + line[11]='0'; + line[12]='0'; + line[13]=':'; + line[14]='0'; + line[15]='0'; + line[16]=0; + } + + /* Check Day */ + good = (isdigit(line[0]) && isdigit(line[1])) ? 1 : 0; + + /* Month */ + good = (good && isalpha(line[2]) && isalpha(line[3]) && isalpha(line[4])) ? 1 : 0; + + /* Year */ + good = (good && isdigit(line[5]) && isdigit(line[6]) && (line[7]==' ')) ? 1 : 0; + + /* Hour */ + good = (good && isdigit(line[8]) && isdigit(line[9]) && (line[10]==':')) ? 1 : 0; + + /* Minute */ + good = (good && isdigit(line[11]) && isdigit(line[12]) && (line[13]==':')) ? 1 : 0; + + /* Seconds */ + good = (good && isdigit(line[14]) && isdigit(line[15])) ? 1 : 0; + + if (good) + { + /* Decode Day */ + dd=10*(line[0]-'0')+line[1]-'0'; + + /* Decode Month Number */ + line[2]=toupper(line[2]); + line[3]=tolower(line[3]); + line[4]=tolower(line[4]); + + mon[0]=line[2]; + mon[1]=line[3]; + mon[2]=line[4]; + mon[3]=0; + + for (mm=0; (mm<12 && strcmp(mon,month[mm])!=0); mm++); + + mm++; + + good=(mm>12) ? 0 : 1; + } + + if (good==0) + beep(); + + } while (good==0 && bozo_count<6); + + if (good==0) + { + /* If the user can't enter the starting date/time + correctly after several attempts, then the user + is a "bozo" and obviously can't follow directions. */ + + bailout("Too Many Errors"); + exit(-1); + } + + /* Decode Year */ + yy=10*(line[5]-'0')+line[6]-'0'; + + /* Decode Time */ + for (x=8; x<16; x++) + string[x-8]=line[x]; + + string[8]=0; + + hr=10*(line[8]-'0')+line[9]-'0'; + min=10*(line[11]-'0')+line[12]-'0'; + sec=10*(line[14]-'0')+line[15]-'0'; + + return ((double)DayNum(mm,dd,yy)+((hr/24.0)+(min/1440.0)+(sec/86400.0))); +} + +void FindMoon(daynum) +double daynum; +{ + double t1, t2, t3, ew, en, e, n, si, co, ra, gh, + lh, gm, de, se, gs, dc, el, az, mm, yr, ro, + C1=0.91746406, S1=0.397818675, moon_az, moon_el; + + gm=24.0*(daynum-floor(daynum)); + ew=FixAngle(1.134193+daynum*0.229971506); + mm=FixAngle(1.319238+daynum*0.228027135); + t1=FixAngle(6.217512+daynum*0.01720196977); + t2=2.0*FixAngle(2.550677+daynum*0.212768711); + t3=FixAngle(4.7652214+daynum*0.230895723); + ew=ew+0.01148*sin(t2)+0.10976*sin(mm); + ew=ew-0.022235*sin(mm-t2)-0.003246*sin(t1); + ew=ew+0.003735*sin(2.0*mm)-0.0019897*sin(2.0*t3); + ew=ew-0.0010297*sin(2.0*mm-t2)-0.0009948*sin(mm+t1-t2); + en=t3+0.0115070*sin(t2)+0.10873924*sin(mm); + en=en-0.0222006*sin(mm-t2); + en=0.0897797*sin(en)-0.002548*sin(t3-t2); + + si=C1*sin(en)+S1*cos(en)*sin(ew); + co=sqrt(1.0-(si*si)); + dc=atan2(si,co); + si=sin(ew)*C1-tan(en)*S1; + co=cos(ew); + ra=atan2(si,co); + + if (ra<0.0) + ra+=twopi; + + t1=(double)(long)(daynum-39410.0); + t2=floor((t1+32044.75)/36524.25); + t2+=t1-t2/4.0+1486.0; + yr=2084.0+floor((t2-122.1)/365.25); + + t1=yr-1.0; + de=floor(365.25*(t1-1980.0))-floor(t1/100.0)+floor(t1/400.0)+381.0; + t1=(de+29218.5)/36525.0; + t1=6.6460656+t1*(2400.051262+t1*2.581e-5); + se=t1-24.0*(yr-1900.0); + /* t1=(se+0.0657098*(daynum-de)+gm*1.002738)/24.0; */ + t1=(se+0.0657098*(daynum-de)+gm*1.002737909350795)/24.0; + gs=24.0*(t1-floor(t1)); + + t1=gs/24.0-ra/twopi; + gh=twopi*(t1-floor(t1)); + + n=qth.stnlat*deg2rad; /* North latitude of tracking station */ + e=-qth.stnlong*deg2rad; /* East longitude of tracking station */ + + lh=gh+e; + + si=cos(lh)*cos(dc)*cos(n)+sin(dc)*sin(n); + co=sqrt(1.0-(si*si)); + el=atan2(si,co); + + si=-sin(lh)*cos(dc)*cos(n); + co=sin(dc)-sin(n)*sin(el); + az=atan2(si,co); + + if (az<0.0) + az+=twopi; + + ro=0.996986/(1.0+0.0549*cos(mm+0.10976*sin(mm))); + el=el-0.0166*cos(el)/ro; + + moon_az=az/deg2rad; + moon_el=el/deg2rad; + + attrset(COLOR_PAIR(4)|A_BOLD); + mvprintw(20,65," Moon "); + mvprintw(21,65,"---------"); + attrset(COLOR_PAIR(3)|A_BOLD); + mvprintw(22,65,"%-7.2fAz",moon_az); + mvprintw(23,64,"%+-6.2f El",moon_el); +} + +void PreCalc(x) +int x; +{ + /* This function copies TLE data from PREDICT's sat structure + to the SGP4/SDP4's single dimensioned tle structure, and + prepares the tracking code for the update. */ + + strcpy(tle.sat_name,sat[x].name); + strcpy(tle.idesg,sat[x].designator); + tle.catnr=sat[x].catnum; + tle.epoch=(1000.0*(double)sat[x].year)+sat[x].refepoch; + tle.xndt2o=sat[x].drag; + tle.xndd6o=sat[x].nddot6; + tle.bstar=sat[x].bstar; + tle.xincl=sat[x].incl; + tle.xnodeo=sat[x].raan; + tle.eo=sat[x].eccn; + tle.omegao=sat[x].argper; + tle.xmo=sat[x].meanan; + tle.xno=sat[x].meanmo; + tle.revnum=sat[x].orbitnum; + + if (sat_db[x].squintflag) + { + calc_squint=1; + alat=deg2rad*sat_db[x].alat; + alon=deg2rad*sat_db[x].alon; + } + else + calc_squint=0; + + /* Clear all flags */ + + ClearFlag(ALL_FLAGS); + + /* Select ephemeris type. This function will set or clear the + DEEP_SPACE_EPHEM_FLAG depending on the TLE parameters of the + satellite. It will also pre-process tle members for the + ephemeris functions SGP4 or SDP4, so this function must + be called each time a new tle set is used. */ + + select_ephemeris(&tle); +} + +void Calc() +{ + /* This is the stuff we need to do repetitively... */ + + /* Zero vector for initializations */ + vector_t zero_vector={0,0,0,0}; + + /* Satellite position and velocity vectors */ + vector_t vel=zero_vector; + vector_t pos=zero_vector; + + /* Satellite Az, El, Range, Range rate */ + vector_t obs_set; + + /* Solar ECI position vector */ + vector_t solar_vector=zero_vector; + + /* Solar observed azi and ele vector */ + vector_t solar_set; + + /* Satellite's predicted geodetic position */ + geodetic_t sat_geodetic; + + jul_utc=daynum+2444238.5; + + /* Convert satellite's epoch time to Julian */ + /* and calculate time since epoch in minutes */ + + jul_epoch=Julian_Date_of_Epoch(tle.epoch); + tsince=(jul_utc-jul_epoch)*xmnpda; + age=jul_utc-jul_epoch; + + /* Copy the ephemeris type in use to ephem string. */ + + if (isFlagSet(DEEP_SPACE_EPHEM_FLAG)) + strcpy(ephem,"SDP4"); + else + strcpy(ephem,"SGP4"); + + /* Call NORAD routines according to deep-space flag. */ + + if (isFlagSet(DEEP_SPACE_EPHEM_FLAG)) + SDP4(tsince, &tle, &pos, &vel); + else + SGP4(tsince, &tle, &pos, &vel); + + /* Scale position and velocity vectors to km and km/sec */ + + Convert_Sat_State(&pos, &vel); + + /* Calculate velocity of satellite */ + + Magnitude(&vel); + sat_vel=vel.w; + + /** All angles in rads. Distance in km. Velocity in km/s **/ + /* Calculate satellite Azi, Ele, Range and Range-rate */ + + Calculate_Obs(jul_utc, &pos, &vel, &obs_geodetic, &obs_set); + + /* Calculate satellite Lat North, Lon East and Alt. */ + + Calculate_LatLonAlt(jul_utc, &pos, &sat_geodetic); + + /* Calculate squint angle */ + + if (calc_squint) + squint=(acos(-(ax*rx+ay*ry+az*rz)/obs_set.z))/deg2rad; + + /* Calculate solar position and satellite eclipse depth. */ + /* Also set or clear the satellite eclipsed flag accordingly. */ + + Calculate_Solar_Position(jul_utc, &solar_vector); + Calculate_Obs(jul_utc, &solar_vector, &zero_vector, &obs_geodetic, &solar_set); + + if (Sat_Eclipsed(&pos, &solar_vector, &eclipse_depth)) + SetFlag(SAT_ECLIPSED_FLAG); + else + ClearFlag(SAT_ECLIPSED_FLAG); + + if (isFlagSet(SAT_ECLIPSED_FLAG)) + sat_sun_status=0; /* Eclipse */ + else + sat_sun_status=1; /* In sunlight */ + + /* Convert satellite and solar data */ + sat_azi=Degrees(obs_set.x); + sat_ele=Degrees(obs_set.y); + sat_range=obs_set.z; + sat_range_rate=obs_set.w; + sat_lat=Degrees(sat_geodetic.lat); + sat_lon=Degrees(sat_geodetic.lon); + sat_alt=sat_geodetic.alt; + + fk=12756.33*acos(xkmper/(xkmper+sat_alt)); + fm=fk/1.609344; + + rv=(long)floor((tle.xno*xmnpda/twopi+age*tle.bstar*ae)*age+tle.xmo/twopi)+tle.revnum; + + sun_azi=Degrees(solar_set.x); + sun_ele=Degrees(solar_set.y); + + irk=(long)rint(sat_range); + isplat=(int)rint(sat_lat); + isplong=(int)rint(360.0-sat_lon); + iaz=(int)rint(sat_azi); + iel=(int)rint(sat_ele); + ma256=(int)rint(256.0*(phase/twopi)); + + if (sat_sun_status) + { + if (sun_ele<=-12.0 && sat_ele>=0.0) + findsun='+'; + else + findsun='*'; + } + else + findsun=' '; +} + +char AosHappens(x) +int x; +{ + /* This function returns a 1 if the satellite pointed to by + "x" can ever rise above the horizon of the ground station. */ + + double lin, sma, apogee; + + if (sat[x].meanmo==0.0) + return 0; + else + { + lin=sat[x].incl; + + if (lin>=90.0) + lin=180.0-lin; + + sma=331.25*exp(log(1440.0/sat[x].meanmo)*(2.0/3.0)); + apogee=sma*(1.0+sat[x].eccn)-xkmper; + + if ((acos(xkmper/(apogee+xkmper))+(lin*deg2rad)) > fabs(qth.stnlat*deg2rad)) + return 1; + else + return 0; + } +} + +char Decayed(x,time) +int x; +double time; +{ + /* This function returns a 1 if it appears that the + satellite pointed to by 'x' has decayed at the + time of 'time'. If 'time' is 0.0, then the + current date/time is used. */ + + double satepoch; + + if (time==0.0) + time=CurrentDaynum(); + + satepoch=DayNum(1,0,sat[x].year)+sat[x].refepoch; + + if (satepoch+((16.666666-sat[x].meanmo)/(10.0*fabs(sat[x].drag))) < time) + return 1; + else + return 0; +} + +char Geostationary(x) +int x; +{ + /* This function returns a 1 if the satellite pointed + to by "x" appears to be in a geostationary orbit */ + + if (fabs(sat[x].meanmo-1.0027)<0.0002) + + return 1; + else + return 0; +} + +double FindAOS() +{ + /* This function finds and returns the time of AOS (aostime). */ + + aostime=0.0; + + if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) + { + Calc(); + + /* Get the satellite in range */ + + while (sat_ele < -1.0) + { + daynum-=0.00035*(sat_ele*(((sat_alt/8400.0)+0.46))-2.0); + + /* Technically, this should be: + + daynum-=0.0007*(sat_ele*(((sat_alt/8400.0)+0.46))-2.0); + + but it sometimes skipped passes for + satellites in highly elliptical orbits. */ + + Calc(); + } + + /* Find AOS */ + + /** Users using Keplerian data to track the Sun MAY find + this section goes into an infinite loop when tracking + the Sun if their QTH is below 30 deg N! **/ + + while (aostime==0.0) + { + if (fabs(sat_ele) < 0.03) + aostime=daynum; + else + { + daynum-=sat_ele*sqrt(sat_alt)/530000.0; + Calc(); + } + } + } + + return aostime; +} + +double FindLOS() +{ + lostime=0.0; + + if (Geostationary(indx)==0 && AosHappens(indx)==1 && Decayed(indx,daynum)==0) + { + Calc(); + + do + { + daynum+=sat_ele*sqrt(sat_alt)/502500.0; + Calc(); + + if (fabs(sat_ele) < 0.03) + lostime=daynum; + + } while (lostime==0.0); + } + + return lostime; +} + +double FindLOS2() +{ + /* This function steps through the pass to find LOS. + FindLOS() is called to "fine tune" and return the result. */ + + do + { + daynum+=cos((sat_ele-1.0)*deg2rad)*sqrt(sat_alt)/25000.0; + Calc(); + + } while (sat_ele>=0.0); + + return(FindLOS()); +} + +double NextAOS() +{ + /* This function finds and returns the time of the next + AOS for a satellite that is currently in range. */ + + aostime=0.0; + + if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) + daynum=FindLOS2()+0.014; /* Move to LOS + 20 minutes */ + + return (FindAOS()); +} + +int Print(string,mode) +char *string, mode; +{ + /* This function buffers and displays orbital predictions + and allows screens to be saved to a disk file. */ + + char type[20], spaces[80], head1[70], head2[70], head3[70]; + int key, ans=0, l, x, t; + static char buffer[1450], lines, quit; + static FILE *fd; + + /* Pass a NULL string to initialize the buffer, counter, and flags */ + + if (string[0]==0) + { + lines=0; + quit=0; + buffer[0]=0; + fd=NULL; + } + + else + { + if (mode=='p') + strcpy(type,"Orbit"); + + if (mode=='v') + strcpy(type,"Visual"); + + if (mode=='s') + strcpy(type,"Solar Illumination"); + + l=strlen(qth.callsign)+strlen(sat[indx].name)+strlen(type); + + spaces[0]=0; + + for (x=l; x<60; x+=2) + strcat(spaces," "); + + sprintf(head1,"\n%s%s's %s Calendar For %s", spaces, qth.callsign, type, sat[indx].name); + + if (mode=='s') + sprintf(head2,"\n\t Date Mins/Day Sun%c Date Mins/Day Sun%c\n",37,37); + else + { + if (calc_squint) + sprintf(head2,"\n\t Date Time El Az Phase Lat Long Range Squint\n"); + else + sprintf(head2,"\n\t Date Time El Az Phase Lat Long Range Orbit\n"); + } + + sprintf(head3," -----------------------------------------------------------------"); + + strcat(buffer,string); + lines++; + + if (lines==18) + { + attrset(COLOR_PAIR(2)|A_BOLD); + clear(); + addstr(head1); + attrset(COLOR_PAIR(4)|A_BOLD); + addstr(head2); + addstr(head3); + attrset(COLOR_PAIR(3)|A_BOLD); + + if (buffer[0]!='\n') + printw("\n"); + + addstr(buffer); + attrset(COLOR_PAIR(4)|A_BOLD); + + if (buffer[0]=='\n') + printw("\n"); + + if (fd==NULL) + mvprintw(23,63," "); + else + mvprintw(23,63,"Log = ON"); + + mvprintw(23,6,"More? [y/n] >> "); + curs_set(1); + refresh(); + + while (ans==0) + { + key=toupper(getch()); + + if (key=='Y' || key=='\n' || key==' ') + { + key='Y'; + ans=1; + quit=0; + } + + if (key=='N' || key=='Q' || key==27) + { + key='N'; + ans=1; + quit=1; + } + + /* 'L' logs output to "satname.txt" */ + + if (key=='L' && fd==NULL && buffer[0]) + { + sprintf(temp,"%s.txt",sat[indx].name); + + l=strlen(temp)-4; + + for (x=0; x3) || (plus>2 && asterisk>2)) + visible=1; + } + + if (visible) + { + /* Dump buffer to Print() line by line */ + + for (x=0, y=0; buffer[x]!=0 && quit==0; x++) + { + line[y]=buffer[x]; + + if (line[y]=='\n') + { + line[y+1]=0; + quit=Print(line,'v'); + line[0]=0; + y=0; + } + + else + y++; + } + } + + buffer[0]=0; + } + } + + return quit; +} + +void Predict(mode) +char mode; +{ + /* This function predicts satellite passes. It displays + output through the Print() function if mode=='p' (show + all passes), or through the PrintVisible() function if + mode=='v' (show only visible passes). */ + + char string[80]; + int quit=0, lastel=0, breakout=0; + + daynum=GetStartTime(); + PreCalc(indx); + clear(); + + /* Trap geostationary orbits and passes that cannot occur. */ + + if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) + { + do + { + daynum=FindAOS(); + + /* Display the pass */ + + while (iel>=0 && quit==0) + { + if (calc_squint) + sprintf(string," %s%4d %4d %4d %4d %4d %6ld %4.0f %c\n",Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,squint,findsun); + else + sprintf(string," %s%4d %4d %4d %4d %4d %6ld %6ld %c\n",Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); + + lastel=iel; + + if (mode=='p') + quit=Print(string,'p'); + + if (mode=='v') + { + nodelay(stdscr,TRUE); + attrset(COLOR_PAIR(4)); + mvprintw(23,6," Calculating... Press [ESC] To Quit"); + refresh(); + + /* Allow a way out if this + should continue forever... */ + + if (getch()==27) + breakout=1; + + nodelay(stdscr,FALSE); + + quit=PrintVisible(string); + } + + daynum+=cos((sat_ele-1.0)*deg2rad)*sqrt(sat_alt)/25000.0; + Calc(); + } + + if (lastel!=0) + { + daynum=FindLOS(); + Calc(); + + if (calc_squint) + sprintf(string," %s%4d %4d %4d %4d %4d %6ld %4.0f %c\n",Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,squint,findsun); + else + sprintf(string," %s%4d %4d %4d %4d %4d %6ld %6ld %c\n",Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); + + if (mode=='p') + quit=Print(string,'p'); + + if (mode=='v') + quit=PrintVisible(string); + } + + if (mode=='p') + quit=Print("\n",'p'); + + if (mode=='v') + quit=PrintVisible("\n"); + + /* Move to next orbit */ + daynum=NextAOS(); + + } while (quit==0 && breakout==0 && AosHappens(indx) && Decayed(indx,daynum)==0); + } + + else + { + bkgdset(COLOR_PAIR(5)|A_BOLD); + clear(); + attrset(COLOR_PAIR(5)|A_BOLD); + + if (AosHappens(indx)==0 || Decayed(indx,daynum)==1) + mvprintw(12,5,"*** Passes for %s cannot occur for your ground station! ***\n",sat[indx].name); + + if (Geostationary(indx)==1) + mvprintw(12,3,"*** Orbital predictions cannot be made for a geostationary satellite! ***\n"); + + beep(); + bkgdset(COLOR_PAIR(7)|A_BOLD); + AnyKey(); + refresh(); + } +} + +char KbEdit(x,y) +int x,y; +{ + /* This function is used when editing QTH + and orbital data via the keyboard. */ + + char need2save=0, input[25]; + + echo(); + move(y-1,x-1); + wgetnstr(stdscr,input,24); + + if (strlen(input)!=0) + { + need2save=1; /* Save new data to variables */ + resave=1; /* Save new data to disk files */ + strcpy(temp,input); + } + + mvprintw(y-1,x-1,"%-25s",temp); + + refresh(); + noecho(); + + return need2save; +} + +void ShowOrbitData() +{ + /* This function permits displays a satellite's orbital + data. The age of the satellite data is also provided. */ + + int c, x, namelength, age; + double an_period, no_period, satepoch, c1, e2, sma; + char days[5]; + + x=Select(); + + while (x!=-1) + { + if (sat[x].meanmo!=0.0) + { + bkgdset(COLOR_PAIR(2)|A_BOLD); + clear(); + sma=331.25*exp(log(1440.0/sat[x].meanmo)*(2.0/3.0)); + an_period=1440.0/sat[x].meanmo; + c1=cos(sat[x].incl*deg2rad); + e2=1.0-(sat[x].eccn*sat[x].eccn); + no_period=(an_period*360.0)/(360.0+(4.97*pow((xkmper/sma),3.5)*((5.0*c1*c1)-1.0)/(e2*e2))/sat[x].meanmo); + satepoch=DayNum(1,0,sat[x].year)+sat[x].refepoch; + age=(int)rint(CurrentDaynum()-satepoch); + + if (age==1) + strcpy(days,"day"); + else + strcpy(days,"days"); + + namelength=strlen(sat[x].name); + + printw("\n"); + + for (c=41; c>namelength; c-=2) + printw(" "); + + printw("Orbital Data For %s / Catalog Number %ld\n",sat[x].name,sat[x].catnum); + attrset(COLOR_PAIR(3)|A_BOLD); + printw("\n\t\t Issued %d %s ago on %s UTC\n\n",age,days,Daynum2String(satepoch)); + + attrset(COLOR_PAIR(4)|A_BOLD); + + mvprintw(5,21,"Reference Epoch"); + mvprintw(6,21,"Inclination"); + mvprintw(7,21,"RAAN"); + mvprintw(8,21,"Eccentricity"); + mvprintw(9,21,"Arg of Perigee"); + mvprintw(10,21,"Mean Anomaly"); + mvprintw(11,21,"Mean Motion"); + mvprintw(12,21,"Decay Rate"); + mvprintw(13,21,"Nddot/6 Drag"); + mvprintw(14,21,"Bstar Drag Factor"); + mvprintw(15,21,"Semi-Major Axis"); + mvprintw(16,21,"Apogee Altitude"); + mvprintw(17,21,"Perigee Altitude"); + mvprintw(18,21,"Anomalistic Period"); + mvprintw(19,21,"Nodal Period"); + mvprintw(20,21,"Orbit Number"); + mvprintw(21,21,"Element Set Number"); + + attrset(COLOR_PAIR(2)|A_BOLD); + + mvprintw(5,40,": %02d %.8f",sat[x].year,sat[x].refepoch); + mvprintw(6,40,": %.4f deg",sat[x].incl); + mvprintw(7,40,": %.4f deg",sat[x].raan); + mvprintw(8,40,": %g",sat[x].eccn); + mvprintw(9,40,": %.4f deg",sat[x].argper); + mvprintw(10,40,": %.4f deg",sat[x].meanan); + mvprintw(11,40,": %.8f rev/day",sat[x].meanmo); + mvprintw(12,40,": %g rev/day/day",sat[x].drag); + mvprintw(13,40,": %g rev/day/day/day",sat[x].nddot6); + mvprintw(14,40,": %g 1/earth radii",sat[x].bstar); + mvprintw(15,40,": %.4f km",sma); + mvprintw(16,40,": %.4f km",sma*(1.0+sat[x].eccn)-xkmper); + mvprintw(17,40,": %.4f km",sma*(1.0-sat[x].eccn)-xkmper); + mvprintw(18,40,": %.4f mins",an_period); + mvprintw(19,40,": %.4f mins",no_period); + mvprintw(20,40,": %ld",sat[x].orbitnum); + mvprintw(21,40,": %ld",sat[x].setnum); + + attrset(COLOR_PAIR(3)|A_BOLD); + refresh(); + AnyKey(); + } + x=Select(); + }; +} + +void KepEdit() +{ + /* This function permits keyboard editing of the orbital database. */ + + int x; + + do + { + x=Select(); + + if (x!=-1) + { + bkgdset(COLOR_PAIR(3)|A_BOLD); + clear(); + attrset(COLOR_PAIR(3)|A_BOLD); + mvprintw(5,1,"\t\t * Orbital Database Editing Utility *\n"); + attrset(COLOR_PAIR(4)|A_BOLD); + + printw("\n\t\t\tSpacecraft Name :"); + printw("\n\t\t\tCatalog Number :"); + printw("\n\t\t\tDesignator :"); + printw("\n\t\t\tReference Epoch :"); + printw("\n\t\t\tInclination :"); + printw("\n\t\t\tRAAN :"); + printw("\n\t\t\tEccentricity :"); + printw("\n\t\t\tArg of Perigee :"); + printw("\n\t\t\tMean Anomaly :"); + printw("\n\t\t\tMean Motion :"); + printw("\n\t\t\tDecay Rate :"); + printw("\n\t\t\tNddot/6 :"); + printw("\n\t\t\tBstar Drag Term :"); + printw("\n\t\t\tOrbit Number :"); + printw("\n\t\t\tElement Set No. :"); + + attrset(COLOR_PAIR(2)|A_BOLD); + + mvprintw(7,42,"%s",sat[x].name); + mvprintw(8,42,"%ld",sat[x].catnum); + mvprintw(9,42,"%s",sat[x].designator); + mvprintw(10,42,"%02d %.8f",sat[x].year,sat[x].refepoch); + mvprintw(11,42,"%.4f",sat[x].incl); + mvprintw(12,42,"%.4f",sat[x].raan); + mvprintw(13,42,"%g",sat[x].eccn); + mvprintw(14,42,"%.4f",sat[x].argper); + mvprintw(15,42,"%.4f",sat[x].meanan); + mvprintw(16,42,"%.8f",sat[x].meanmo); + mvprintw(17,42,"%g",sat[x].drag); + mvprintw(18,42,"%g",sat[x].nddot6); + mvprintw(19,42,"%g",sat[x].bstar); + mvprintw(20,42,"%ld",sat[x].orbitnum); + mvprintw(21,42,"%ld",sat[x].setnum); + + curs_set(1); + refresh(); + + sprintf(temp,"%s",sat[x].name); + + if (KbEdit(43,8)) + strncpy(sat[x].name,temp,24); + + sprintf(temp,"%ld",sat[x].catnum); + + if (KbEdit(43,9)) + sscanf(temp,"%ld",&sat[x].catnum); + + sprintf(temp,"%s",sat[x].designator); + + if (KbEdit(43,10)) + sscanf(temp,"%s",sat[x].designator); + + sprintf(temp,"%02d %4.8f",sat[x].year,sat[x].refepoch); + + if (KbEdit(43,11)) + sscanf(temp,"%d %lf",&sat[x].year,&sat[x].refepoch); + + sprintf(temp,"%4.4f",sat[x].incl); + + if (KbEdit(43,12)) + sscanf(temp,"%lf",&sat[x].incl); + + sprintf(temp,"%4.4f",sat[x].raan); + + if (KbEdit(43,13)) + sscanf(temp,"%lf",&sat[x].raan); + + sprintf(temp,"%g",sat[x].eccn); + + if (KbEdit(43,14)) + sscanf(temp,"%lf",&sat[x].eccn); + + sprintf(temp,"%4.4f",sat[x].argper); + + if (KbEdit(43,15)) + sscanf(temp,"%lf",&sat[x].argper); + + sprintf(temp,"%4.4f",sat[x].meanan); + + if (KbEdit(43,16)) + sscanf(temp,"%lf",&sat[x].meanan); + + sprintf(temp,"%4.8f",sat[x].meanmo); + + if (KbEdit(43,17)) + sscanf(temp,"%lf",&sat[x].meanmo); + + sprintf(temp,"%g",sat[x].drag); + + if (KbEdit(43,18)) + sscanf(temp,"%lf",&sat[x].drag); + + sprintf(temp,"%g",sat[x].nddot6); + + if (KbEdit(43,19)) + sscanf(temp,"%lf",&sat[x].nddot6); + + sprintf(temp,"%g",sat[x].bstar); + + if (KbEdit(43,20)) + sscanf(temp,"%lf",&sat[x].bstar); + + sprintf(temp,"%ld",sat[x].orbitnum); + + if (KbEdit(43,21)) + sscanf(temp,"%ld",&sat[x].orbitnum); + + sprintf(temp,"%ld",sat[x].setnum); + + if (KbEdit(43,22)) + sscanf(temp,"%ld",&sat[x].setnum); + + curs_set(0); + } + + } while (x!=-1); + + if (resave) + { + SaveTLE(); + resave=0; + } +} + +void QthEdit() +{ + /* This function permits keyboard editing of + the ground station's location information. */ + + bkgdset(COLOR_PAIR(3)|A_BOLD); + clear(); + curs_set(1); + mvprintw(7,0,"\t\t * Ground Station Location Editing Utility *\n\n\n"); + + attrset(COLOR_PAIR(4)|A_BOLD); + printw("\n\t\t\tStation Callsign :"); + printw("\n\t\t\tStation Latitude :"); + printw("\n\t\t\tStation Longitude:"); + printw("\n\t\t\tStation Altitude :"); + printw("\n\t\t\tUTC Hour Offset :"); + + attrset(COLOR_PAIR(2)|A_BOLD); + mvprintw(11,43,"%s",qth.callsign); + mvprintw(12,43,"%g",qth.stnlat); + mvprintw(13,43,"%g",qth.stnlong); + mvprintw(14,43,"%d",qth.stnalt); + mvprintw(15,43,"%2.1f",qth.utc_offset); + refresh(); + + sprintf(temp,"%s",qth.callsign); + + mvprintw(19,20,"Enter the callsign of your ground station"); + + if (KbEdit(44,12)) + strncpy(qth.callsign,temp,7); + + sprintf(temp,"%g",qth.stnlat); + + mvprintw(19,10,"Enter your latitude in decimal degrees NORTH (south=negative)"); + + if (KbEdit(44,13)) + sscanf(temp,"%lf",&qth.stnlat); + + sprintf(temp,"%g",qth.stnlong); + + mvprintw(19,10,"Enter your longitude in decimal degrees WEST (east=negative) "); + + if (KbEdit(44,14)) + sscanf(temp,"%lf",&qth.stnlong); + + mvprintw(19,10," Enter your altitude above sea level (in meters) "); + + sprintf(temp,"%d",qth.stnalt); + + if (KbEdit(44,15)) + sscanf(temp,"%d",&qth.stnalt); + + mvprintw(19,4,"Enter the number of hours your system clock is relative to UTC (EST=-5.0)"); + + sprintf(temp,"%2.1f",qth.utc_offset); + + if (KbEdit(44,16)) + sscanf(temp,"%f",&qth.utc_offset); + + if (resave) + { + SaveQTH(); + resave=0; + } +} + +void SingleTrack(x) +int x; +{ + /* This function tracks a single satellite in real-time + until 'Q' or ESC is pressed. x represents the index + of the satellite being tracked. */ + + int ans, oldaz=0, oldel=0, length, xponder=0, + polarity=0, tshift, bshift; + char going_or_coming=0, command[80], comsat, alarm=0, + geostationary=0, aoshappens=0, decayed=0; + double oldtime=0.0, nextaos=0.0, lostime=0.0, aoslos=0.0, + downlink=0.0, uplink=0.0, downlink_start=0.0, + downlink_end=0.0, uplink_start=0.0, uplink_end=0.0, + dopp, doppler100=0.0, delay, loss, shift; + long newtime, lasttime=0; + + PreCalc(x); + indx=x; + + if (sat_db[x].transponders>0) + { + comsat=1; + tshift=0; + bshift=0; + } + + else + { + comsat=0; + tshift=2; + bshift=-2; + } + + if (comsat) + { + downlink_start=sat_db[x].downlink_start[xponder]; + downlink_end=sat_db[x].downlink_end[xponder]; + uplink_start=sat_db[x].uplink_start[xponder]; + uplink_end=sat_db[x].uplink_end[xponder]; + + if (downlink_start>downlink_end) + polarity=-1; + + if (downlink_start=0.0) + { + mvprintw(7+tshift,1,"%-6.2f",sat_lat); + attrset(COLOR_PAIR(4)|A_BOLD); + mvprintw(7+tshift,8,"N"); + } + + else + { + mvprintw(7+tshift,1,"%-6.2f",-sat_lat); + attrset(COLOR_PAIR(4)|A_BOLD); + mvprintw(7+tshift,8,"S"); + } + + fk=12756.33*acos(xkmper/(xkmper+sat_alt)); + fm=fk*km2mi; + + attrset(COLOR_PAIR(2)|A_BOLD); + + mvprintw(7+tshift,55,"%0.f ",sat_alt*km2mi); + mvprintw(8+tshift,55,"%0.f ",sat_alt); + mvprintw(7+tshift,68,"%-5.0f",sat_range*km2mi); + mvprintw(8+tshift,68,"%-5.0f",sat_range); + mvprintw(8+tshift,1,"%-7.2f",360.0-sat_lon); + mvprintw(7+tshift,15,"%-7.2f",sat_azi); + mvprintw(8+tshift,14,"%+-6.2f",sat_ele); + mvprintw(7+tshift,29,"%0.f ",(3600.0*sat_vel)*km2mi); + mvprintw(8+tshift,29,"%0.f ",3600.0*sat_vel); + + mvprintw(18+bshift,3,"%+6.2f%c ",eclipse_depth/deg2rad,248); + mvprintw(18+bshift,20,"%5.1f",256.0*(phase/twopi)); + mvprintw(18+bshift,37,"%s",ephem); + + if (comsat) + { + if (downlink!=0.0) + mvprintw(13,11,"%11.5f MHz",downlink); + + else + mvprintw(13,11," "); + + if (uplink!=0.0) + mvprintw(12,11,"%11.5f MHz",uplink); + + else + mvprintw(12,11," "); + } + + if (antfd!=-1) + { + if (sat_ele>=0.0) + mvprintw(18+bshift,67," Active "); + else + mvprintw(18+bshift,67,"Standing By"); + } + else + mvprintw(18+bshift,67,"Not Enabled"); + + if (calc_squint) + mvprintw(18+bshift,52,"%+6.2f",squint); + else + mvprintw(18+bshift,54,"N/A"); + + if (sat_ele>=0.0) + { + doppler100=-100.0e06*((sat_range_rate*1000.0)/299792458.0); + delay=1000.0*((1000.0*sat_range)/299792458.0); + + if (comsat) + { + attrset(COLOR_PAIR(4)|A_BOLD); + + if (fabs(sat_range_rate)<0.1) + mvprintw(14,34," TCA "); + + else + { + if (sat_range_rate<0.0) + mvprintw(14,34,"Approaching"); + + if (sat_range_rate>0.0) + mvprintw(14,34," Receding "); + } + + attrset(COLOR_PAIR(2)|A_BOLD); + } + + if (downlink!=0.0) + { + dopp=1.0e-08*(doppler100*downlink); + mvprintw(13,32,"%11.5f MHz",downlink+dopp); + loss=32.4+(20.0*log10(downlink))+(20.0*log10(sat_range)); + mvprintw(13,67,"%7.3f dB",loss); + mvprintw(14,13,"%7.3f ms",delay); + } + + if (uplink!=0.0) + { + dopp=1.0e-08*(doppler100*uplink); + mvprintw(12,32,"%11.5f MHz",uplink-dopp); + loss=32.4+(20.0*log10(uplink))+(20.0*log10(sat_range)); + mvprintw(12,67,"%7.3f dB",loss); + } + + if (uplink!=0.0 && downlink!=0.0) + mvprintw(14,67,"%7.3f ms",2.0*delay); + + else if (comsat) + mvprintw(14,67," "); + + if (doppler100>0.0) + going_or_coming='+'; + else + going_or_coming='-'; + + if (alarm==0) + { + beep(); + alarm=1; + } + } + + else + { + lostime=0.0; + alarm=0; + + if (comsat) + { + mvprintw(12,32," "); + mvprintw(12,67," "); + mvprintw(13,32," "); + mvprintw(13,67," "); + mvprintw(14,13," "); + mvprintw(14,34," "); + mvprintw(14,67," "); + } + } + + mvprintw(7+tshift,42,"%0.f ",fm); + mvprintw(8+tshift,42,"%0.f ",fk); + + attrset(COLOR_PAIR(3)|A_BOLD); + + mvprintw(21,22,"Orbit Number: %ld",rv); + + if (comsat) + { + length=strlen(sat_db[x].transponder_name[xponder])/2; + mvprintw(10,40-length,"%s",sat_db[x].transponder_name[xponder]); + } + + /* Send data to serial port antenna tracker + either as needed (when it changes), or + once per second. */ + + if (sat_ele>=0.0 && antfd!=-1) + { + newtime=(long)time(NULL); + + if ((oldel!=iel || oldaz!=iaz) || (once_per_second && newtime>lasttime)) + { + TrackDataOut(antfd,(float)iel,(float)iaz); + oldel=iel; + oldaz=iaz; + lasttime=newtime; + } + } + + mvprintw(23,22,"Spacecraft is currently "); + + if (sat_sun_status) + { + if (sun_ele<=-12.0 && sat_ele>=0.0) + mvprintw(23,46,"visible "); + + else + mvprintw(23,46,"in sunlight"); + } + + else + mvprintw(23,46,"in eclipse "); + + attrset(COLOR_PAIR(4)|A_BOLD); + mvprintw(20,5," Sun "); + mvprintw(21,5,"---------"); + attrset(COLOR_PAIR(3)|A_BOLD); + mvprintw(22,5,"%-7.2fAz",sun_azi); + mvprintw(23,4,"%+-6.2f El",sun_ele); + + FindMoon(daynum); + + if (geostationary==1 && sat_ele>=0.0) + { + mvprintw(22,22,"Satellite orbit is geostationary"); + aoslos=-3651.0; + } + + if (geostationary==1 && sat_ele<0.0) + { + mvprintw(22,22,"This satellite never reaches AOS"); + aoslos=-3651.0; + } + + if (aoshappens==0 || decayed==1) + { + mvprintw(22,22,"This satellite never reaches AOS"); + aoslos=-3651.0; + } + + if (sat_ele>=0.0 && geostationary==0 && decayed==0 && daynum>lostime) + { + lostime=FindLOS2(); + mvprintw(22,22,"LOS at: %s UTC ",Daynum2String(lostime)); + aoslos=lostime; + } + + else if (sat_ele<0.0 && geostationary==0 && decayed==0 && aoshappens==1 && daynum>nextaos) + { + daynum+=0.003; /* Move ahead slightly... */ + nextaos=FindAOS(); + mvprintw(22,22,"Next AOS: %s UTC",Daynum2String(nextaos)); + aoslos=nextaos; + } + + /* Get input from keyboard */ + + ans=tolower(getch()); + + if (ans==' ' && sat_db[x].transponders>1) + { + xponder++; + + if (xponder>=sat_db[x].transponders) + xponder=0; + + mvprintw(10,1," "); + + downlink_start=sat_db[x].downlink_start[xponder]; + downlink_end=sat_db[x].downlink_end[xponder]; + uplink_start=sat_db[x].uplink_start[xponder]; + uplink_end=sat_db[x].uplink_end[xponder]; + + if (downlink_start>downlink_end) + polarity=-1; + + if (downlink_start' || ans=='.') && comsat) + { + if (ans=='>') + shift=0.001; /* 1 kHz */ + else + shift=0.0001; /* 100 Hz */ + + /* Raise uplink frequency */ + + uplink+=shift*(double)abs(polarity); + downlink=downlink+(shift*(double)polarity); + + if (uplink>uplink_end) + { + uplink=uplink_start; + downlink=downlink_start; + } + } + + if ((ans=='<' || ans== ',') && comsat) + { + if (ans=='<') + shift=0.001; /* 1 kHz */ + else + shift=0.0001; /* 100 Hz */ + + /* Lower uplink frequency */ + + uplink-=shift*(double)abs(polarity); + downlink=downlink-(shift*(double)polarity); + + if (uplink=0.0) + { + attrset(COLOR_PAIR(2)|A_BOLD); + inrange[indx]=1; + } + + else + { + attrset(COLOR_PAIR(2)); + inrange[indx]=0; + } + + if (sat_sun_status) + { + if (sun_ele<=-12.0 && sat_ele>=0.0) + sunstat='V'; + else + sunstat='D'; + } + + else + sunstat='N'; + + mvprintw(y+6,x,"%-10s%3.0f %+3.0f %3.0f %3.0f %6.0f %c", Abbreviate(sat[indx].name,9),sat_azi,sat_ele,sat_lat,360.0-sat_lon,sat_range,sunstat); + + attrset(COLOR_PAIR(4)|A_BOLD); + mvprintw(20,5," Sun "); + mvprintw(21,5,"---------"); + attrset(COLOR_PAIR(3)|A_BOLD); + mvprintw(22,5,"%-7.2fAz",sun_azi); + mvprintw(23,4,"%+-6.2f El",sun_ele); + + FindMoon(daynum); + + /* Calculate Next AOS Times */ + + if (ok2predict[indx] && daynum>aos[indx]) + { + if (inrange[indx]) + aos[indx]=NextAOS(); + else + aos[indx]=FindAOS(); + } + + aos2[indx]=aos[indx]; + satindex[indx]=indx; + } + + if (Decayed(indx,0.0)) + { + attrset(COLOR_PAIR(2)); + mvprintw(y+6,x,"%-10s---------- Decayed ---------", Abbreviate(sat[indx].name,9)); + } + } + + attrset(COLOR_PAIR(6)|A_BOLD); + + daynum=CurrentDaynum(); + mvprintw(2,39,"%s",Daynum2String(daynum)); + + if (daynum>nextcalctime) + { + /* Bubble sort the AOS times */ + + for (z=22; z>=0; z--) + for (y=0; y<=z; y++) + if (aos2[y]>=aos2[y+1]) + { + temptime=aos2[y]; + aos2[y]=aos2[y+1]; + aos2[y+1]=temptime; + + x=satindex[y]; + satindex[y]=satindex[y+1]; + satindex[y+1]=x; + } + + /* Display list of upcoming passes */ + + attrset(COLOR_PAIR(4)|A_BOLD); + mvprintw(19,31,"Upcoming Passes"); + mvprintw(20,31,"---------------"); + attrset(COLOR_PAIR(3)|A_BOLD); + + for (x=0, y=0, z=-1; x<21 && y!=3; x++) + { + if (ok2predict[satindex[x]] && aos2[x]!=0.0) + { + mvprintw(y+21,19,"%10s on %s UTC",Abbreviate(sat[(int)satindex[x]].name,9),Daynum2String(aos2[x])); + + if (z==-1) + z=x; + y++; + } + } + + if (z!=-1) + nextcalctime=aos2[z]; + } + + refresh(); + ans=tolower(getch()); + + } while (ans!='q' && ans!=27); + + nodelay(stdscr,FALSE); +} + + +void Illumination() +{ + double startday, oneminute, sunpercent; + int eclipses, minutes, quit, breakout=0; + char string1[40], string2[80], datestring[25], count; + + oneminute=1.0/(24.0*60.0); + + daynum=floor(GetStartTime()); + PreCalc(indx); + startday=daynum; + count=0; + + curs_set(0); + clear(); + + do + { + attrset(COLOR_PAIR(4)); + mvprintw(23,6," Calculating... Press [ESC] To Quit"); + refresh(); + + count++; + daynum=startday; + + for (minutes=0, eclipses=0; minutes<1440; minutes++) + { + Calc(); + + if (sat_sun_status==0) + eclipses++; + + daynum=startday+(oneminute*(double)minutes); + } + + sunpercent=((double)eclipses)/((double)minutes); + sunpercent=100.0-(sunpercent*100.0); + + strcpy(datestring,Daynum2String(startday)); + datestring[11]=0; + sprintf(string1," %s %4d %6.2f%c",datestring,1440-eclipses,sunpercent,37); + + /* Allow a quick way out */ + + nodelay(stdscr,TRUE); + + if (getch()==27) + breakout=1; + + nodelay(stdscr,FALSE); + + startday+=18.0; + + daynum=startday; + + for (minutes=0, eclipses=0; minutes<1440; minutes++) + { + Calc(); + + if (sat_sun_status==0) + eclipses++; + + daynum=startday+(oneminute*(double)minutes); + } + + sunpercent=((double)eclipses)/((double)minutes); + sunpercent=100.0-(sunpercent*100.0); + + strcpy(datestring,Daynum2String(startday)); + datestring[11]=0; + sprintf(string2,"%s\t %s %4d %6.2f%c\n",string1,datestring,1440-eclipses,sunpercent,37); + quit=Print(string2,'s'); + + /* Allow a quick way out */ + + nodelay(stdscr,TRUE); + + if (getch()==27) + breakout=1; + + nodelay(stdscr,FALSE); + + if (count<18) + startday-=17.0; + else + { + count=0; + startday+=1.0; + } + } + while (quit!=1 && breakout!=1 && Decayed(indx,daynum)==0); +} + +void MainMenu() +{ + /* Start-up menu. Your wish is my command. :-) */ + + Banner(); + attrset(COLOR_PAIR(4)|A_BOLD); + mvprintw(10,21,"Available Functions....."); + + attrset(COLOR_PAIR(3)|A_BOLD); + mvprintw(12,21,"[P]: Predict Satellite Passes"); + mvprintw(13,21,"[V]: Predict Visible Passes"); + mvprintw(14,21,"[S]: Solar Illumination Predictions"); + mvprintw(15,21,"[T]: Single Satellite Tracking Mode"); + mvprintw(16,21,"[M]: Multi-Satellite Tracking Mode"); + mvprintw(17,21,"[U]: Update Database From NASA TLEs"); + mvprintw(18,21,"[E]: Keyboard Edit of Orbital Database"); + mvprintw(19,21,"[G]: Edit Ground Station Information"); + mvprintw(20,21,"[D]: Display Satellite Orbital Data"); + mvprintw(21,21,"[I]: Program Information"); + mvprintw(22,21,"[Q]: Exit Program"); + refresh(); +} + +void ProgramInfo() +{ + Banner(); + attrset(COLOR_PAIR(3)|A_BOLD); + + printw("\n\n\n\n\n\t\t\tPREDICT version : %s (DOS)\n",version); + printw("\t\t\tQTH file loaded : %s\n",qthfile); + printw("\t\t\tTLE file loaded : %s\n",tlefile); + printw("\t\t\tDatabase file : "); + + if (database) + printw("Loaded\n"); + else + printw("Not loaded\n"); + + if (antfd!=-1) + printw("\t\t\tAutoTracking : Sending data to %s\n",serial_port); + else + printw("\t\t\tAutoTracking : Not enabled\n"); + + refresh(); + attrset(COLOR_PAIR(4)|A_BOLD); + AnyKey(); +} + +int QuickFind(string, outputfile) +char *string, *outputfile; +{ + int x, y, z, step=1; + long start, now, end, count; + char satname[50], startstr[20], endstr[20]; + time_t t; + FILE *fd; + + if (outputfile[0]) + fd=fopen(outputfile,"w"); + else + fd=stdout; + + startstr[0]=0; + endstr[0]=0; + + ReadDataFiles(); + + for (x=0; x<48 && string[x]!=0 && string[x]!='\n'; x++) + satname[x]=string[x]; + + satname[x]=0; + x++; + + for (y=0; string[x+y]!=0 && string[x+y]!='\n'; y++) + startstr[y]=string[x+y]; + + startstr[y]=0; + y++; + + for (z=0; string[x+y+z]!=0 && string[x+y+z]!='\n'; z++) + endstr[z]=string[x+y+z]; + + endstr[z]=0; + + /* Do a simple search for the matching satellite name */ + + for (z=0; z<24; z++) + { + if ((strcmp(sat[z].name,satname)==0) || (atol(satname)==sat[z].catnum)) + { + start=atol(startstr); + + if (endstr[strlen(endstr)-1]=='m') + { + step=60; + endstr[strlen(endstr)-1]=0; + } + + if (endstr[0]=='+') + end=start+((long)step)*atol(endstr); + else + end=atol(endstr); + + indx=z; + + now=(long)((3651.0+CurrentDaynum())*86400.0); + + if (start==0) + start=now; + + if (startstr[0]=='+') + { + start=now; + + if (startstr[strlen(startstr)-1]=='m') + { + step=60; + startstr[strlen(startstr)-1]=0; + } + + end=start+((long)step)*atol(startstr); + + /* Prevent a list greater than + 24 hours from being produced */ + + if ((end-start)>86400) + { + start=now; + end=now-1; + } + } + + if ((start>=now-31557600) && (start<=now+31557600) && end==0) + { + /* Start must be one year from now */ + /* Display a single position */ + daynum=((start/86400.0)-3651.0); + PreCalc(indx); + Calc(); + + if (Decayed(indx,daynum)==0) + fprintf(fd,"%ld %s %4d %4d %4d %4d %4d %6ld %6ld %c\n",start,Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); + break; + } + + else + { + /* Display a whole list */ + for (count=start; count<=end; count+=step) + { + daynum=((count/86400.0)-3651.0); + PreCalc(indx); + Calc(); + + if (Decayed(indx,daynum)==0) + fprintf(fd,"%ld %s %4d %4d %4d %4d %4d %6ld %6ld %c\n",count,Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); + } + break; + } + } + } + + if (outputfile[0]) + fclose(fd); + + return 0; +} + +int QuickPredict(string, outputfile) +char *string, *outputfile; +{ + int x, y, z, lastel=0; + long start, now; + char satname[50], startstr[20]; + time_t t; + FILE *fd; + + if (outputfile[0]) + fd=fopen(outputfile,"w"); + else + fd=stdout; + + startstr[0]=0; + + ReadDataFiles(); + + for (x=0; x<48 && string[x]!=0 && string[x]!='\n'; x++) + satname[x]=string[x]; + + satname[x]=0; + x++; + + for (y=0; string[x+y]!=0 && string[x+y]!='\n'; y++) + startstr[y]=string[x+y]; + + startstr[y]=0; + y++; + + /* Do a simple search for the matching satellite name */ + + for (z=0; z<24; z++) + { + if ((strcmp(sat[z].name,satname)==0) || (atol(satname)==sat[z].catnum)) + { + start=atol(startstr); + indx=z; + + now=(long)((3651.0+CurrentDaynum())*86400.0); + + if (start==0) + start=now; + + if ((start>=now-31557600) && (start<=now+31557600)) + { + /* Start must within one year of now */ + daynum=((start/86400.0)-3651.0); + PreCalc(indx); + Calc(); + + if (AosHappens(indx) && Geostationary(indx)==0 && Decayed(indx,daynum)==0) + { + /* Make Predictions */ + daynum=FindAOS(); + + /* Display the pass */ + + while (iel>=0) + { + fprintf(fd,"%.0f %s %4d %4d %4d %4d %4d %6ld %6ld %c\n",floor(86400.0*(3651.0+daynum)),Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); + lastel=iel; + daynum+=cos((sat_ele-1.0)*deg2rad)*sqrt(sat_alt)/25000.0; + Calc(); + } + + if (lastel!=0) + { + daynum=FindLOS(); + Calc(); + fprintf(fd,"%.0f %s %4d %4d %4d %4d %4d %6ld %6ld %c\n",floor(86400.0*(3651.0+daynum)),Daynum2String(daynum),iel,iaz,ma256,isplat,isplong,irk,rv,findsun); + } + } + break; + } + } + } + + if (outputfile[0]) + fclose(fd); + + return 0; +} + +int main(argc,argv) +char argc, *argv[]; +{ + int x, y, z, key=0; + + char updatefile[80], quickfind=0, quickpredict=0, + quickstring[40], outputfile[42]; + + struct termios oldtty, newtty; + + /* Set up translation table for computing TLE checksums */ + + for (x=0; x<=255; val[x]=0, x++); + for (x='0'; x<='9'; val[x]=x-'0', x++); + val['-']=1; + + serial_port[0]=0; + updatefile[0]=0; + quickstring[0]=0; + outputfile[0]=0; + temp[0]=0; + antfd=-1; + y=argc-1; + + /* Set up default qth and tle filenames */ + + strcpy(qthfile,"predict.qth"); + strcpy(tlefile,"predict.tle"); + strcpy(dbfile,"predict.db"); + + /* Scan for optional command line arguments */ + + for (x=0; x<=y; x++) /* We need to start with x=0 for DOS */ + { + if (strcmp(argv[x],"-f")==0) + { + quickfind=1; + z=x+1; + while (z<=y && argv[z][0] && argv[z][0]!='-') + { + if ((strlen(quickstring)+strlen(argv[z]))<37) + { + strncat(quickstring,argv[z],15); + strcat(quickstring,"\n"); + z++; + } + } + z--; + } + + if (strcmp(argv[x],"-p")==0) + { + quickpredict=1; + z=x+1; + while (z<=y && argv[z][0] && argv[z][0]!='-') + { + if ((strlen(quickstring)+strlen(argv[z]))<37) + { + strncat(quickstring,argv[z],15); + strcat(quickstring,"\n"); + z++; + } + } + z--; + } + + if (strcmp(argv[x],"-u")==0) + { + z=x+1; + while (z<=y && argv[z][0] && argv[z][0]!='-') + { + if ((strlen(updatefile)+strlen(argv[z]))<75) + { + strncat(updatefile,argv[z],75); + strcat(updatefile,"\n"); + z++; + } + } + z--; + } + + if (strcmp(argv[x],"-t")==0) + { + z=x+1; + if (z<=y && argv[z][0] && argv[z][0]!='-') + strncpy(tlefile,argv[z],48); + } + + if (strcmp(argv[x],"-q")==0) + { + z=x+1; + if (z<=y && argv[z][0] && argv[z][0]!='-') + strncpy(qthfile,argv[z],48); + } + + if (strcmp(argv[x],"-a")==0) + { + z=x+1; + if (z<=y && argv[z][0] && argv[z][0]!='-') + strncpy(serial_port,argv[z],13); + } + + if (strcmp(argv[x],"-a1")==0) + { + z=x+1; + if (z<=y && argv[z][0] && argv[z][0]!='-') + strncpy(serial_port,argv[z],13); + once_per_second=1; + } + } + + y=ReadDataFiles(); + + if (y==3) + { + if (updatefile[0]) + { + y=0; + z=0; + temp[0]=0; + + while (updatefile[y]!=0) + { + while (updatefile[y]!='\n' && updatefile[y]!=0 && y<79) + { + temp[z]=updatefile[y]; + z++; + y++; + } + + temp[z]=0; + + if (temp[0]) + { + AutoUpdate(temp); + temp[0]=0; + z=0; + y++; + } + } + + exit(0); + } + + if (quickfind) + exit(QuickFind(quickstring,outputfile)); + + if (quickpredict) + exit(QuickPredict(quickstring,outputfile)); + + initscr(); + start_color(); + cbreak(); + noecho(); + scrollok(stdscr,TRUE); + curs_set(0); + + init_pair(1,COLOR_WHITE,COLOR_BLACK); + init_pair(2,COLOR_WHITE,COLOR_BLUE); + init_pair(3,COLOR_YELLOW,COLOR_BLUE); + init_pair(4,COLOR_CYAN,COLOR_BLUE); + init_pair(5,COLOR_WHITE,COLOR_RED); + init_pair(6,COLOR_WHITE,COLOR_RED); + init_pair(7,COLOR_CYAN,COLOR_RED); + init_pair(8,COLOR_BLUE,COLOR_WHITE); + + /* Open serial port to send data to + the antenna tracker if present. */ + + if (serial_port[0]!=0) + { + /* Make sure there's no trailing '/' */ + + x=strlen(serial_port); + + if (serial_port[x-1]=='/') + serial_port[x-1]=0; + +#ifdef _WIN32 + antfd=open(serial_port, O_RDWR); +#else + antfd=open(serial_port, O_RDWR|O_NOCTTY); +#endif + + if (antfd!=-1) + { + /* Set up serial port */ + + tcgetattr(antfd, &oldtty); + bzero(&newtty, sizeof(newtty)); + + /* 9600 baud, 8-bits, no parity, + 1-stop bit, no handshaking */ + + newtty.c_cflag=B9600|CS8|CLOCAL; + newtty.c_oflag=0; + newtty.c_lflag=0; + + tcflush(antfd, TCIFLUSH); + tcsetattr(antfd, TCSANOW, &newtty); + } + + else + { + bailout("Unable To Open Antenna Port"); + exit(-1); + } + } + + MainMenu(); + + do + { + key=getch(); + + switch (tolower(key)) + { + case 'p': + case 'v': + Print("",0); + PrintVisible(""); + indx=Select(); + + if (indx!=-1 && sat[indx].meanmo!=0.0 && Decayed(indx,0.0)==0) + Predict(tolower(key)); + + MainMenu(); + break; + + case 'u': + AutoUpdate(""); + MainMenu(); + break; + + case 'e': + KepEdit(); + MainMenu(); + break; + + case 'd': + ShowOrbitData(); + MainMenu(); + break; + + case 'g': + QthEdit(); + MainMenu(); + break; + + case 't': + indx=Select(); + + if (indx!=-1 && sat[indx].meanmo!=0.0 && Decayed(indx,0.0)==0) + SingleTrack(indx); + + MainMenu(); + break; + + case 'm': + MultiTrack(); + MainMenu(); + break; + + case 'i': + ProgramInfo(); + MainMenu(); + break; + + case 's': + indx=Select(); + if (indx!=-1 && sat[indx].meanmo!=0.0 && Decayed(indx,0.0)==0) + { + Print("",0); + Illumination(); + } + MainMenu(); + break; + } + + } while (key!='q' && key!=27 && key!='Q'); + + if (antfd!=-1) + { + tcsetattr(antfd,TCSANOW,&oldtty); + close(antfd); + } + + curs_set(1); + bkgdset(COLOR_PAIR(1)); + clear(); + refresh(); + endwin(); + } + + else + { + /* "Houston, we have a problem..." */ + + printf("\n%c",7); + + if (y^1) + printf("*** ERROR! Your QTH file \"%s\" could not be loaded!\n",qthfile); + + if (y^2) + printf("*** ERROR! Your TLE file \"%s\" could not be loaded!\n",tlefile); + } + + exit(0); +} diff --git a/default/predict.db b/predict.db similarity index 100% rename from default/predict.db rename to predict.db diff --git a/predict.pdf b/predict.pdf new file mode 100644 index 0000000..d8b9707 Binary files /dev/null and b/predict.pdf differ diff --git a/predict.qth b/predict.qth new file mode 100644 index 0000000..15239c2 --- /dev/null +++ b/predict.qth @@ -0,0 +1,5 @@ +W1AW + 41.7169 + 72.7271 + 25 +-5.0 diff --git a/predict.txt b/predict.txt new file mode 100644 index 0000000..a34bd89 --- /dev/null +++ b/predict.txt @@ -0,0 +1,632 @@ +PREDICT (2.2.1d) PREDICT (2.2.1d) + + + +NAME + predict - Track and predict passes of satellites in Earth + orbit + +SYNOPSIS + predict [-u tle_update_source] [-t tlefile] [-q qthfile] + [-a serial_port] [-a1 serial_port] [-f sat_name start- + ing_date/time ending_date/time] [-p sat_name start- + ing_date/time] [-o output_file] + +LICENSING + PREDICT is an easy-to-use satellite tracking and orbital + prediction program written and created by John A. Maglia- + cane, KD2BD. + + PREDICT 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 any later version. + + PREDICT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY, without even the implied war- + ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR- + POSE. See the GNU General Public License for more details. + +DESCRIPTION + The DOS version of PREDICT is a derivative of the full- + featured Linux version PREDICT. It was compiled under + Caldera's DR-DOS 7.02 operating system using the DJGPP + version 2.03 32-bit protected mode software development + environment (gcc 3.2, PDCurses 2.4). + + PREDICT is 32-bit protected mode software, and as such + requires a 32-bit processor (80386 or better). Numeric + co-processor emulation is available for environments lack- + ing a co-processor, but the emulation may not provide + results as accurate as those possible when a physical co- + processor is present. + + The protected mode driver (CWSDPMI.EXE) packaged with this + software is required for proper operation of PREDICT, and + needs to be installed either in your current working + directory, or in a subdirectory within your OSs search + path. (Type "path" on your command line to inspect your + search path.) Users of Windows 9.x and later versions do + not need to install the protected mode driver included + with this software. + +FIRST TIME USE + PREDICT tracks and predicts passes of satellites based on + the geographical location of the ground station, the cur- + rent date and time as provided by the computer system's + clock, and Keplerian orbital data for the satellites of + interest to the ground station. First time users of PRE- + DICT are provided default ground station location and + orbital data information files. These files are managed by + the program, and are normally located under PREDICT's + installation directory. First time users must supply PRE- + DICT with their geographical location (the same as select- + ing option [G] from the program's main menu) the first + time the program is run. Latitude is entered in decimal + degrees north. Latitudes south of the equator are entered + as negative values. Longitude is entered as decimal + degrees west. Eastern longitudes may be entered as nega- + tive values. Station altitude is entered as the number of + meters the ground station is located above sea level. This + parameter is not very critical. If unsure, make a realis- + tic guess or simply enter 0. + + Users of PREDICT need Keplerian orbital data for the + satellites they wish to track that is preferably no older + than one month. The default orbital data supplied with the + program is liable to be quite old, and so must be brought + up to date if accurate results are to be expected. This + may be accomplished by selecting option [E] from PREDICT's + main menu and manually entering Keplerian data for each + satellite in the program's database, or by selecting + option [U] and specifying a file containing recent 2-line + Keplerian element data sets that correspond to the satel- + lites in the program's database. Keplerian orbital data + is available from a variety of sources, including + http://www.celestrak.com/ and http://www.amsat.org/. + +PROGRAM OPERATION + The start-up screen of PREDICT lists the program's main + functions. Several tracking and orbital prediction modes + are available, as well as several utilities to manage the + program's orbital database. + +PREDICTING SATELLITE PASSES + Orbital predictions are useful for determining in advance + when a satellite is expected to come within range of a + ground station. They can also be used to look back to pre- + vious passes to help to confirm or identify past observa- + tions. + + PREDICT includes two orbital prediction modes to predict + any pass above a ground station (main menu option [P]), or + list only those passes that might be visible to a ground + station through optical means (main menu option [V]). In + either mode, the user is asked to select a satellite of + interest from a menu, and then asked to enter the date and + time (in UTC) at which prediction calculations should + start. + + The current date and time may be selected by default by + entering nothing and hitting simply the ENTER key when + prompted to enter the starting date and time. + + Otherwise, the starting date and time should be entered in + the form: + + DDMonYY HH:MM:SS + + Entering the time is optional. If it is omitted, midnight + (00:00:00) is assumed. Once complete, orbital calcula- + tions are started and prediction information is displayed + on the screen. + + The date and time in UTC, along with the satellite's ele- + vation above ground, azimuth heading, modulo 256 orbital + phase, sub-satellite point latitude and longitude, slant + range between the ground station and the satellite, and + the satellite's orbit number are all displayed. If space- + craft attitude parameters (ALAT, ALON) are included in + PREDICT's transponder database file, then spacecraft + antenna squint angles are displayed instead of orbit num- + bers in the orbital prediction output. + + An asterisk (*) displayed to the right of the orbit number + or squint angle means the satellite is in sunlight at the + date and time listed on the line. A plus symbol (+) means + the satellite is in sunlight while the ground station is + under the cover of darkness at the time and date listed. + Under good viewing conditions, large satellites such as + the International Space Station (ISS), the US Space Shut- + tles, and Hubble Space Telescope, and the Upper Atmosphere + Research Satellite (UARS) are visible to the naked eye. If + no symbol appears to the right of each line, then the + satellite is in the Earth's shadow at the time and date + listed, and is not receiving any illumination from the + sun. + + Pressing the ENTER key, the 'Y' key, or the space bar + advances the orbital predictions to a screen listing the + next available passes. Pressing the 'L' key allows the + currently displayed screen plus any subsequent screens to + be logged to a text file in your current working direc- + tory. The name given to this file is the name of the + satellite plus a ".txt" extension. Any slashes or spaces + appearing in the satellite name are replaced by the under- + score (_) symbol. The logging feature may be toggled on + and off at any time by pressing the 'L' key. Exiting the + orbital prediction mode by pressing 'N' or hitting the + ESCape key will also close the log file. The log file will + be appended with additional information if additional pre- + dictions are conducted for the same satellite with the + logging feature turned on. + + Selecting [V] from PREDICT's main menu will permit a + ground station to only predict passes for satellites that + are potentially visible through optical means. Since all + other passes are filtered out in this mode, and since some + satellites may never arrive over a ground station when + optical viewing conditions are possible, the program pro- + vides the option of breaking out of visual orbital predic- + tion mode by pressing the [ESC]ape key as calculations are + made. A prompt is displayed at the bottom of the screen to + alert the user of this option. + + In either orbital prediction mode, predictions will not be + attempted for satellites that can never rise above the + ground station's horizon, or for satellites in geostation- + ary orbits. If a satellite is in range at the starting + date and time specified, PREDICT will adjust the starting + date back in time until the point of AOS so that the pre- + diction screen displays the first pass in its entirety + from start to finish. + +SINGLE SATELLITE TRACKING MODE + In addition to predicting satellite passes, PREDICT allows + satellites to be tracked in real-time using PREDICT's Sin- + gle Satellite Tracking Mode (main menu option [T]), or + simultaneously as a group of 24 using the program's Multi- + Satellite Tracking Mode (main menu option [M]). The posi- + tions of the Sun and Moon are also displayed when tracking + satellites in real-time. + + Selecting option [T] from PREDICT's main menu places the + program in Single Satellite Tracking Mode. The user will + be prompted to select the satellite of interest, after + which a screen will appear and display tracking positions + for the satellite selected. + + In Single Satellite Tracking Mode, a wealth of information + related to tracking a spacecraft and communicating through + its transponder is displayed. The current date and time + is displayed along with the satellite's sub-satellite + point, its orbital altitude in both kilometers and statute + miles, the slant range distance between the ground station + and the satellite in both kilometers and statute miles, + the current azimuth and elevation headings toward the + satellite, the orbital velocity of the satellite in both + kilometers per hour and statute miles per hour, the foot- + print of the satellite in both kilometers and statute + miles, the modulo 256 orbital phase of the satellite, the + eclipse depth, the spacecraft antenna squint angle, and + orbital model in use, as well as the current orbit number + are also displayed. The date and time for the next AOS is + also provided. + + Additionally, if the satellite is currently in range of + the ground station, the amount of Doppler shift experi- + enced on uplink and downlink frequencies, path loss, prop- + agation delay, and echo times are also displayed. The + expected time of LOS is also provided. + + Uplink and downlink frequencies are held in PREDICT's + transponder database file predict.db. A default file is + provided with PREDICT. + + Transponders may be selected by pressing the SPACE BAR. + The passband of the transponder may be tuned in 1 kHz + increments by pressing the < and > keys. 100 Hz tuning is + possible using the , and . keys. (These are simply the < + and > keys without the SHIFT key.) + + If no transponder information is available, the data dis- + played on the tracking screen is abbreviated. + + The features available in the Single Satellite Tracking + Mode make it possible to accurately determine the proper + uplink frequency to yield a given downlink frequency, or + vice versa. For example, if one wishes to communicate + with a station heard on 435.85200 MHz via FO-29, then + 435.85200 MHz can be selected via the keyboard as an RX + frequency using the tuning keys while tracking FO-29, and + the corresponding groundstation TX frequency will be dis- + played by PREDICT. + + Obviously, an accurate system clock and up-to-date orbital + data are required for the best tuning accuracy. + +MULTI-SATELLITE TRACKING MODE + Selecting [M] from PREDICT's main menu places the program + in a real-time multi-satellite tracking mode. In this + mode, all 24 satellites in the program's database are + tracked simultaneously along with the positions of the Sun + and Moon. Tracking data for the satellites is displayed in + two columns of 12 satellites each. The name, azimuth head- + ing, elevation, sub-satellite point latitude (in degrees + North) and longitude (in degrees West) positions are pro- + vided, along with the slant range distance between the + satellite and the ground station (in kilometers). + + A letter displayed to the right of the slant range indi- + cates the satellite's sunlight and eclipse conditions. If + the satellite is experiencing an eclipse period, an N is + displayed. If the satellite is in sunlight and the ground + station is under the cover of darkness, a V is displayed + to indicate the possibility that the satellite is visible + under the current conditions. If the satellite is in sun- + light while conditions at the ground station do not allow + the satellite to be seen, a D is displayed. Satellites in + range of the ground station are displayed in BOLD letter- + ing. The AOS dates and times for the next three satellites + predicted to come into range are displayed on the bottom + of the screen between the tracking coordinates of the Sun + and Moon. Predictions are not made for satellites in geo- + stationary orbits or for satellites so low in inclination + and/or altitude that they can never rise above the horizon + of the ground station. + +SOLAR ILLUMINATION PREDICTIONS + Selecting [S] from PREDICT's main menu will allow solar + illumination predictions to be made. These predictions + indicate how much sunlight a particular satellite will + receive in a 24 hour period. This information is espe- + cially valuable to spacecraft designers and satellite + groundstation controllers who must monitor spacecraft + power budgets or thermal conditions on-board their space- + craft due to sunlight and eclipse periods. It can even be + used to predict the optimum times for astronauts to per- + form extra-vehicular activities in space. Solar illumina- + tion predictions may be logged to a file in the same man- + ner that orbital predictions may be logged (by pressing + L). + +COMMAND LINE ARGUMENTS + By default, PREDICT reads ground station location and + orbital data information from a pair of files located in + the current working directory. Ground station location + information is held in a file named predict.qth, while + orbital data information for 24 satellites is held in a + file named predict.tle. If orbital data for more than 24 + satellites exists in predict.tle, then only the first 24 + satellites are read by PREDICT. + + If we wish to run PREDICT using data from alternate + sources instead of these default files, the names of such + files may be passed to PREDICT on the command line when + the program is started. For example, if we wish to read + the TLE file visual.tle and the QTH file holiday.qth + rather than the default files, we could start PREDICT and + pass the names of these alternate files to the program in + the following manner: + + predict -t visual.tle -q holiday.qth + + or + + predict -q holiday.qth -t visual.tle + + If the files specified are not located in the current + working directory, then their relative or absolute paths + should also be specified along with their names (predict + -t c:\keps\visual.tle). + + It is also possible to specify only one alternate file + while using the default for the other. For example, + + predict -t visual.tle + + reads QTH information from the default predict.qth file, + and TLE information from visual.tle, while + + predict -q bobs.qth + + reads QTH information from bobs.qth and TLE information + from the default predict.tle location. + +QUIET ORBITAL DATABASE UPDATES + It is also possible to update PREDICT's satellite orbital + database using another command line option that updates + the database from a NASA two-line element data set. PRE- + DICT then quietly exits without displaying anything to the + screen, thereby eliminating the need for entering the pro- + gram and selecting the appropriate menu options. This + option is invoked using the -u command line switch as fol- + lows: + + predict -u orbs248.tle + + This example updates PREDICT's default orbital database + with the Keplerian elements found in the file orbs248.tle. + PREDICT may be updated from a list of files as well: + + predict -u amateur.tle visual.tle weather.tle + + If an alternate datafile requires updating, it may also be + specified on the command line using the -t switch as fol- + lows: + + predict -t oscar.tle -u amateur.tle + + This example updates the oscar.tle orbital database with + the two-line element data contained in amateur.tle. + + These options permit the automatic update of PREDICT's + orbital data files using Keplerian orbital data obtained + through automatic means such as FTP, HTTP, or pacsat + satellite download. + +AUTOMATIC ANTENNA TRACKING + PREDICT is compatible with serial port antenna rotator + interfaces conforming to the EasyComm 2 protocol standard. + This includes the PIC/TRACK interface developed by Vicenzo + Mezzalira, IW3FOL , TAPR's EasyTrak Jr. (currently under devel- + opment), and Suding Associates Incorporated's Dish Con- + trollers . Using any of these hardware interfaces, + PREDICT can automatically control the position of AZ/EL + antenna rotators, and keep antennas accurately pointed + toward a satellite being tracked by PREDICT. In opera- + tion, tracking data from PREDICT is directed to the speci- + fied serial port using the -a command line option. For + example: + + predict -a com1 + + will send AZ/EL tracking data to the first serial port + when the program is tracking a satellite in the Single + Satellite Tracking Mode. The data sent to the serial port + is of the form: AZ241.0 EL26.0 using 9600 baud, 8-data + bits, 1-stop bit, no parity, and no handshaking. Data is + sent to the interface if the azimuth or elevation headings + change by one degree or more. For interfaces requiring + keepalive updates at least once per second whether the + AZ/EL headings have changed or not (such as the ones by + SAI), the -a1 option may be used: + + predict -a1 com1 + + (Note: The DOS version of PREDICT lacks a serial port + driver that more likely than not will prevent PREDICT from + successfully sending data to the serial port tracking + interfaces described here.) + +ADDITIONAL OPTIONS + The -f command-line option, when followed by a satellite + name or object number and starting date/time, allows PRE- + DICT to respond with satellite positional information. + This feature allows PREDICT to be invoked within other + applications that need to determine the location of a + satellite at a particular point in time, such as the loca- + tion of where a CCD camera image was taken by a Pacsat + satellite based on its timestamp. + + The information produced includes the date/time in Unix + format (the number of seconds since midnight UTC on Jan- + uary 1, 1970), the date/time in ASCII (UTC), the elevation + of the satellite in degrees, the azimuth heading of the + satellite, the orbital phase (modulo 256), the latitude + (N) and longitude (W) of the satellite's sub-satellite + point at the time specified, the slant range to the satel- + lite in kilometers with respect to the ground station's + location, the orbit number, and the spacecraft's sunlight + visibility information. + + The date/time must be specified in Unix format (number of + seconds since midnight UTC on January 1, 1970). If no + starting or ending time is specified, the current + date/time is assumed and a single line of output is pro- + duced. If a starting and ending time are specified, a + list of coordinates beginning at the starting time/date + and ending with the ending time/date will be returned by + the program with a one second resolution. If the letter m + is appended to the ending time/date, then the data + returned by the program will have a one minute resolution. + The -o option allows the program to write the calculated + data to an output file rather than directing it to the + standard output device if desired. + + The proper syntax for this option is as follows: + + predict -f ISS 977446390 977446400 -o datafile + + A list of coordinates starting at the current date/time + and ending 10 seconds later may be produced by the follow- + ing command: + + predict -f ISS +10 + + If a list of coordinates specifying the position of the + satellite every minute for the next 10 minutes is desired, + the following command may be used: + + predict -f ISS +10m + + If a satellite name contains spaces, then the entire name + must be enclosed by "quotes". + + The -p option allows orbital predictions for a single pass + to be generated by PREDICT via the command-line. For + example: + + predict -p OSCAR-11 1003536767 + + starts predictions for the OSCAR-11 satellite at a Unix + time of 1003536767 (Sat 20Oct01 00:12:47 UTC). If the + starting date/time is omitted, the current date/time is + used. If a pass is already in progress at the starting + date/time specified, orbital predictions are moved back to + the beginning of AOS of the current pass, and data for the + entire pass from AOS to LOS is provided. + + When either the -f or -p options are used, PREDICT pro- + duces an output consisting of the date/time in Unix for- + mat, the date and time in ASCII (UTC), the elevation of + the satellite in degrees, the azimuth of the satellite in + degrees, the orbital phase (modulo 256), the latitude (N) + and longitude (W) of the satellite's sub-satellite point, + the slant range to the satellite (in kilometers), the + orbit number, and the spacecraft's sunlight visibility + information. For example: + + 1003611710 Sat 20Oct01 21:01:50 11 6 164 51 72 + 1389 16669 * + + The output isn't annotated, but then again, it's meant to + be read by other software. + +ADDING SATELLITES + One of the most frequently asked questions is how satel- + lites in PREDICT's orbital database may be added, modi- + fied, or replaced. As it turns out, there are several + ways in which this can be done. Probably the easiest is + to manually edit your predict.tle file, and replace an + existing satellite's entry with 2-line Keplerian data for + the new satellite. If this method is chosen, however, + just make sure to include ONLY the two line data, and + nothing else. + + Another way is to is select the Keyboard Edit option from + the program's Main Menu, select a satellite you wish to + replace. Edit the name and object number (replacing the + old information with the new information). Just hit + ENTER, and accept all the other orbital parameters shown. + Get back to PREDICT's Main Menu. Select Auto Update, and + then enter the filename containing the 2-line element data + for your favorite new satellite. The new satellite data + should be detected by PREDICT, and the orbital data for + the old satellite will be overwritten by the new data. + +GLOSSARY OF TERMS + The following terms are frequently used in association + with satellite communications and space technology: + +AOS: + Acquisition of Signal - the time at which a ground station + first acquires radio signals from a satellite. PREDICT + defines AOS as the time when the satellite being tracked + comes within +/- 0.03 degrees of the local horizon, + although it may have to rise higher than this before sig- + nals are first heard. + +Apogee: + Point in a satellite's orbit when the satellite is at its + farthest distance from the earth's surface. + +Anomalistic Period: + A satellite orbital parameter specifying the time between + successive perigees. + +Ascending Node: + Point in a satellite's orbit when its sub-satellite point + crosses the equator moving south to north. + +Azimuth: + The compass direction measured clockwise from true north. + North = 0 degrees, East = 90 degrees, South = 180 degrees, + and West = 270 degrees. + +Descending Node: + Point in a satellite's orbit when its sub-satellite point + crosses the equator moving north to south. + +Doppler Shift: + The motion of a satellite in its orbit around the earth, + and in many cases the rotational motion of the earth + itself, causes radio signals generated by satellites to be + received on Earth at frequencies slightly different than + those upon which they were transmitted. PREDICT calculates + what effect these motions have upon radio communication + links with satellites when they are within range of the + groundstation. + +Elevation: + The angle between the local horizon and the position of + the satellite. A satellite that appears directly above a + particular location is said to be located at an elevation + of 90 degrees. A satellite located on the horizon of a + particular location is said to be located at an elevation + of 0 degrees. A satellite with an elevation of less than + zero is positioned below the local horizon, and radio com- + munication with a satellite in such a position is not pos- + sible under normal circumstances. + +Footprint: + Diameter of the Earth's surface visible from a satellite. + The higher the satellite's orbital altitude, the greater + the footprint, and the wider the satellite's communica- + tions coverage. + +LOS: + Loss of Signal - the time at which a ground station loses + radio contact with a satellite. PREDICT defines LOS as the + time when the satellite being tracked comes within +/- + 0.03 degrees of the local horizon. + +Orbital Phase: + An orbital "clock" that describes a satellite's orbital + position with respect to perigee. Orbital Phase may be + modulo 256, or modulo 360, and is sometimes referred to as + mean anomaly when speaking of amateur radio satellites in + elliptical orbits, such as the Phase 3 satellites. + Orbital phase is zero at perigee. + +Path Loss: + The apparent attenuation a radio signal undergoes as it + travels a given distance. This attenuation is the result + of the dispersion radio waves experience as they propagate + between transmitter and receiver using antennas of finite + gain. Free space path loss is technically an oxymoron + since free space is loss free. + +Perigee: + Point in a satellite's orbit when the satellite is at its + closest distance to the earth's surface. + +Nodal Period: + A satellite orbital parameter specifying the time between + successive ascending nodes. + +Slant Range: + The straight line distance between the ground station and + the satellite at a given time. + +Sub-Satellite Point: + The latitude and longitude specifying the location on the + Earth that is directly below the satellite. + +ADDITIONAL INFORMATION + The latest news is available through the official PREDICT + software web page located at: + . + +FILES + predict.tle + Default database of Keplerian orbital data in NASA + 2-line format + + predict.db + Satellite transponder database file + + predict.qth + Default ground station location information + +AUTHORS + PREDICT was written by John A. Magliacane, KD2BD + . PIC/TRACK code was written by Vittorio + Benvenuti, I3VFJ . + + + + +KD2BD Software 02 November 2002 PREDICT (2.2.1d) diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..7aad88c --- /dev/null +++ b/readme.txt @@ -0,0 +1,112 @@ + + ********************************** + Welcome to PREDICT Version 2.2.1d! + ********************************** + +PREDICT Version 2.2.1d is a satellite tracking and orbital prediction +program developed by John A. Magliacane, KD2BD. PREDICT 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 any later version. + +PREDICT is distributed in the hope that 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. + +PREDICT Version 2.2.1d is a derivative of the full-featured Linux +version of PREDICT. Some of the major features of PREDICT Version +2.2.1d include: + + * Fully year 2000 compliant code. + + * Compiled into highly-optimized 32-bit executable code that operates + under a protected mode environment during execution to harness the + full processing power of your (80386 or better) CPU. + + * Licensed under the GNU General Public License, thereby allowing anyone + to contribute new features to the program while forever keeping the + software, and any derivative works, non-proprietary and freely + available. + + * Includes a *FAST* orbital prediction mode that accurately predicts + satellite passes, providing dates, times, coordinates, slant range + distances, and sunlight and optical visibility information. Predictions + are displayed in tabular form and may be saved to a log file for later + reference or printing. + + * Includes a visual orbital prediction mode that displays satellite + passes that are potentially visible to the ground station by optical + means. + + * Includes a solar illumination prediction mode that calculates how much + time a satellite will spend in sunlight per day. + + * Features a real-time single satellite tracking mode that provides + dynamic information such as sub-satellite point, ground station azimuth + and elevation headings, Doppler shift, path loss, slant range, orbital + altitude, orbital velocity, footprint diameter, orbital phase, the time + and date of the next AOS (or LOS of the current pass), orbit number, + and sunlight and visibility information for a single satellite, while + providing live azimuth and elevation headings for both the sun and + moon. + + * Features a multi-satellite tracking mode that provides sub-satellite + point, azimuth and elevation headings, sunlight and visibility, and + slant range distance information for all 24 satellites in the program's + current database on a real-time basis. Azimuth and elevation headings + for the sun and moon are also provided, as a well as a listing of the + AOS dates and times for the next three satellites expected to come into + range of the ground station. + + * Provides static information such as semi-major axis of ellipse, apogee + and perigee altitudes, and anomalistic and nodal periods of satellite + orbits. + + * Includes command line options that permit alternate ground station + locations to be specified or alternate orbital databases to be read and + processed by the program, effectively allowing an UNLIMITED number of + satellites to be tracked and managed. Additional options allow any + orbital database file to be automatically updated using NASA Two-Line + element data obtained via the Internet or via Pacsat satellite without + having to enter the program and manually select menu options to update + the database. + + * Includes support for automatic antenna rotator control via a serial + port using the EasyComm2 protocol standard (9600 baud, 8N1, no + handshaking). Interfaces compliant with this standard include the + PIC/TRACK by Vicenzo Mezzalira (IW3FOL), and TAPR's EasyTrak Jr. + that is currently under development. (A DOS serial port driver + is currently lacking for full functionality of the tracking interface.) + + +PREDICT Version 2.2.1d was compiled under Caldera's DR-DOS 7.02 operating +system using the DJGPP version 2.03 32-bit protected mode software +development environment (gcc 3.2, PDCurses 2.4). + +PREDICT Version 2.2.1d is 32-bit protected mode software, and as +such requires a 32-bit processor (80386 or better) along with a +floating-point numeric co-processor to run. PREDICT Version 2.2.1d +has the ability to emulate a numeric co-processor in environments +where one is lacking. However, the emulation may not provide results +as accurate as those possible when a hardware co-processor is present. + +The protected mode driver (CWSDPMI.EXE) packaged with this software +is required for proper operation of PREDICT, and needs to be installed +either in your PREDICT subdirectory, or in a subdirectory within your +OSs search path. (Type "path" on your command line to inspect your +search path.) Users of Windows 9.x and later versions do not need +to install the protected mode driver included with this software. + +The latest news and information on PREDICT is available via the +World Wide Web at: http://www.qsl.net/kd2bd/predict.html. + +Further information on the free DJGPP software development environment +used to compile this program is available at: http://www.delorie.com/djgpp/ + +Happy Tracking! + +-- +73, de John, KD2BD +kd2bd@amsat.org +November 2002 diff --git a/tle-form.txt b/tle-form.txt new file mode 100644 index 0000000..e012792 --- /dev/null +++ b/tle-form.txt @@ -0,0 +1,58 @@ +NORAD Two-Line Element Set Format +================================= +Data for each satellite consists of three lines in the following format: + +AAAAAAAAAAAAAAAAAAAAAAAA +1 NNNNNU NNNNNAAA NNNNN.NNNNNNNN +.NNNNNNNN +NNNNN-N +NNNNN-N N NNNNN +2 NNNNN NNN.NNNN NNN.NNNN NNNNNNN NNN.NNNN NNN.NNNN NN.NNNNNNNNNNNNNN + +For example: + +HUBBLE +1 20580U 90037B 99272.06768183 .00002365 00000-0 23382-3 0 02374 +2 20580 028.4670 111.0359 0013971 225.3844 134.5606 14.88312749317309 + +Line 0 is a twenty-four character name (to be consistent with the name +length in the NORAD SATCAT). + +Lines 1 and 2 are the standard Two-Line Orbital Element Set Format +identical to that used by NORAD and NASA. The format description is +as follows: + +Line 1: + +Column Description +------ ----------- +01 Line Number of Element Data +03-07 Satellite Number +08 Classification (U=Unclassified) +10-11 International Designator (Last two digits of launch year) +12-14 International Designator (Launch number of the year) +15-17 International Designator (Piece of the launch) +19-20 Epoch Year (Last two digits of year) +21-32 Epoch (Day of the year and fractional portion of the day) +34-43 First Time Derivative of the Mean Motion +45-52 Second Time Derivative of Mean Motion (decimal point assumed) +54-61 BSTAR drag term (decimal point assumed) +63 Ephemeris type +65-68 Element number +69 Checksum (modulo 10) + (Letters, blanks, periods, plus signs=0; minus signs=1) + +Line 2: + +Column Description +------ ----------- +01 Line Number of Element Data +03-07 Satellite Number +09-16 Inclination (degrees) +18-25 Right Ascension of the Ascending Node (degrees) +27-33 Eccentricity (decimal point assumed) +35-42 Argument of Perigee (degrees) +44-51 Mean Anomaly (degrees) +53-63 Mean Motion (perigees per day) +64-68 Revolution number at epoch (revs) +69 Checksum (modulo 10) + +All other columns are blank or fixed. + diff --git a/uninstall b/uninstall deleted file mode 100755 index 8c42771..0000000 --- a/uninstall +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# Script to uninstall PREDICT by breaking symlinks -# between the installation and destination directories -# -rm -f /usr/local/bin/predict /usr/local/bin/xpredict /usr/local/bin/kep_update /usr/local/bin/earthtrack /usr/local/bin/earthtrack2 /usr/local/bin/geosat /usr/local/bin/map /usr/local/man/man1/predict.1 diff --git a/utils/fodtrack-0.1/LICENSE b/utils/fodtrack-0.1/LICENSE deleted file mode 100644 index ee0775e..0000000 --- a/utils/fodtrack-0.1/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - 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 - - Appendix: 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/utils/fodtrack-0.1/README b/utils/fodtrack-0.1/README deleted file mode 100644 index e943235..0000000 --- a/utils/fodtrack-0.1/README +++ /dev/null @@ -1,12 +0,0 @@ -How to install fodtrack: - -Login as root. - -cd to the directory where you did extract the files. - -call the install.sh script by invoking './install.sh'. This will compile and -install the tool. For the documentation use the supplied manpages. - ----> man fodtrack / man fodtrack.conf - -If any problem occurs - you find any bug - feel free to mail me at luc@1409.org diff --git a/utils/fodtrack-0.1/fodtrack.8 b/utils/fodtrack-0.1/fodtrack.8 deleted file mode 100644 index c3b83b1..0000000 --- a/utils/fodtrack-0.1/fodtrack.8 +++ /dev/null @@ -1,29 +0,0 @@ -.TH "fodtrack" "8" "0.1" "Luc Langehegermann" "LX2GT Sat tools" -.SH "NAME" -.LP -fodtrack \- Driver for the fodtrack rotor interface -.SH "SYNTAX" -.LP -fodtrack -.SH "DESCRIPTION" -.LP -This program simulates an Easycom rotor interface. It read its configuration parameters from the file \fB/etc/fodtrack.conf\fR. It reads the headings in the form of \fBAZ10.0 EL45.0\fR and outputs it to an parallel port. When started it displays a small status text, creates the file \fB/tmp/fodtrackdevice\fR \- which contains the pseudo device used \- and goes into the background. - -.SH "FILES" -.LP -\fI/etc/fodtrack.conf\fP -.br -\fI/tmp/fodtrackdevice\fP -.SH "EXAMPLES" -.LP -To run this program type: -.LP -fodtrack -.LP -After that you can start predict with \fBpredict \-a `cat /tmp/fodtrackdevice`\fR and you will be able to turn your antennas in predict single track using your fodtrack device -.SH "AUTHORS" -.LP -Luc Langehegermann -.SH "SEE ALSO" -.LP -fodtrack.conf(5) diff --git a/utils/fodtrack-0.1/fodtrack.c b/utils/fodtrack-0.1/fodtrack.c deleted file mode 100644 index a57696b..0000000 --- a/utils/fodtrack-0.1/fodtrack.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * fodtrack.c - fodtrack 'driver' for predict - */ - -#define __USE_GNU - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define false 0 -#define true 1 - -#define PSEUDODEVICEFILE "/tmp/fodtrackdevice" -#define CONFIGFILE "/etc/fodtrack.conf" - -static int fodtrackfd; -static int azimuthcorrection; -static int elevationcorrection; -static int maxazimuth; -static char fodtrackdev[200]; - -/* - * this function fills the global configuration variables - * with the data from the config file - */ - -void readconfig() { - char buffer[255]; - FILE* f=NULL; - printf("Reading configuration data from file %s.\n", CONFIGFILE); - f=fopen(CONFIGFILE, "r"); - if (!f) { - fprintf(stderr, "Unable to open configuration file - exiting.\n"); - exit(-1); - } - /* file reading loop */ - - while(fgets(buffer, 255, f)) { - if(!strncmp(buffer, "PARDEV", 6)) - sscanf(buffer, "PARDEV=%s\n", fodtrackdev); - if(!strncmp(buffer, "MAXAZIMUTH", 10)) - sscanf(buffer, "MAXAZIMUTH=%i\n", &maxazimuth); - if(!strncmp(buffer, "ELEVATIONCORRECTION", 17)) - sscanf(buffer, "ELEVATIONCORRECTION=%i\n", &elevationcorrection); - if(!strncmp(buffer, "AZIMUTHCORRECTION", 17)) - sscanf(buffer, "AZIMUTHCORRECTION=%i\n", &azimuthcorrection); - } - fclose(f); -} - - -/* - * functions to control the rotator - */ - -/** Opens the parallel port. returns true on success and false on error */ -int openfodtrack(const char* device) -{ - fodtrackfd=-1; - fodtrackfd=open(device, O_RDWR); - if(fodtrackfd==-1) { - perror("Parport open"); - return false; - } - if(ioctl (fodtrackfd, PPCLAIM)) { - perror("Parport claim"); - return false; - } - return true; -} - -/** outputs an direction to the interface */ -void setDirection(int angle, int direction){ - char outputvalue; - char outputstatus; - if (fodtrackfd==-1) return; - if (direction) - outputvalue=(char)(angle/(float)maxazimuth*255.0); - else - outputvalue=(char)(angle/180.0*255.0); - // set the data bits - ioctl(fodtrackfd, PPWDATA, &outputvalue); - // autofd=true --> azimuth otherwhise elevation - if(direction) - outputstatus = PARPORT_CONTROL_AUTOFD; - else - outputstatus=0; - ioctl(fodtrackfd, PPWCONTROL, &outputstatus); - // and now the strobe impulse - usleep(1); - if(direction) - outputstatus = PARPORT_CONTROL_AUTOFD | PARPORT_CONTROL_STROBE; - else - outputstatus = PARPORT_CONTROL_STROBE; - ioctl(fodtrackfd, PPWCONTROL, &outputstatus); - usleep(1); - if (direction) - outputstatus= PARPORT_CONTROL_AUTOFD; - else - outputstatus=0; - ioctl(fodtrackfd, PPWCONTROL, &outputstatus); -} - -/** sets the elevation */ -void setElevation(int angle){ - int i; - i = angle + elevationcorrection; - if (i<0) i=0; - if (i>180) i=180; - setDirection(i, false); -} - -/** Sets Azimuth */ -void setAzimuth(int angle){ - int i; - i = angle + azimuthcorrection; - if (i>360) i=i-360; - if (i<0) i=i+360; - setDirection(i, true); -} - -/* - * main functions - */ - -int main() { - char buffer[200]; - int devfilefd, fd, i; - float elevation, azimuth; - - readconfig(); - - /* open the pseudo terminal device */ - fd=getpt(); - if (fd<0) { - fprintf(stderr, "Unable to open serial line!\n"); - return -1; - } - unlockpt(fd); - - /* write the device file */ - - devfilefd = open(PSEUDODEVICEFILE, O_WRONLY|O_CREAT, 0666); - write(devfilefd, (char*)ptsname(fd), strlen((char*)ptsname(fd))); - close(devfilefd); - - - /* open the fodtrack device */ - - openfodtrack(fodtrackdev); - - /* print informations about the devices */ - - printf("Using %s as pseudo terminal device.\n", ptsname(fd)); - printf("Using %s as port for the fodtrack device.\n", fodtrackdev); - - /* going for the background */ - - daemon(0,0); - - - /* Main loop - reads from the device, and sets the antenna on the output */ - - for(;;) { - usleep(100); - i=read(fd, buffer, 199); - if(i>0) { - sscanf(buffer, "AZ%f EL%f", &azimuth, &elevation); - /*printf("New Data:\nElevation: %f\nAzimuth: %f\n\n", elevation, azimuth);*/ - setElevation(elevation); - setAzimuth(azimuth); - } - } -} diff --git a/utils/fodtrack-0.1/fodtrack.conf b/utils/fodtrack-0.1/fodtrack.conf deleted file mode 100644 index 2913b62..0000000 --- a/utils/fodtrack-0.1/fodtrack.conf +++ /dev/null @@ -1,22 +0,0 @@ -# -# fodtrack.conf - configuration file for the fodtrack driver -# -# -# The parallel device for the fodtrack device -# -PARDEV=/dev/parport1 -# -# Maximum Azimuth of the rotator -# -MAXAZIMUTH=450 -# -# Correction of the Elevation angle -# -ELEVATIONCORRECTION=0 -# -# Correction of the Azimuth angle -# -AZIMUTHCORRECTION=0 -# -# END -# diff --git a/utils/fodtrack-0.1/fodtrack.conf.5 b/utils/fodtrack-0.1/fodtrack.conf.5 deleted file mode 100644 index 63276fa..0000000 --- a/utils/fodtrack-0.1/fodtrack.conf.5 +++ /dev/null @@ -1,27 +0,0 @@ -.TH "fodtrack.conf" "5" "0.1" "Luc Langehegermann" "LX2GT Sat Tools" -.SH "NAME" -.LP -\fB/etc/fodtrack.conf\fR \- Configuration file for fodtrack rotor driver -.SH "DESCRIPTION" -.LP -The fodtrack program uses a configuration file called -\fBfodtrack.conf\fR. This configuration file must be located in the /etc directory, and is used to configure the driver. -.SH "PARAMETERS" -.TP -\fBPARDEV=\fR -Parallel port device -.TP -\fBMAXAZIMUTH=\fR -Maximal angle the hozizontal rotor is able to turn. -.TP -\fBELEVATIONCORRECTION=\fR -Correction applied to the elevation angle -.TP -\fBAZIMUTHCORRECTION=\fR -Correction applied to the azimuth angle -.SH "FILES" -.LP -/etc/fodtrack.conf -.SH "SEE ALSO" -.LP -fodtrack(5) diff --git a/utils/fodtrack-0.1/install.sh b/utils/fodtrack-0.1/install.sh deleted file mode 100755 index f054733..0000000 --- a/utils/fodtrack-0.1/install.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# -# install.sh - small script for installing fodtrack -# -# test if we are root -# -whoami=`whoami` -if [ $whoami != "root" ]; then - echo "Sorry $whoami, you need to be root to install this program" - exit -fi - -echo Compiling fodtrack... - -gcc -O2 fodtrack.c -o fodtrack - -echo Installing fodtrack... - -cp fodtrack /usr/local/bin -rm fodtrack -cp fodtrack.conf /etc -mkdir -p /usr/local/man/man8 -cp fodtrack.8 /usr/local/man/man8 -mkdir -p /usr/local/man/man5 -cp fodtrack.conf.5 /usr/local/man/man5 - - - diff --git a/utils/geosat/INSTALL b/utils/geosat/INSTALL deleted file mode 100644 index 2b88001..0000000 --- a/utils/geosat/INSTALL +++ /dev/null @@ -1,40 +0,0 @@ -Building and Installating "geosat" -================================== - -To build "geosat", simply invoke the "build" script as follows: - - ./build - -You do not need to be root to build "geosat". - -To run "geosat" globally on a multiuser system, it must be -installed in a publically accessible directory within the $PATH -of your users. To so this, simply invoke the "install" script -from this directory as follows: - - ./install - -This must be done as root. - -Once the program has been installed, it may be modified and rebuilt -at any time by invoking the "build" script once again. It is not -necessary to re-run "install" script or su to root every time -the program is modified. HOWEVER, you may wish to protect -the installation directory used by this program to prevent -unauthorized modification and compilation of the source -code when installed on a multiuser system. - -If you are root, and are installing "geosat" for the first time, -you may build and install this application with just one command by -involking the "install" script as follows: - - ./install - -See the README file for more information on the use and capabilities -of this program. - - -Happy Tracking! - -73, de John, KD2BD - diff --git a/utils/geosat/README b/utils/geosat/README deleted file mode 100644 index ac985c7..0000000 --- a/utils/geosat/README +++ /dev/null @@ -1,7 +0,0 @@ -This directory contains the source code for "geosat.c", a simple -program for determining the "look angles" for geostationary satellites -based on their longitude. Groundstation location information for this -program is obtained from PREDICT's data files. - -See the INSTALL file for installation instructions. - diff --git a/utils/geosat/build b/utils/geosat/build deleted file mode 100755 index b1beac4..0000000 --- a/utils/geosat/build +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Script to compile geosat -# -echo -n "Compiling geosat... " -cc -Wall -O3 -s -fomit-frame-pointer -lm geosat.c -o geosat -echo "Done!" - diff --git a/utils/geosat/geosat.c b/utils/geosat/geosat.c deleted file mode 100644 index 8dba1fa..0000000 --- a/utils/geosat/geosat.c +++ /dev/null @@ -1,93 +0,0 @@ - /*****************************************/ - /** Geostationary Satellite Locator **/ - /** KD2BD Software **/ - /** (c) 1992, 1999 **/ -/*****************************************/ - -#include -#include -#include - -#ifndef PI -#define PI 3.141592653589793 -#endif - -double sgn(x) -double x; -{ - double value=0.0; - - if (x>0.0) - value=1.0; - - if (x<0.0) - value=-1.0; - - return value; -} - -int main() -{ - double l, g, dr, c, dc, ds, j, az, el, cd; - char qthfile[50], input[7]; - FILE *fd; - - sprintf(qthfile,"%s/.predict/predict.qth",getenv("HOME")); - - /* Read user's lat and long from ~/.predict/predict.qth file */ - - fd=fopen(qthfile,"r"); - - if (fd!=NULL) - { - fscanf(fd,"%s",input); - fscanf(fd,"%lf",&l); - fscanf(fd,"%lf",&g); - fclose(fd); - } - - else - { - printf("%c\n*** ERROR! \"%s\" not found! Program aborted!\n",7,qthfile); - exit(-1); - } - - input[0]=0; - - dr=PI/180.0; - - l=l*dr; - g=g*dr; - - printf("\nEnter Longitude of Satellite in Degrees West: "); - fgets(input,5,stdin); - - while (input[0]!='\n') - { - sscanf(input,"%lf",&cd); - - c=cd*dr; - dc=cos(l)*cos(c-g); - ds=sqrt(1.0-(dc*dc)); - - j=-sin(l)*dc/(cos(l)*ds); - - if (fabs(j)>0.9999) - j=sgn(j)*0.9999; - - az=90.0-atan(j/sqrt(1.0-j*j))/dr; - - if (((c>g) && (c<(PI+g))) || ((c>(2.0*PI+g)))) - az=360.0-az; - - el=atan((42171.0*dc-6371.0)/(42171.0*ds))/dr; - - printf("\nAzimuth : %6.2f degrees\n",az); - printf("Elevation : %6.2f degrees\n\n",el); - - printf("\nEnter Longitude of Satellite in Degrees West: "); - fgets(input,5,stdin); - } - - exit(0); -} diff --git a/utils/geosat/install b/utils/geosat/install deleted file mode 100755 index 82dd744..0000000 --- a/utils/geosat/install +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# Script to install geosat -# -if [ ! -x $PWD/geosat ]; then - $PWD/build -fi -whoami=`whoami` -if [ ! -x /usr/local/bin/geosat ]; then - if [ $whoami != "root" ]; then - echo "Sorry, $whoami. You need to be 'root' to install this program. :-(" - echo "Please su to root and re-run the 'install' script again." - else - ln -s $PWD/geosat /usr/local/bin/geosat - fi -fi - diff --git a/utils/moontracker/README b/utils/moontracker/README deleted file mode 100644 index 1050e97..0000000 --- a/utils/moontracker/README +++ /dev/null @@ -1,36 +0,0 @@ -MoonTracker 1.0 by KD2BD -======================== -MoonTracker is intended to support moonbounce (EME) communications by -calculating the position of the Moon, and sending appropriate control -signals to an AZ/EL antenna rotator. Once invoked, MoonTracker spawns -itself into the background, and continues to run until terminated by -a kill signal. If the Moon is not above the horizon when MoonTracker -is invoked, MoonTracker goes to sleep until the predicted time of -Moon rise. - -MoonTracker reads ground station location information from PREDICT's -predict.qth file. Much like PREDICT, MoonTracker recognizes several -command-line options that specify the serial port to be used by the -program. Simply invoking MoonTracker without any arguments displays -a list of recognized options: - - - --==[ MoonTracker v1.0 by KD2BD (c) 2002 ]==-- - - ...Available options... - - -a serial port (/dev/ttyS0) -- sends data as it changes - -a1 serial port (/dev/ttyS0) -- sends data at one-second intervals - -q alternate qth file (site.qth) - - -Use the fodtrack utility to operate MoonTracker with a FODTRACK rotator -control system. MoonTracker may be safely terminated using the killall -commmand (killall moontracker). - -Happy EMEing! - - -73, de John, KD2BD -March 2003 - diff --git a/utils/moontracker/build b/utils/moontracker/build deleted file mode 100755 index 3bdae63..0000000 --- a/utils/moontracker/build +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Script to compile moontracker -# -echo -n "Compiling moontracker... " -cc -Wall -O3 -s -fomit-frame-pointer -lm moontracker.c -o moontracker -echo "Done!" - diff --git a/utils/moontracker/install b/utils/moontracker/install deleted file mode 100755 index 90a7826..0000000 --- a/utils/moontracker/install +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# Script to install moontracker -# -if [ ! -x $PWD/moontracker ]; then - $PWD/build -fi -whoami=`whoami` -if [ ! -x /usr/local/bin/moontracker ]; then - if [ $whoami != "root" ]; then - echo "Sorry, $whoami. You need to be 'root' to install this program. :-(" - echo "Please su to root and re-run the 'install' script again." - else - ln -s $PWD/moontracker /usr/local/bin/moontracker - fi -fi - diff --git a/utils/moontracker/moontracker.c b/utils/moontracker/moontracker.c deleted file mode 100644 index c92ac6c..0000000 --- a/utils/moontracker/moontracker.c +++ /dev/null @@ -1,488 +0,0 @@ -/***************************************************************************\ -* MoonTracker: A Moon AutoTracking Utility * -* Created by John A. Magliacane, KD2BD, on 29-Nov-2002 * -* Last update: 04-May-2018 * -***************************************************************************** -* * -* 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 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. * -* * -\***************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char callsign[20], output[21]; -int qthalt, pid; -double qthlat, qthlong, moon_az, moon_el, moonrise, - PI=3.141592653589793, TWOPI=6.28318530717958623, - deg2rad=1.745329251994330e-2; - -double FixAngle(x) -double x; -{ - /* This function reduces angles greater than - two pi by subtracting two pi from the angle */ - - while (x>TWOPI) - x-=TWOPI; - - return x; -} - -double PrimeAngle(x) -double x; -{ - x=x-360.0*floor(x/360.0); - return x; -} - -double CurrentDaynum() -{ - /* Read the system clock and return the number - of days since 31Dec79 00:00:00 UTC (daynum 0) */ - - struct timeval tptr; - /* int x; */ - - /* x=gettimeofday(&tptr,NULL); */ - gettimeofday(&tptr,NULL); - - return ((((double)tptr.tv_sec+0.000001*(double)tptr.tv_usec)/86400.0)-3651.0); -} - -char *Daynum2String(daynum) -double daynum; -{ - /* This function takes the given epoch as a fractional number of - days since 31Dec79 00:00:00 UTC and returns the corresponding - date as a string of the form "Tue 12Oct99 17:22:37". */ - - char timestr[25]; - time_t t; - int x; - - /* Convert daynum to Unix time (seconds since 01-Jan-70) */ - t=(time_t)rint(86400.0*(daynum+3651.0)); - - sprintf(timestr,"%s",asctime(gmtime(&t))); - - if (timestr[8]==' ') - timestr[8]='0'; - - for (x=0; x<=3; output[x]=timestr[x], x++); - - output[4]=timestr[8]; - output[5]=timestr[9]; - output[6]=timestr[4]; - output[7]=timestr[5]; - output[8]=timestr[6]; - output[9]=timestr[22]; - output[10]=timestr[23]; - output[11]=' '; - - for (x=12; x<=19; output[x]=timestr[x-1], x++); - - output[20]=0; - return output; -} - -char ReadQTH(qthfile) -char *qthfile; -{ - /* This function reads the tracking station's latitude - and longitude information from PREDICT's predict.qth file. */ - - FILE *fd; - char success=0; - - fd=fopen(qthfile,"r"); - - if (fd!=NULL) - { - fgets(callsign,16,fd); - callsign[strlen(callsign)-1]=0; - fscanf(fd,"%lf", &qthlat); - fscanf(fd,"%lf", &qthlong); - fscanf(fd,"%d", &qthalt); - fclose(fd); - - success=1; - } - - return success; -} - -void TrackDataOut(antfd, elevation, azimuth) -int antfd; -double elevation, azimuth; -{ - /* This function sends Azimuth and Elevation data - to an antenna tracker connected to the serial port */ - - int n, port; - char message[30]="\n"; - - port=antfd; - - sprintf(message, "AZ%3.1f EL%3.1f \x0D\x0A", azimuth,elevation); - n=write(port,message,30); - - if (n<0) - { - fprintf(stderr,"%c*** Error: Problem Writing To Antenna Port!\n",7); kill(pid,1); - exit(-1); - } -} - -void FindMoon(daynum) -double daynum; -{ - /* This function determines the azimuth and elevation headings - for the moon, relative to the latitude and longitude of - the tracking station. This code was derived from a - Javascript implementation of the Meeus method for - determining the exact position of the Moon found at: - http://www.geocities.com/s_perona/ingles/poslun.htm. */ - - double jd, s, t, t2, t3, d, f, l1, m, m1, ex, om, l, - b, w1, w2, bt, p, lm, h, ra, dec, z, ob, n, - el, az, teg, th; - - jd=daynum+2444238.5; - - t=(jd-2415020.0)/36525.0; - t2=t*t; - t3=t2*t; - l1=270.434164+481267.8831*t-0.001133*t2+0.0000019*t3; - m=358.475833+35999.0498*t-0.00015*t2-0.0000033*t3; - m1=296.104608+477198.8491*t+0.009192*t2+0.0000144*t3; - d=350.737486+445267.1142*t-0.001436*t2+0.0000019*t3; - f=11.250889+483202.0251*t-0.003211*t2-0.0000003*t3; - om=259.183275-1934.142*t+0.002078*t2+0.0000022*t3; - om=om*deg2rad; - - /* Additive terms */ - - l1=l1+0.000233*sin((51.2+20.2*t)*deg2rad); - s=0.003964*sin((346.56+132.87*t-0.0091731*t2)*deg2rad); - l1=l1+s+0.001964*sin(om); - m=m-0.001778*sin((51.2+20.2*t)*deg2rad); - m1=m1+0.000817*sin((51.2+20.2*t)*deg2rad); - m1=m1+s+0.002541*sin(om); - d=d+0.002011*sin((51.2+20.2*t)*deg2rad); - d=d+s+0.001964*sin(om); - f=f+s-0.024691*sin(om); - f=f-0.004328*sin(om+(275.05-2.3*t)*deg2rad); - ex=1.0-0.002495*t-0.00000752*t2; - om=om*deg2rad; - - l1=PrimeAngle(l1); - m=PrimeAngle(m); - m1=PrimeAngle(m1); - d=PrimeAngle(d); - f=PrimeAngle(f); - om=PrimeAngle(om); - - m=m*deg2rad; - m1=m1*deg2rad; - d=d*deg2rad; - f=f*deg2rad; - - /* Ecliptic Longitude */ - - l=l1+6.28875*sin(m1)+1.274018*sin(2.0*d-m1)+0.658309*sin(2.0*d); - l=l+0.213616*sin(2.0*m1)-ex*0.185596*sin(m)-0.114336*sin(2.0*f); - l=l+0.058793*sin(2.0*d-2.0*m1)+ex*0.057212*sin(2.0*d-m-m1)+0.05332*sin(2.0*d+m1); - l=l+ex*0.045874*sin(2.0*d-m)+ex*0.041024*sin(m1-m)-0.034718*sin(d); - l=l-ex*0.030465*sin(m+m1)+0.015326*sin(2.0*d-2.0*f)-0.012528*sin(2.0*f+m1); - - l=l-0.01098*sin(2.0*f-m1)+0.010674*sin(4.0*d-m1)+0.010034*sin(3.0*m1); - l=l+0.008548*sin(4.0*d-2.0*m1)-ex*0.00791*sin(m-m1+2.0*d)-ex*0.006783*sin(2.0*d+m); - - l=l+0.005162*sin(m1-d)+ex*0.005*sin(m+d)+ex*0.004049*sin(m1-m+2.0*d); - l=l+0.003996*sin(2.0*m1+2.0*d)+0.003862*sin(4.0*d)+0.003665*sin(2.0*d-3.0*m1); - - l=l+ex*0.002695*sin(2.0*m1-m)+0.002602*sin(m1-2.0*f-2.0*d)+ex*0.002396*sin(2.0*d-m-2.0*m1); - - l=l-0.002349*sin(m1+d)+ex*ex*0.002249*sin(2.0*d-2.0*m)-ex*0.002125*sin(2.0*m1+m); - - l=l-ex*ex*0.002079*sin(2.0*m)+ex*ex*0.002059*sin(2.0*d-m1-2.0*m)-0.001773*sin(m1+2.0*d-2.0*f); - - l=l+ex*0.00122*sin(4.0*d-m-m1)-0.00111*sin(2.0*m1+2.0*f)+0.000892*sin(m1-3.0*d); - - l=l-ex*0.000811*sin(m+m1+2.0*d)+ex*0.000761*sin(4.0*d-m-2.0*m1)+ex*ex*.000717*sin(m1-2.0*m); - - l=l+ex*ex*0.000704*sin(m1-2.0*m-2.0*d)+ex*0.000693*sin(m-2.0*m1+2.0*d)+ex*0.000598*sin(2.0*d-m-2.0*f)+0.00055*sin(m1+4.0*d); - - l=l+0.000538*sin(4.0*m1)+ex*0.000521*sin(4.0*d-m)+0.000486*sin(2.0*m1-d); - - l=l-0.001595*sin(2.0*f+2.0*d); - - /* Ecliptic latitude */ - - b=5.128189*sin(f)+0.280606*sin(m1+f)+0.277693*sin(m1-f)+0.173238*sin(2.0*d-f); - b=b+0.055413*sin(2.0*d+f-m1)+0.046272*sin(2.0*d-f-m1)+0.032573*sin(2.0*d+f); - - b=b+0.017198*sin(2.0*m1+f)+9.266999e-03*sin(2.0*d+m1-f)+0.008823*sin(2.0*m1-f); - b=b+ex*0.008247*sin(2.0*d-m-f)+0.004323*sin(2.0*d-f-2.0*m1)+0.0042*sin(2.0*d+f+m1); - - b=b+ex*0.003372*sin(f-m-2.0*d)+ex*0.002472*sin(2.0*d+f-m-m1)+ex*0.002222*sin(2.0*d+f-m); - - b=b+0.002072*sin(2.0*d-f-m-m1)+ex*0.001877*sin(f-m+m1)+0.001828*sin(4.0*d-f-m1); - - b=b-ex*0.001803*sin(f+m)-0.00175*sin(3.0*f)+ex*0.00157*sin(m1-m-f)-0.001487*sin(f+d)-ex*0.001481*sin(f+m+m1)+ex*0.001417*sin(f-m-m1)+ex*0.00135*sin(f-m)+0.00133*sin(f-d); - - b=b+0.001106*sin(f+3.0*m1)+0.00102*sin(4.0*d-f)+0.000833*sin(f+4.0*d-m1); - - b=b+0.000781*sin(m1-3.0*f)+0.00067*sin(f+4.0*d-2.0*m1)+0.000606*sin(2.0*d-3.0*f); - - b=b+0.000597*sin(2.0*d+2.0*m1-f)+ex*0.000492*sin(2.0*d+m1-m-f)+0.00045*sin(2.0*m1-f-2.0*d); - - b=b+0.000439*sin(3.0*m1-f)+0.000423*sin(f+2.0*d+2.0*m1)+0.000422*sin(2.0*d-f-3.0*m1); - - b=b-ex*0.000367*sin(m+f+2.0*d-m1)-ex*0.000353*sin(m+f+2.0*d)+0.000331*sin(f+4.0*d); - - b=b+ex*0.000317*sin(2.0*d+f-m+m1)+ex*ex*0.000306*sin(2.0*d-2.0*m-f)-0.000283*sin(m1+3.0*f); - - w1=0.0004664*cos(om*deg2rad); - w2=0.0000754*cos((om+275.05-2.3*t)*deg2rad); - bt=b*(1.0-w1-w2); - - /* Parallax calculations */ - - p=0.950724+0.051818*cos(m1)+0.009531*cos(2.0*d-m1)+0.007843*cos(2.0*d)+0.002824*cos(2.0*m1)+0.000857*cos(2.0*d+m1)+ex*0.000533*cos(2.0*d-m)+ex*0.000401*cos(2.0*d-m-m1); - - p=p+0.000173*cos(3.0*m1)+0.000167*cos(4.0*d-m1)-ex*0.000111*cos(m)+0.000103*cos(4.0*d-2.0*m1)-0.000084*cos(2.0*m1-2.0*d)-ex*0.000083*cos(2.0*d+m)+0.000079*cos(2.0*d+2.0*m1); - - p=p+0.000072*cos(4.0*d)+ex*0.000064*cos(2.0*d-m+m1)-ex*0.000063*cos(2.0*d+m-m1); - - p=p+ex*0.000041*cos(m+d)+ex*0.000035*cos(2.0*m1-m)-0.000033*cos(3.0*m1-2.0*d); - - p=p-0.00003*cos(m1+d)-0.000029*cos(2.0*f-2.0*d)-ex*0.000029*cos(2.0*m1+m); - - p=p+ex*ex*0.000026*cos(2.0*d-2.0*m)-0.000023*cos(2.0*f-2.0*d+m1)+ex*0.000019*cos(4.0*d-m-m1); - - b=bt*deg2rad; - lm=l*deg2rad; - - /* Convert ecliptic coordinates to equatorial coordinates */ - - z=(jd-2415020.5)/365.2422; - ob=23.452294-(0.46845*z+5.9e-07*z*z)/3600.0; - ob=ob*deg2rad; - dec=asin(sin(b)*cos(ob)+cos(b)*sin(ob)*sin(lm)); - ra=acos(cos(b)*cos(lm)/cos(dec)); - - if (lm>PI) - ra=TWOPI-ra; - - /* ra = right ascension */ - /* dec = declination */ - - n=qthlat*deg2rad; /* North latitude of tracking station */ - /* e=-qthlong*deg2rad; */ /* East longitude of tracking station */ - - /* Find siderial time in radians */ - - t=(jd-2451545.0)/36525.0; - teg=280.46061837+360.98564736629*(jd-2451545.0)+(0.000387933*t-t*t/38710000.0)*t; - - while (teg>360.0) - teg-=360.0; - - th=FixAngle((teg-qthlong)*deg2rad); - h=th-ra; - - /* Determine local coordinates */ - - az=atan2(sin(h),cos(h)*sin(n)-tan(dec)*cos(n))+PI; - el=asin(sin(n)*sin(dec)+cos(n)*cos(dec)*cos(h)); - - moon_az=az/deg2rad; - moon_el=el/deg2rad; -} - -double FindMoonRise() -{ - /* This function finds the daynum of moonrise. */ - - double daynum2; - - daynum2=CurrentDaynum(); - FindMoon(daynum2); - moonrise=0.0; - - while (moonrise==0.0) - { - if (fabs(moon_el)<0.03) - moonrise=daynum2; - else - { - daynum2-=(0.003*moon_el); - FindMoon(daynum2); - } - } - - return moonrise; -} - -int main(argc,argv) -char argc, *argv[]; -{ - char qthfile[80], serial_port[15], once_per_second=0, *env=NULL; - int x, y, z, antfd=-1, iel, iaz, oldaz=0, oldel=0; - unsigned sleeptime=0; - double daynum; - struct termios oldtty, newtty; - - if (argc==1) - { - fprintf(stderr,"\n\t\t --==[ MoonTracker v1.1 by KD2BD ]==--\n"); - fprintf(stderr,"\n\t\t\t ...Available options...\n\n"); - fprintf(stderr,"\t-a serial port (/dev/ttyS0) -- sends data as it changes\n"); - fprintf(stderr,"\t-a1 serial port (/dev/ttyS0) -- sends data at one-second intervals\n"); - fprintf(stderr,"\t-q alternate qth file (site.qth)\n"); - fprintf(stderr,"\nOnce started, MoonTracker spawns itself as a background process.\n\n"); - exit(0); - } - - y=argc-1; - serial_port[0]=0; - env=getenv("HOME"); - sprintf(qthfile,"%s/.predict/predict.qth",env); - - /* Interpret command-line options */ - - for (x=1; x<=y; x++) - { - if (strcmp(argv[x],"-q")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(qthfile,argv[z],78); - } - - if (strcmp(argv[x],"-a")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - strncpy(serial_port,argv[z],13); - } - - if (strcmp(argv[x],"-a1")==0) - { - z=x+1; - if (z<=y && argv[z][0] && argv[z][0]!='-') - { - strncpy(serial_port,argv[z],13); - once_per_second=1; - } - } - } - - if (serial_port[0]==0) - { - fprintf(stderr,"%c*** Error: Serial port not specified!\n",7); - exit(-1); - } - - antfd=open(serial_port, O_RDWR|O_NOCTTY); - - if (antfd!=-1) - { - /* Set up serial port */ - - tcgetattr(antfd, &oldtty); - bzero(&newtty, sizeof(newtty)); - - /* 9600 baud, 8-bits, no parity, - 1-stop bit, no handshaking */ - - newtty.c_cflag=B9600|CS8|CLOCAL; - newtty.c_oflag=0; - newtty.c_lflag=0; - - tcflush(antfd, TCIFLUSH); - tcsetattr(antfd, TCSANOW, &newtty); - } - - else - { - fprintf(stderr, "%c*** Error: Unable To Open Antenna Port\n",7); - exit(-1); - } - - if (ReadQTH(qthfile)==0) - { - fprintf(stderr,"%c*** Error: QTH file \"%s\" could not be loaded!\n",7,qthfile); - exit(-1); - } - - moonrise=FindMoonRise(); - daynum=CurrentDaynum(); - - if (!(pid=fork())) - { - while (1) - { - daynum=CurrentDaynum(); - FindMoon(daynum); - - if (moon_el<0.0) - { - /* Go to sleep until moon rise. */ - - moonrise=FindMoonRise(); - - if (daynum=0.0 && antfd!=-1) - { - iaz=(int)rint(moon_az); - iel=(int)rint(moon_el); - - if ((oldel!=iel || oldaz!=iaz) || (once_per_second)) - { - TrackDataOut(antfd,(float)iel,(float)iaz); - oldel=iel; - oldaz=iaz; - } - } - - if (once_per_second) - sleep (1); - else - sleep (60); - } - } - - else - { - fprintf(stderr,"MoonTracker (pid %d) running on %s!\n",pid,serial_port); - if (daynum -#include -#include -#include -#include -#include -#include -#include "vocalizer.h" - -int dsp; -char numstr[20][10]; -unsigned char buffer[65536]; - -unsigned long buffer2long(indx) -int indx; -{ - unsigned long byte0, byte1, byte2, byte3; - - if ((indx+3)<65536) - { - byte0=(unsigned long)buffer[indx]; - byte1=(unsigned long)buffer[indx+1]; - byte2=(unsigned long)buffer[indx+2]; - byte3=(unsigned long)buffer[indx+3]; - - return (byte0|(byte1<<8)|(byte2<<16)|(byte3<<24)); - } - else - return 0L; -} - -unsigned int buffer2int(indx) -int indx; -{ - unsigned int byte0, byte1; - - if ((indx+1)<65536) - { - byte0=(unsigned int)buffer[indx]; - byte1=(unsigned int)buffer[indx+1]; - - return (byte0|(byte1<<8)); - } - else - return 0; -} - -int wavplay(filename) -char *filename; -{ - int x, y, format, bits, bytes, channels, dsp, fd; - unsigned long total_samples=0L, rate=0L, running_total=0L; - char filenpath[80]; - - strncpy(filenpath,path,79); - strncat(filenpath,filename,79); - strncat(filenpath,".wav",79); - - fd=open(filenpath,O_RDONLY); - - if (fd==-1) - { - fprintf(stderr,"*** vocalizer: Cannot open \"%s\"\n",filenpath); - return -1; - } - - bytes=read(fd,&buffer,65536); - - y=((buffer[0]^'R') | (buffer[1]^'I') | - (buffer[2]^'F') | (buffer[3]^'F') | - (buffer[8]^'W') | (buffer[9]^'A') | - (buffer[10]^'V') | (buffer[11]^'E')); - - if (y) - { - fprintf(stderr,"*** vocalizer: No RIFF header found!\n"); - return -1; - } - - for (x=12, y=1; x<65535 && y; x++) - y=((buffer[x]^'f') | (buffer[x+1]^'m') | - (buffer[x+2]^'t') | (buffer[x+3]^' ')); - - if (y==0) - { - x+=3; - x+=4; - format=buffer2int(x); - x+=2; - channels=buffer2int(x); - x+=2; - rate=buffer2long(x); - x+=4; - x+=4; - /* int block_size=buffer2int(x); */ - buffer2int(x); - x+=2; - bits=buffer2int(x); - x+=2; - - if (format!=1) - { - fprintf(stderr,"*** vocalizer: Not PCM Wave Format.\n"); - return -1; - } - - for (x=0, y=1; x<65535 && y; x++) - y=((buffer[x]^'d') | (buffer[x+1]^'a') | - (buffer[x+2]^'t') | (buffer[x+3]^'a')); - - if (y==0) - { - x+=3; - total_samples=buffer2long(x); - - if (total_samples!=0L) - { - dsp=open("/dev/dsp",O_RDWR); - - if (dsp==-1) - { - fprintf(stderr,"*** vocalizer: Cannot open /dev/dsp!\n"); - return -1; - } - - ioctl(dsp,SOUND_PCM_WRITE_CHANNELS,&channels); - ioctl(dsp,SOUND_PCM_WRITE_RATE,&rate); - ioctl(dsp,SOUND_PCM_WRITE_BITS,&bits); - - lseek(fd,(long)(x+4),SEEK_SET); - bytes=read(fd,&buffer,65536); - running_total+=bytes; - - if (running_total>total_samples) - bytes-=(running_total-total_samples); - - while (bytes>0) - { - write(dsp,&buffer,bytes); - - bytes=read(fd,&buffer,65536); - running_total+=bytes; - - if (running_total>total_samples) - bytes-=(running_total-total_samples); - } - - close(dsp); - close(fd); - } - } - else - fprintf(stderr,"*** vocalizer: Could not find 'data' chunk.\n"); - } - else - fprintf(stderr,"*** vocalizer: Could not extract format from header.\n"); - - return 0; -} - -void saynumber(num) -int num; -{ - char string[10]; - - sprintf(string,"%4d",num); - - if (string[1]!=32) - { - wavplay(numstr[string[1]-48]); - wavplay("hundred"); - } - - switch (string[2]) - { - case '1': - wavplay(numstr[(10+(string[3]-48))]); - break; - - case '2': - wavplay("twenty"); - break; - - case '3': - wavplay("thirty"); - break; - - case '4': - wavplay("forty"); - break; - - case '5': - wavplay("fifty"); - break; - - case '6': - wavplay("sixty"); - break; - - case '7': - wavplay("seventy"); - break; - - case '8': - wavplay("eighty"); - break; - - case '9': - wavplay("ninety"); - break; - } - - if (string[3]!=32 && string[3]!=0 && string[2]!='1' && string[3]!='0') - wavplay(numstr[string[3]-48]); - - if (string[3]=='0' && string[2]==32 && string[1]==32) - wavplay("zero"); -} - -int main(argc,argv) -int argc; -char *argv[]; -{ - int number; - - strcpy(numstr[1], "one\0"); - strcpy(numstr[2], "two\0"); - strcpy(numstr[3], "three\0"); - strcpy(numstr[4], "four\0"); - strcpy(numstr[5], "five\0"); - strcpy(numstr[6], "six\0"); - strcpy(numstr[7], "seven\0"); - strcpy(numstr[8], "eight\0"); - strcpy(numstr[9], "nine\0"); - strcpy(numstr[0], "zero\0"); - strcpy(numstr[10],"ten\0"); - strcpy(numstr[11],"eleven\0"); - strcpy(numstr[12],"twelve\0"); - strcpy(numstr[13],"thirteen\0"); - strcpy(numstr[14],"fourteen\0"); - strcpy(numstr[15],"fifteen\0"); - strcpy(numstr[16],"sixteen\0"); - strcpy(numstr[17],"seventeen\0"); - strcpy(numstr[18],"eighteen\0"); - strcpy(numstr[19],"nineteen\0"); - - /* Start talking! */ - - if (argc==2) - { - if (strncmp(argv[1],"eclipse",7)==0) - { - wavplay("alarm"); - wavplay("eclipse"); - } - - if (strncmp(argv[1],"sunlight",8)==0) - { - wavplay("alarm"); - wavplay("sunlight"); - } - - if (strncmp(argv[1],"los",3)==0) - wavplay("los"); - } - - if (argc>=3) - { - wavplay("intro"); - - number=atoi(argv[1]); - saynumber(number); - wavplay("azimuth"); - - number=atoi(argv[2]); - saynumber(number); - wavplay("elevation"); - - if (argc>=4) - { - if (argv[3][0]=='+') - wavplay("approaching"); - - if (argv[3][0]=='-') - wavplay("receding"); - } - - if (argc==5) - { - if (argv[4][0]=='V') - wavplay("visible"); - } - } - - return 0; -} diff --git a/vocalizer/zero.wav b/vocalizer/zero.wav deleted file mode 100644 index cef6ea0..0000000 Binary files a/vocalizer/zero.wav and /dev/null differ diff --git a/xpredict b/xpredict deleted file mode 100755 index f4789c7..0000000 --- a/xpredict +++ /dev/null @@ -1,12 +0,0 @@ -# Uncomment the line that works best for you. -# The first four lines work great under Slackware 8.0. -# Generally, rxvt requires less memory than other terminals. -# The last line is for KDE users. -# -rxvt -geometry 80x25 -font 10x20 -rv -title PREDICT -e predict $* -#xterm -geometry 80x25 -fn 10x20 -rv -title PREDICT -e predict $* -#Eterm -g 80x25 -F 10x20 -n PREDICT -x -e predict $1 $2 $3 $4 -#gnome-terminal --geometry 80x25 --disable-sound -t PREDICT -e predict $* -#rxvt -geometry 80x25 -font 10x20 -rv -tn linux -title PREDICT -e predict $* -#rxvt -geometry 80x25 -font 10x20 -rv -tn color_xterm -title PREDICT -e predict $* -#kvt -vt_geometry 80x25 -linux -T PREDICT -e predict $*